\frac{1.0}{3.0} \cdot \cos^{-1} \left(\frac{3.0 \cdot \frac{x}{y \cdot 27.0}}{z \cdot 2.0} \cdot \sqrt{t}\right)\frac{1}{\sqrt[3]{3.0} \cdot \sqrt[3]{3.0}} \cdot \left(1.0 \cdot \frac{\cos^{-1} \left(\left(\frac{x}{z \cdot y} \cdot \sqrt{t}\right) \cdot 0.05555555555555555\right)}{\sqrt[3]{3.0}}\right)double f(double x, double y, double z, double t) {
double r14071120 = 1.0;
double r14071121 = 3.0;
double r14071122 = r14071120 / r14071121;
double r14071123 = x;
double r14071124 = y;
double r14071125 = 27.0;
double r14071126 = r14071124 * r14071125;
double r14071127 = r14071123 / r14071126;
double r14071128 = r14071121 * r14071127;
double r14071129 = z;
double r14071130 = 2.0;
double r14071131 = r14071129 * r14071130;
double r14071132 = r14071128 / r14071131;
double r14071133 = t;
double r14071134 = sqrt(r14071133);
double r14071135 = r14071132 * r14071134;
double r14071136 = acos(r14071135);
double r14071137 = r14071122 * r14071136;
return r14071137;
}
double f(double x, double y, double z, double t) {
double r14071138 = 1.0;
double r14071139 = 3.0;
double r14071140 = cbrt(r14071139);
double r14071141 = r14071140 * r14071140;
double r14071142 = r14071138 / r14071141;
double r14071143 = 1.0;
double r14071144 = x;
double r14071145 = z;
double r14071146 = y;
double r14071147 = r14071145 * r14071146;
double r14071148 = r14071144 / r14071147;
double r14071149 = t;
double r14071150 = sqrt(r14071149);
double r14071151 = r14071148 * r14071150;
double r14071152 = 0.05555555555555555;
double r14071153 = r14071151 * r14071152;
double r14071154 = acos(r14071153);
double r14071155 = r14071154 / r14071140;
double r14071156 = r14071143 * r14071155;
double r14071157 = r14071142 * r14071156;
return r14071157;
}




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.3 |
Initial program 1.3
rmApplied add-cube-cbrt1.3
Applied *-un-lft-identity1.3
Applied times-frac0.4
Applied associate-*l*0.4
Taylor expanded around 0 0.3
Final simplification0.3
herbie shell --seed 2019156 +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)))))