\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 r729288 = 1.0;
double r729289 = 3.0;
double r729290 = r729288 / r729289;
double r729291 = x;
double r729292 = y;
double r729293 = 27.0;
double r729294 = r729292 * r729293;
double r729295 = r729291 / r729294;
double r729296 = r729289 * r729295;
double r729297 = z;
double r729298 = 2.0;
double r729299 = r729297 * r729298;
double r729300 = r729296 / r729299;
double r729301 = t;
double r729302 = sqrt(r729301);
double r729303 = r729300 * r729302;
double r729304 = acos(r729303);
double r729305 = r729290 * r729304;
return r729305;
}
double f(double x, double y, double z, double t) {
double r729306 = 1.0;
double r729307 = 3.0;
double r729308 = cbrt(r729307);
double r729309 = r729308 * r729308;
double r729310 = r729306 / r729309;
double r729311 = 1.0;
double r729312 = r729311 / r729308;
double r729313 = x;
double r729314 = r729307 * r729313;
double r729315 = z;
double r729316 = 2.0;
double r729317 = r729315 * r729316;
double r729318 = y;
double r729319 = 27.0;
double r729320 = r729318 * r729319;
double r729321 = r729317 * r729320;
double r729322 = r729314 / r729321;
double r729323 = t;
double r729324 = sqrt(r729323);
double r729325 = r729322 * r729324;
double r729326 = acos(r729325);
double r729327 = r729312 * r729326;
double r729328 = r729310 * r729327;
return r729328;
}




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.2 |
Initial program 1.3
rmApplied add-cube-cbrt1.3
Applied *-un-lft-identity1.3
Applied times-frac0.4
Applied associate-*l*0.4
rmApplied associate-*r/0.4
Applied associate-/l/0.2
Final simplification0.2
herbie shell --seed 2020089 +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)))))