\frac{6 \cdot \left(x - 1\right)}{\left(x + 1\right) + 4 \cdot \sqrt{x}}\frac{x - 1}{1 + \mathsf{fma}\left(4, \sqrt{x}, x\right)} \cdot 6double f(double x) {
double r613561 = 6.0;
double r613562 = x;
double r613563 = 1.0;
double r613564 = r613562 - r613563;
double r613565 = r613561 * r613564;
double r613566 = r613562 + r613563;
double r613567 = 4.0;
double r613568 = sqrt(r613562);
double r613569 = r613567 * r613568;
double r613570 = r613566 + r613569;
double r613571 = r613565 / r613570;
return r613571;
}
double f(double x) {
double r613572 = x;
double r613573 = 1.0;
double r613574 = r613572 - r613573;
double r613575 = 4.0;
double r613576 = sqrt(r613572);
double r613577 = fma(r613575, r613576, r613572);
double r613578 = r613573 + r613577;
double r613579 = r613574 / r613578;
double r613580 = 6.0;
double r613581 = r613579 * r613580;
return r613581;
}




Bits error versus x
| Original | 0.2 |
|---|---|
| Target | 0.1 |
| Herbie | 0.0 |
Initial program 0.2
Simplified0.0
rmApplied clear-num0.1
Simplified0.1
rmApplied *-un-lft-identity0.1
Applied *-un-lft-identity0.1
Applied times-frac0.1
Applied add-cube-cbrt0.1
Applied times-frac0.1
Simplified0.1
Simplified0.0
Final simplification0.0
herbie shell --seed 2019174 +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)))))