\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 r137638 = 1.0;
double r137639 = x;
double r137640 = sqrt(r137639);
double r137641 = r137638 / r137640;
double r137642 = r137639 + r137638;
double r137643 = sqrt(r137642);
double r137644 = r137638 / r137643;
double r137645 = r137641 - r137644;
return r137645;
}
double f(double x) {
double r137646 = 1.0;
double r137647 = r137646 * r137646;
double r137648 = x;
double r137649 = sqrt(r137648);
double r137650 = r137646 / r137649;
double r137651 = r137648 + r137646;
double r137652 = sqrt(r137651);
double r137653 = r137646 / r137652;
double r137654 = r137650 + r137653;
double r137655 = r137654 * r137648;
double r137656 = r137655 * r137651;
double r137657 = r137647 / r137656;
return r137657;
}




Bits error versus x
Results
| Original | 20.1 |
|---|---|
| Target | 0.6 |
| Herbie | 0.8 |
Initial program 20.1
rmApplied flip--20.1
Simplified20.1
rmApplied frac-sub19.5
Applied associate-*r/19.5
Applied associate-/l/19.5
Taylor expanded around 0 5.7
rmApplied associate-*r*0.8
Final simplification0.8
herbie shell --seed 2019347
(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)))))