Average Error: 0.0 → 0.0
Time: 10.8s
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{2}{1 + t}, 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{2}{1 + t}, 2\right)}
double f(double t) {
        double r945051 = 1.0;
        double r945052 = 2.0;
        double r945053 = t;
        double r945054 = r945052 / r945053;
        double r945055 = r945051 / r945053;
        double r945056 = r945051 + r945055;
        double r945057 = r945054 / r945056;
        double r945058 = r945052 - r945057;
        double r945059 = r945058 * r945058;
        double r945060 = r945052 + r945059;
        double r945061 = r945051 / r945060;
        double r945062 = r945051 - r945061;
        return r945062;
}

double f(double t) {
        double r945063 = 1.0;
        double r945064 = 2.0;
        double r945065 = t;
        double r945066 = r945063 + r945065;
        double r945067 = r945064 / r945066;
        double r945068 = r945064 - r945067;
        double r945069 = fma(r945068, r945068, r945064);
        double r945070 = r945063 / r945069;
        double r945071 = r945063 - r945070;
        return r945071;
}

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. Final simplification0.0

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

Reproduce

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