\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 r35180792 = 1.0;
double r35180793 = 3.0;
double r35180794 = r35180792 / r35180793;
double r35180795 = x;
double r35180796 = y;
double r35180797 = 27.0;
double r35180798 = r35180796 * r35180797;
double r35180799 = r35180795 / r35180798;
double r35180800 = r35180793 * r35180799;
double r35180801 = z;
double r35180802 = 2.0;
double r35180803 = r35180801 * r35180802;
double r35180804 = r35180800 / r35180803;
double r35180805 = t;
double r35180806 = sqrt(r35180805);
double r35180807 = r35180804 * r35180806;
double r35180808 = acos(r35180807);
double r35180809 = r35180794 * r35180808;
return r35180809;
}
double f(double x, double y, double z, double t) {
double r35180810 = 1.0;
double r35180811 = 3.0;
double r35180812 = cbrt(r35180811);
double r35180813 = r35180812 * r35180812;
double r35180814 = r35180810 / r35180813;
double r35180815 = 1.0;
double r35180816 = r35180815 * r35180815;
double r35180817 = r35180815 * r35180816;
double r35180818 = r35180817 / r35180811;
double r35180819 = t;
double r35180820 = sqrt(r35180819);
double r35180821 = x;
double r35180822 = y;
double r35180823 = 27.0;
double r35180824 = r35180822 * r35180823;
double r35180825 = r35180821 / r35180824;
double r35180826 = r35180811 * r35180825;
double r35180827 = z;
double r35180828 = 2.0;
double r35180829 = r35180827 * r35180828;
double r35180830 = r35180826 / r35180829;
double r35180831 = r35180820 * r35180830;
double r35180832 = acos(r35180831);
double r35180833 = r35180832 * r35180832;
double r35180834 = r35180833 * r35180832;
double r35180835 = r35180818 * r35180834;
double r35180836 = cbrt(r35180835);
double r35180837 = r35180814 * r35180836;
return r35180837;
}




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 +o rules:numerics
(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)))))