\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 r367976 = x;
double r367977 = y;
double r367978 = z;
double r367979 = r367977 + r367978;
double r367980 = r367976 * r367979;
double r367981 = r367980 / r367978;
return r367981;
}
double f(double x, double y, double z) {
double r367982 = y;
double r367983 = z;
double r367984 = r367982 + r367983;
double r367985 = cbrt(r367984);
double r367986 = r367985 * r367985;
double r367987 = cbrt(r367983);
double r367988 = r367987 * r367987;
double r367989 = r367986 / r367988;
double r367990 = x;
double r367991 = r367987 / r367985;
double r367992 = r367990 / r367991;
double r367993 = r367989 * r367992;
return r367993;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 12.1 |
|---|---|
| Target | 2.9 |
| Herbie | 1.0 |
Initial program 12.1
rmApplied associate-/l*2.9
rmApplied add-cube-cbrt4.1
Applied add-cube-cbrt3.4
Applied times-frac3.4
Applied *-un-lft-identity3.4
Applied times-frac1.0
Simplified1.0
Final simplification1.0
herbie shell --seed 2020024
(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))