\frac{1}{3} \cdot \cos^{-1} \left(\frac{3 \cdot \frac{x}{y \cdot 27}}{z \cdot 2} \cdot \sqrt{t}\right)\frac{\sqrt{1}}{\sqrt[3]{3} \cdot \sqrt[3]{3}} \cdot \frac{\cos^{-1} \left(0.05555555555555555247160270937456516548991 \cdot \left(\sqrt{t} \cdot \frac{x}{z \cdot y}\right)\right) \cdot \sqrt{1}}{\sqrt[3]{3}}double f(double x, double y, double z, double t) {
double r428775 = 1.0;
double r428776 = 3.0;
double r428777 = r428775 / r428776;
double r428778 = x;
double r428779 = y;
double r428780 = 27.0;
double r428781 = r428779 * r428780;
double r428782 = r428778 / r428781;
double r428783 = r428776 * r428782;
double r428784 = z;
double r428785 = 2.0;
double r428786 = r428784 * r428785;
double r428787 = r428783 / r428786;
double r428788 = t;
double r428789 = sqrt(r428788);
double r428790 = r428787 * r428789;
double r428791 = acos(r428790);
double r428792 = r428777 * r428791;
return r428792;
}
double f(double x, double y, double z, double t) {
double r428793 = 1.0;
double r428794 = sqrt(r428793);
double r428795 = 3.0;
double r428796 = cbrt(r428795);
double r428797 = r428796 * r428796;
double r428798 = r428794 / r428797;
double r428799 = 0.05555555555555555;
double r428800 = t;
double r428801 = sqrt(r428800);
double r428802 = x;
double r428803 = z;
double r428804 = y;
double r428805 = r428803 * r428804;
double r428806 = r428802 / r428805;
double r428807 = r428801 * r428806;
double r428808 = r428799 * r428807;
double r428809 = acos(r428808);
double r428810 = r428809 * r428794;
double r428811 = r428810 / r428796;
double r428812 = r428798 * r428811;
return r428812;
}




Bits error versus x




Bits error versus y




Bits error versus z




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