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 r32793 = 1.0;
double r32794 = 2.0;
double r32795 = t;
double r32796 = r32794 / r32795;
double r32797 = r32793 / r32795;
double r32798 = r32793 + r32797;
double r32799 = r32796 / r32798;
double r32800 = r32794 - r32799;
double r32801 = r32800 * r32800;
double r32802 = r32794 + r32801;
double r32803 = r32793 / r32802;
double r32804 = r32793 - r32803;
return r32804;
}
double f(double t) {
double r32805 = 1.0;
double r32806 = 2.0;
double r32807 = t;
double r32808 = r32805 / r32807;
double r32809 = r32805 + r32808;
double r32810 = r32809 * r32807;
double r32811 = r32806 / r32810;
double r32812 = r32806 - r32811;
double r32813 = fma(r32812, r32812, r32806);
double r32814 = r32805 / r32813;
double r32815 = log1p(r32814);
double r32816 = expm1(r32815);
double r32817 = r32805 - r32816;
return r32817;
}



Bits error versus t
Initial program 0.0
rmApplied expm1-log1p-u0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2019326 +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)))))))))