\frac{1}{3} \cdot \cos^{-1} \left(\frac{3 \cdot \frac{x}{y \cdot 27}}{z \cdot 2} \cdot \sqrt{t}\right)\frac{1}{\sqrt[3]{3} \cdot \sqrt[3]{3}} \cdot \left(\frac{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 r767722 = 1.0;
double r767723 = 3.0;
double r767724 = r767722 / r767723;
double r767725 = x;
double r767726 = y;
double r767727 = 27.0;
double r767728 = r767726 * r767727;
double r767729 = r767725 / r767728;
double r767730 = r767723 * r767729;
double r767731 = z;
double r767732 = 2.0;
double r767733 = r767731 * r767732;
double r767734 = r767730 / r767733;
double r767735 = t;
double r767736 = sqrt(r767735);
double r767737 = r767734 * r767736;
double r767738 = acos(r767737);
double r767739 = r767724 * r767738;
return r767739;
}
double f(double x, double y, double z, double t) {
double r767740 = 1.0;
double r767741 = 3.0;
double r767742 = cbrt(r767741);
double r767743 = r767742 * r767742;
double r767744 = r767740 / r767743;
double r767745 = 1.0;
double r767746 = r767745 / r767742;
double r767747 = x;
double r767748 = y;
double r767749 = 27.0;
double r767750 = r767748 * r767749;
double r767751 = r767747 / r767750;
double r767752 = r767741 * r767751;
double r767753 = z;
double r767754 = 2.0;
double r767755 = r767753 * r767754;
double r767756 = r767752 / r767755;
double r767757 = t;
double r767758 = sqrt(r767757);
double r767759 = r767756 * r767758;
double r767760 = acos(r767759);
double r767761 = r767746 * r767760;
double r767762 = r767744 * r767761;
return r767762;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.3 |
|---|---|
| Target | 1.3 |
| Herbie | 0.3 |
Initial program 1.3
rmApplied add-cube-cbrt1.3
Applied *-un-lft-identity1.3
Applied times-frac0.3
Applied associate-*l*0.3
Final simplification0.3
herbie shell --seed 2020049
(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)))))