\sqrt{x + 1} - \sqrt{x}\sqrt{\frac{1}{\sqrt{x + 1} + \sqrt{x}}} \cdot \sqrt{\frac{1}{\sqrt{\sqrt{x + 1} + \sqrt{x}}} \cdot \frac{1}{\sqrt{\sqrt{x + 1} + \sqrt{x}}}}double f(double x) {
double r123690 = x;
double r123691 = 1.0;
double r123692 = r123690 + r123691;
double r123693 = sqrt(r123692);
double r123694 = sqrt(r123690);
double r123695 = r123693 - r123694;
return r123695;
}
double f(double x) {
double r123696 = 1.0;
double r123697 = x;
double r123698 = r123697 + r123696;
double r123699 = sqrt(r123698);
double r123700 = sqrt(r123697);
double r123701 = r123699 + r123700;
double r123702 = r123696 / r123701;
double r123703 = sqrt(r123702);
double r123704 = 1.0;
double r123705 = sqrt(r123701);
double r123706 = r123704 / r123705;
double r123707 = r123696 / r123705;
double r123708 = r123706 * r123707;
double r123709 = sqrt(r123708);
double r123710 = r123703 * r123709;
return r123710;
}




Bits error versus x
Results
| Original | 30.1 |
|---|---|
| Target | 0.2 |
| Herbie | 0.3 |
Initial program 30.1
rmApplied flip--29.9
Simplified0.2
rmApplied add-sqr-sqrt0.3
rmApplied add-sqr-sqrt0.4
Applied *-un-lft-identity0.4
Applied times-frac0.3
Final simplification0.3
herbie shell --seed 2019199
(FPCore (x)
:name "2sqrt (example 3.1)"
:herbie-target
(/ 1.0 (+ (sqrt (+ x 1.0)) (sqrt x)))
(- (sqrt (+ x 1.0)) (sqrt x)))