\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 \left(\frac{\sqrt{1}}{\sqrt[3]{3}} \cdot \cos^{-1} \left(\frac{3 \cdot x}{\left(z \cdot 2\right) \cdot \left(y \cdot 27\right)} \cdot \sqrt{t}\right)\right)double f(double x, double y, double z, double t) {
double r440851 = 1.0;
double r440852 = 3.0;
double r440853 = r440851 / r440852;
double r440854 = x;
double r440855 = y;
double r440856 = 27.0;
double r440857 = r440855 * r440856;
double r440858 = r440854 / r440857;
double r440859 = r440852 * r440858;
double r440860 = z;
double r440861 = 2.0;
double r440862 = r440860 * r440861;
double r440863 = r440859 / r440862;
double r440864 = t;
double r440865 = sqrt(r440864);
double r440866 = r440863 * r440865;
double r440867 = acos(r440866);
double r440868 = r440853 * r440867;
return r440868;
}
double f(double x, double y, double z, double t) {
double r440869 = 1.0;
double r440870 = sqrt(r440869);
double r440871 = 3.0;
double r440872 = cbrt(r440871);
double r440873 = r440872 * r440872;
double r440874 = r440870 / r440873;
double r440875 = r440870 / r440872;
double r440876 = x;
double r440877 = r440871 * r440876;
double r440878 = z;
double r440879 = 2.0;
double r440880 = r440878 * r440879;
double r440881 = y;
double r440882 = 27.0;
double r440883 = r440881 * r440882;
double r440884 = r440880 * r440883;
double r440885 = r440877 / r440884;
double r440886 = t;
double r440887 = sqrt(r440886);
double r440888 = r440885 * r440887;
double r440889 = acos(r440888);
double r440890 = r440875 * r440889;
double r440891 = r440874 * r440890;
return r440891;
}




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.3 |
Initial program 1.3
rmApplied add-cube-cbrt1.3
Applied add-sqr-sqrt1.3
Applied times-frac0.3
Applied associate-*l*0.3
rmApplied associate-*r/0.3
Applied associate-/l/0.3
Final simplification0.3
herbie shell --seed 2019347 +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)))))