\left(2 \cdot \sqrt{x}\right) \cdot \cos \left(y - \frac{z \cdot t}{3}\right) - \frac{a}{b \cdot 3}\begin{array}{l}
\mathbf{if}\;y \le -537756909249.612548828125:\\
\;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \left(\cos \left(\mathsf{fma}\left(1, y, \frac{t}{\sqrt[3]{3}} \cdot \left(-\frac{z}{\sqrt[3]{3} \cdot \sqrt[3]{3}}\right)\right)\right) \cdot \cos \left(\mathsf{fma}\left(-\frac{t}{\sqrt[3]{3}}, \frac{z}{\sqrt[3]{3} \cdot \sqrt[3]{3}}, \frac{z}{\sqrt[3]{3} \cdot \sqrt[3]{3}} \cdot \frac{t}{\sqrt[3]{3}}\right)\right) - \sin \left(\mathsf{fma}\left(-\frac{t}{\sqrt[3]{3}}, \frac{z}{\sqrt[3]{3} \cdot \sqrt[3]{3}}, \frac{z}{\sqrt[3]{3} \cdot \sqrt[3]{3}} \cdot \frac{t}{\sqrt[3]{3}}\right)\right) \cdot \sqrt[3]{\left(\sin \left(\mathsf{fma}\left(1, y, \frac{t}{\sqrt[3]{3}} \cdot \left(-\frac{z}{\sqrt[3]{3} \cdot \sqrt[3]{3}}\right)\right)\right) \cdot \sin \left(\mathsf{fma}\left(1, y, \frac{t}{\sqrt[3]{3}} \cdot \left(-\frac{z}{\sqrt[3]{3} \cdot \sqrt[3]{3}}\right)\right)\right)\right) \cdot \sin \left(\mathsf{fma}\left(1, y, \frac{t}{\sqrt[3]{3}} \cdot \left(-\frac{z}{\sqrt[3]{3} \cdot \sqrt[3]{3}}\right)\right)\right)}\right) - \frac{a}{b \cdot 3}\\
\mathbf{elif}\;y \le 1.03240494881889466327606896811630576849:\\
\;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \left(\cos \left(\mathsf{fma}\left(-\frac{t}{3}, z, \frac{t}{3} \cdot z\right)\right) \cdot \cos \left(\mathsf{fma}\left(\sqrt[3]{y} \cdot \sqrt[3]{y}, \sqrt[3]{y}, \left(-z\right) \cdot \frac{t}{3}\right)\right) - \sin \left(\mathsf{fma}\left(-\frac{t}{3}, z, \frac{t}{3} \cdot z\right)\right) \cdot \sin \left(\mathsf{fma}\left(\sqrt[3]{y} \cdot \sqrt[3]{y}, \sqrt[3]{y}, \left(-z\right) \cdot \frac{t}{3}\right)\right)\right) - \frac{a}{b \cdot 3}\\
\mathbf{else}:\\
\;\;\;\;\left(\cos \left(\mathsf{fma}\left(-\frac{t}{\sqrt[3]{3}}, \frac{z}{\sqrt[3]{3} \cdot \sqrt[3]{3}}, \frac{z}{\sqrt[3]{3} \cdot \sqrt[3]{3}} \cdot \frac{t}{\sqrt[3]{3}}\right)\right) \cdot \left(\cos y \cdot \cos \left(0.3333333333333333148296162562473909929395 \cdot \left(z \cdot t\right)\right) - \sin \left(\frac{t}{\sqrt[3]{3}} \cdot \left(-\frac{z}{\sqrt[3]{3} \cdot \sqrt[3]{3}}\right)\right) \cdot \sin y\right) - \sin \left(\mathsf{fma}\left(1, y, \frac{t}{\sqrt[3]{3}} \cdot \left(-\frac{z}{\sqrt[3]{3} \cdot \sqrt[3]{3}}\right)\right)\right) \cdot 0\right) \cdot \left(2 \cdot \sqrt{x}\right) - \frac{a}{b \cdot 3}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r28601855 = 2.0;
double r28601856 = x;
double r28601857 = sqrt(r28601856);
double r28601858 = r28601855 * r28601857;
double r28601859 = y;
double r28601860 = z;
double r28601861 = t;
double r28601862 = r28601860 * r28601861;
double r28601863 = 3.0;
double r28601864 = r28601862 / r28601863;
double r28601865 = r28601859 - r28601864;
double r28601866 = cos(r28601865);
double r28601867 = r28601858 * r28601866;
double r28601868 = a;
double r28601869 = b;
double r28601870 = r28601869 * r28601863;
double r28601871 = r28601868 / r28601870;
double r28601872 = r28601867 - r28601871;
return r28601872;
}
double f(double x, double y, double z, double t, double a, double b) {
double r28601873 = y;
double r28601874 = -537756909249.61255;
bool r28601875 = r28601873 <= r28601874;
double r28601876 = 2.0;
double r28601877 = x;
double r28601878 = sqrt(r28601877);
double r28601879 = r28601876 * r28601878;
double r28601880 = 1.0;
double r28601881 = t;
double r28601882 = 3.0;
double r28601883 = cbrt(r28601882);
double r28601884 = r28601881 / r28601883;
double r28601885 = z;
double r28601886 = r28601883 * r28601883;
double r28601887 = r28601885 / r28601886;
double r28601888 = -r28601887;
double r28601889 = r28601884 * r28601888;
double r28601890 = fma(r28601880, r28601873, r28601889);
double r28601891 = cos(r28601890);
double r28601892 = -r28601884;
double r28601893 = r28601887 * r28601884;
double r28601894 = fma(r28601892, r28601887, r28601893);
double r28601895 = cos(r28601894);
double r28601896 = r28601891 * r28601895;
double r28601897 = sin(r28601894);
double r28601898 = sin(r28601890);
double r28601899 = r28601898 * r28601898;
double r28601900 = r28601899 * r28601898;
double r28601901 = cbrt(r28601900);
double r28601902 = r28601897 * r28601901;
double r28601903 = r28601896 - r28601902;
double r28601904 = r28601879 * r28601903;
double r28601905 = a;
double r28601906 = b;
double r28601907 = r28601906 * r28601882;
double r28601908 = r28601905 / r28601907;
double r28601909 = r28601904 - r28601908;
double r28601910 = 1.0324049488188947;
bool r28601911 = r28601873 <= r28601910;
double r28601912 = r28601881 / r28601882;
double r28601913 = -r28601912;
double r28601914 = r28601912 * r28601885;
double r28601915 = fma(r28601913, r28601885, r28601914);
double r28601916 = cos(r28601915);
double r28601917 = cbrt(r28601873);
double r28601918 = r28601917 * r28601917;
double r28601919 = -r28601885;
double r28601920 = r28601919 * r28601912;
double r28601921 = fma(r28601918, r28601917, r28601920);
double r28601922 = cos(r28601921);
double r28601923 = r28601916 * r28601922;
double r28601924 = sin(r28601915);
double r28601925 = sin(r28601921);
double r28601926 = r28601924 * r28601925;
double r28601927 = r28601923 - r28601926;
double r28601928 = r28601879 * r28601927;
double r28601929 = r28601928 - r28601908;
double r28601930 = cos(r28601873);
double r28601931 = 0.3333333333333333;
double r28601932 = r28601885 * r28601881;
double r28601933 = r28601931 * r28601932;
double r28601934 = cos(r28601933);
double r28601935 = r28601930 * r28601934;
double r28601936 = sin(r28601889);
double r28601937 = sin(r28601873);
double r28601938 = r28601936 * r28601937;
double r28601939 = r28601935 - r28601938;
double r28601940 = r28601895 * r28601939;
double r28601941 = 0.0;
double r28601942 = r28601898 * r28601941;
double r28601943 = r28601940 - r28601942;
double r28601944 = r28601943 * r28601879;
double r28601945 = r28601944 - r28601908;
double r28601946 = r28601911 ? r28601929 : r28601945;
double r28601947 = r28601875 ? r28601909 : r28601946;
return r28601947;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
| Original | 21.0 |
|---|---|
| Target | 19.1 |
| Herbie | 18.9 |
if y < -537756909249.61255Initial program 21.2
rmApplied add-cube-cbrt21.2
Applied times-frac21.2
Applied *-un-lft-identity21.2
Applied prod-diff21.2
Applied cos-sum21.2
rmApplied add-cbrt-cube21.2
if -537756909249.61255 < y < 1.0324049488188947Initial program 20.6
rmApplied *-un-lft-identity20.6
Applied times-frac20.6
Applied add-cube-cbrt20.6
Applied prod-diff20.6
Applied cos-sum17.0
if 1.0324049488188947 < y Initial program 21.5
rmApplied add-cube-cbrt21.5
Applied times-frac21.5
Applied *-un-lft-identity21.5
Applied prod-diff21.5
Applied cos-sum21.5
rmApplied fma-udef21.5
Applied cos-sum20.6
Taylor expanded around inf 20.6
Simplified20.6
Taylor expanded around 0 20.6
Final simplification18.9
herbie shell --seed 2019170 +o rules:numerics
(FPCore (x y z t a b)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, K"
:herbie-target
(if (< z -1.3793337487235141e+129) (- (* (* 2.0 (sqrt x)) (cos (- (/ 1.0 y) (/ (/ 0.3333333333333333 z) t)))) (/ (/ a 3.0) b)) (if (< z 3.516290613555987e+106) (- (* (* (sqrt x) 2.0) (cos (- y (* (/ t 3.0) z)))) (/ (/ a 3.0) b)) (- (* (cos (- y (/ (/ 0.3333333333333333 z) t))) (* 2.0 (sqrt x))) (/ (/ a b) 3.0))))
(- (* (* 2.0 (sqrt x)) (cos (- y (/ (* z t) 3.0)))) (/ a (* b 3.0))))