Average Error: 0.0 → 0.0
Time: 14.7s
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 - \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{1}{\mathsf{fma}\left(2 - \frac{2}{\mathsf{fma}\left(t, 1, 1\right)}, 2 - \frac{2}{\mathsf{fma}\left(t, 1, 1\right)}, 2\right)}\right)\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 - \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{1}{\mathsf{fma}\left(2 - \frac{2}{\mathsf{fma}\left(t, 1, 1\right)}, 2 - \frac{2}{\mathsf{fma}\left(t, 1, 1\right)}, 2\right)}\right)\right)
double f(double t) {
        double r2916990 = 1.0;
        double r2916991 = 2.0;
        double r2916992 = t;
        double r2916993 = r2916991 / r2916992;
        double r2916994 = r2916990 / r2916992;
        double r2916995 = r2916990 + r2916994;
        double r2916996 = r2916993 / r2916995;
        double r2916997 = r2916991 - r2916996;
        double r2916998 = r2916997 * r2916997;
        double r2916999 = r2916991 + r2916998;
        double r2917000 = r2916990 / r2916999;
        double r2917001 = r2916990 - r2917000;
        return r2917001;
}

double f(double t) {
        double r2917002 = 1.0;
        double r2917003 = 2.0;
        double r2917004 = t;
        double r2917005 = fma(r2917004, r2917002, r2917002);
        double r2917006 = r2917003 / r2917005;
        double r2917007 = r2917003 - r2917006;
        double r2917008 = fma(r2917007, r2917007, r2917003);
        double r2917009 = r2917002 / r2917008;
        double r2917010 = log1p(r2917009);
        double r2917011 = expm1(r2917010);
        double r2917012 = r2917002 - r2917011;
        return r2917012;
}

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

    \[\leadsto 1 - \color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{1}{\mathsf{fma}\left(2 - \frac{2}{\mathsf{fma}\left(t, 1, \frac{1}{1}\right)}, 2 - \frac{2}{\mathsf{fma}\left(t, 1, \frac{1}{1}\right)}, 2\right)}\right)\right)}\]
  5. Simplified0.0

    \[\leadsto 1 - \mathsf{expm1}\left(\color{blue}{\mathsf{log1p}\left(\frac{1}{\mathsf{fma}\left(2 - \frac{2}{\mathsf{fma}\left(t, 1, 1\right)}, 2 - \frac{2}{\mathsf{fma}\left(t, 1, 1\right)}, 2\right)}\right)}\right)\]
  6. Final simplification0.0

    \[\leadsto 1 - \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{1}{\mathsf{fma}\left(2 - \frac{2}{\mathsf{fma}\left(t, 1, 1\right)}, 2 - \frac{2}{\mathsf{fma}\left(t, 1, 1\right)}, 2\right)}\right)\right)\]

Reproduce

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