\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(\left(0.05555555555555555247160270937456516548991 \cdot \frac{x}{z \cdot y}\right) \cdot \sqrt{t}\right)\right)double f(double x, double y, double z, double t) {
double r976813 = 1.0;
double r976814 = 3.0;
double r976815 = r976813 / r976814;
double r976816 = x;
double r976817 = y;
double r976818 = 27.0;
double r976819 = r976817 * r976818;
double r976820 = r976816 / r976819;
double r976821 = r976814 * r976820;
double r976822 = z;
double r976823 = 2.0;
double r976824 = r976822 * r976823;
double r976825 = r976821 / r976824;
double r976826 = t;
double r976827 = sqrt(r976826);
double r976828 = r976825 * r976827;
double r976829 = acos(r976828);
double r976830 = r976815 * r976829;
return r976830;
}
double f(double x, double y, double z, double t) {
double r976831 = 1.0;
double r976832 = 3.0;
double r976833 = cbrt(r976832);
double r976834 = r976833 * r976833;
double r976835 = r976831 / r976834;
double r976836 = 1.0;
double r976837 = r976836 / r976833;
double r976838 = 0.05555555555555555;
double r976839 = x;
double r976840 = z;
double r976841 = y;
double r976842 = r976840 * r976841;
double r976843 = r976839 / r976842;
double r976844 = r976838 * r976843;
double r976845 = t;
double r976846 = sqrt(r976845);
double r976847 = r976844 * r976846;
double r976848 = acos(r976847);
double r976849 = r976837 * r976848;
double r976850 = r976835 * r976849;
return r976850;
}




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
Taylor expanded around 0 0.3
Final simplification0.3
herbie shell --seed 2019350 +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)))))