Average Error: 0.0 → 0.0
Time: 32.3s
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(\mathsf{fma}\left(\sqrt{2}, \sqrt{2}, \frac{-2}{\mathsf{fma}\left(t, 1, 1\right)}\right), 2 - \frac{2}{\mathsf{fma}\left(t, 1, 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(\mathsf{fma}\left(\sqrt{2}, \sqrt{2}, \frac{-2}{\mathsf{fma}\left(t, 1, 1\right)}\right), 2 - \frac{2}{\mathsf{fma}\left(t, 1, 1\right)}, 2\right)}
double f(double t) {
        double r2004588 = 1.0;
        double r2004589 = 2.0;
        double r2004590 = t;
        double r2004591 = r2004589 / r2004590;
        double r2004592 = r2004588 / r2004590;
        double r2004593 = r2004588 + r2004592;
        double r2004594 = r2004591 / r2004593;
        double r2004595 = r2004589 - r2004594;
        double r2004596 = r2004595 * r2004595;
        double r2004597 = r2004589 + r2004596;
        double r2004598 = r2004588 / r2004597;
        double r2004599 = r2004588 - r2004598;
        return r2004599;
}

double f(double t) {
        double r2004600 = 1.0;
        double r2004601 = 2.0;
        double r2004602 = sqrt(r2004601);
        double r2004603 = -r2004601;
        double r2004604 = t;
        double r2004605 = fma(r2004604, r2004600, r2004600);
        double r2004606 = r2004603 / r2004605;
        double r2004607 = fma(r2004602, r2004602, r2004606);
        double r2004608 = r2004601 / r2004605;
        double r2004609 = r2004601 - r2004608;
        double r2004610 = fma(r2004607, r2004609, r2004601);
        double r2004611 = r2004600 / r2004610;
        double r2004612 = r2004600 - r2004611;
        return r2004612;
}

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(t, 1, 1\right)}, 2 - \frac{2}{\mathsf{fma}\left(t, 1, 1\right)}, 2\right)}}\]
  3. Using strategy rm
  4. Applied add-sqr-sqrt0.0

    \[\leadsto 1 - \frac{1}{\mathsf{fma}\left(\color{blue}{\sqrt{2} \cdot \sqrt{2}} - \frac{2}{\mathsf{fma}\left(t, 1, 1\right)}, 2 - \frac{2}{\mathsf{fma}\left(t, 1, 1\right)}, 2\right)}\]
  5. Applied fma-neg0.0

    \[\leadsto 1 - \frac{1}{\mathsf{fma}\left(\color{blue}{\mathsf{fma}\left(\sqrt{2}, \sqrt{2}, -\frac{2}{\mathsf{fma}\left(t, 1, 1\right)}\right)}, 2 - \frac{2}{\mathsf{fma}\left(t, 1, 1\right)}, 2\right)}\]
  6. Final simplification0.0

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

Reproduce

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