\frac{6.0 \cdot \left(x - 1.0\right)}{\left(x + 1.0\right) + 4.0 \cdot \sqrt{x}}\frac{x - 1.0}{\frac{\mathsf{fma}\left(\sqrt{x}, 4.0, 1.0\right) + x}{6.0}}double f(double x) {
double r37030346 = 6.0;
double r37030347 = x;
double r37030348 = 1.0;
double r37030349 = r37030347 - r37030348;
double r37030350 = r37030346 * r37030349;
double r37030351 = r37030347 + r37030348;
double r37030352 = 4.0;
double r37030353 = sqrt(r37030347);
double r37030354 = r37030352 * r37030353;
double r37030355 = r37030351 + r37030354;
double r37030356 = r37030350 / r37030355;
return r37030356;
}
double f(double x) {
double r37030357 = x;
double r37030358 = 1.0;
double r37030359 = r37030357 - r37030358;
double r37030360 = sqrt(r37030357);
double r37030361 = 4.0;
double r37030362 = fma(r37030360, r37030361, r37030358);
double r37030363 = r37030362 + r37030357;
double r37030364 = 6.0;
double r37030365 = r37030363 / r37030364;
double r37030366 = r37030359 / r37030365;
return r37030366;
}




Bits error versus x
| Original | 0.2 |
|---|---|
| Target | 0.1 |
| Herbie | 0.0 |
Initial program 0.2
Simplified0.0
rmApplied *-un-lft-identity0.0
Applied associate-/r*0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2019163 +o rules:numerics
(FPCore (x)
:name "Data.Approximate.Numerics:blog from approximate-0.2.2.1"
:herbie-target
(/ 6.0 (/ (+ (+ x 1.0) (* 4.0 (sqrt x))) (- x 1.0)))
(/ (* 6.0 (- x 1.0)) (+ (+ x 1.0) (* 4.0 (sqrt x)))))