\frac{1}{3} \cdot \cos^{-1} \left(\frac{3 \cdot \frac{x}{y \cdot 27}}{z \cdot 2} \cdot \sqrt{t}\right)0.333333333333333315 \cdot \cos^{-1} \left(\log \left(e^{0.055555555555555552 \cdot \left(\sqrt{t} \cdot \frac{x}{z \cdot y}\right)}\right)\right)double f(double x, double y, double z, double t) {
double r3754 = 1.0;
double r3755 = 3.0;
double r3756 = r3754 / r3755;
double r3757 = x;
double r3758 = y;
double r3759 = 27.0;
double r3760 = r3758 * r3759;
double r3761 = r3757 / r3760;
double r3762 = r3755 * r3761;
double r3763 = z;
double r3764 = 2.0;
double r3765 = r3763 * r3764;
double r3766 = r3762 / r3765;
double r3767 = t;
double r3768 = sqrt(r3767);
double r3769 = r3766 * r3768;
double r3770 = acos(r3769);
double r3771 = r3756 * r3770;
return r3771;
}
double f(double x, double y, double z, double t) {
double r3772 = 0.3333333333333333;
double r3773 = 0.05555555555555555;
double r3774 = t;
double r3775 = sqrt(r3774);
double r3776 = x;
double r3777 = z;
double r3778 = y;
double r3779 = r3777 * r3778;
double r3780 = r3776 / r3779;
double r3781 = r3775 * r3780;
double r3782 = r3773 * r3781;
double r3783 = exp(r3782);
double r3784 = log(r3783);
double r3785 = acos(r3784);
double r3786 = r3772 * r3785;
return r3786;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.4 |
|---|---|
| Target | 1.2 |
| Herbie | 1.2 |
Initial program 1.4
Taylor expanded around 0 1.2
rmApplied add-log-exp1.2
Final simplification1.2
herbie shell --seed 2020025 +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)))))