\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 \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{\sqrt[3]{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 r753800 = 1.0;
double r753801 = 3.0;
double r753802 = r753800 / r753801;
double r753803 = x;
double r753804 = y;
double r753805 = 27.0;
double r753806 = r753804 * r753805;
double r753807 = r753803 / r753806;
double r753808 = r753801 * r753807;
double r753809 = z;
double r753810 = 2.0;
double r753811 = r753809 * r753810;
double r753812 = r753808 / r753811;
double r753813 = t;
double r753814 = sqrt(r753813);
double r753815 = r753812 * r753814;
double r753816 = acos(r753815);
double r753817 = r753802 * r753816;
return r753817;
}
double f(double x, double y, double z, double t) {
double r753818 = 1.0;
double r753819 = cbrt(r753818);
double r753820 = r753819 * r753819;
double r753821 = 3.0;
double r753822 = cbrt(r753821);
double r753823 = r753822 * r753822;
double r753824 = r753820 / r753823;
double r753825 = r753819 / r753822;
double r753826 = x;
double r753827 = r753821 * r753826;
double r753828 = z;
double r753829 = 2.0;
double r753830 = r753828 * r753829;
double r753831 = y;
double r753832 = 27.0;
double r753833 = r753831 * r753832;
double r753834 = r753830 * r753833;
double r753835 = r753827 / r753834;
double r753836 = t;
double r753837 = sqrt(r753836);
double r753838 = r753835 * r753837;
double r753839 = acos(r753838);
double r753840 = r753825 * r753839;
double r753841 = log1p(r753840);
double r753842 = expm1(r753841);
double r753843 = r753824 * r753842;
return r753843;
}




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-cube-cbrt1.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)))))