\frac{1}{3} \cdot \cos^{-1} \left(\frac{3 \cdot \frac{x}{y \cdot 27}}{z \cdot 2} \cdot \sqrt{t}\right)\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{\sqrt[3]{3} \cdot \sqrt[3]{3}} \cdot \left(\frac{\sqrt[3]{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 r826029 = 1.0;
double r826030 = 3.0;
double r826031 = r826029 / r826030;
double r826032 = x;
double r826033 = y;
double r826034 = 27.0;
double r826035 = r826033 * r826034;
double r826036 = r826032 / r826035;
double r826037 = r826030 * r826036;
double r826038 = z;
double r826039 = 2.0;
double r826040 = r826038 * r826039;
double r826041 = r826037 / r826040;
double r826042 = t;
double r826043 = sqrt(r826042);
double r826044 = r826041 * r826043;
double r826045 = acos(r826044);
double r826046 = r826031 * r826045;
return r826046;
}
double f(double x, double y, double z, double t) {
double r826047 = 1.0;
double r826048 = cbrt(r826047);
double r826049 = r826048 * r826048;
double r826050 = 3.0;
double r826051 = cbrt(r826050);
double r826052 = r826051 * r826051;
double r826053 = r826049 / r826052;
double r826054 = r826048 / r826051;
double r826055 = x;
double r826056 = y;
double r826057 = 27.0;
double r826058 = r826056 * r826057;
double r826059 = r826055 / r826058;
double r826060 = r826050 * r826059;
double r826061 = z;
double r826062 = 2.0;
double r826063 = r826061 * r826062;
double r826064 = r826060 / r826063;
double r826065 = t;
double r826066 = sqrt(r826065);
double r826067 = r826064 * r826066;
double r826068 = acos(r826067);
double r826069 = r826054 * r826068;
double r826070 = r826053 * r826069;
return r826070;
}




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 add-cube-cbrt1.2
Applied times-frac0.2
Applied associate-*l*0.2
Final simplification0.2
herbie shell --seed 2020060 +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)))))