\frac{1}{3} \cdot \cos^{-1} \left(\frac{3 \cdot \frac{x}{y \cdot 27}}{z \cdot 2} \cdot \sqrt{t}\right)\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{\sqrt[3]{3} \cdot \sqrt[3]{3}} \cdot \left(\frac{\sqrt[3]{1}}{\sqrt[3]{3}} \cdot \cos^{-1} \left(\frac{3 \cdot \frac{x}{y \cdot 27}}{z \cdot 2} \cdot \sqrt{t}\right)\right)double f(double x, double y, double z, double t) {
double r916735 = 1.0;
double r916736 = 3.0;
double r916737 = r916735 / r916736;
double r916738 = x;
double r916739 = y;
double r916740 = 27.0;
double r916741 = r916739 * r916740;
double r916742 = r916738 / r916741;
double r916743 = r916736 * r916742;
double r916744 = z;
double r916745 = 2.0;
double r916746 = r916744 * r916745;
double r916747 = r916743 / r916746;
double r916748 = t;
double r916749 = sqrt(r916748);
double r916750 = r916747 * r916749;
double r916751 = acos(r916750);
double r916752 = r916737 * r916751;
return r916752;
}
double f(double x, double y, double z, double t) {
double r916753 = 1.0;
double r916754 = cbrt(r916753);
double r916755 = r916754 * r916754;
double r916756 = 3.0;
double r916757 = cbrt(r916756);
double r916758 = r916757 * r916757;
double r916759 = r916755 / r916758;
double r916760 = r916754 / r916757;
double r916761 = x;
double r916762 = y;
double r916763 = 27.0;
double r916764 = r916762 * r916763;
double r916765 = r916761 / r916764;
double r916766 = r916756 * r916765;
double r916767 = z;
double r916768 = 2.0;
double r916769 = r916767 * r916768;
double r916770 = r916766 / r916769;
double r916771 = t;
double r916772 = sqrt(r916771);
double r916773 = r916770 * r916772;
double r916774 = acos(r916773);
double r916775 = r916760 * r916774;
double r916776 = r916759 * r916775;
return r916776;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.2 |
|---|---|
| Target | 1.2 |
| Herbie | 0.2 |
Initial program 1.2
rmApplied add-cube-cbrt1.2
Applied add-cube-cbrt1.2
Applied times-frac0.2
Applied associate-*l*0.2
Final simplification0.2
herbie shell --seed 2020060
(FPCore (x y z t)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, D"
:precision binary64
:herbie-target
(/ (acos (* (/ (/ x 27) (* y z)) (/ (sqrt t) (/ 2 3)))) 3)
(* (/ 1 3) (acos (* (/ (* 3 (/ x (* y 27))) (* z 2)) (sqrt t)))))