\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\frac{1}{x + 1}}{\left(\frac{1}{\sqrt{x}} + \frac{1}{\sqrt{x + 1}}\right) \cdot x}double f(double x) {
double r5658791 = 1.0;
double r5658792 = x;
double r5658793 = sqrt(r5658792);
double r5658794 = r5658791 / r5658793;
double r5658795 = r5658792 + r5658791;
double r5658796 = sqrt(r5658795);
double r5658797 = r5658791 / r5658796;
double r5658798 = r5658794 - r5658797;
return r5658798;
}
double f(double x) {
double r5658799 = 1.0;
double r5658800 = x;
double r5658801 = r5658800 + r5658799;
double r5658802 = r5658799 / r5658801;
double r5658803 = sqrt(r5658800);
double r5658804 = r5658799 / r5658803;
double r5658805 = sqrt(r5658801);
double r5658806 = r5658799 / r5658805;
double r5658807 = r5658804 + r5658806;
double r5658808 = r5658807 * r5658800;
double r5658809 = r5658802 / r5658808;
return r5658809;
}




Bits error versus x
Results
| Original | 19.7 |
|---|---|
| Target | 0.7 |
| Herbie | 0.4 |
Initial program 19.7
rmApplied flip--19.7
rmApplied frac-times24.6
Applied frac-times19.8
Applied frac-sub19.6
Simplified19.2
Simplified19.1
Taylor expanded around 0 5.4
rmApplied distribute-rgt1-in5.4
Applied *-un-lft-identity5.4
Applied times-frac5.1
Applied associate-/l*0.5
Simplified0.4
Final simplification0.4
herbie shell --seed 2019138 +o rules:numerics
(FPCore (x)
:name "2isqrt (example 3.6)"
:herbie-target
(/ 1 (+ (* (+ x 1) (sqrt x)) (* x (sqrt (+ x 1)))))
(- (/ 1 (sqrt x)) (/ 1 (sqrt (+ x 1)))))