\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 r682808 = 1.0;
double r682809 = 3.0;
double r682810 = r682808 / r682809;
double r682811 = x;
double r682812 = y;
double r682813 = 27.0;
double r682814 = r682812 * r682813;
double r682815 = r682811 / r682814;
double r682816 = r682809 * r682815;
double r682817 = z;
double r682818 = 2.0;
double r682819 = r682817 * r682818;
double r682820 = r682816 / r682819;
double r682821 = t;
double r682822 = sqrt(r682821);
double r682823 = r682820 * r682822;
double r682824 = acos(r682823);
double r682825 = r682810 * r682824;
return r682825;
}
double f(double x, double y, double z, double t) {
double r682826 = 1.0;
double r682827 = 3.0;
double r682828 = cbrt(r682827);
double r682829 = r682828 * r682828;
double r682830 = r682826 / r682829;
double r682831 = 1.0;
double r682832 = r682831 / r682828;
double r682833 = x;
double r682834 = y;
double r682835 = 27.0;
double r682836 = r682834 * r682835;
double r682837 = r682833 / r682836;
double r682838 = r682827 * r682837;
double r682839 = z;
double r682840 = 2.0;
double r682841 = r682839 * r682840;
double r682842 = r682838 / r682841;
double r682843 = t;
double r682844 = sqrt(r682843);
double r682845 = r682842 * r682844;
double r682846 = acos(r682845);
double r682847 = r682832 * r682846;
double r682848 = r682830 * r682847;
return r682848;
}




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 2020036
(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)))))