\frac{x}{x} - \frac{1}{x} \cdot \sqrt{x \cdot x}2 \cdot \log \left(\sqrt[3]{e^{\mathsf{fma}\left(-\frac{1}{x}, \left|x\right|, 1\right)}}\right) + \log \left(\sqrt[3]{e^{\mathsf{fma}\left(-\frac{1}{x}, \left|x\right|, 1\right)}}\right)double f(double x) {
double r150325 = x;
double r150326 = r150325 / r150325;
double r150327 = 1.0;
double r150328 = r150327 / r150325;
double r150329 = r150325 * r150325;
double r150330 = sqrt(r150329);
double r150331 = r150328 * r150330;
double r150332 = r150326 - r150331;
return r150332;
}
double f(double x) {
double r150333 = 2.0;
double r150334 = 1.0;
double r150335 = x;
double r150336 = r150334 / r150335;
double r150337 = -r150336;
double r150338 = fabs(r150335);
double r150339 = 1.0;
double r150340 = fma(r150337, r150338, r150339);
double r150341 = exp(r150340);
double r150342 = cbrt(r150341);
double r150343 = log(r150342);
double r150344 = r150333 * r150343;
double r150345 = r150344 + r150343;
return r150345;
}




Bits error versus x
| Original | 32.5 |
|---|---|
| Target | 0 |
| Herbie | 0.0 |
Initial program 32.5
Simplified30.2
rmApplied add-log-exp4.7
rmApplied add-cube-cbrt0.0
Applied log-prod0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2020020 +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)))))