\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{1 \cdot 1}{\left(\left(\frac{1}{\sqrt{x}} + \frac{1}{\sqrt{x + 1}}\right) \cdot x\right) \cdot \left(x + 1\right)}double f(double x) {
double r75971 = 1.0;
double r75972 = x;
double r75973 = sqrt(r75972);
double r75974 = r75971 / r75973;
double r75975 = r75972 + r75971;
double r75976 = sqrt(r75975);
double r75977 = r75971 / r75976;
double r75978 = r75974 - r75977;
return r75978;
}
double f(double x) {
double r75979 = 1.0;
double r75980 = r75979 * r75979;
double r75981 = x;
double r75982 = sqrt(r75981);
double r75983 = r75979 / r75982;
double r75984 = r75981 + r75979;
double r75985 = sqrt(r75984);
double r75986 = r75979 / r75985;
double r75987 = r75983 + r75986;
double r75988 = r75987 * r75981;
double r75989 = r75988 * r75984;
double r75990 = r75980 / r75989;
return r75990;
}




Bits error versus x
Results
| Original | 20.1 |
|---|---|
| Target | 0.7 |
| Herbie | 0.8 |
Initial program 20.1
rmApplied flip--20.1
Simplified20.2
rmApplied frac-sub19.6
Applied associate-*r/19.6
Applied associate-/l/19.5
Taylor expanded around 0 5.7
rmApplied associate-*r*0.8
Final simplification0.8
herbie shell --seed 2019322
(FPCore (x)
:name "2isqrt (example 3.6)"
:precision binary64
:herbie-target
(/ 1 (+ (* (+ x 1) (sqrt x)) (* x (sqrt (+ x 1)))))
(- (/ 1 (sqrt x)) (/ 1 (sqrt (+ x 1)))))