\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(\sqrt{\frac{1}{\sqrt[3]{3}}} \cdot \left(\sqrt{\frac{1}{\sqrt[3]{3}}} \cdot \cos^{-1} \left(\frac{3 \cdot \frac{x}{y \cdot 27}}{z \cdot 2} \cdot \sqrt{t}\right)\right)\right)double f(double x, double y, double z, double t) {
double r596244 = 1.0;
double r596245 = 3.0;
double r596246 = r596244 / r596245;
double r596247 = x;
double r596248 = y;
double r596249 = 27.0;
double r596250 = r596248 * r596249;
double r596251 = r596247 / r596250;
double r596252 = r596245 * r596251;
double r596253 = z;
double r596254 = 2.0;
double r596255 = r596253 * r596254;
double r596256 = r596252 / r596255;
double r596257 = t;
double r596258 = sqrt(r596257);
double r596259 = r596256 * r596258;
double r596260 = acos(r596259);
double r596261 = r596246 * r596260;
return r596261;
}
double f(double x, double y, double z, double t) {
double r596262 = 1.0;
double r596263 = 3.0;
double r596264 = cbrt(r596263);
double r596265 = r596264 * r596264;
double r596266 = r596262 / r596265;
double r596267 = 1.0;
double r596268 = r596267 / r596264;
double r596269 = sqrt(r596268);
double r596270 = x;
double r596271 = y;
double r596272 = 27.0;
double r596273 = r596271 * r596272;
double r596274 = r596270 / r596273;
double r596275 = r596263 * r596274;
double r596276 = z;
double r596277 = 2.0;
double r596278 = r596276 * r596277;
double r596279 = r596275 / r596278;
double r596280 = t;
double r596281 = sqrt(r596280);
double r596282 = r596279 * r596281;
double r596283 = acos(r596282);
double r596284 = r596269 * r596283;
double r596285 = r596269 * r596284;
double r596286 = r596266 * r596285;
return r596286;
}




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.5 |
Initial program 1.4
rmApplied add-cube-cbrt1.4
Applied *-un-lft-identity1.4
Applied times-frac0.5
Applied associate-*l*0.4
rmApplied add-sqr-sqrt1.4
Applied associate-*l*0.5
Final simplification0.5
herbie shell --seed 2019323
(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)))))