\frac{x}{x} - \frac{1}{x} \cdot \sqrt{x \cdot x}\left(1 - \frac{\left|x\right| \cdot 1}{x}\right) + \left|x\right| \cdot \left(\left(-\frac{1}{x}\right) + \frac{1}{x}\right)double f(double x) {
double r112824 = x;
double r112825 = r112824 / r112824;
double r112826 = 1.0;
double r112827 = r112826 / r112824;
double r112828 = r112824 * r112824;
double r112829 = sqrt(r112828);
double r112830 = r112827 * r112829;
double r112831 = r112825 - r112830;
return r112831;
}
double f(double x) {
double r112832 = 1.0;
double r112833 = x;
double r112834 = fabs(r112833);
double r112835 = 1.0;
double r112836 = r112834 * r112835;
double r112837 = r112836 / r112833;
double r112838 = r112832 - r112837;
double r112839 = r112835 / r112833;
double r112840 = -r112839;
double r112841 = r112840 + r112839;
double r112842 = r112834 * r112841;
double r112843 = r112838 + r112842;
return r112843;
}




Bits error versus x
Results
| Original | 32.3 |
|---|---|
| Target | 0 |
| Herbie | 0.0 |
Initial program 32.3
rmApplied add-cube-cbrt32.3
Applied prod-diff45.6
Simplified32.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2020003 +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)))))