\sqrt{x + 1} - \sqrt{x}\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{1 + 0}{\sqrt{x + 1} + \sqrt{x}}\right)\right)double f(double x) {
double r128931 = x;
double r128932 = 1.0;
double r128933 = r128931 + r128932;
double r128934 = sqrt(r128933);
double r128935 = sqrt(r128931);
double r128936 = r128934 - r128935;
return r128936;
}
double f(double x) {
double r128937 = 1.0;
double r128938 = 0.0;
double r128939 = r128937 + r128938;
double r128940 = x;
double r128941 = r128940 + r128937;
double r128942 = sqrt(r128941);
double r128943 = sqrt(r128940);
double r128944 = r128942 + r128943;
double r128945 = r128939 / r128944;
double r128946 = log1p(r128945);
double r128947 = expm1(r128946);
return r128947;
}




Bits error versus x
Results
| Original | 30.3 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 30.3
rmApplied flip--30.1
Simplified0.2
rmApplied expm1-log1p-u0.2
Final simplification0.2
herbie shell --seed 2020001 +o rules:numerics
(FPCore (x)
:name "2sqrt (example 3.1)"
:precision binary64
:herbie-target
(/ 1 (+ (sqrt (+ x 1)) (sqrt x)))
(- (sqrt (+ x 1)) (sqrt x)))