Average Error: 0.0 → 0.0
Time: 24.7s
Precision: 64
\[1 - \frac{1}{2 + \left(2 - \frac{\frac{2}{t}}{1 + \frac{1}{t}}\right) \cdot \left(2 - \frac{\frac{2}{t}}{1 + \frac{1}{t}}\right)}\]
\[1 - \frac{1}{\mathsf{fma}\left(\mathsf{fma}\left(\sqrt{2}, \sqrt{2}, \frac{-2}{\mathsf{fma}\left(t, 1, 1\right)}\right), \mathsf{expm1}\left(\mathsf{log1p}\left(2 - \frac{2}{\mathsf{fma}\left(1, t, 1\right)}\right)\right), 2\right)}\]
1 - \frac{1}{2 + \left(2 - \frac{\frac{2}{t}}{1 + \frac{1}{t}}\right) \cdot \left(2 - \frac{\frac{2}{t}}{1 + \frac{1}{t}}\right)}
1 - \frac{1}{\mathsf{fma}\left(\mathsf{fma}\left(\sqrt{2}, \sqrt{2}, \frac{-2}{\mathsf{fma}\left(t, 1, 1\right)}\right), \mathsf{expm1}\left(\mathsf{log1p}\left(2 - \frac{2}{\mathsf{fma}\left(1, t, 1\right)}\right)\right), 2\right)}
double f(double t) {
        double r40222 = 1.0;
        double r40223 = 2.0;
        double r40224 = t;
        double r40225 = r40223 / r40224;
        double r40226 = r40222 / r40224;
        double r40227 = r40222 + r40226;
        double r40228 = r40225 / r40227;
        double r40229 = r40223 - r40228;
        double r40230 = r40229 * r40229;
        double r40231 = r40223 + r40230;
        double r40232 = r40222 / r40231;
        double r40233 = r40222 - r40232;
        return r40233;
}

double f(double t) {
        double r40234 = 1.0;
        double r40235 = 2.0;
        double r40236 = sqrt(r40235);
        double r40237 = -r40235;
        double r40238 = t;
        double r40239 = fma(r40238, r40234, r40234);
        double r40240 = r40237 / r40239;
        double r40241 = fma(r40236, r40236, r40240);
        double r40242 = fma(r40234, r40238, r40234);
        double r40243 = r40235 / r40242;
        double r40244 = r40235 - r40243;
        double r40245 = log1p(r40244);
        double r40246 = expm1(r40245);
        double r40247 = fma(r40241, r40246, r40235);
        double r40248 = r40234 / r40247;
        double r40249 = r40234 - r40248;
        return r40249;
}

Error

Bits error versus t

Derivation

  1. Initial program 0.0

    \[1 - \frac{1}{2 + \left(2 - \frac{\frac{2}{t}}{1 + \frac{1}{t}}\right) \cdot \left(2 - \frac{\frac{2}{t}}{1 + \frac{1}{t}}\right)}\]
  2. Simplified0.0

    \[\leadsto \color{blue}{1 - \frac{1}{\mathsf{fma}\left(2 - \frac{2}{\mathsf{fma}\left(1, t, 1\right)}, 2 - \frac{2}{\mathsf{fma}\left(1, t, 1\right)}, 2\right)}}\]
  3. Using strategy rm
  4. Applied add-sqr-sqrt0.0

    \[\leadsto 1 - \frac{1}{\mathsf{fma}\left(\color{blue}{\sqrt{2} \cdot \sqrt{2}} - \frac{2}{\mathsf{fma}\left(1, t, 1\right)}, 2 - \frac{2}{\mathsf{fma}\left(1, t, 1\right)}, 2\right)}\]
  5. Applied fma-neg0.0

    \[\leadsto 1 - \frac{1}{\mathsf{fma}\left(\color{blue}{\mathsf{fma}\left(\sqrt{2}, \sqrt{2}, -\frac{2}{\mathsf{fma}\left(1, t, 1\right)}\right)}, 2 - \frac{2}{\mathsf{fma}\left(1, t, 1\right)}, 2\right)}\]
  6. Simplified0.0

    \[\leadsto 1 - \frac{1}{\mathsf{fma}\left(\mathsf{fma}\left(\sqrt{2}, \sqrt{2}, \color{blue}{\frac{-2}{\mathsf{fma}\left(t, 1, 1\right)}}\right), 2 - \frac{2}{\mathsf{fma}\left(1, t, 1\right)}, 2\right)}\]
  7. Using strategy rm
  8. Applied expm1-log1p-u0.0

    \[\leadsto 1 - \frac{1}{\mathsf{fma}\left(\mathsf{fma}\left(\sqrt{2}, \sqrt{2}, \frac{-2}{\mathsf{fma}\left(t, 1, 1\right)}\right), \color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(2 - \frac{2}{\mathsf{fma}\left(1, t, 1\right)}\right)\right)}, 2\right)}\]
  9. Final simplification0.0

    \[\leadsto 1 - \frac{1}{\mathsf{fma}\left(\mathsf{fma}\left(\sqrt{2}, \sqrt{2}, \frac{-2}{\mathsf{fma}\left(t, 1, 1\right)}\right), \mathsf{expm1}\left(\mathsf{log1p}\left(2 - \frac{2}{\mathsf{fma}\left(1, t, 1\right)}\right)\right), 2\right)}\]

Reproduce

herbie shell --seed 2019325 +o rules:numerics
(FPCore (t)
  :name "Kahan p13 Example 3"
  :precision binary64
  (- 1 (/ 1 (+ 2 (* (- 2 (/ (/ 2 t) (+ 1 (/ 1 t)))) (- 2 (/ (/ 2 t) (+ 1 (/ 1 t)))))))))