\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 r692777 = 1.0;
double r692778 = 3.0;
double r692779 = r692777 / r692778;
double r692780 = x;
double r692781 = y;
double r692782 = 27.0;
double r692783 = r692781 * r692782;
double r692784 = r692780 / r692783;
double r692785 = r692778 * r692784;
double r692786 = z;
double r692787 = 2.0;
double r692788 = r692786 * r692787;
double r692789 = r692785 / r692788;
double r692790 = t;
double r692791 = sqrt(r692790);
double r692792 = r692789 * r692791;
double r692793 = acos(r692792);
double r692794 = r692779 * r692793;
return r692794;
}
double f(double x, double y, double z, double t) {
double r692795 = 1.0;
double r692796 = cbrt(r692795);
double r692797 = r692796 * r692796;
double r692798 = 3.0;
double r692799 = cbrt(r692798);
double r692800 = r692799 * r692799;
double r692801 = r692797 / r692800;
double r692802 = r692796 / r692799;
double r692803 = x;
double r692804 = y;
double r692805 = 27.0;
double r692806 = r692804 * r692805;
double r692807 = r692803 / r692806;
double r692808 = r692798 * r692807;
double r692809 = z;
double r692810 = 2.0;
double r692811 = r692809 * r692810;
double r692812 = r692808 / r692811;
double r692813 = t;
double r692814 = sqrt(r692813);
double r692815 = r692812 * r692814;
double r692816 = acos(r692815);
double r692817 = r692802 * r692816;
double r692818 = r692801 * r692817;
return r692818;
}




Bits error versus x




Bits error versus y




Bits error versus z




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