\frac{6 \cdot \left(x - 1\right)}{\left(x + 1\right) + 4 \cdot \sqrt{x}}6 \cdot \frac{x - 1}{\left(x + 1\right) + 4 \cdot \sqrt{x}}double f(double x) {
double r541671 = 6.0;
double r541672 = x;
double r541673 = 1.0;
double r541674 = r541672 - r541673;
double r541675 = r541671 * r541674;
double r541676 = r541672 + r541673;
double r541677 = 4.0;
double r541678 = sqrt(r541672);
double r541679 = r541677 * r541678;
double r541680 = r541676 + r541679;
double r541681 = r541675 / r541680;
return r541681;
}
double f(double x) {
double r541682 = 6.0;
double r541683 = x;
double r541684 = 1.0;
double r541685 = r541683 - r541684;
double r541686 = r541683 + r541684;
double r541687 = 4.0;
double r541688 = sqrt(r541683);
double r541689 = r541687 * r541688;
double r541690 = r541686 + r541689;
double r541691 = r541685 / r541690;
double r541692 = r541682 * r541691;
return r541692;
}




Bits error versus x
Results
| Original | 0.2 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 0.2
rmApplied add-cbrt-cube21.0
Applied add-cbrt-cube21.7
Applied add-cbrt-cube22.2
Applied cbrt-unprod22.2
Applied cbrt-undiv22.2
Simplified1.0
rmApplied *-un-lft-identity1.0
Applied times-frac1.0
Applied unpow-prod-down1.0
Applied cbrt-prod1.0
Simplified0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2020042
(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)))))