Average Error: 0.0 → 0.0
Time: 13.1s
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}{1 + t}, 2 - \frac{2}{1 + t}, 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}{1 + t}, 2 - \frac{2}{1 + t}, 2\right)}
double f(double t) {
        double r1374302 = 1.0;
        double r1374303 = 2.0;
        double r1374304 = t;
        double r1374305 = r1374303 / r1374304;
        double r1374306 = r1374302 / r1374304;
        double r1374307 = r1374302 + r1374306;
        double r1374308 = r1374305 / r1374307;
        double r1374309 = r1374303 - r1374308;
        double r1374310 = r1374309 * r1374309;
        double r1374311 = r1374303 + r1374310;
        double r1374312 = r1374302 / r1374311;
        double r1374313 = r1374302 - r1374312;
        return r1374313;
}

double f(double t) {
        double r1374314 = 1.0;
        double r1374315 = 2.0;
        double r1374316 = t;
        double r1374317 = r1374314 + r1374316;
        double r1374318 = r1374315 / r1374317;
        double r1374319 = r1374315 - r1374318;
        double r1374320 = fma(r1374319, r1374319, r1374315);
        double r1374321 = r1374314 / r1374320;
        double r1374322 = r1374314 - r1374321;
        return r1374322;
}

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

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

Reproduce

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