\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 r538012 = 1.0;
double r538013 = 3.0;
double r538014 = r538012 / r538013;
double r538015 = x;
double r538016 = y;
double r538017 = 27.0;
double r538018 = r538016 * r538017;
double r538019 = r538015 / r538018;
double r538020 = r538013 * r538019;
double r538021 = z;
double r538022 = 2.0;
double r538023 = r538021 * r538022;
double r538024 = r538020 / r538023;
double r538025 = t;
double r538026 = sqrt(r538025);
double r538027 = r538024 * r538026;
double r538028 = acos(r538027);
double r538029 = r538014 * r538028;
return r538029;
}
double f(double x, double y, double z, double t) {
double r538030 = 1.0;
double r538031 = 3.0;
double r538032 = cbrt(r538031);
double r538033 = r538032 * r538032;
double r538034 = r538030 / r538033;
double r538035 = 1.0;
double r538036 = r538035 / r538032;
double r538037 = x;
double r538038 = r538031 * r538037;
double r538039 = z;
double r538040 = 2.0;
double r538041 = r538039 * r538040;
double r538042 = y;
double r538043 = 27.0;
double r538044 = r538042 * r538043;
double r538045 = r538041 * r538044;
double r538046 = r538038 / r538045;
double r538047 = t;
double r538048 = sqrt(r538047);
double r538049 = r538046 * r538048;
double r538050 = acos(r538049);
double r538051 = r538036 * r538050;
double r538052 = r538034 * r538051;
return r538052;
}




Bits error versus x




Bits error versus y




Bits error versus z




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