\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 x}{\left(z \cdot 2\right) \cdot \left(y \cdot 27\right)} \cdot \sqrt{t}\right)\right)double f(double x, double y, double z, double t) {
double r770062 = 1.0;
double r770063 = 3.0;
double r770064 = r770062 / r770063;
double r770065 = x;
double r770066 = y;
double r770067 = 27.0;
double r770068 = r770066 * r770067;
double r770069 = r770065 / r770068;
double r770070 = r770063 * r770069;
double r770071 = z;
double r770072 = 2.0;
double r770073 = r770071 * r770072;
double r770074 = r770070 / r770073;
double r770075 = t;
double r770076 = sqrt(r770075);
double r770077 = r770074 * r770076;
double r770078 = acos(r770077);
double r770079 = r770064 * r770078;
return r770079;
}
double f(double x, double y, double z, double t) {
double r770080 = 1.0;
double r770081 = 3.0;
double r770082 = cbrt(r770081);
double r770083 = r770082 * r770082;
double r770084 = r770080 / r770083;
double r770085 = 1.0;
double r770086 = r770085 / r770082;
double r770087 = x;
double r770088 = r770081 * r770087;
double r770089 = z;
double r770090 = 2.0;
double r770091 = r770089 * r770090;
double r770092 = y;
double r770093 = 27.0;
double r770094 = r770092 * r770093;
double r770095 = r770091 * r770094;
double r770096 = r770088 / r770095;
double r770097 = t;
double r770098 = sqrt(r770097);
double r770099 = r770096 * r770098;
double r770100 = acos(r770099);
double r770101 = r770086 * r770100;
double r770102 = r770084 * r770101;
return r770102;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.2 |
|---|---|
| Target | 1.2 |
| Herbie | 0.2 |
Initial program 1.2
rmApplied add-cube-cbrt1.2
Applied *-un-lft-identity1.2
Applied times-frac0.3
Applied associate-*l*0.3
rmApplied associate-*r/0.3
Applied associate-/l/0.2
Final simplification0.2
herbie shell --seed 2020033 +o rules:numerics
(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)))))