\frac{x \cdot \left(y - z\right)}{y}\frac{\frac{x}{\frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{\sqrt[3]{y - z} \cdot \sqrt[3]{y - z}}}}{\frac{\sqrt[3]{y}}{\sqrt[3]{y - z}}}double f(double x, double y, double z) {
double r475860 = x;
double r475861 = y;
double r475862 = z;
double r475863 = r475861 - r475862;
double r475864 = r475860 * r475863;
double r475865 = r475864 / r475861;
return r475865;
}
double f(double x, double y, double z) {
double r475866 = x;
double r475867 = y;
double r475868 = cbrt(r475867);
double r475869 = r475868 * r475868;
double r475870 = z;
double r475871 = r475867 - r475870;
double r475872 = cbrt(r475871);
double r475873 = r475872 * r475872;
double r475874 = r475869 / r475873;
double r475875 = r475866 / r475874;
double r475876 = r475868 / r475872;
double r475877 = r475875 / r475876;
return r475877;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 12.5 |
|---|---|
| Target | 2.9 |
| Herbie | 1.0 |
Initial program 12.5
rmApplied associate-/l*2.7
rmApplied add-cube-cbrt3.9
Applied add-cube-cbrt3.2
Applied times-frac3.2
Applied associate-/r*1.0
Final simplification1.0
herbie shell --seed 2019212 +o rules:numerics
(FPCore (x y z)
:name "Diagrams.Backend.Cairo.Internal:setTexture from diagrams-cairo-1.3.0.3"
:precision binary64
:herbie-target
(if (< z -2.060202331921739e104) (- x (/ (* z x) y)) (if (< z 1.69397660138285259e213) (/ x (/ y (- y z))) (* (- y z) (/ x y))))
(/ (* x (- y z)) y))