\left(1 - \frac{1}{x \cdot 9}\right) - \frac{y}{3 \cdot \sqrt{x}}\mathsf{fma}\left(\sqrt[3]{1} \cdot \sqrt[3]{1}, \sqrt[3]{1}, -\frac{\sqrt{1}}{9} \cdot \frac{\sqrt{1}}{x}\right) + \left(\mathsf{fma}\left(-\frac{\sqrt{1}}{9}, \frac{\sqrt{1}}{x}, \frac{\sqrt{1}}{9} \cdot \frac{\sqrt{1}}{x}\right) - \frac{\frac{y}{3}}{\sqrt{x}}\right)double f(double x, double y) {
double r432913 = 1.0;
double r432914 = x;
double r432915 = 9.0;
double r432916 = r432914 * r432915;
double r432917 = r432913 / r432916;
double r432918 = r432913 - r432917;
double r432919 = y;
double r432920 = 3.0;
double r432921 = sqrt(r432914);
double r432922 = r432920 * r432921;
double r432923 = r432919 / r432922;
double r432924 = r432918 - r432923;
return r432924;
}
double f(double x, double y) {
double r432925 = 1.0;
double r432926 = cbrt(r432925);
double r432927 = r432926 * r432926;
double r432928 = sqrt(r432925);
double r432929 = 9.0;
double r432930 = r432928 / r432929;
double r432931 = x;
double r432932 = r432928 / r432931;
double r432933 = r432930 * r432932;
double r432934 = -r432933;
double r432935 = fma(r432927, r432926, r432934);
double r432936 = -r432930;
double r432937 = fma(r432936, r432932, r432933);
double r432938 = y;
double r432939 = 3.0;
double r432940 = r432938 / r432939;
double r432941 = sqrt(r432931);
double r432942 = r432940 / r432941;
double r432943 = r432937 - r432942;
double r432944 = r432935 + r432943;
return r432944;
}




Bits error versus x




Bits error versus y
| Original | 0.2 |
|---|---|
| Target | 0.2 |
| Herbie | 0.3 |
Initial program 0.2
rmApplied associate-/r*0.2
rmApplied add-sqr-sqrt0.2
Applied times-frac0.3
Applied add-cube-cbrt0.3
Applied prod-diff0.3
Applied associate--l+0.3
Final simplification0.3
herbie shell --seed 2020020 +o rules:numerics
(FPCore (x y)
:name "Numeric.SpecFunctions:invIncompleteGamma from math-functions-0.1.5.2, D"
:precision binary64
:herbie-target
(- (- 1 (/ (/ 1 x) 9)) (/ y (* 3 (sqrt x))))
(- (- 1 (/ 1 (* x 9))) (/ y (* 3 (sqrt x)))))