\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\left(x - \frac{y}{z \cdot 3}\right) + \frac{\frac{\sqrt[3]{t} \cdot \sqrt[3]{t}}{z}}{\frac{y}{\frac{\sqrt[3]{t}}{3}}}double f(double x, double y, double z, double t) {
double r759722 = x;
double r759723 = y;
double r759724 = z;
double r759725 = 3.0;
double r759726 = r759724 * r759725;
double r759727 = r759723 / r759726;
double r759728 = r759722 - r759727;
double r759729 = t;
double r759730 = r759726 * r759723;
double r759731 = r759729 / r759730;
double r759732 = r759728 + r759731;
return r759732;
}
double f(double x, double y, double z, double t) {
double r759733 = x;
double r759734 = y;
double r759735 = z;
double r759736 = 3.0;
double r759737 = r759735 * r759736;
double r759738 = r759734 / r759737;
double r759739 = r759733 - r759738;
double r759740 = t;
double r759741 = cbrt(r759740);
double r759742 = r759741 * r759741;
double r759743 = r759742 / r759735;
double r759744 = r759741 / r759736;
double r759745 = r759734 / r759744;
double r759746 = r759743 / r759745;
double r759747 = r759739 + r759746;
return r759747;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.4 |
|---|---|
| Target | 1.7 |
| Herbie | 1.4 |
Initial program 3.4
rmApplied associate-/r*1.7
rmApplied add-cube-cbrt1.9
Applied times-frac1.9
Applied associate-/l*1.4
Final simplification1.4
herbie shell --seed 2019354
(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))))