\frac{x}{x} - \frac{1}{x} \cdot \sqrt{x \cdot x}\mathsf{log1p}\left(\mathsf{expm1}\left(\left(-\frac{1}{x}\right) \cdot \left|x\right|\right)\right) + 1double f(double x) {
double r158038 = x;
double r158039 = r158038 / r158038;
double r158040 = 1.0;
double r158041 = r158040 / r158038;
double r158042 = r158038 * r158038;
double r158043 = sqrt(r158042);
double r158044 = r158041 * r158043;
double r158045 = r158039 - r158044;
return r158045;
}
double f(double x) {
double r158046 = 1.0;
double r158047 = x;
double r158048 = r158046 / r158047;
double r158049 = -r158048;
double r158050 = fabs(r158047);
double r158051 = r158049 * r158050;
double r158052 = expm1(r158051);
double r158053 = log1p(r158052);
double r158054 = 1.0;
double r158055 = r158053 + r158054;
return r158055;
}




Bits error versus x
Results
| Original | 31.9 |
|---|---|
| Target | 0 |
| Herbie | 0.0 |
Initial program 31.9
Simplified30.6
rmApplied fma-udef4.7
rmApplied log1p-expm1-u0.0
Final simplification0.0
herbie shell --seed 2020049 +o rules:numerics
(FPCore (x)
:name "sqrt sqr"
:precision binary64
:herbie-target
(if (< x 0.0) 2 0.0)
(- (/ x x) (* (/ 1 x) (sqrt (* x x)))))