\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\frac{\frac{1 \cdot 1}{x + 1}}{\frac{\frac{1}{\sqrt{x}} + \frac{1}{\sqrt{x + 1}}}{\frac{1}{x}}}double f(double x) {
double r117027 = 1.0;
double r117028 = x;
double r117029 = sqrt(r117028);
double r117030 = r117027 / r117029;
double r117031 = r117028 + r117027;
double r117032 = sqrt(r117031);
double r117033 = r117027 / r117032;
double r117034 = r117030 - r117033;
return r117034;
}
double f(double x) {
double r117035 = 1.0;
double r117036 = r117035 * r117035;
double r117037 = x;
double r117038 = r117037 + r117035;
double r117039 = r117036 / r117038;
double r117040 = sqrt(r117037);
double r117041 = r117035 / r117040;
double r117042 = sqrt(r117038);
double r117043 = r117035 / r117042;
double r117044 = r117041 + r117043;
double r117045 = r117035 / r117037;
double r117046 = r117044 / r117045;
double r117047 = r117039 / r117046;
return r117047;
}




Bits error versus x
Results
| Original | 20.1 |
|---|---|
| Target | 0.7 |
| Herbie | 0.4 |
Initial program 20.1
rmApplied flip--20.1
rmApplied frac-times25.2
Applied frac-times20.2
Applied frac-sub20.0
Simplified19.5
Simplified19.5
Taylor expanded around 0 5.8
rmApplied times-frac5.4
Applied associate-/l*0.4
Final simplification0.4
herbie shell --seed 2020002
(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)))))