\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 r708723 = 1.0;
double r708724 = 3.0;
double r708725 = r708723 / r708724;
double r708726 = x;
double r708727 = y;
double r708728 = 27.0;
double r708729 = r708727 * r708728;
double r708730 = r708726 / r708729;
double r708731 = r708724 * r708730;
double r708732 = z;
double r708733 = 2.0;
double r708734 = r708732 * r708733;
double r708735 = r708731 / r708734;
double r708736 = t;
double r708737 = sqrt(r708736);
double r708738 = r708735 * r708737;
double r708739 = acos(r708738);
double r708740 = r708725 * r708739;
return r708740;
}
double f(double x, double y, double z, double t) {
double r708741 = 1.0;
double r708742 = 3.0;
double r708743 = cbrt(r708742);
double r708744 = r708743 * r708743;
double r708745 = r708741 / r708744;
double r708746 = 1.0;
double r708747 = r708746 / r708743;
double r708748 = x;
double r708749 = y;
double r708750 = 27.0;
double r708751 = r708749 * r708750;
double r708752 = r708748 / r708751;
double r708753 = r708742 * r708752;
double r708754 = z;
double r708755 = 2.0;
double r708756 = r708754 * r708755;
double r708757 = r708753 / r708756;
double r708758 = t;
double r708759 = sqrt(r708758);
double r708760 = r708757 * r708759;
double r708761 = acos(r708760);
double r708762 = r708747 * r708761;
double r708763 = r708745 * r708762;
return r708763;
}




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.3 |
Initial program 1.2
rmApplied add-cube-cbrt1.2
Applied *-un-lft-identity1.2
Applied times-frac0.3
Applied associate-*l*0.3
Final simplification0.3
herbie shell --seed 2020045 +o rules:numerics
(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)))))