\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 r587784 = 1.0;
double r587785 = 3.0;
double r587786 = r587784 / r587785;
double r587787 = x;
double r587788 = y;
double r587789 = 27.0;
double r587790 = r587788 * r587789;
double r587791 = r587787 / r587790;
double r587792 = r587785 * r587791;
double r587793 = z;
double r587794 = 2.0;
double r587795 = r587793 * r587794;
double r587796 = r587792 / r587795;
double r587797 = t;
double r587798 = sqrt(r587797);
double r587799 = r587796 * r587798;
double r587800 = acos(r587799);
double r587801 = r587786 * r587800;
return r587801;
}
double f(double x, double y, double z, double t) {
double r587802 = 1.0;
double r587803 = sqrt(r587802);
double r587804 = 3.0;
double r587805 = cbrt(r587804);
double r587806 = r587805 * r587805;
double r587807 = r587803 / r587806;
double r587808 = 0.05555555555555555;
double r587809 = t;
double r587810 = sqrt(r587809);
double r587811 = x;
double r587812 = z;
double r587813 = y;
double r587814 = r587812 * r587813;
double r587815 = r587811 / r587814;
double r587816 = r587810 * r587815;
double r587817 = r587808 * r587816;
double r587818 = acos(r587817);
double r587819 = r587818 * r587803;
double r587820 = r587819 / r587805;
double r587821 = r587807 * r587820;
return r587821;
}




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
(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)))))