\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(\frac{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 r494896 = 1.0;
double r494897 = 3.0;
double r494898 = r494896 / r494897;
double r494899 = x;
double r494900 = y;
double r494901 = 27.0;
double r494902 = r494900 * r494901;
double r494903 = r494899 / r494902;
double r494904 = r494897 * r494903;
double r494905 = z;
double r494906 = 2.0;
double r494907 = r494905 * r494906;
double r494908 = r494904 / r494907;
double r494909 = t;
double r494910 = sqrt(r494909);
double r494911 = r494908 * r494910;
double r494912 = acos(r494911);
double r494913 = r494898 * r494912;
return r494913;
}
double f(double x, double y, double z, double t) {
double r494914 = 1.0;
double r494915 = 3.0;
double r494916 = cbrt(r494915);
double r494917 = r494916 * r494916;
double r494918 = r494914 / r494917;
double r494919 = 1.0;
double r494920 = r494919 / r494916;
double r494921 = x;
double r494922 = y;
double r494923 = 27.0;
double r494924 = r494922 * r494923;
double r494925 = r494921 / r494924;
double r494926 = r494915 * r494925;
double r494927 = z;
double r494928 = 2.0;
double r494929 = r494927 * r494928;
double r494930 = r494926 / r494929;
double r494931 = t;
double r494932 = sqrt(r494931);
double r494933 = r494930 * r494932;
double r494934 = acos(r494933);
double r494935 = r494920 * r494934;
double r494936 = r494918 * r494935;
return r494936;
}




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.5 |
Initial program 1.4
rmApplied add-cube-cbrt1.4
Applied *-un-lft-identity1.4
Applied times-frac0.5
Applied associate-*l*0.5
Final simplification0.5
herbie shell --seed 2019212
(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)))))