\left(3 \cdot \sqrt{x}\right) \cdot \left(\left(y + \frac{1}{x \cdot 9}\right) - 1\right)\left(\left(y + \sqrt{\frac{1}{x \cdot 9}} \cdot \sqrt{\frac{1}{x \cdot 9}}\right) \cdot 3\right) \cdot \sqrt{x} + 3 \cdot \left(\sqrt{x} \cdot \left(-1\right)\right)double f(double x, double y) {
double r300292 = 3.0;
double r300293 = x;
double r300294 = sqrt(r300293);
double r300295 = r300292 * r300294;
double r300296 = y;
double r300297 = 1.0;
double r300298 = 9.0;
double r300299 = r300293 * r300298;
double r300300 = r300297 / r300299;
double r300301 = r300296 + r300300;
double r300302 = r300301 - r300297;
double r300303 = r300295 * r300302;
return r300303;
}
double f(double x, double y) {
double r300304 = y;
double r300305 = 1.0;
double r300306 = x;
double r300307 = 9.0;
double r300308 = r300306 * r300307;
double r300309 = r300305 / r300308;
double r300310 = sqrt(r300309);
double r300311 = r300310 * r300310;
double r300312 = r300304 + r300311;
double r300313 = 3.0;
double r300314 = r300312 * r300313;
double r300315 = sqrt(r300306);
double r300316 = r300314 * r300315;
double r300317 = -r300305;
double r300318 = r300315 * r300317;
double r300319 = r300313 * r300318;
double r300320 = r300316 + r300319;
return r300320;
}




Bits error versus x




Bits error versus y
Results
| Original | 0.4 |
|---|---|
| Target | 0.4 |
| Herbie | 0.5 |
Initial program 0.4
rmApplied associate-*l*0.4
rmApplied sub-neg0.4
Applied distribute-lft-in0.4
Applied distribute-lft-in0.4
Simplified0.4
rmApplied add-sqr-sqrt0.5
Final simplification0.5
herbie shell --seed 2019212
(FPCore (x y)
:name "Numeric.SpecFunctions:incompleteGamma from math-functions-0.1.5.2, B"
:precision binary64
:herbie-target
(* 3 (+ (* y (sqrt x)) (* (- (/ 1 (* x 9)) 1) (sqrt x))))
(* (* 3 (sqrt x)) (- (+ y (/ 1 (* x 9))) 1)))