Average Error: 0.0 → 0.0
Time: 14.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 r1036268 = 1.0;
        double r1036269 = 2.0;
        double r1036270 = t;
        double r1036271 = r1036269 / r1036270;
        double r1036272 = r1036268 / r1036270;
        double r1036273 = r1036268 + r1036272;
        double r1036274 = r1036271 / r1036273;
        double r1036275 = r1036269 - r1036274;
        double r1036276 = r1036275 * r1036275;
        double r1036277 = r1036269 + r1036276;
        double r1036278 = r1036268 / r1036277;
        double r1036279 = r1036268 - r1036278;
        return r1036279;
}

double f(double t) {
        double r1036280 = 1.0;
        double r1036281 = 2.0;
        double r1036282 = t;
        double r1036283 = r1036280 + r1036282;
        double r1036284 = r1036281 / r1036283;
        double r1036285 = r1036281 - r1036284;
        double r1036286 = fma(r1036285, r1036285, r1036281);
        double r1036287 = r1036280 / r1036286;
        double r1036288 = r1036280 - r1036287;
        return r1036288;
}

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 2019135 +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)))))))))