\frac{1}{3} \cdot \cos^{-1} \left(\frac{3 \cdot \frac{x}{y \cdot 27}}{z \cdot 2} \cdot \sqrt{t}\right)\frac{\sqrt{1}}{\sqrt[3]{3} \cdot \sqrt[3]{3}} \cdot \left(\frac{\sqrt{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 r670848 = 1.0;
double r670849 = 3.0;
double r670850 = r670848 / r670849;
double r670851 = x;
double r670852 = y;
double r670853 = 27.0;
double r670854 = r670852 * r670853;
double r670855 = r670851 / r670854;
double r670856 = r670849 * r670855;
double r670857 = z;
double r670858 = 2.0;
double r670859 = r670857 * r670858;
double r670860 = r670856 / r670859;
double r670861 = t;
double r670862 = sqrt(r670861);
double r670863 = r670860 * r670862;
double r670864 = acos(r670863);
double r670865 = r670850 * r670864;
return r670865;
}
double f(double x, double y, double z, double t) {
double r670866 = 1.0;
double r670867 = sqrt(r670866);
double r670868 = 3.0;
double r670869 = cbrt(r670868);
double r670870 = r670869 * r670869;
double r670871 = r670867 / r670870;
double r670872 = r670867 / r670869;
double r670873 = x;
double r670874 = y;
double r670875 = 27.0;
double r670876 = r670874 * r670875;
double r670877 = r670873 / r670876;
double r670878 = r670868 * r670877;
double r670879 = z;
double r670880 = 2.0;
double r670881 = r670879 * r670880;
double r670882 = r670878 / r670881;
double r670883 = t;
double r670884 = sqrt(r670883);
double r670885 = r670882 * r670884;
double r670886 = acos(r670885);
double r670887 = r670872 * r670886;
double r670888 = r670871 * r670887;
return r670888;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.3 |
|---|---|
| Target | 1.2 |
| Herbie | 0.4 |
Initial program 1.3
rmApplied add-cube-cbrt1.3
Applied add-sqr-sqrt1.3
Applied times-frac0.4
Applied associate-*l*0.4
Final simplification0.4
herbie shell --seed 2020035 +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)))))