\frac{1}{3} \cdot \cos^{-1} \left(\frac{3 \cdot \frac{x}{y \cdot 27}}{z \cdot 2} \cdot \sqrt{t}\right)\frac{1}{\sqrt[3]{3} \cdot \sqrt[3]{3}} \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{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)\right)double f(double x, double y, double z, double t) {
double r757921 = 1.0;
double r757922 = 3.0;
double r757923 = r757921 / r757922;
double r757924 = x;
double r757925 = y;
double r757926 = 27.0;
double r757927 = r757925 * r757926;
double r757928 = r757924 / r757927;
double r757929 = r757922 * r757928;
double r757930 = z;
double r757931 = 2.0;
double r757932 = r757930 * r757931;
double r757933 = r757929 / r757932;
double r757934 = t;
double r757935 = sqrt(r757934);
double r757936 = r757933 * r757935;
double r757937 = acos(r757936);
double r757938 = r757923 * r757937;
return r757938;
}
double f(double x, double y, double z, double t) {
double r757939 = 1.0;
double r757940 = 3.0;
double r757941 = cbrt(r757940);
double r757942 = r757941 * r757941;
double r757943 = r757939 / r757942;
double r757944 = 1.0;
double r757945 = r757944 / r757941;
double r757946 = x;
double r757947 = r757940 * r757946;
double r757948 = z;
double r757949 = 2.0;
double r757950 = r757948 * r757949;
double r757951 = y;
double r757952 = 27.0;
double r757953 = r757951 * r757952;
double r757954 = r757950 * r757953;
double r757955 = r757947 / r757954;
double r757956 = t;
double r757957 = sqrt(r757956);
double r757958 = r757955 * r757957;
double r757959 = acos(r757958);
double r757960 = r757945 * r757959;
double r757961 = log1p(r757960);
double r757962 = expm1(r757961);
double r757963 = r757943 * r757962;
return r757963;
}




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 *-un-lft-identity1.3
Applied times-frac0.4
Applied associate-*l*0.3
rmApplied associate-*r/0.4
Applied associate-/l/0.3
rmApplied expm1-log1p-u0.3
Final simplification0.3
herbie shell --seed 2020047 +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)))))