\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(\frac{\sqrt{t}}{\frac{2 \cdot z}{\frac{x \cdot 3}{27 \cdot y}}}\right) \cdot \sqrt{1}}{\sqrt[3]{3}}double f(double x, double y, double z, double t) {
double r520036 = 1.0;
double r520037 = 3.0;
double r520038 = r520036 / r520037;
double r520039 = x;
double r520040 = y;
double r520041 = 27.0;
double r520042 = r520040 * r520041;
double r520043 = r520039 / r520042;
double r520044 = r520037 * r520043;
double r520045 = z;
double r520046 = 2.0;
double r520047 = r520045 * r520046;
double r520048 = r520044 / r520047;
double r520049 = t;
double r520050 = sqrt(r520049);
double r520051 = r520048 * r520050;
double r520052 = acos(r520051);
double r520053 = r520038 * r520052;
return r520053;
}
double f(double x, double y, double z, double t) {
double r520054 = 1.0;
double r520055 = sqrt(r520054);
double r520056 = 3.0;
double r520057 = cbrt(r520056);
double r520058 = r520057 * r520057;
double r520059 = r520055 / r520058;
double r520060 = t;
double r520061 = sqrt(r520060);
double r520062 = 2.0;
double r520063 = z;
double r520064 = r520062 * r520063;
double r520065 = x;
double r520066 = r520065 * r520056;
double r520067 = 27.0;
double r520068 = y;
double r520069 = r520067 * r520068;
double r520070 = r520066 / r520069;
double r520071 = r520064 / r520070;
double r520072 = r520061 / r520071;
double r520073 = acos(r520072);
double r520074 = r520073 * r520055;
double r520075 = r520074 / r520057;
double r520076 = r520059 * r520075;
return r520076;
}




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
Simplified0.3
Final simplification0.3
herbie shell --seed 2019174 +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)))))