\sqrt{x + 1} - \sqrt{x}\frac{\sqrt{\frac{1}{\sqrt{x + 1} + \sqrt{x}}}}{\mathsf{hypot}\left(\sqrt{\sqrt{x + 1}}, \sqrt{\sqrt{x}}\right)}double f(double x) {
double r3923969 = x;
double r3923970 = 1.0;
double r3923971 = r3923969 + r3923970;
double r3923972 = sqrt(r3923971);
double r3923973 = sqrt(r3923969);
double r3923974 = r3923972 - r3923973;
return r3923974;
}
double f(double x) {
double r3923975 = 1.0;
double r3923976 = x;
double r3923977 = r3923976 + r3923975;
double r3923978 = sqrt(r3923977);
double r3923979 = sqrt(r3923976);
double r3923980 = r3923978 + r3923979;
double r3923981 = r3923975 / r3923980;
double r3923982 = sqrt(r3923981);
double r3923983 = sqrt(r3923978);
double r3923984 = sqrt(r3923979);
double r3923985 = hypot(r3923983, r3923984);
double r3923986 = r3923982 / r3923985;
return r3923986;
}




Bits error versus x
Results
| Original | 30.0 |
|---|---|
| Target | 0.2 |
| Herbie | 0.3 |
Initial program 30.0
rmApplied flip--29.8
Simplified0.2
rmApplied add-sqr-sqrt0.3
rmApplied sqrt-div0.3
Applied associate-*l/0.2
Simplified0.2
rmApplied add-sqr-sqrt0.3
Applied add-sqr-sqrt0.3
Applied sqrt-prod0.3
Applied hypot-def0.3
Final simplification0.3
herbie shell --seed 2019149 +o rules:numerics
(FPCore (x)
:name "2sqrt (example 3.1)"
:herbie-target
(/ 1 (+ (sqrt (+ x 1)) (sqrt x)))
(- (sqrt (+ x 1)) (sqrt x)))