Average Error: 0.0 → 0.0
Time: 27.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 r881035 = 1.0;
        double r881036 = 2.0;
        double r881037 = t;
        double r881038 = r881036 / r881037;
        double r881039 = r881035 / r881037;
        double r881040 = r881035 + r881039;
        double r881041 = r881038 / r881040;
        double r881042 = r881036 - r881041;
        double r881043 = r881042 * r881042;
        double r881044 = r881036 + r881043;
        double r881045 = r881035 / r881044;
        double r881046 = r881035 - r881045;
        return r881046;
}

double f(double t) {
        double r881047 = 1.0;
        double r881048 = 2.0;
        double r881049 = t;
        double r881050 = r881047 + r881049;
        double r881051 = r881048 / r881050;
        double r881052 = r881048 - r881051;
        double r881053 = sqrt(r881048);
        double r881054 = r881053 / r881050;
        double r881055 = r881054 * r881053;
        double r881056 = r881048 - r881055;
        double r881057 = fma(r881052, r881056, r881048);
        double r881058 = r881047 / r881057;
        double r881059 = r881047 - r881058;
        return r881059;
}

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 2019151 +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)))))))))