\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 r844041 = 1.0;
double r844042 = 3.0;
double r844043 = r844041 / r844042;
double r844044 = x;
double r844045 = y;
double r844046 = 27.0;
double r844047 = r844045 * r844046;
double r844048 = r844044 / r844047;
double r844049 = r844042 * r844048;
double r844050 = z;
double r844051 = 2.0;
double r844052 = r844050 * r844051;
double r844053 = r844049 / r844052;
double r844054 = t;
double r844055 = sqrt(r844054);
double r844056 = r844053 * r844055;
double r844057 = acos(r844056);
double r844058 = r844043 * r844057;
return r844058;
}
double f(double x, double y, double z, double t) {
double r844059 = 1.0;
double r844060 = sqrt(r844059);
double r844061 = 3.0;
double r844062 = cbrt(r844061);
double r844063 = r844062 * r844062;
double r844064 = r844060 / r844063;
double r844065 = r844060 / r844062;
double r844066 = x;
double r844067 = y;
double r844068 = 27.0;
double r844069 = r844067 * r844068;
double r844070 = r844066 / r844069;
double r844071 = r844061 * r844070;
double r844072 = z;
double r844073 = 2.0;
double r844074 = r844072 * r844073;
double r844075 = r844071 / r844074;
double r844076 = t;
double r844077 = sqrt(r844076);
double r844078 = r844075 * r844077;
double r844079 = acos(r844078);
double r844080 = r844065 * r844079;
double r844081 = r844064 * r844080;
return r844081;
}




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.4 |
Initial program 1.3
rmApplied add-cube-cbrt1.3
Applied add-sqr-sqrt1.3
Applied times-frac0.4
Applied associate-*l*0.4
Final simplification0.4
herbie shell --seed 2020065
(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)))))