\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 r731867 = 1.0;
double r731868 = 3.0;
double r731869 = r731867 / r731868;
double r731870 = x;
double r731871 = y;
double r731872 = 27.0;
double r731873 = r731871 * r731872;
double r731874 = r731870 / r731873;
double r731875 = r731868 * r731874;
double r731876 = z;
double r731877 = 2.0;
double r731878 = r731876 * r731877;
double r731879 = r731875 / r731878;
double r731880 = t;
double r731881 = sqrt(r731880);
double r731882 = r731879 * r731881;
double r731883 = acos(r731882);
double r731884 = r731869 * r731883;
return r731884;
}
double f(double x, double y, double z, double t) {
double r731885 = 1.0;
double r731886 = sqrt(r731885);
double r731887 = 3.0;
double r731888 = cbrt(r731887);
double r731889 = r731888 * r731888;
double r731890 = r731886 / r731889;
double r731891 = r731886 / r731888;
double r731892 = x;
double r731893 = y;
double r731894 = 27.0;
double r731895 = r731893 * r731894;
double r731896 = r731892 / r731895;
double r731897 = r731887 * r731896;
double r731898 = z;
double r731899 = 2.0;
double r731900 = r731898 * r731899;
double r731901 = r731897 / r731900;
double r731902 = t;
double r731903 = sqrt(r731902);
double r731904 = r731901 * r731903;
double r731905 = acos(r731904);
double r731906 = r731891 * r731905;
double r731907 = r731890 * r731906;
return r731907;
}




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 2020062 +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)))))