Average Error: 0.0 → 0.0
Time: 13.6s
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{log1p}\left(\mathsf{expm1}\left(\frac{1}{\mathsf{fma}\left(2 - \frac{2}{\left(1 + \frac{1}{t}\right) \cdot t}, 2 - \frac{2}{\left(1 + \frac{1}{t}\right) \cdot t}, 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{log1p}\left(\mathsf{expm1}\left(\frac{1}{\mathsf{fma}\left(2 - \frac{2}{\left(1 + \frac{1}{t}\right) \cdot t}, 2 - \frac{2}{\left(1 + \frac{1}{t}\right) \cdot t}, 2\right)}\right)\right)
double f(double t) {
        double r95313 = 1.0;
        double r95314 = 2.0;
        double r95315 = t;
        double r95316 = r95314 / r95315;
        double r95317 = r95313 / r95315;
        double r95318 = r95313 + r95317;
        double r95319 = r95316 / r95318;
        double r95320 = r95314 - r95319;
        double r95321 = r95320 * r95320;
        double r95322 = r95314 + r95321;
        double r95323 = r95313 / r95322;
        double r95324 = r95313 - r95323;
        return r95324;
}

double f(double t) {
        double r95325 = 1.0;
        double r95326 = 2.0;
        double r95327 = t;
        double r95328 = r95325 / r95327;
        double r95329 = r95325 + r95328;
        double r95330 = r95329 * r95327;
        double r95331 = r95326 / r95330;
        double r95332 = r95326 - r95331;
        double r95333 = fma(r95332, r95332, r95326);
        double r95334 = r95325 / r95333;
        double r95335 = expm1(r95334);
        double r95336 = log1p(r95335);
        double r95337 = r95325 - r95336;
        return r95337;
}

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. Using strategy rm
  3. Applied log1p-expm1-u0.0

    \[\leadsto 1 - \color{blue}{\mathsf{log1p}\left(\mathsf{expm1}\left(\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)}\right)\right)}\]
  4. Simplified0.0

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

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

Reproduce

herbie shell --seed 2019350 +o rules:numerics
(FPCore (t)
  :name "Kahan p13 Example 3"
  :precision binary64
  (- 1 (/ 1 (+ 2 (* (- 2 (/ (/ 2 t) (+ 1 (/ 1 t)))) (- 2 (/ (/ 2 t) (+ 1 (/ 1 t)))))))))