Average Error: 0.0 → 0.0
Time: 32.1s
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(t, 1, 1\right)}, \mathsf{fma}\left(\sqrt{2}, \sqrt{2}, \frac{-2}{\mathsf{fma}\left(t, 1, 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(t, 1, 1\right)}, \mathsf{fma}\left(\sqrt{2}, \sqrt{2}, \frac{-2}{\mathsf{fma}\left(t, 1, 1\right)}\right), 2\right)}
double f(double t) {
        double r2067676 = 1.0;
        double r2067677 = 2.0;
        double r2067678 = t;
        double r2067679 = r2067677 / r2067678;
        double r2067680 = r2067676 / r2067678;
        double r2067681 = r2067676 + r2067680;
        double r2067682 = r2067679 / r2067681;
        double r2067683 = r2067677 - r2067682;
        double r2067684 = r2067683 * r2067683;
        double r2067685 = r2067677 + r2067684;
        double r2067686 = r2067676 / r2067685;
        double r2067687 = r2067676 - r2067686;
        return r2067687;
}

double f(double t) {
        double r2067688 = 1.0;
        double r2067689 = 2.0;
        double r2067690 = t;
        double r2067691 = fma(r2067690, r2067688, r2067688);
        double r2067692 = r2067689 / r2067691;
        double r2067693 = r2067689 - r2067692;
        double r2067694 = sqrt(r2067689);
        double r2067695 = -r2067689;
        double r2067696 = r2067695 / r2067691;
        double r2067697 = fma(r2067694, r2067694, r2067696);
        double r2067698 = fma(r2067693, r2067697, r2067689);
        double r2067699 = r2067688 / r2067698;
        double r2067700 = r2067688 - r2067699;
        return r2067700;
}

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(2 - \frac{2}{\mathsf{fma}\left(t, 1, 1\right)}, \color{blue}{\sqrt{2} \cdot \sqrt{2}} - \frac{2}{\mathsf{fma}\left(t, 1, 1\right)}, 2\right)}\]
  5. Applied fma-neg0.0

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

    \[\leadsto 1 - \frac{1}{\mathsf{fma}\left(2 - \frac{2}{\mathsf{fma}\left(t, 1, 1\right)}, \mathsf{fma}\left(\sqrt{2}, \sqrt{2}, \frac{-2}{\mathsf{fma}\left(t, 1, 1\right)}\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)))))))))