Average Error: 0.0 → 0.0
Time: 15.3s
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(\log \left(\frac{e^{2}}{e^{\frac{2}{\mathsf{fma}\left(1, t, 1\right)}}}\right), 2 - \frac{2}{\mathsf{fma}\left(1, t, 1\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(\log \left(\frac{e^{2}}{e^{\frac{2}{\mathsf{fma}\left(1, t, 1\right)}}}\right), 2 - \frac{2}{\mathsf{fma}\left(1, t, 1\right)}, 2\right)}
double f(double t) {
        double r1432430 = 1.0;
        double r1432431 = 2.0;
        double r1432432 = t;
        double r1432433 = r1432431 / r1432432;
        double r1432434 = r1432430 / r1432432;
        double r1432435 = r1432430 + r1432434;
        double r1432436 = r1432433 / r1432435;
        double r1432437 = r1432431 - r1432436;
        double r1432438 = r1432437 * r1432437;
        double r1432439 = r1432431 + r1432438;
        double r1432440 = r1432430 / r1432439;
        double r1432441 = r1432430 - r1432440;
        return r1432441;
}

double f(double t) {
        double r1432442 = 1.0;
        double r1432443 = 2.0;
        double r1432444 = exp(r1432443);
        double r1432445 = t;
        double r1432446 = fma(r1432442, r1432445, r1432442);
        double r1432447 = r1432443 / r1432446;
        double r1432448 = exp(r1432447);
        double r1432449 = r1432444 / r1432448;
        double r1432450 = log(r1432449);
        double r1432451 = r1432443 - r1432447;
        double r1432452 = fma(r1432450, r1432451, r1432443);
        double r1432453 = r1432442 / r1432452;
        double r1432454 = r1432442 - r1432453;
        return r1432454;
}

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}{\mathsf{fma}\left(1, t, 1\right)}, 2 - \frac{2}{\mathsf{fma}\left(1, t, 1\right)}, 2\right)}}\]
  3. Using strategy rm
  4. Applied add-log-exp0.0

    \[\leadsto 1 - \frac{1}{\mathsf{fma}\left(2 - \color{blue}{\log \left(e^{\frac{2}{\mathsf{fma}\left(1, t, 1\right)}}\right)}, 2 - \frac{2}{\mathsf{fma}\left(1, t, 1\right)}, 2\right)}\]
  5. Applied add-log-exp0.0

    \[\leadsto 1 - \frac{1}{\mathsf{fma}\left(\color{blue}{\log \left(e^{2}\right)} - \log \left(e^{\frac{2}{\mathsf{fma}\left(1, t, 1\right)}}\right), 2 - \frac{2}{\mathsf{fma}\left(1, t, 1\right)}, 2\right)}\]
  6. Applied diff-log0.0

    \[\leadsto 1 - \frac{1}{\mathsf{fma}\left(\color{blue}{\log \left(\frac{e^{2}}{e^{\frac{2}{\mathsf{fma}\left(1, t, 1\right)}}}\right)}, 2 - \frac{2}{\mathsf{fma}\left(1, t, 1\right)}, 2\right)}\]
  7. Final simplification0.0

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

Reproduce

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