\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)\left(\frac{1.0}{\sqrt[3]{3.0}} \cdot \cos^{-1} \left(\frac{\frac{x}{27.0 \cdot y} \cdot 3.0}{2.0 \cdot z} \cdot \sqrt{t}\right)\right) \cdot \frac{1}{\sqrt[3]{3.0} \cdot \sqrt[3]{3.0}}double f(double x, double y, double z, double t) {
double r41913378 = 1.0;
double r41913379 = 3.0;
double r41913380 = r41913378 / r41913379;
double r41913381 = x;
double r41913382 = y;
double r41913383 = 27.0;
double r41913384 = r41913382 * r41913383;
double r41913385 = r41913381 / r41913384;
double r41913386 = r41913379 * r41913385;
double r41913387 = z;
double r41913388 = 2.0;
double r41913389 = r41913387 * r41913388;
double r41913390 = r41913386 / r41913389;
double r41913391 = t;
double r41913392 = sqrt(r41913391);
double r41913393 = r41913390 * r41913392;
double r41913394 = acos(r41913393);
double r41913395 = r41913380 * r41913394;
return r41913395;
}
double f(double x, double y, double z, double t) {
double r41913396 = 1.0;
double r41913397 = 3.0;
double r41913398 = cbrt(r41913397);
double r41913399 = r41913396 / r41913398;
double r41913400 = x;
double r41913401 = 27.0;
double r41913402 = y;
double r41913403 = r41913401 * r41913402;
double r41913404 = r41913400 / r41913403;
double r41913405 = r41913404 * r41913397;
double r41913406 = 2.0;
double r41913407 = z;
double r41913408 = r41913406 * r41913407;
double r41913409 = r41913405 / r41913408;
double r41913410 = t;
double r41913411 = sqrt(r41913410);
double r41913412 = r41913409 * r41913411;
double r41913413 = acos(r41913412);
double r41913414 = r41913399 * r41913413;
double r41913415 = 1.0;
double r41913416 = r41913398 * r41913398;
double r41913417 = r41913415 / r41913416;
double r41913418 = r41913414 * r41913417;
return r41913418;
}




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.3
Applied associate-*l*0.3
Final simplification0.3
herbie shell --seed 2019163
(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)))))