Average Error: 0.0 → 0.0
Time: 14.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(2 - \frac{2}{\mathsf{fma}\left(1, 1, t \cdot 1\right)}, \log \left(\frac{e^{2}}{e^{\frac{2}{\mathsf{fma}\left(1, 1, t \cdot 1\right)}}}\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(2 - \frac{2}{\mathsf{fma}\left(1, 1, t \cdot 1\right)}, \log \left(\frac{e^{2}}{e^{\frac{2}{\mathsf{fma}\left(1, 1, t \cdot 1\right)}}}\right), 2\right)}
double f(double t) {
        double r1555611 = 1.0;
        double r1555612 = 2.0;
        double r1555613 = t;
        double r1555614 = r1555612 / r1555613;
        double r1555615 = r1555611 / r1555613;
        double r1555616 = r1555611 + r1555615;
        double r1555617 = r1555614 / r1555616;
        double r1555618 = r1555612 - r1555617;
        double r1555619 = r1555618 * r1555618;
        double r1555620 = r1555612 + r1555619;
        double r1555621 = r1555611 / r1555620;
        double r1555622 = r1555611 - r1555621;
        return r1555622;
}

double f(double t) {
        double r1555623 = 1.0;
        double r1555624 = 2.0;
        double r1555625 = 1.0;
        double r1555626 = t;
        double r1555627 = r1555626 * r1555623;
        double r1555628 = fma(r1555625, r1555623, r1555627);
        double r1555629 = r1555624 / r1555628;
        double r1555630 = r1555624 - r1555629;
        double r1555631 = exp(r1555624);
        double r1555632 = exp(r1555629);
        double r1555633 = r1555631 / r1555632;
        double r1555634 = log(r1555633);
        double r1555635 = fma(r1555630, r1555634, r1555624);
        double r1555636 = r1555623 / r1555635;
        double r1555637 = r1555623 - r1555636;
        return r1555637;
}

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

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

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

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

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

Reproduce

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