Average Error: 0.0 → 0.0
Time: 21.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}{\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{expm1}\left(\mathsf{log1p}\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 r39135 = 1.0;
        double r39136 = 2.0;
        double r39137 = t;
        double r39138 = r39136 / r39137;
        double r39139 = r39135 / r39137;
        double r39140 = r39135 + r39139;
        double r39141 = r39138 / r39140;
        double r39142 = r39136 - r39141;
        double r39143 = r39142 * r39142;
        double r39144 = r39136 + r39143;
        double r39145 = r39135 / r39144;
        double r39146 = r39135 - r39145;
        return r39146;
}

double f(double t) {
        double r39147 = 1.0;
        double r39148 = 2.0;
        double r39149 = t;
        double r39150 = r39147 / r39149;
        double r39151 = r39147 + r39150;
        double r39152 = r39151 * r39149;
        double r39153 = r39148 / r39152;
        double r39154 = r39148 - r39153;
        double r39155 = fma(r39154, r39154, r39148);
        double r39156 = r39147 / r39155;
        double r39157 = log1p(r39156);
        double r39158 = expm1(r39157);
        double r39159 = r39147 - r39158;
        return r39159;
}

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 expm1-log1p-u0.0

    \[\leadsto 1 - \color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\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{expm1}\left(\color{blue}{\mathsf{log1p}\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{expm1}\left(\mathsf{log1p}\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 2019304 +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)))))))))