\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}}{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \frac{\frac{\sqrt[3]{t}}{3}}{\sqrt[3]{y}}double f(double x, double y, double z, double t) {
double r722693 = x;
double r722694 = y;
double r722695 = z;
double r722696 = 3.0;
double r722697 = r722695 * r722696;
double r722698 = r722694 / r722697;
double r722699 = r722693 - r722698;
double r722700 = t;
double r722701 = r722697 * r722694;
double r722702 = r722700 / r722701;
double r722703 = r722699 + r722702;
return r722703;
}
double f(double x, double y, double z, double t) {
double r722704 = x;
double r722705 = y;
double r722706 = z;
double r722707 = 3.0;
double r722708 = r722706 * r722707;
double r722709 = r722705 / r722708;
double r722710 = r722704 - r722709;
double r722711 = t;
double r722712 = cbrt(r722711);
double r722713 = r722712 * r722712;
double r722714 = r722713 / r722706;
double r722715 = cbrt(r722705);
double r722716 = r722715 * r722715;
double r722717 = r722714 / r722716;
double r722718 = r722712 / r722707;
double r722719 = r722718 / r722715;
double r722720 = r722717 * r722719;
double r722721 = r722710 + r722720;
return r722721;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.7 |
|---|---|
| Target | 1.7 |
| Herbie | 1.0 |
Initial program 3.7
rmApplied associate-/r*1.7
rmApplied add-cube-cbrt2.0
Applied add-cube-cbrt2.0
Applied times-frac2.0
Applied times-frac1.0
Final simplification1.0
herbie shell --seed 2020083
(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))))