\frac{x \cdot \left(y + z\right)}{z}\left(x \cdot \frac{\sqrt[3]{y + z} \cdot \sqrt[3]{y + z}}{\sqrt[3]{z} \cdot \sqrt[3]{z}}\right) \cdot \frac{\sqrt[3]{y + z}}{\sqrt[3]{z}}double f(double x, double y, double z) {
double r336085 = x;
double r336086 = y;
double r336087 = z;
double r336088 = r336086 + r336087;
double r336089 = r336085 * r336088;
double r336090 = r336089 / r336087;
return r336090;
}
double f(double x, double y, double z) {
double r336091 = x;
double r336092 = y;
double r336093 = z;
double r336094 = r336092 + r336093;
double r336095 = cbrt(r336094);
double r336096 = r336095 * r336095;
double r336097 = cbrt(r336093);
double r336098 = r336097 * r336097;
double r336099 = r336096 / r336098;
double r336100 = r336091 * r336099;
double r336101 = r336095 / r336097;
double r336102 = r336100 * r336101;
return r336102;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 12.5 |
|---|---|
| Target | 2.9 |
| Herbie | 1.1 |
Initial program 12.5
rmApplied *-un-lft-identity12.5
Applied times-frac3.1
Simplified3.1
rmApplied add-cube-cbrt4.3
Applied add-cube-cbrt3.6
Applied times-frac3.6
Applied associate-*r*1.1
Final simplification1.1
herbie shell --seed 2020035
(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))