\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 r752988 = 1.0;
double r752989 = 3.0;
double r752990 = r752988 / r752989;
double r752991 = x;
double r752992 = y;
double r752993 = 27.0;
double r752994 = r752992 * r752993;
double r752995 = r752991 / r752994;
double r752996 = r752989 * r752995;
double r752997 = z;
double r752998 = 2.0;
double r752999 = r752997 * r752998;
double r753000 = r752996 / r752999;
double r753001 = t;
double r753002 = sqrt(r753001);
double r753003 = r753000 * r753002;
double r753004 = acos(r753003);
double r753005 = r752990 * r753004;
return r753005;
}
double f(double x, double y, double z, double t) {
double r753006 = 1.0;
double r753007 = cbrt(r753006);
double r753008 = r753007 * r753007;
double r753009 = 3.0;
double r753010 = cbrt(r753009);
double r753011 = r753010 * r753010;
double r753012 = r753008 / r753011;
double r753013 = r753007 / r753010;
double r753014 = x;
double r753015 = y;
double r753016 = 27.0;
double r753017 = r753015 * r753016;
double r753018 = r753014 / r753017;
double r753019 = r753009 * r753018;
double r753020 = z;
double r753021 = 2.0;
double r753022 = r753020 * r753021;
double r753023 = r753019 / r753022;
double r753024 = t;
double r753025 = sqrt(r753024);
double r753026 = r753023 * r753025;
double r753027 = acos(r753026);
double r753028 = r753013 * r753027;
double r753029 = r753012 * r753028;
return r753029;
}




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 2020036 +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)))))