\frac{1.0}{3.0} \cdot \cos^{-1} \left(\frac{3.0 \cdot \frac{x}{y \cdot 27.0}}{z \cdot 2.0} \cdot \sqrt{t}\right)\frac{1}{\sqrt[3]{3.0} \cdot \sqrt[3]{3.0}} \cdot \left(\frac{1.0}{\sqrt[3]{3.0}} \cdot \cos^{-1} \left(\left(\frac{x}{z \cdot y} \cdot 0.05555555555555555\right) \cdot \sqrt{t}\right)\right)double f(double x, double y, double z, double t) {
double r36886902 = 1.0;
double r36886903 = 3.0;
double r36886904 = r36886902 / r36886903;
double r36886905 = x;
double r36886906 = y;
double r36886907 = 27.0;
double r36886908 = r36886906 * r36886907;
double r36886909 = r36886905 / r36886908;
double r36886910 = r36886903 * r36886909;
double r36886911 = z;
double r36886912 = 2.0;
double r36886913 = r36886911 * r36886912;
double r36886914 = r36886910 / r36886913;
double r36886915 = t;
double r36886916 = sqrt(r36886915);
double r36886917 = r36886914 * r36886916;
double r36886918 = acos(r36886917);
double r36886919 = r36886904 * r36886918;
return r36886919;
}
double f(double x, double y, double z, double t) {
double r36886920 = 1.0;
double r36886921 = 3.0;
double r36886922 = cbrt(r36886921);
double r36886923 = r36886922 * r36886922;
double r36886924 = r36886920 / r36886923;
double r36886925 = 1.0;
double r36886926 = r36886925 / r36886922;
double r36886927 = x;
double r36886928 = z;
double r36886929 = y;
double r36886930 = r36886928 * r36886929;
double r36886931 = r36886927 / r36886930;
double r36886932 = 0.05555555555555555;
double r36886933 = r36886931 * r36886932;
double r36886934 = t;
double r36886935 = sqrt(r36886934);
double r36886936 = r36886933 * r36886935;
double r36886937 = acos(r36886936);
double r36886938 = r36886926 * r36886937;
double r36886939 = r36886924 * r36886938;
return r36886939;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.4 |
|---|---|
| Target | 1.2 |
| Herbie | 0.2 |
Initial program 1.4
rmApplied add-cube-cbrt1.4
Applied *-un-lft-identity1.4
Applied times-frac0.4
Applied associate-*l*0.4
Taylor expanded around 0 0.2
Final simplification0.2
herbie shell --seed 2019164 +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)))))