Average Error: 0.0 → 0.0
Time: 13.0s
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}, \mathsf{fma}\left(\sqrt{2}, \sqrt{2}, \frac{-2}{1 + t}\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}{1 + t}, \mathsf{fma}\left(\sqrt{2}, \sqrt{2}, \frac{-2}{1 + t}\right), 2\right)}
double f(double t) {
        double r1633998 = 1.0;
        double r1633999 = 2.0;
        double r1634000 = t;
        double r1634001 = r1633999 / r1634000;
        double r1634002 = r1633998 / r1634000;
        double r1634003 = r1633998 + r1634002;
        double r1634004 = r1634001 / r1634003;
        double r1634005 = r1633999 - r1634004;
        double r1634006 = r1634005 * r1634005;
        double r1634007 = r1633999 + r1634006;
        double r1634008 = r1633998 / r1634007;
        double r1634009 = r1633998 - r1634008;
        return r1634009;
}

double f(double t) {
        double r1634010 = 1.0;
        double r1634011 = 2.0;
        double r1634012 = t;
        double r1634013 = r1634010 + r1634012;
        double r1634014 = r1634011 / r1634013;
        double r1634015 = r1634011 - r1634014;
        double r1634016 = sqrt(r1634011);
        double r1634017 = -2.0;
        double r1634018 = r1634017 / r1634013;
        double r1634019 = fma(r1634016, r1634016, r1634018);
        double r1634020 = fma(r1634015, r1634019, r1634011);
        double r1634021 = r1634010 / r1634020;
        double r1634022 = r1634010 - r1634021;
        return r1634022;
}

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 add-sqr-sqrt0.0

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

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

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

Reproduce

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