\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 \left(\frac{\sqrt{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 r758033 = 1.0;
double r758034 = 3.0;
double r758035 = r758033 / r758034;
double r758036 = x;
double r758037 = y;
double r758038 = 27.0;
double r758039 = r758037 * r758038;
double r758040 = r758036 / r758039;
double r758041 = r758034 * r758040;
double r758042 = z;
double r758043 = 2.0;
double r758044 = r758042 * r758043;
double r758045 = r758041 / r758044;
double r758046 = t;
double r758047 = sqrt(r758046);
double r758048 = r758045 * r758047;
double r758049 = acos(r758048);
double r758050 = r758035 * r758049;
return r758050;
}
double f(double x, double y, double z, double t) {
double r758051 = 1.0;
double r758052 = sqrt(r758051);
double r758053 = 3.0;
double r758054 = cbrt(r758053);
double r758055 = r758054 * r758054;
double r758056 = r758052 / r758055;
double r758057 = r758052 / r758054;
double r758058 = x;
double r758059 = y;
double r758060 = 27.0;
double r758061 = r758059 * r758060;
double r758062 = r758058 / r758061;
double r758063 = r758053 * r758062;
double r758064 = z;
double r758065 = 2.0;
double r758066 = r758064 * r758065;
double r758067 = r758063 / r758066;
double r758068 = t;
double r758069 = sqrt(r758068);
double r758070 = r758067 * r758069;
double r758071 = acos(r758070);
double r758072 = r758057 * r758071;
double r758073 = r758056 * r758072;
return r758073;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.3 |
|---|---|
| Target | 1.3 |
| 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
Final simplification0.3
herbie shell --seed 2020036
(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)))))