\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 r19648674 = x;
double r19648675 = 1.0;
double r19648676 = r19648674 + r19648675;
double r19648677 = sqrt(r19648676);
double r19648678 = sqrt(r19648674);
double r19648679 = r19648677 - r19648678;
return r19648679;
}
double f(double x) {
double r19648680 = 1.0;
double r19648681 = x;
double r19648682 = r19648681 + r19648680;
double r19648683 = sqrt(r19648682);
double r19648684 = sqrt(r19648681);
double r19648685 = r19648683 + r19648684;
double r19648686 = r19648680 / r19648685;
double r19648687 = log1p(r19648686);
double r19648688 = expm1(r19648687);
return r19648688;
}




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
Simplified0.2
Final simplification0.2
herbie shell --seed 2019179 +o rules:numerics
(FPCore (x)
:name "Main:bigenough3 from C"
:herbie-target
(/ 1.0 (+ (sqrt (+ x 1.0)) (sqrt x)))
(- (sqrt (+ x 1.0)) (sqrt x)))