\frac{1}{3} \cdot \cos^{-1} \left(\frac{3 \cdot \frac{x}{y \cdot 27}}{z \cdot 2} \cdot \sqrt{t}\right)\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{\sqrt[3]{3} \cdot \sqrt[3]{3}} \cdot \left(\frac{\sqrt[3]{1}}{\sqrt[3]{3}} \cdot \cos^{-1} \left(\frac{3 \cdot \frac{x}{y \cdot 27}}{z \cdot 2} \cdot \sqrt{t}\right)\right)double f(double x, double y, double z, double t) {
double r992939 = 1.0;
double r992940 = 3.0;
double r992941 = r992939 / r992940;
double r992942 = x;
double r992943 = y;
double r992944 = 27.0;
double r992945 = r992943 * r992944;
double r992946 = r992942 / r992945;
double r992947 = r992940 * r992946;
double r992948 = z;
double r992949 = 2.0;
double r992950 = r992948 * r992949;
double r992951 = r992947 / r992950;
double r992952 = t;
double r992953 = sqrt(r992952);
double r992954 = r992951 * r992953;
double r992955 = acos(r992954);
double r992956 = r992941 * r992955;
return r992956;
}
double f(double x, double y, double z, double t) {
double r992957 = 1.0;
double r992958 = cbrt(r992957);
double r992959 = r992958 * r992958;
double r992960 = 3.0;
double r992961 = cbrt(r992960);
double r992962 = r992961 * r992961;
double r992963 = r992959 / r992962;
double r992964 = r992958 / r992961;
double r992965 = x;
double r992966 = y;
double r992967 = 27.0;
double r992968 = r992966 * r992967;
double r992969 = r992965 / r992968;
double r992970 = r992960 * r992969;
double r992971 = z;
double r992972 = 2.0;
double r992973 = r992971 * r992972;
double r992974 = r992970 / r992973;
double r992975 = t;
double r992976 = sqrt(r992975);
double r992977 = r992974 * r992976;
double r992978 = acos(r992977);
double r992979 = r992964 * r992978;
double r992980 = r992963 * r992979;
return r992980;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.3 |
|---|---|
| Target | 1.3 |
| Herbie | 0.3 |
Initial program 1.3
rmApplied add-cube-cbrt1.3
Applied add-cube-cbrt1.3
Applied times-frac0.3
Applied associate-*l*0.3
Final simplification0.3
herbie shell --seed 2020042
(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)))))