\left(3 \cdot \sqrt{x}\right) \cdot \left(\left(y + \frac{1}{x \cdot 9}\right) - 1\right)\mathsf{fma}\left(3, y, \frac{0.333333333333333315}{x} - 3\right) \cdot \sqrt{x} + \left(3 \cdot \sqrt{x}\right) \cdot \left(1 - 1\right)double f(double x, double y) {
double r428939 = 3.0;
double r428940 = x;
double r428941 = sqrt(r428940);
double r428942 = r428939 * r428941;
double r428943 = y;
double r428944 = 1.0;
double r428945 = 9.0;
double r428946 = r428940 * r428945;
double r428947 = r428944 / r428946;
double r428948 = r428943 + r428947;
double r428949 = r428948 - r428944;
double r428950 = r428942 * r428949;
return r428950;
}
double f(double x, double y) {
double r428951 = 3.0;
double r428952 = y;
double r428953 = 0.3333333333333333;
double r428954 = x;
double r428955 = r428953 / r428954;
double r428956 = r428955 - r428951;
double r428957 = fma(r428951, r428952, r428956);
double r428958 = sqrt(r428954);
double r428959 = r428957 * r428958;
double r428960 = r428951 * r428958;
double r428961 = 1.0;
double r428962 = r428961 - r428961;
double r428963 = r428960 * r428962;
double r428964 = r428959 + r428963;
return r428964;
}




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-sqrt16.0
Applied prod-diff16.0
Applied distribute-lft-in16.0
Simplified0.4
Simplified0.4
Taylor expanded around 0 0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2020045 +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)))