\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{\frac{1}{x}}{\sqrt[3]{9}} \cdot \frac{1}{\sqrt[3]{9} \cdot \sqrt[3]{9}}\right) + \left(\frac{1}{\sqrt[3]{9} \cdot \sqrt[3]{9}} \cdot \left(\frac{-1}{\sqrt[3]{9} \cdot x} + \frac{\frac{1}{x}}{\sqrt[3]{9}}\right) - \frac{\frac{y}{3}}{\sqrt{x}}\right)double f(double x, double y) {
double r382749 = 1.0;
double r382750 = x;
double r382751 = 9.0;
double r382752 = r382750 * r382751;
double r382753 = r382749 / r382752;
double r382754 = r382749 - r382753;
double r382755 = y;
double r382756 = 3.0;
double r382757 = sqrt(r382750);
double r382758 = r382756 * r382757;
double r382759 = r382755 / r382758;
double r382760 = r382754 - r382759;
return r382760;
}
double f(double x, double y) {
double r382761 = 1.0;
double r382762 = cbrt(r382761);
double r382763 = r382762 * r382762;
double r382764 = 1.0;
double r382765 = x;
double r382766 = r382764 / r382765;
double r382767 = 9.0;
double r382768 = cbrt(r382767);
double r382769 = r382766 / r382768;
double r382770 = r382768 * r382768;
double r382771 = r382761 / r382770;
double r382772 = r382769 * r382771;
double r382773 = -r382772;
double r382774 = fma(r382763, r382762, r382773);
double r382775 = -1.0;
double r382776 = r382768 * r382765;
double r382777 = r382775 / r382776;
double r382778 = r382777 + r382769;
double r382779 = r382771 * r382778;
double r382780 = y;
double r382781 = 3.0;
double r382782 = r382780 / r382781;
double r382783 = sqrt(r382765);
double r382784 = r382782 / r382783;
double r382785 = r382779 - r382784;
double r382786 = r382774 + r382785;
return r382786;
}




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-cube-cbrt0.2
Applied div-inv0.2
Applied times-frac0.3
Applied add-cube-cbrt0.3
Applied prod-diff0.3
Applied associate--l+0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2020045 +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)))))