\sqrt{x + 1} - \sqrt{x}\frac{1}{\mathsf{fma}\left(\sqrt{\sqrt[3]{x} \cdot \sqrt[3]{x}}, \sqrt{\sqrt[3]{\sqrt{x}} \cdot \sqrt[3]{\sqrt{x}}}, \sqrt{x + 1}\right)}double f(double x) {
double r440305 = x;
double r440306 = 1.0;
double r440307 = r440305 + r440306;
double r440308 = sqrt(r440307);
double r440309 = sqrt(r440305);
double r440310 = r440308 - r440309;
return r440310;
}
double f(double x) {
double r440311 = 1.0;
double r440312 = x;
double r440313 = cbrt(r440312);
double r440314 = r440313 * r440313;
double r440315 = sqrt(r440314);
double r440316 = sqrt(r440312);
double r440317 = cbrt(r440316);
double r440318 = r440317 * r440317;
double r440319 = sqrt(r440318);
double r440320 = r440312 + r440311;
double r440321 = sqrt(r440320);
double r440322 = fma(r440315, r440319, r440321);
double r440323 = r440311 / r440322;
return r440323;
}




Bits error versus x
| Original | 30.0 |
|---|---|
| Target | 0.2 |
| Herbie | 0.3 |
Initial program 30.0
rmApplied flip--29.7
Simplified0.2
Simplified0.2
rmApplied add-cube-cbrt0.3
Applied sqrt-prod0.3
Applied fma-def0.3
rmApplied add-sqr-sqrt0.3
Applied cbrt-prod0.3
Final simplification0.3
herbie shell --seed 2020045 +o rules:numerics
(FPCore (x)
:name "Main:bigenough3 from C"
:precision binary64
:herbie-target
(/ 1 (+ (sqrt (+ x 1)) (sqrt x)))
(- (sqrt (+ x 1)) (sqrt x)))