\sqrt{x + 1} - \sqrt{x}\mathsf{log1p}\left(\mathsf{expm1}\left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{1}{\sqrt{x} + \sqrt{x + 1}}\right)\right)\right)\right)double f(double x) {
double r342294 = x;
double r342295 = 1.0;
double r342296 = r342294 + r342295;
double r342297 = sqrt(r342296);
double r342298 = sqrt(r342294);
double r342299 = r342297 - r342298;
return r342299;
}
double f(double x) {
double r342300 = 1.0;
double r342301 = x;
double r342302 = sqrt(r342301);
double r342303 = r342301 + r342300;
double r342304 = sqrt(r342303);
double r342305 = r342302 + r342304;
double r342306 = r342300 / r342305;
double r342307 = log1p(r342306);
double r342308 = expm1(r342307);
double r342309 = expm1(r342308);
double r342310 = log1p(r342309);
return r342310;
}




Bits error versus x
Results
| Original | 29.5 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 29.5
rmApplied flip--29.2
Simplified0.2
Simplified0.2
rmApplied log1p-expm1-u0.2
Simplified0.2
rmApplied expm1-log1p-u0.2
Final simplification0.2
herbie shell --seed 2019198 +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)))