\left(1 - \frac{1}{x \cdot 9}\right) - \frac{y}{3 \cdot \sqrt{x}}\left(1 - \frac{\frac{\frac{1}{x}}{\left(\sqrt[3]{\sqrt[3]{9}} \cdot \sqrt[3]{\sqrt[3]{9}}\right) \cdot {\left(\sqrt[3]{9}\right)}^{2}}}{\sqrt[3]{\sqrt[3]{9}}}\right) - \frac{\frac{y}{3}}{\sqrt{x}}double f(double x, double y) {
double r400840 = 1.0;
double r400841 = x;
double r400842 = 9.0;
double r400843 = r400841 * r400842;
double r400844 = r400840 / r400843;
double r400845 = r400840 - r400844;
double r400846 = y;
double r400847 = 3.0;
double r400848 = sqrt(r400841);
double r400849 = r400847 * r400848;
double r400850 = r400846 / r400849;
double r400851 = r400845 - r400850;
return r400851;
}
double f(double x, double y) {
double r400852 = 1.0;
double r400853 = x;
double r400854 = r400852 / r400853;
double r400855 = 9.0;
double r400856 = cbrt(r400855);
double r400857 = cbrt(r400856);
double r400858 = r400857 * r400857;
double r400859 = 2.0;
double r400860 = pow(r400856, r400859);
double r400861 = r400858 * r400860;
double r400862 = r400854 / r400861;
double r400863 = r400862 / r400857;
double r400864 = r400852 - r400863;
double r400865 = y;
double r400866 = 3.0;
double r400867 = r400865 / r400866;
double r400868 = sqrt(r400853);
double r400869 = r400867 / r400868;
double r400870 = r400864 - r400869;
return r400870;
}




Bits error versus x




Bits error versus y
Results
| Original | 0.2 |
|---|---|
| Target | 0.2 |
| Herbie | 0.3 |
Initial program 0.2
rmApplied associate-/r*0.2
rmApplied associate-/r*0.2
rmApplied add-cube-cbrt0.2
Applied associate-/r*0.3
rmApplied add-cube-cbrt0.3
Applied associate-/r*0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2020089 +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)))))