\left(3 \cdot \sqrt{x}\right) \cdot \left(\left(y + \frac{1}{x \cdot 9}\right) - 1\right)3 \cdot \left(\sqrt{x} \cdot \left(y + \left(\frac{\frac{1}{x}}{9} - 1\right)\right)\right) + \sqrt{x} \cdot \left(\mathsf{fma}\left(1, -1, 1\right) \cdot 3\right)double f(double x, double y) {
double r18104485 = 3.0;
double r18104486 = x;
double r18104487 = sqrt(r18104486);
double r18104488 = r18104485 * r18104487;
double r18104489 = y;
double r18104490 = 1.0;
double r18104491 = 9.0;
double r18104492 = r18104486 * r18104491;
double r18104493 = r18104490 / r18104492;
double r18104494 = r18104489 + r18104493;
double r18104495 = r18104494 - r18104490;
double r18104496 = r18104488 * r18104495;
return r18104496;
}
double f(double x, double y) {
double r18104497 = 3.0;
double r18104498 = x;
double r18104499 = sqrt(r18104498);
double r18104500 = y;
double r18104501 = 1.0;
double r18104502 = r18104501 / r18104498;
double r18104503 = 9.0;
double r18104504 = r18104502 / r18104503;
double r18104505 = r18104504 - r18104501;
double r18104506 = r18104500 + r18104505;
double r18104507 = r18104499 * r18104506;
double r18104508 = r18104497 * r18104507;
double r18104509 = -1.0;
double r18104510 = fma(r18104501, r18104509, r18104501);
double r18104511 = r18104510 * r18104497;
double r18104512 = r18104499 * r18104511;
double r18104513 = r18104508 + r18104512;
return r18104513;
}




Bits error versus x




Bits error versus y
| Original | 0.4 |
|---|---|
| Target | 0.4 |
| Herbie | 0.4 |
Initial program 0.4
rmApplied add-cube-cbrt0.4
Applied add-sqr-sqrt15.2
Applied prod-diff15.2
Applied distribute-lft-in15.2
Simplified0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019171 +o rules:numerics
(FPCore (x y)
:name "Numeric.SpecFunctions:incompleteGamma from math-functions-0.1.5.2, B"
:herbie-target
(* 3.0 (+ (* y (sqrt x)) (* (- (/ 1.0 (* x 9.0)) 1.0) (sqrt x))))
(* (* 3.0 (sqrt x)) (- (+ y (/ 1.0 (* x 9.0))) 1.0)))