\left(3 \cdot \sqrt{x}\right) \cdot \left(\left(y + \frac{1}{x \cdot 9}\right) - 1\right)\left(\left(\left(y + \frac{\frac{1}{x}}{9}\right) - 1\right) \cdot 3\right) \cdot \sqrt{x} + \left(\left(1 + \left(-1\right)\right) \cdot 3\right) \cdot \sqrt{x}double f(double x, double y) {
double r336944 = 3.0;
double r336945 = x;
double r336946 = sqrt(r336945);
double r336947 = r336944 * r336946;
double r336948 = y;
double r336949 = 1.0;
double r336950 = 9.0;
double r336951 = r336945 * r336950;
double r336952 = r336949 / r336951;
double r336953 = r336948 + r336952;
double r336954 = r336953 - r336949;
double r336955 = r336947 * r336954;
return r336955;
}
double f(double x, double y) {
double r336956 = y;
double r336957 = 1.0;
double r336958 = x;
double r336959 = r336957 / r336958;
double r336960 = 9.0;
double r336961 = r336959 / r336960;
double r336962 = r336956 + r336961;
double r336963 = r336962 - r336957;
double r336964 = 3.0;
double r336965 = r336963 * r336964;
double r336966 = sqrt(r336958);
double r336967 = r336965 * r336966;
double r336968 = -r336957;
double r336969 = r336957 + r336968;
double r336970 = r336969 * r336964;
double r336971 = r336970 * r336966;
double r336972 = r336967 + r336971;
return r336972;
}




Bits error versus x




Bits error versus y
Results
| Original | 0.4 |
|---|---|
| Target | 0.4 |
| Herbie | 0.4 |
Initial program 0.4
rmApplied associate-/r*0.4
rmApplied add-sqr-sqrt0.4
Applied add-sqr-sqrt15.2
Applied prod-diff15.2
Applied distribute-rgt-in15.2
Simplified0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019209 +o rules:numerics
(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)))