\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\left(x - \frac{-\left(\frac{\sqrt[3]{t} \cdot \sqrt[3]{t}}{z \cdot 3} \cdot \sqrt[3]{1}\right) \cdot \sqrt[3]{t}}{{\left(\sqrt[3]{y}\right)}^{3}}\right) - \frac{y}{z \cdot 3}double f(double x, double y, double z, double t) {
double r493721 = x;
double r493722 = y;
double r493723 = z;
double r493724 = 3.0;
double r493725 = r493723 * r493724;
double r493726 = r493722 / r493725;
double r493727 = r493721 - r493726;
double r493728 = t;
double r493729 = r493725 * r493722;
double r493730 = r493728 / r493729;
double r493731 = r493727 + r493730;
return r493731;
}
double f(double x, double y, double z, double t) {
double r493732 = x;
double r493733 = t;
double r493734 = cbrt(r493733);
double r493735 = r493734 * r493734;
double r493736 = z;
double r493737 = 3.0;
double r493738 = r493736 * r493737;
double r493739 = r493735 / r493738;
double r493740 = 1.0;
double r493741 = cbrt(r493740);
double r493742 = r493739 * r493741;
double r493743 = r493742 * r493734;
double r493744 = -r493743;
double r493745 = y;
double r493746 = cbrt(r493745);
double r493747 = 3.0;
double r493748 = pow(r493746, r493747);
double r493749 = r493744 / r493748;
double r493750 = r493732 - r493749;
double r493751 = r493745 / r493738;
double r493752 = r493750 - r493751;
return r493752;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.6 |
|---|---|
| Target | 1.6 |
| Herbie | 2.0 |
Initial program 3.6
rmApplied add-cube-cbrt3.8
Applied times-frac1.5
rmApplied add-cube-cbrt1.6
Applied *-un-lft-identity1.6
Applied cbrt-prod1.6
Applied times-frac1.6
Applied associate-*r*0.9
Final simplification2.0
herbie shell --seed 2019298
(FPCore (x y z t)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, H"
:precision binary64
:herbie-target
(+ (- x (/ y (* z 3))) (/ (/ t (* z 3)) y))
(+ (- x (/ y (* z 3))) (/ t (* (* z 3) y))))