Average Error: 0.0 → 0.0
Time: 51.0s
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}{(\left(2 - \frac{2}{1 + t}\right) \cdot \left(2 - \frac{2}{1 + t}\right) + 2)_*}\]
double f(double t) {
        double r2892449 = 1.0;
        double r2892450 = 2.0;
        double r2892451 = t;
        double r2892452 = r2892450 / r2892451;
        double r2892453 = r2892449 / r2892451;
        double r2892454 = r2892449 + r2892453;
        double r2892455 = r2892452 / r2892454;
        double r2892456 = r2892450 - r2892455;
        double r2892457 = r2892456 * r2892456;
        double r2892458 = r2892450 + r2892457;
        double r2892459 = r2892449 / r2892458;
        double r2892460 = r2892449 - r2892459;
        return r2892460;
}

double f(double t) {
        double r2892461 = 1.0;
        double r2892462 = 2.0;
        double r2892463 = t;
        double r2892464 = r2892461 + r2892463;
        double r2892465 = r2892462 / r2892464;
        double r2892466 = r2892462 - r2892465;
        double r2892467 = fma(r2892466, r2892466, r2892462);
        double r2892468 = r2892461 / r2892467;
        double r2892469 = r2892461 - r2892468;
        return r2892469;
}

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}{(\left(2 - \frac{2}{1 + t}\right) \cdot \left(2 - \frac{2}{1 + t}\right) + 2)_*}

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

    \[\leadsto 1 - \frac{1}{(\left(2 - \frac{2}{1 + t}\right) \cdot \left(2 - \frac{2}{1 + t}\right) + 2)_*}\]

Reproduce

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