\frac{6 \cdot \left(x - 1\right)}{\left(x + 1\right) + 4 \cdot \sqrt{x}}\frac{1}{\frac{\frac{\mathsf{fma}\left(\sqrt{x}, 4, x + 1\right)}{x - 1}}{6}}double f(double x) {
double r486590 = 6.0;
double r486591 = x;
double r486592 = 1.0;
double r486593 = r486591 - r486592;
double r486594 = r486590 * r486593;
double r486595 = r486591 + r486592;
double r486596 = 4.0;
double r486597 = sqrt(r486591);
double r486598 = r486596 * r486597;
double r486599 = r486595 + r486598;
double r486600 = r486594 / r486599;
return r486600;
}
double f(double x) {
double r486601 = 1.0;
double r486602 = x;
double r486603 = sqrt(r486602);
double r486604 = 4.0;
double r486605 = 1.0;
double r486606 = r486602 + r486605;
double r486607 = fma(r486603, r486604, r486606);
double r486608 = r486602 - r486605;
double r486609 = r486607 / r486608;
double r486610 = 6.0;
double r486611 = r486609 / r486610;
double r486612 = r486601 / r486611;
return r486612;
}




Bits error versus x
| Original | 0.2 |
|---|---|
| Target | 0.0 |
| Herbie | 0.1 |
Initial program 0.2
Simplified0.0
rmApplied clear-num0.1
Final simplification0.1
herbie shell --seed 2019212 +o rules:numerics
(FPCore (x)
:name "Data.Approximate.Numerics:blog from approximate-0.2.2.1"
:precision binary64
:herbie-target
(/ 6 (/ (+ (+ x 1) (* 4 (sqrt x))) (- x 1)))
(/ (* 6 (- x 1)) (+ (+ x 1) (* 4 (sqrt x)))))