\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)\frac{1}{\sqrt[3]{3.0} \cdot \sqrt[3]{3.0}} \cdot \sqrt[3]{\frac{1.0 \cdot \left(1.0 \cdot 1.0\right)}{3.0} \cdot \left(\left(\cos^{-1} \left(\sqrt{t} \cdot \frac{3.0 \cdot \frac{x}{y \cdot 27.0}}{z \cdot 2.0}\right) \cdot \cos^{-1} \left(\sqrt{t} \cdot \frac{3.0 \cdot \frac{x}{y \cdot 27.0}}{z \cdot 2.0}\right)\right) \cdot \cos^{-1} \left(\sqrt{t} \cdot \frac{3.0 \cdot \frac{x}{y \cdot 27.0}}{z \cdot 2.0}\right)\right)}double f(double x, double y, double z, double t) {
double r35569786 = 1.0;
double r35569787 = 3.0;
double r35569788 = r35569786 / r35569787;
double r35569789 = x;
double r35569790 = y;
double r35569791 = 27.0;
double r35569792 = r35569790 * r35569791;
double r35569793 = r35569789 / r35569792;
double r35569794 = r35569787 * r35569793;
double r35569795 = z;
double r35569796 = 2.0;
double r35569797 = r35569795 * r35569796;
double r35569798 = r35569794 / r35569797;
double r35569799 = t;
double r35569800 = sqrt(r35569799);
double r35569801 = r35569798 * r35569800;
double r35569802 = acos(r35569801);
double r35569803 = r35569788 * r35569802;
return r35569803;
}
double f(double x, double y, double z, double t) {
double r35569804 = 1.0;
double r35569805 = 3.0;
double r35569806 = cbrt(r35569805);
double r35569807 = r35569806 * r35569806;
double r35569808 = r35569804 / r35569807;
double r35569809 = 1.0;
double r35569810 = r35569809 * r35569809;
double r35569811 = r35569809 * r35569810;
double r35569812 = r35569811 / r35569805;
double r35569813 = t;
double r35569814 = sqrt(r35569813);
double r35569815 = x;
double r35569816 = y;
double r35569817 = 27.0;
double r35569818 = r35569816 * r35569817;
double r35569819 = r35569815 / r35569818;
double r35569820 = r35569805 * r35569819;
double r35569821 = z;
double r35569822 = 2.0;
double r35569823 = r35569821 * r35569822;
double r35569824 = r35569820 / r35569823;
double r35569825 = r35569814 * r35569824;
double r35569826 = acos(r35569825);
double r35569827 = r35569826 * r35569826;
double r35569828 = r35569827 * r35569826;
double r35569829 = r35569812 * r35569828;
double r35569830 = cbrt(r35569829);
double r35569831 = r35569808 * r35569830;
return r35569831;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.3 |
|---|---|
| Target | 1.3 |
| 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
rmApplied add-cbrt-cube1.3
Applied add-cbrt-cube1.3
Applied cbrt-undiv0.3
Applied cbrt-unprod0.3
Final simplification0.3
herbie shell --seed 2019168
(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)))))