Average Error: 0.0 → 0.0
Time: 5.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}{1 \cdot \left(t + 1\right)}, 2 - \frac{2}{1 \cdot \left(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}{1 \cdot \left(t + 1\right)}, 2 - \frac{2}{1 \cdot \left(t + 1\right)}, 2\right)}
double f(double t) {
        double r27258 = 1.0;
        double r27259 = 2.0;
        double r27260 = t;
        double r27261 = r27259 / r27260;
        double r27262 = r27258 / r27260;
        double r27263 = r27258 + r27262;
        double r27264 = r27261 / r27263;
        double r27265 = r27259 - r27264;
        double r27266 = r27265 * r27265;
        double r27267 = r27259 + r27266;
        double r27268 = r27258 / r27267;
        double r27269 = r27258 - r27268;
        return r27269;
}

double f(double t) {
        double r27270 = 1.0;
        double r27271 = 2.0;
        double r27272 = t;
        double r27273 = 1.0;
        double r27274 = r27272 + r27273;
        double r27275 = r27270 * r27274;
        double r27276 = r27271 / r27275;
        double r27277 = r27271 - r27276;
        double r27278 = fma(r27277, r27277, r27271);
        double r27279 = r27270 / r27278;
        double r27280 = r27270 - r27279;
        return r27280;
}

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

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

Reproduce

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