Average Error: 0.0 → 0.0
Time: 11.0s
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, t, 1\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(2 - \frac{2}{\mathsf{fma}\left(1, t, 1\right)}, 2 - \frac{2}{\mathsf{fma}\left(1, t, 1\right)}, 2\right)}
double f(double t) {
        double r1386761 = 1.0;
        double r1386762 = 2.0;
        double r1386763 = t;
        double r1386764 = r1386762 / r1386763;
        double r1386765 = r1386761 / r1386763;
        double r1386766 = r1386761 + r1386765;
        double r1386767 = r1386764 / r1386766;
        double r1386768 = r1386762 - r1386767;
        double r1386769 = r1386768 * r1386768;
        double r1386770 = r1386762 + r1386769;
        double r1386771 = r1386761 / r1386770;
        double r1386772 = r1386761 - r1386771;
        return r1386772;
}

double f(double t) {
        double r1386773 = 1.0;
        double r1386774 = 2.0;
        double r1386775 = t;
        double r1386776 = fma(r1386773, r1386775, r1386773);
        double r1386777 = r1386774 / r1386776;
        double r1386778 = r1386774 - r1386777;
        double r1386779 = fma(r1386778, r1386778, r1386774);
        double r1386780 = r1386773 / r1386779;
        double r1386781 = r1386773 - r1386780;
        return r1386781;
}

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

    \[\leadsto 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)}\]

Reproduce

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