\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 r4675014 = x;
double r4675015 = 1.0;
double r4675016 = r4675014 + r4675015;
double r4675017 = sqrt(r4675016);
double r4675018 = sqrt(r4675014);
double r4675019 = r4675017 - r4675018;
return r4675019;
}
double f(double x) {
double r4675020 = 1.0;
double r4675021 = x;
double r4675022 = r4675021 + r4675020;
double r4675023 = sqrt(r4675022);
double r4675024 = sqrt(r4675021);
double r4675025 = r4675023 + r4675024;
double r4675026 = r4675020 / r4675025;
double r4675027 = log1p(r4675026);
double r4675028 = expm1(r4675027);
return r4675028;
}




Bits error versus x
Results
| Original | 30.0 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 30.0
rmApplied flip--29.9
Simplified29.4
Simplified29.4
rmApplied expm1-log1p-u29.4
Simplified0.2
Final simplification0.2
herbie shell --seed 2019168 +o rules:numerics
(FPCore (x)
:name "2sqrt (example 3.1)"
:herbie-target
(/ 1 (+ (sqrt (+ x 1)) (sqrt x)))
(- (sqrt (+ x 1)) (sqrt x)))