Average Error: 0.0 → 0.0
Time: 23.5s
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{\sqrt{2}}{1 + t} \cdot \sqrt{2}, 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{\sqrt{2}}{1 + t} \cdot \sqrt{2}, 2\right)}
double f(double t) {
        double r1086822 = 1.0;
        double r1086823 = 2.0;
        double r1086824 = t;
        double r1086825 = r1086823 / r1086824;
        double r1086826 = r1086822 / r1086824;
        double r1086827 = r1086822 + r1086826;
        double r1086828 = r1086825 / r1086827;
        double r1086829 = r1086823 - r1086828;
        double r1086830 = r1086829 * r1086829;
        double r1086831 = r1086823 + r1086830;
        double r1086832 = r1086822 / r1086831;
        double r1086833 = r1086822 - r1086832;
        return r1086833;
}

double f(double t) {
        double r1086834 = 1.0;
        double r1086835 = 2.0;
        double r1086836 = t;
        double r1086837 = r1086834 + r1086836;
        double r1086838 = r1086835 / r1086837;
        double r1086839 = r1086835 - r1086838;
        double r1086840 = sqrt(r1086835);
        double r1086841 = r1086840 / r1086837;
        double r1086842 = r1086841 * r1086840;
        double r1086843 = r1086835 - r1086842;
        double r1086844 = fma(r1086839, r1086843, r1086835);
        double r1086845 = r1086834 / r1086844;
        double r1086846 = r1086834 - r1086845;
        return r1086846;
}

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. Using strategy rm
  4. Applied *-un-lft-identity0.0

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

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

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

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

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

Reproduce

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