Average Error: 0.0 → 0.0
Time: 4.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}{2 + \left(2 - \frac{\frac{2}{t}}{1 + \frac{1}{t}}\right) \cdot \mathsf{fma}\left(\sqrt{2}, \sqrt{2}, -\frac{\frac{2}{t}}{1 + \frac{1}{t}}\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}{2 + \left(2 - \frac{\frac{2}{t}}{1 + \frac{1}{t}}\right) \cdot \mathsf{fma}\left(\sqrt{2}, \sqrt{2}, -\frac{\frac{2}{t}}{1 + \frac{1}{t}}\right)}
double f(double t) {
        double r56705 = 1.0;
        double r56706 = 2.0;
        double r56707 = t;
        double r56708 = r56706 / r56707;
        double r56709 = r56705 / r56707;
        double r56710 = r56705 + r56709;
        double r56711 = r56708 / r56710;
        double r56712 = r56706 - r56711;
        double r56713 = r56712 * r56712;
        double r56714 = r56706 + r56713;
        double r56715 = r56705 / r56714;
        double r56716 = r56705 - r56715;
        return r56716;
}

double f(double t) {
        double r56717 = 1.0;
        double r56718 = 2.0;
        double r56719 = t;
        double r56720 = r56718 / r56719;
        double r56721 = r56717 / r56719;
        double r56722 = r56717 + r56721;
        double r56723 = r56720 / r56722;
        double r56724 = r56718 - r56723;
        double r56725 = sqrt(r56718);
        double r56726 = -r56723;
        double r56727 = fma(r56725, r56725, r56726);
        double r56728 = r56724 * r56727;
        double r56729 = r56718 + r56728;
        double r56730 = r56717 / r56729;
        double r56731 = r56717 - r56730;
        return r56731;
}

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. Using strategy rm
  3. Applied add-sqr-sqrt0.0

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

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

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

Reproduce

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