Average Error: 0.0 → 0.0
Time: 40.6s
Precision: 64
\[1.0 - \frac{1.0}{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)}\]
\[1.0 - \frac{1.0}{\mathsf{fma}\left(\sqrt[3]{\left(2.0 - \frac{2.0}{\mathsf{fma}\left(1.0, t, 1.0\right)}\right) \cdot \left(\left(2.0 - \frac{2.0}{\mathsf{fma}\left(1.0, t, 1.0\right)}\right) \cdot \left(2.0 - \frac{2.0}{\mathsf{fma}\left(1.0, t, 1.0\right)}\right)\right)}, 2.0 - \frac{2.0}{\mathsf{fma}\left(1.0, t, 1.0\right)}, 2.0\right)}\]
1.0 - \frac{1.0}{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)}
1.0 - \frac{1.0}{\mathsf{fma}\left(\sqrt[3]{\left(2.0 - \frac{2.0}{\mathsf{fma}\left(1.0, t, 1.0\right)}\right) \cdot \left(\left(2.0 - \frac{2.0}{\mathsf{fma}\left(1.0, t, 1.0\right)}\right) \cdot \left(2.0 - \frac{2.0}{\mathsf{fma}\left(1.0, t, 1.0\right)}\right)\right)}, 2.0 - \frac{2.0}{\mathsf{fma}\left(1.0, t, 1.0\right)}, 2.0\right)}
double f(double t) {
        double r1870220 = 1.0;
        double r1870221 = 2.0;
        double r1870222 = t;
        double r1870223 = r1870221 / r1870222;
        double r1870224 = r1870220 / r1870222;
        double r1870225 = r1870220 + r1870224;
        double r1870226 = r1870223 / r1870225;
        double r1870227 = r1870221 - r1870226;
        double r1870228 = r1870227 * r1870227;
        double r1870229 = r1870221 + r1870228;
        double r1870230 = r1870220 / r1870229;
        double r1870231 = r1870220 - r1870230;
        return r1870231;
}

double f(double t) {
        double r1870232 = 1.0;
        double r1870233 = 2.0;
        double r1870234 = t;
        double r1870235 = fma(r1870232, r1870234, r1870232);
        double r1870236 = r1870233 / r1870235;
        double r1870237 = r1870233 - r1870236;
        double r1870238 = r1870237 * r1870237;
        double r1870239 = r1870237 * r1870238;
        double r1870240 = cbrt(r1870239);
        double r1870241 = fma(r1870240, r1870237, r1870233);
        double r1870242 = r1870232 / r1870241;
        double r1870243 = r1870232 - r1870242;
        return r1870243;
}

Error

Bits error versus t

Derivation

  1. Initial program 0.0

    \[1.0 - \frac{1.0}{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}{1.0 - \frac{1.0}{\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. Using strategy rm
  4. Applied add-cbrt-cube0.0

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

    \[\leadsto 1.0 - \frac{1.0}{\mathsf{fma}\left(\sqrt[3]{\left(2.0 - \frac{2.0}{\mathsf{fma}\left(1.0, t, 1.0\right)}\right) \cdot \left(\left(2.0 - \frac{2.0}{\mathsf{fma}\left(1.0, t, 1.0\right)}\right) \cdot \left(2.0 - \frac{2.0}{\mathsf{fma}\left(1.0, t, 1.0\right)}\right)\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 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)))))))))