\sqrt{x + 1} - \sqrt{x}\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{1}{\sqrt{x + 1} + \sqrt{x}}\right)\right)double f(double x) {
double r3153266 = x;
double r3153267 = 1.0;
double r3153268 = r3153266 + r3153267;
double r3153269 = sqrt(r3153268);
double r3153270 = sqrt(r3153266);
double r3153271 = r3153269 - r3153270;
return r3153271;
}
double f(double x) {
double r3153272 = 1.0;
double r3153273 = x;
double r3153274 = r3153273 + r3153272;
double r3153275 = sqrt(r3153274);
double r3153276 = sqrt(r3153273);
double r3153277 = r3153275 + r3153276;
double r3153278 = r3153272 / r3153277;
double r3153279 = log1p(r3153278);
double r3153280 = expm1(r3153279);
return r3153280;
}




Bits error versus x
Results
| Original | 29.5 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 29.5
rmApplied flip--29.3
Simplified28.9
Simplified28.9
rmApplied expm1-log1p-u28.9
Simplified0.2
Final simplification0.2
herbie shell --seed 2019162 +o rules:numerics
(FPCore (x)
:name "2sqrt (example 3.1)"
:herbie-target
(/ 1 (+ (sqrt (+ x 1)) (sqrt x)))
(- (sqrt (+ x 1)) (sqrt x)))