\frac{1}{3} \cdot \cos^{-1} \left(\frac{3 \cdot \frac{x}{y \cdot 27}}{z \cdot 2} \cdot \sqrt{t}\right)\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{1}{\sqrt[3]{3}} \cdot \cos^{-1} \left(\frac{\frac{\sqrt{t}}{\frac{z \cdot 2}{3 \cdot x}}}{27 \cdot y}\right)\right)\right) \cdot \frac{1}{\sqrt[3]{3} \cdot \sqrt[3]{3}}double f(double x, double y, double z, double t) {
double r602801 = 1.0;
double r602802 = 3.0;
double r602803 = r602801 / r602802;
double r602804 = x;
double r602805 = y;
double r602806 = 27.0;
double r602807 = r602805 * r602806;
double r602808 = r602804 / r602807;
double r602809 = r602802 * r602808;
double r602810 = z;
double r602811 = 2.0;
double r602812 = r602810 * r602811;
double r602813 = r602809 / r602812;
double r602814 = t;
double r602815 = sqrt(r602814);
double r602816 = r602813 * r602815;
double r602817 = acos(r602816);
double r602818 = r602803 * r602817;
return r602818;
}
double f(double x, double y, double z, double t) {
double r602819 = 1.0;
double r602820 = 3.0;
double r602821 = cbrt(r602820);
double r602822 = r602819 / r602821;
double r602823 = t;
double r602824 = sqrt(r602823);
double r602825 = z;
double r602826 = 2.0;
double r602827 = r602825 * r602826;
double r602828 = x;
double r602829 = r602820 * r602828;
double r602830 = r602827 / r602829;
double r602831 = r602824 / r602830;
double r602832 = 27.0;
double r602833 = y;
double r602834 = r602832 * r602833;
double r602835 = r602831 / r602834;
double r602836 = acos(r602835);
double r602837 = r602822 * r602836;
double r602838 = log1p(r602837);
double r602839 = expm1(r602838);
double r602840 = 1.0;
double r602841 = r602821 * r602821;
double r602842 = r602840 / r602841;
double r602843 = r602839 * r602842;
return r602843;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.4 |
|---|---|
| Target | 1.3 |
| Herbie | 0.2 |
Initial program 1.4
rmApplied add-cube-cbrt1.4
Applied *-un-lft-identity1.4
Applied times-frac0.4
Applied associate-*l*0.4
Simplified0.4
rmApplied expm1-log1p-u0.4
Simplified0.2
Final simplification0.2
herbie shell --seed 2019194 +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)))))