\frac{6 \cdot \left(x - 1\right)}{\left(x + 1\right) + 4 \cdot \sqrt{x}}\frac{\sqrt{x} + \sqrt{1}}{\sqrt{\left(x + 1\right) + 4 \cdot \sqrt{x}}} \cdot \frac{6}{\frac{\sqrt{\left(x + 1\right) + 4 \cdot \sqrt{x}}}{\sqrt{x} - \sqrt{1}}}double f(double x) {
double r1016968 = 6.0;
double r1016969 = x;
double r1016970 = 1.0;
double r1016971 = r1016969 - r1016970;
double r1016972 = r1016968 * r1016971;
double r1016973 = r1016969 + r1016970;
double r1016974 = 4.0;
double r1016975 = sqrt(r1016969);
double r1016976 = r1016974 * r1016975;
double r1016977 = r1016973 + r1016976;
double r1016978 = r1016972 / r1016977;
return r1016978;
}
double f(double x) {
double r1016979 = x;
double r1016980 = sqrt(r1016979);
double r1016981 = 1.0;
double r1016982 = sqrt(r1016981);
double r1016983 = r1016980 + r1016982;
double r1016984 = r1016979 + r1016981;
double r1016985 = 4.0;
double r1016986 = r1016985 * r1016980;
double r1016987 = r1016984 + r1016986;
double r1016988 = sqrt(r1016987);
double r1016989 = r1016983 / r1016988;
double r1016990 = 6.0;
double r1016991 = r1016980 - r1016982;
double r1016992 = r1016988 / r1016991;
double r1016993 = r1016990 / r1016992;
double r1016994 = r1016989 * r1016993;
return r1016994;
}




Bits error versus x
Results
| Original | 0.2 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 0.2
rmApplied associate-/l*0.1
rmApplied add-sqr-sqrt0.1
Applied add-sqr-sqrt0.3
Applied difference-of-squares0.3
Applied add-sqr-sqrt0.1
Applied times-frac0.1
Applied *-un-lft-identity0.1
Applied times-frac0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2020046
(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)))))