\sqrt{x + 1} - \sqrt{x}\mathsf{log1p}\left(\mathsf{expm1}\left(\frac{1}{\sqrt{x} + \sqrt{x + 1}}\right)\right)double f(double x) {
double r1027982 = x;
double r1027983 = 1.0;
double r1027984 = r1027982 + r1027983;
double r1027985 = sqrt(r1027984);
double r1027986 = sqrt(r1027982);
double r1027987 = r1027985 - r1027986;
return r1027987;
}
double f(double x) {
double r1027988 = 1.0;
double r1027989 = x;
double r1027990 = sqrt(r1027989);
double r1027991 = r1027989 + r1027988;
double r1027992 = sqrt(r1027991);
double r1027993 = r1027990 + r1027992;
double r1027994 = r1027988 / r1027993;
double r1027995 = expm1(r1027994);
double r1027996 = log1p(r1027995);
return r1027996;
}




Bits error versus x
Results
| Original | 29.5 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 29.5
rmApplied flip--29.3
Simplified28.9
Taylor expanded around 0 0.2
rmApplied add-sqr-sqrt0.2
Applied sqrt-prod0.3
rmApplied log1p-expm1-u0.3
Simplified0.2
Final simplification0.2
herbie shell --seed 2019155 +o rules:numerics
(FPCore (x)
:name "2sqrt (example 3.1)"
:herbie-target
(/ 1 (+ (sqrt (+ x 1)) (sqrt x)))
(- (sqrt (+ x 1)) (sqrt x)))