\frac{6 \cdot \left(x - 1\right)}{\left(x + 1\right) + 4 \cdot \sqrt{x}}\frac{x}{\frac{\mathsf{fma}\left(\sqrt{x}, 4, x + 1\right)}{6}} - \frac{1}{\sqrt{\frac{\mathsf{fma}\left(\sqrt{x}, 4, x + 1\right)}{6}} \cdot \sqrt{\frac{\mathsf{fma}\left(\sqrt{x}, 4, x + 1\right)}{6}}}double f(double x) {
double r5328 = 6.0;
double r5329 = x;
double r5330 = 1.0;
double r5331 = r5329 - r5330;
double r5332 = r5328 * r5331;
double r5333 = r5329 + r5330;
double r5334 = 4.0;
double r5335 = sqrt(r5329);
double r5336 = r5334 * r5335;
double r5337 = r5333 + r5336;
double r5338 = r5332 / r5337;
return r5338;
}
double f(double x) {
double r5339 = x;
double r5340 = sqrt(r5339);
double r5341 = 4.0;
double r5342 = 1.0;
double r5343 = r5339 + r5342;
double r5344 = fma(r5340, r5341, r5343);
double r5345 = 6.0;
double r5346 = r5344 / r5345;
double r5347 = r5339 / r5346;
double r5348 = sqrt(r5346);
double r5349 = r5348 * r5348;
double r5350 = r5342 / r5349;
double r5351 = r5347 - r5350;
return r5351;
}




Bits error versus x
| Original | 0.2 |
|---|---|
| Target | 0.0 |
| Herbie | 0.1 |
Initial program 0.2
Simplified0.0
rmApplied div-sub0.0
rmApplied add-sqr-sqrt0.1
Final simplification0.1
herbie shell --seed 2020025 +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)))))