\frac{x \cdot \left(y + z\right)}{z}\frac{\sqrt[3]{y + z} \cdot \sqrt[3]{y + z}}{\sqrt[3]{z} \cdot \sqrt[3]{z}} \cdot \frac{x}{\frac{\sqrt[3]{z}}{\sqrt[3]{y + z}}}double f(double x, double y, double z) {
double r277874 = x;
double r277875 = y;
double r277876 = z;
double r277877 = r277875 + r277876;
double r277878 = r277874 * r277877;
double r277879 = r277878 / r277876;
return r277879;
}
double f(double x, double y, double z) {
double r277880 = y;
double r277881 = z;
double r277882 = r277880 + r277881;
double r277883 = cbrt(r277882);
double r277884 = r277883 * r277883;
double r277885 = cbrt(r277881);
double r277886 = r277885 * r277885;
double r277887 = r277884 / r277886;
double r277888 = x;
double r277889 = r277885 / r277883;
double r277890 = r277888 / r277889;
double r277891 = r277887 * r277890;
return r277891;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 12.6 |
|---|---|
| Target | 3.2 |
| Herbie | 1.2 |
Initial program 12.6
rmApplied associate-/l*3.2
rmApplied add-cube-cbrt4.4
Applied add-cube-cbrt3.7
Applied times-frac3.7
Applied *-un-lft-identity3.7
Applied times-frac1.2
Simplified1.2
Final simplification1.2
herbie shell --seed 2019303
(FPCore (x y z)
:name "Numeric.SpecFunctions:choose from math-functions-0.1.5.2"
:precision binary64
:herbie-target
(/ x (/ z (+ y z)))
(/ (* x (+ y z)) z))