\left(3 \cdot \sqrt{x}\right) \cdot \left(\left(y + \frac{1}{x \cdot 9}\right) - 1\right)\left(3 \cdot \left(\left(\frac{1}{x \cdot 9} + y\right) - 1\right)\right) \cdot \sqrt{x} + \left(\mathsf{fma}\left(-1, 1, 1\right) \cdot \sqrt{x}\right) \cdot 3double f(double x, double y) {
double r384201 = 3.0;
double r384202 = x;
double r384203 = sqrt(r384202);
double r384204 = r384201 * r384203;
double r384205 = y;
double r384206 = 1.0;
double r384207 = 9.0;
double r384208 = r384202 * r384207;
double r384209 = r384206 / r384208;
double r384210 = r384205 + r384209;
double r384211 = r384210 - r384206;
double r384212 = r384204 * r384211;
return r384212;
}
double f(double x, double y) {
double r384213 = 3.0;
double r384214 = 1.0;
double r384215 = x;
double r384216 = 9.0;
double r384217 = r384215 * r384216;
double r384218 = r384214 / r384217;
double r384219 = y;
double r384220 = r384218 + r384219;
double r384221 = r384220 - r384214;
double r384222 = r384213 * r384221;
double r384223 = sqrt(r384215);
double r384224 = r384222 * r384223;
double r384225 = -r384214;
double r384226 = 1.0;
double r384227 = fma(r384225, r384226, r384214);
double r384228 = r384227 * r384223;
double r384229 = r384228 * r384213;
double r384230 = r384224 + r384229;
return r384230;
}




Bits error versus x




Bits error versus y
| Original | 0.4 |
|---|---|
| Target | 0.4 |
| Herbie | 0.4 |
Initial program 0.4
rmApplied add-sqr-sqrt0.4
rmApplied add-cube-cbrt0.4
Applied add-sqr-sqrt15.1
Applied prod-diff15.1
Applied distribute-lft-in15.1
Simplified0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2020081 +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)))