\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 r893766 = 6.0;
double r893767 = x;
double r893768 = 1.0;
double r893769 = r893767 - r893768;
double r893770 = r893766 * r893769;
double r893771 = r893767 + r893768;
double r893772 = 4.0;
double r893773 = sqrt(r893767);
double r893774 = r893772 * r893773;
double r893775 = r893771 + r893774;
double r893776 = r893770 / r893775;
return r893776;
}
double f(double x) {
double r893777 = 6.0;
double r893778 = x;
double r893779 = 1.0;
double r893780 = r893778 - r893779;
double r893781 = r893778 + r893779;
double r893782 = 4.0;
double r893783 = sqrt(r893778);
double r893784 = r893782 * r893783;
double r893785 = r893781 + r893784;
double r893786 = r893780 / r893785;
double r893787 = r893777 * r893786;
return r893787;
}




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)))))