Average Error: 0.0 → 0.0
Time: 9.3s
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(2 - \frac{2}{\mathsf{fma}\left(1, t, 1\right)}, 2 - \frac{2}{\mathsf{fma}\left(1, t, 1\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(2 - \frac{2}{\mathsf{fma}\left(1, t, 1\right)}, 2 - \frac{2}{\mathsf{fma}\left(1, t, 1\right)}, 2\right)}
double f(double t) {
        double r25321 = 1.0;
        double r25322 = 2.0;
        double r25323 = t;
        double r25324 = r25322 / r25323;
        double r25325 = r25321 / r25323;
        double r25326 = r25321 + r25325;
        double r25327 = r25324 / r25326;
        double r25328 = r25322 - r25327;
        double r25329 = r25328 * r25328;
        double r25330 = r25322 + r25329;
        double r25331 = r25321 / r25330;
        double r25332 = r25321 - r25331;
        return r25332;
}

double f(double t) {
        double r25333 = 1.0;
        double r25334 = 2.0;
        double r25335 = t;
        double r25336 = fma(r25333, r25335, r25333);
        double r25337 = r25334 / r25336;
        double r25338 = r25334 - r25337;
        double r25339 = fma(r25338, r25338, r25334);
        double r25340 = r25333 / r25339;
        double r25341 = r25333 - r25340;
        return r25341;
}

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, \frac{1}{1}\right)}, 2 - \frac{2}{\mathsf{fma}\left(1, t, \frac{1}{1}\right)}, 2\right)}}\]
  3. Final simplification0.0

    \[\leadsto 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)}\]

Reproduce

herbie shell --seed 2019208 +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)))))))))