\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 r728942 = 1.0;
double r728943 = 3.0;
double r728944 = r728942 / r728943;
double r728945 = x;
double r728946 = y;
double r728947 = 27.0;
double r728948 = r728946 * r728947;
double r728949 = r728945 / r728948;
double r728950 = r728943 * r728949;
double r728951 = z;
double r728952 = 2.0;
double r728953 = r728951 * r728952;
double r728954 = r728950 / r728953;
double r728955 = t;
double r728956 = sqrt(r728955);
double r728957 = r728954 * r728956;
double r728958 = acos(r728957);
double r728959 = r728944 * r728958;
return r728959;
}
double f(double x, double y, double z, double t) {
double r728960 = 1.0;
double r728961 = sqrt(r728960);
double r728962 = 3.0;
double r728963 = cbrt(r728962);
double r728964 = r728963 * r728963;
double r728965 = r728961 / r728964;
double r728966 = r728961 / r728963;
double r728967 = x;
double r728968 = y;
double r728969 = 27.0;
double r728970 = r728968 * r728969;
double r728971 = r728967 / r728970;
double r728972 = r728962 * r728971;
double r728973 = z;
double r728974 = 2.0;
double r728975 = r728973 * r728974;
double r728976 = r728972 / r728975;
double r728977 = t;
double r728978 = sqrt(r728977);
double r728979 = r728976 * r728978;
double r728980 = acos(r728979);
double r728981 = r728966 * r728980;
double r728982 = r728965 * r728981;
return r728982;
}




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