\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 r455645 = 1.0;
double r455646 = 3.0;
double r455647 = r455645 / r455646;
double r455648 = x;
double r455649 = y;
double r455650 = 27.0;
double r455651 = r455649 * r455650;
double r455652 = r455648 / r455651;
double r455653 = r455646 * r455652;
double r455654 = z;
double r455655 = 2.0;
double r455656 = r455654 * r455655;
double r455657 = r455653 / r455656;
double r455658 = t;
double r455659 = sqrt(r455658);
double r455660 = r455657 * r455659;
double r455661 = acos(r455660);
double r455662 = r455647 * r455661;
return r455662;
}
double f(double x, double y, double z, double t) {
double r455663 = 1.0;
double r455664 = cbrt(r455663);
double r455665 = r455664 * r455664;
double r455666 = 3.0;
double r455667 = cbrt(r455666);
double r455668 = r455667 * r455667;
double r455669 = r455665 / r455668;
double r455670 = r455664 / r455667;
double r455671 = x;
double r455672 = r455666 * r455671;
double r455673 = z;
double r455674 = 2.0;
double r455675 = r455673 * r455674;
double r455676 = y;
double r455677 = 27.0;
double r455678 = r455676 * r455677;
double r455679 = r455675 * r455678;
double r455680 = r455672 / r455679;
double r455681 = t;
double r455682 = sqrt(r455681);
double r455683 = r455680 * r455682;
double r455684 = acos(r455683);
double r455685 = r455670 * r455684;
double r455686 = r455669 * r455685;
return r455686;
}




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.3
Applied associate-*l*0.3
rmApplied associate-*r/0.3
Applied associate-/l/0.3
Final simplification0.3
herbie shell --seed 2019303 +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)))))