\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}1 \cdot \frac{\frac{\frac{1}{\sqrt{x}}}{\sqrt{1 + x}}}{1 \cdot \left(\sqrt{x} + \sqrt{1 + x}\right)}double f(double x) {
double r6307035 = 1.0;
double r6307036 = x;
double r6307037 = sqrt(r6307036);
double r6307038 = r6307035 / r6307037;
double r6307039 = r6307036 + r6307035;
double r6307040 = sqrt(r6307039);
double r6307041 = r6307035 / r6307040;
double r6307042 = r6307038 - r6307041;
return r6307042;
}
double f(double x) {
double r6307043 = 1.0;
double r6307044 = 1.0;
double r6307045 = x;
double r6307046 = sqrt(r6307045);
double r6307047 = r6307044 / r6307046;
double r6307048 = r6307043 + r6307045;
double r6307049 = sqrt(r6307048);
double r6307050 = r6307047 / r6307049;
double r6307051 = r6307046 + r6307049;
double r6307052 = r6307043 * r6307051;
double r6307053 = r6307050 / r6307052;
double r6307054 = r6307043 * r6307053;
return r6307054;
}




Bits error versus x
Results
| Original | 20.0 |
|---|---|
| Target | 0.7 |
| Herbie | 0.4 |
Initial program 20.0
rmApplied frac-sub20.0
rmApplied flip--19.8
Applied associate-/l/19.8
Taylor expanded around 0 0.8
rmApplied div-inv0.8
Simplified0.4
Final simplification0.4
herbie shell --seed 2019169 +o rules:numerics
(FPCore (x)
:name "2isqrt (example 3.6)"
:herbie-target
(/ 1.0 (+ (* (+ x 1.0) (sqrt x)) (* x (sqrt (+ x 1.0)))))
(- (/ 1.0 (sqrt x)) (/ 1.0 (sqrt (+ x 1.0)))))