\frac{1}{3} \cdot \cos^{-1} \left(\frac{3 \cdot \frac{x}{y \cdot 27}}{z \cdot 2} \cdot \sqrt{t}\right)\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{\sqrt[3]{3} \cdot \sqrt[3]{3}} \cdot \left(\frac{\sqrt[3]{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 r750598 = 1.0;
double r750599 = 3.0;
double r750600 = r750598 / r750599;
double r750601 = x;
double r750602 = y;
double r750603 = 27.0;
double r750604 = r750602 * r750603;
double r750605 = r750601 / r750604;
double r750606 = r750599 * r750605;
double r750607 = z;
double r750608 = 2.0;
double r750609 = r750607 * r750608;
double r750610 = r750606 / r750609;
double r750611 = t;
double r750612 = sqrt(r750611);
double r750613 = r750610 * r750612;
double r750614 = acos(r750613);
double r750615 = r750600 * r750614;
return r750615;
}
double f(double x, double y, double z, double t) {
double r750616 = 1.0;
double r750617 = cbrt(r750616);
double r750618 = r750617 * r750617;
double r750619 = 3.0;
double r750620 = cbrt(r750619);
double r750621 = r750620 * r750620;
double r750622 = r750618 / r750621;
double r750623 = r750617 / r750620;
double r750624 = x;
double r750625 = r750619 * r750624;
double r750626 = z;
double r750627 = 2.0;
double r750628 = r750626 * r750627;
double r750629 = y;
double r750630 = 27.0;
double r750631 = r750629 * r750630;
double r750632 = r750628 * r750631;
double r750633 = r750625 / r750632;
double r750634 = t;
double r750635 = sqrt(r750634);
double r750636 = r750633 * r750635;
double r750637 = acos(r750636);
double r750638 = r750623 * r750637;
double r750639 = r750622 * r750638;
return r750639;
}




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 add-cube-cbrt1.3
Applied times-frac0.4
Applied associate-*l*0.4
rmApplied associate-*r/0.4
Applied associate-/l/0.3
Final simplification0.3
herbie shell --seed 2020024 +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)))))