\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 \frac{x}{y \cdot 27}}{z \cdot 2} \cdot \sqrt{t}\right)\right)double f(double x, double y, double z, double t) {
double r495576 = 1.0;
double r495577 = 3.0;
double r495578 = r495576 / r495577;
double r495579 = x;
double r495580 = y;
double r495581 = 27.0;
double r495582 = r495580 * r495581;
double r495583 = r495579 / r495582;
double r495584 = r495577 * r495583;
double r495585 = z;
double r495586 = 2.0;
double r495587 = r495585 * r495586;
double r495588 = r495584 / r495587;
double r495589 = t;
double r495590 = sqrt(r495589);
double r495591 = r495588 * r495590;
double r495592 = acos(r495591);
double r495593 = r495578 * r495592;
return r495593;
}
double f(double x, double y, double z, double t) {
double r495594 = 1.0;
double r495595 = 3.0;
double r495596 = cbrt(r495595);
double r495597 = r495596 * r495596;
double r495598 = r495594 / r495597;
double r495599 = 1.0;
double r495600 = r495599 / r495596;
double r495601 = x;
double r495602 = y;
double r495603 = 27.0;
double r495604 = r495602 * r495603;
double r495605 = r495601 / r495604;
double r495606 = r495595 * r495605;
double r495607 = z;
double r495608 = 2.0;
double r495609 = r495607 * r495608;
double r495610 = r495606 / r495609;
double r495611 = t;
double r495612 = sqrt(r495611);
double r495613 = r495610 * r495612;
double r495614 = acos(r495613);
double r495615 = r495600 * r495614;
double r495616 = r495598 * r495615;
return r495616;
}




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 2019326
(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)))))