Average Error: 0.0 → 0.0
Time: 25.7s
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}{\mathsf{fma}\left(1, t, 1\right)}, \mathsf{fma}\left(\sqrt{2}, \sqrt{2}, \frac{-2}{\mathsf{fma}\left(1, t, 1\right)}\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}{\mathsf{fma}\left(1, t, 1\right)}, \mathsf{fma}\left(\sqrt{2}, \sqrt{2}, \frac{-2}{\mathsf{fma}\left(1, t, 1\right)}\right), 2\right)}
double f(double t) {
        double r1759330 = 1.0;
        double r1759331 = 2.0;
        double r1759332 = t;
        double r1759333 = r1759331 / r1759332;
        double r1759334 = r1759330 / r1759332;
        double r1759335 = r1759330 + r1759334;
        double r1759336 = r1759333 / r1759335;
        double r1759337 = r1759331 - r1759336;
        double r1759338 = r1759337 * r1759337;
        double r1759339 = r1759331 + r1759338;
        double r1759340 = r1759330 / r1759339;
        double r1759341 = r1759330 - r1759340;
        return r1759341;
}

double f(double t) {
        double r1759342 = 1.0;
        double r1759343 = 2.0;
        double r1759344 = t;
        double r1759345 = fma(r1759342, r1759344, r1759342);
        double r1759346 = r1759343 / r1759345;
        double r1759347 = r1759343 - r1759346;
        double r1759348 = sqrt(r1759343);
        double r1759349 = -r1759343;
        double r1759350 = r1759349 / r1759345;
        double r1759351 = fma(r1759348, r1759348, r1759350);
        double r1759352 = fma(r1759347, r1759351, r1759343);
        double r1759353 = r1759342 / r1759352;
        double r1759354 = r1759342 - r1759353;
        return r1759354;
}

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

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

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

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

Reproduce

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