\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(\left(0.055555555555555552 \cdot \frac{x}{z \cdot y}\right) \cdot \sqrt{t}\right)\right)double f(double x, double y, double z, double t) {
double r737980 = 1.0;
double r737981 = 3.0;
double r737982 = r737980 / r737981;
double r737983 = x;
double r737984 = y;
double r737985 = 27.0;
double r737986 = r737984 * r737985;
double r737987 = r737983 / r737986;
double r737988 = r737981 * r737987;
double r737989 = z;
double r737990 = 2.0;
double r737991 = r737989 * r737990;
double r737992 = r737988 / r737991;
double r737993 = t;
double r737994 = sqrt(r737993);
double r737995 = r737992 * r737994;
double r737996 = acos(r737995);
double r737997 = r737982 * r737996;
return r737997;
}
double f(double x, double y, double z, double t) {
double r737998 = 1.0;
double r737999 = sqrt(r737998);
double r738000 = 3.0;
double r738001 = cbrt(r738000);
double r738002 = r738001 * r738001;
double r738003 = r737999 / r738002;
double r738004 = r737999 / r738001;
double r738005 = 0.05555555555555555;
double r738006 = x;
double r738007 = z;
double r738008 = y;
double r738009 = r738007 * r738008;
double r738010 = r738006 / r738009;
double r738011 = r738005 * r738010;
double r738012 = t;
double r738013 = sqrt(r738012);
double r738014 = r738011 * r738013;
double r738015 = acos(r738014);
double r738016 = r738004 * r738015;
double r738017 = r738003 * r738016;
return r738017;
}




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.4
Applied associate-*l*0.3
Taylor expanded around 0 0.3
Final simplification0.3
herbie shell --seed 2020046 +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)))))