Average Error: 0.0 → 0.0
Time: 18.3s
Precision: 64
\[\frac{1.0 + \left(2.0 - \frac{\frac{2.0}{t}}{1.0 + \frac{1.0}{t}}\right) \cdot \left(2.0 - \frac{\frac{2.0}{t}}{1.0 + \frac{1.0}{t}}\right)}{2.0 + \left(2.0 - \frac{\frac{2.0}{t}}{1.0 + \frac{1.0}{t}}\right) \cdot \left(2.0 - \frac{\frac{2.0}{t}}{1.0 + \frac{1.0}{t}}\right)}\]
\[\frac{\mathsf{fma}\left(2.0 - \frac{2.0}{\mathsf{fma}\left(1.0, t, 1.0\right)}, 2.0 - \frac{2.0}{\mathsf{fma}\left(1.0, t, 1.0\right)}, 1.0\right)}{\mathsf{fma}\left(2.0 - \frac{2.0}{\mathsf{fma}\left(1.0, t, 1.0\right)}, 2.0 - \frac{2.0}{\mathsf{fma}\left(1.0, t, 1.0\right)}, 2.0\right)}\]
\frac{1.0 + \left(2.0 - \frac{\frac{2.0}{t}}{1.0 + \frac{1.0}{t}}\right) \cdot \left(2.0 - \frac{\frac{2.0}{t}}{1.0 + \frac{1.0}{t}}\right)}{2.0 + \left(2.0 - \frac{\frac{2.0}{t}}{1.0 + \frac{1.0}{t}}\right) \cdot \left(2.0 - \frac{\frac{2.0}{t}}{1.0 + \frac{1.0}{t}}\right)}
\frac{\mathsf{fma}\left(2.0 - \frac{2.0}{\mathsf{fma}\left(1.0, t, 1.0\right)}, 2.0 - \frac{2.0}{\mathsf{fma}\left(1.0, t, 1.0\right)}, 1.0\right)}{\mathsf{fma}\left(2.0 - \frac{2.0}{\mathsf{fma}\left(1.0, t, 1.0\right)}, 2.0 - \frac{2.0}{\mathsf{fma}\left(1.0, t, 1.0\right)}, 2.0\right)}
double f(double t) {
        double r1551956 = 1.0;
        double r1551957 = 2.0;
        double r1551958 = t;
        double r1551959 = r1551957 / r1551958;
        double r1551960 = r1551956 / r1551958;
        double r1551961 = r1551956 + r1551960;
        double r1551962 = r1551959 / r1551961;
        double r1551963 = r1551957 - r1551962;
        double r1551964 = r1551963 * r1551963;
        double r1551965 = r1551956 + r1551964;
        double r1551966 = r1551957 + r1551964;
        double r1551967 = r1551965 / r1551966;
        return r1551967;
}

double f(double t) {
        double r1551968 = 2.0;
        double r1551969 = 1.0;
        double r1551970 = t;
        double r1551971 = fma(r1551969, r1551970, r1551969);
        double r1551972 = r1551968 / r1551971;
        double r1551973 = r1551968 - r1551972;
        double r1551974 = fma(r1551973, r1551973, r1551969);
        double r1551975 = fma(r1551973, r1551973, r1551968);
        double r1551976 = r1551974 / r1551975;
        return r1551976;
}

Error

Bits error versus t

Derivation

  1. Initial program 0.0

    \[\frac{1.0 + \left(2.0 - \frac{\frac{2.0}{t}}{1.0 + \frac{1.0}{t}}\right) \cdot \left(2.0 - \frac{\frac{2.0}{t}}{1.0 + \frac{1.0}{t}}\right)}{2.0 + \left(2.0 - \frac{\frac{2.0}{t}}{1.0 + \frac{1.0}{t}}\right) \cdot \left(2.0 - \frac{\frac{2.0}{t}}{1.0 + \frac{1.0}{t}}\right)}\]
  2. Simplified0.0

    \[\leadsto \color{blue}{\frac{\mathsf{fma}\left(2.0 - \frac{2.0}{\mathsf{fma}\left(1.0, t, 1.0\right)}, 2.0 - \frac{2.0}{\mathsf{fma}\left(1.0, t, 1.0\right)}, 1.0\right)}{\mathsf{fma}\left(2.0 - \frac{2.0}{\mathsf{fma}\left(1.0, t, 1.0\right)}, 2.0 - \frac{2.0}{\mathsf{fma}\left(1.0, t, 1.0\right)}, 2.0\right)}}\]
  3. Final simplification0.0

    \[\leadsto \frac{\mathsf{fma}\left(2.0 - \frac{2.0}{\mathsf{fma}\left(1.0, t, 1.0\right)}, 2.0 - \frac{2.0}{\mathsf{fma}\left(1.0, t, 1.0\right)}, 1.0\right)}{\mathsf{fma}\left(2.0 - \frac{2.0}{\mathsf{fma}\left(1.0, t, 1.0\right)}, 2.0 - \frac{2.0}{\mathsf{fma}\left(1.0, t, 1.0\right)}, 2.0\right)}\]

Reproduce

herbie shell --seed 2019165 +o rules:numerics
(FPCore (t)
  :name "Kahan p13 Example 2"
  (/ (+ 1.0 (* (- 2.0 (/ (/ 2.0 t) (+ 1.0 (/ 1.0 t)))) (- 2.0 (/ (/ 2.0 t) (+ 1.0 (/ 1.0 t)))))) (+ 2.0 (* (- 2.0 (/ (/ 2.0 t) (+ 1.0 (/ 1.0 t)))) (- 2.0 (/ (/ 2.0 t) (+ 1.0 (/ 1.0 t))))))))