\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(1 \cdot \left(\frac{\frac{\pi}{2}}{\sqrt[3]{3}} - \frac{\sin^{-1} \left(\frac{\frac{\frac{x \cdot 3}{27 \cdot y}}{z} \cdot \sqrt{t}}{2}\right)}{\sqrt[3]{3}}\right)\right)double f(double x, double y, double z, double t) {
double r32851894 = 1.0;
double r32851895 = 3.0;
double r32851896 = r32851894 / r32851895;
double r32851897 = x;
double r32851898 = y;
double r32851899 = 27.0;
double r32851900 = r32851898 * r32851899;
double r32851901 = r32851897 / r32851900;
double r32851902 = r32851895 * r32851901;
double r32851903 = z;
double r32851904 = 2.0;
double r32851905 = r32851903 * r32851904;
double r32851906 = r32851902 / r32851905;
double r32851907 = t;
double r32851908 = sqrt(r32851907);
double r32851909 = r32851906 * r32851908;
double r32851910 = acos(r32851909);
double r32851911 = r32851896 * r32851910;
return r32851911;
}
double f(double x, double y, double z, double t) {
double r32851912 = 1.0;
double r32851913 = 3.0;
double r32851914 = cbrt(r32851913);
double r32851915 = r32851914 * r32851914;
double r32851916 = r32851912 / r32851915;
double r32851917 = 1.0;
double r32851918 = atan2(1.0, 0.0);
double r32851919 = 2.0;
double r32851920 = r32851918 / r32851919;
double r32851921 = r32851920 / r32851914;
double r32851922 = x;
double r32851923 = r32851922 * r32851913;
double r32851924 = 27.0;
double r32851925 = y;
double r32851926 = r32851924 * r32851925;
double r32851927 = r32851923 / r32851926;
double r32851928 = z;
double r32851929 = r32851927 / r32851928;
double r32851930 = t;
double r32851931 = sqrt(r32851930);
double r32851932 = r32851929 * r32851931;
double r32851933 = 2.0;
double r32851934 = r32851932 / r32851933;
double r32851935 = asin(r32851934);
double r32851936 = r32851935 / r32851914;
double r32851937 = r32851921 - r32851936;
double r32851938 = r32851917 * r32851937;
double r32851939 = r32851916 * r32851938;
return r32851939;
}




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.3 |
Initial program 1.3
rmApplied add-cube-cbrt1.3
Applied *-un-lft-identity1.3
Applied times-frac0.3
Applied associate-*l*0.3
rmApplied div-inv0.3
Applied associate-*l*0.3
Simplified0.3
rmApplied acos-asin0.3
Applied div-sub0.3
Final simplification0.3
herbie shell --seed 2019172 +o rules:numerics
(FPCore (x y z t)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, D"
:herbie-target
(/ (acos (* (/ (/ x 27.0) (* y z)) (/ (sqrt t) (/ 2.0 3.0)))) 3.0)
(* (/ 1.0 3.0) (acos (* (/ (* 3.0 (/ x (* y 27.0))) (* z 2.0)) (sqrt t)))))