\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 r159895 = x;
double r159896 = r159895 / r159895;
double r159897 = 1.0;
double r159898 = r159897 / r159895;
double r159899 = r159895 * r159895;
double r159900 = sqrt(r159899);
double r159901 = r159898 * r159900;
double r159902 = r159896 - r159901;
return r159902;
}
double f(double x) {
double r159903 = 2.0;
double r159904 = 1.0;
double r159905 = x;
double r159906 = r159904 / r159905;
double r159907 = -r159906;
double r159908 = fabs(r159905);
double r159909 = 1.0;
double r159910 = fma(r159907, r159908, r159909);
double r159911 = exp(r159910);
double r159912 = cbrt(r159911);
double r159913 = log(r159912);
double r159914 = r159903 * r159913;
double r159915 = r159914 + r159913;
return r159915;
}




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