Average Error: 0.0 → 0.0
Time: 11.9s
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 r38353 = 1.0;
        double r38354 = 2.0;
        double r38355 = t;
        double r38356 = r38354 / r38355;
        double r38357 = r38353 / r38355;
        double r38358 = r38353 + r38357;
        double r38359 = r38356 / r38358;
        double r38360 = r38354 - r38359;
        double r38361 = r38360 * r38360;
        double r38362 = r38354 + r38361;
        double r38363 = r38353 / r38362;
        double r38364 = r38353 - r38363;
        return r38364;
}

double f(double t) {
        double r38365 = 1.0;
        double r38366 = 2.0;
        double r38367 = t;
        double r38368 = fma(r38365, r38367, r38365);
        double r38369 = r38366 / r38368;
        double r38370 = r38366 - r38369;
        double r38371 = fma(r38370, r38370, r38366);
        double r38372 = r38365 / r38371;
        double r38373 = r38365 - r38372;
        return r38373;
}

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 2019199 +o rules:numerics
(FPCore (t)
  :name "Kahan p13 Example 3"
  (- 1.0 (/ 1.0 (+ 2.0 (* (- 2.0 (/ (/ 2.0 t) (+ 1.0 (/ 1.0 t)))) (- 2.0 (/ (/ 2.0 t) (+ 1.0 (/ 1.0 t)))))))))