\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 \frac{\cos^{-1} \left(0.05555555555555555247160270937456516548991 \cdot \left(\sqrt{t} \cdot \frac{x}{z \cdot y}\right)\right) \cdot \sqrt{1}}{\sqrt[3]{3}}double f(double x, double y, double z, double t) {
double r514902 = 1.0;
double r514903 = 3.0;
double r514904 = r514902 / r514903;
double r514905 = x;
double r514906 = y;
double r514907 = 27.0;
double r514908 = r514906 * r514907;
double r514909 = r514905 / r514908;
double r514910 = r514903 * r514909;
double r514911 = z;
double r514912 = 2.0;
double r514913 = r514911 * r514912;
double r514914 = r514910 / r514913;
double r514915 = t;
double r514916 = sqrt(r514915);
double r514917 = r514914 * r514916;
double r514918 = acos(r514917);
double r514919 = r514904 * r514918;
return r514919;
}
double f(double x, double y, double z, double t) {
double r514920 = 1.0;
double r514921 = sqrt(r514920);
double r514922 = 3.0;
double r514923 = cbrt(r514922);
double r514924 = r514923 * r514923;
double r514925 = r514921 / r514924;
double r514926 = 0.05555555555555555;
double r514927 = t;
double r514928 = sqrt(r514927);
double r514929 = x;
double r514930 = z;
double r514931 = y;
double r514932 = r514930 * r514931;
double r514933 = r514929 / r514932;
double r514934 = r514928 * r514933;
double r514935 = r514926 * r514934;
double r514936 = acos(r514935);
double r514937 = r514936 * r514921;
double r514938 = r514937 / r514923;
double r514939 = r514925 * r514938;
return r514939;
}




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 add-sqr-sqrt1.3
Applied times-frac0.3
Applied associate-*l*0.3
Taylor expanded around 0 0.3
Final simplification0.3
herbie shell --seed 2019303
(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)))))