\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(1 \cdot \frac{\cos^{-1} \left(0.05555555555555555247160270937456516548991 \cdot \left(\sqrt{t} \cdot \frac{x}{z \cdot y}\right)\right)}{\sqrt[3]{3}}\right)double f(double x, double y, double z, double t) {
double r625732 = 1.0;
double r625733 = 3.0;
double r625734 = r625732 / r625733;
double r625735 = x;
double r625736 = y;
double r625737 = 27.0;
double r625738 = r625736 * r625737;
double r625739 = r625735 / r625738;
double r625740 = r625733 * r625739;
double r625741 = z;
double r625742 = 2.0;
double r625743 = r625741 * r625742;
double r625744 = r625740 / r625743;
double r625745 = t;
double r625746 = sqrt(r625745);
double r625747 = r625744 * r625746;
double r625748 = acos(r625747);
double r625749 = r625734 * r625748;
return r625749;
}
double f(double x, double y, double z, double t) {
double r625750 = 1.0;
double r625751 = 3.0;
double r625752 = cbrt(r625751);
double r625753 = r625752 * r625752;
double r625754 = r625750 / r625753;
double r625755 = 1.0;
double r625756 = 0.05555555555555555;
double r625757 = t;
double r625758 = sqrt(r625757);
double r625759 = x;
double r625760 = z;
double r625761 = y;
double r625762 = r625760 * r625761;
double r625763 = r625759 / r625762;
double r625764 = r625758 * r625763;
double r625765 = r625756 * r625764;
double r625766 = acos(r625765);
double r625767 = r625766 / r625752;
double r625768 = r625755 * r625767;
double r625769 = r625754 * r625768;
return r625769;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.2 |
|---|---|
| Target | 1.2 |
| Herbie | 0.2 |
Initial program 1.2
rmApplied add-cube-cbrt1.2
Applied *-un-lft-identity1.2
Applied times-frac0.3
Applied associate-*l*0.3
Taylor expanded around 0 0.2
Final simplification0.2
herbie shell --seed 2020001 +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)))))