\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(\left(\left(\frac{x}{y} \cdot \frac{\frac{3}{27}}{2}\right) \cdot \frac{\sqrt{t}}{\sqrt[3]{z}}\right) \cdot \frac{1}{\sqrt[3]{z} \cdot \sqrt[3]{z}}\right)\right)double f(double x, double y, double z, double t) {
double r710958 = 1.0;
double r710959 = 3.0;
double r710960 = r710958 / r710959;
double r710961 = x;
double r710962 = y;
double r710963 = 27.0;
double r710964 = r710962 * r710963;
double r710965 = r710961 / r710964;
double r710966 = r710959 * r710965;
double r710967 = z;
double r710968 = 2.0;
double r710969 = r710967 * r710968;
double r710970 = r710966 / r710969;
double r710971 = t;
double r710972 = sqrt(r710971);
double r710973 = r710970 * r710972;
double r710974 = acos(r710973);
double r710975 = r710960 * r710974;
return r710975;
}
double f(double x, double y, double z, double t) {
double r710976 = 1.0;
double r710977 = 3.0;
double r710978 = cbrt(r710977);
double r710979 = r710978 * r710978;
double r710980 = r710976 / r710979;
double r710981 = 1.0;
double r710982 = r710981 / r710978;
double r710983 = x;
double r710984 = y;
double r710985 = r710983 / r710984;
double r710986 = 27.0;
double r710987 = r710977 / r710986;
double r710988 = 2.0;
double r710989 = r710987 / r710988;
double r710990 = r710985 * r710989;
double r710991 = t;
double r710992 = sqrt(r710991);
double r710993 = z;
double r710994 = cbrt(r710993);
double r710995 = r710992 / r710994;
double r710996 = r710990 * r710995;
double r710997 = r710994 * r710994;
double r710998 = r710976 / r710997;
double r710999 = r710996 * r710998;
double r711000 = acos(r710999);
double r711001 = r710982 * r711000;
double r711002 = r710980 * r711001;
return r711002;
}




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.4 |
Initial program 1.4
rmApplied add-cube-cbrt1.4
Applied *-un-lft-identity1.4
Applied times-frac0.4
Applied associate-*l*0.4
Simplified1.2
rmApplied add-cube-cbrt1.2
Applied *-un-lft-identity1.2
Applied sqrt-prod1.2
Applied times-frac1.2
Applied associate-*l*0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019196 +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)))))