\frac{x}{x} - \frac{1}{x} \cdot \sqrt{x \cdot x}\mathsf{fma}\left(1, -\frac{\left|x\right|}{x}, 1\right)double f(double x) {
double r239048 = x;
double r239049 = r239048 / r239048;
double r239050 = 1.0;
double r239051 = r239050 / r239048;
double r239052 = r239048 * r239048;
double r239053 = sqrt(r239052);
double r239054 = r239051 * r239053;
double r239055 = r239049 - r239054;
return r239055;
}
double f(double x) {
double r239056 = 1.0;
double r239057 = x;
double r239058 = fabs(r239057);
double r239059 = r239058 / r239057;
double r239060 = -r239059;
double r239061 = 1.0;
double r239062 = fma(r239056, r239060, r239061);
return r239062;
}




Bits error versus x
| Original | 32.4 |
|---|---|
| Target | 0 |
| Herbie | 0 |
Initial program 32.4
Simplified4.7
rmApplied add-cube-cbrt4.7
Applied prod-diff30.8
Simplified30.8
Simplified0
Final simplification0
herbie shell --seed 2019323 +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)))))