\left(2.0 \cdot \sqrt{x}\right) \cdot \cos \left(y - \frac{z \cdot t}{3.0}\right) - \frac{a}{b \cdot 3.0}\begin{array}{l}
\mathbf{if}\;z \cdot t \le -2.0242052511188462 \cdot 10^{+300}:\\
\;\;\;\;\mathsf{fma}\left(\frac{-1}{2}, y \cdot y, 1\right) \cdot \left(\sqrt{x} \cdot 2.0\right) - \frac{a}{b \cdot 3.0}\\
\mathbf{elif}\;z \cdot t \le -9.018122894565441 \cdot 10^{+61}:\\
\;\;\;\;\left(\cos \left(\mathsf{fma}\left(\sqrt[3]{y} \cdot \sqrt[3]{y}, \sqrt[3]{y}, \frac{-t}{3.0} \cdot z\right)\right) \cdot \cos \left(\mathsf{fma}\left(\frac{-t}{3.0}, z, \frac{t}{3.0} \cdot z\right)\right) - \sin \left(\mathsf{fma}\left(\sqrt[3]{y} \cdot \sqrt[3]{y}, \sqrt[3]{y}, \frac{-t}{3.0} \cdot z\right)\right) \cdot \sin \left(\mathsf{fma}\left(\frac{-t}{3.0}, z, \frac{t}{3.0} \cdot z\right)\right)\right) \cdot \left(\sqrt{x} \cdot 2.0\right) - \frac{a}{b \cdot 3.0}\\
\mathbf{elif}\;z \cdot t \le 7.38439639698813 \cdot 10^{+306}:\\
\;\;\;\;\left(\sqrt{x} \cdot 2.0\right) \cdot \left(\cos \left(\frac{z \cdot t}{3.0}\right) \cdot \cos y + \sin y \cdot \sin \left(\frac{t}{\sqrt[3]{3.0}} \cdot \frac{z}{\sqrt[3]{3.0} \cdot \sqrt[3]{3.0}}\right)\right) - \frac{a}{b \cdot 3.0}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{-1}{2}, y \cdot y, 1\right) \cdot \left(\sqrt{x} \cdot 2.0\right) - \frac{a}{b \cdot 3.0}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r32035918 = 2.0;
double r32035919 = x;
double r32035920 = sqrt(r32035919);
double r32035921 = r32035918 * r32035920;
double r32035922 = y;
double r32035923 = z;
double r32035924 = t;
double r32035925 = r32035923 * r32035924;
double r32035926 = 3.0;
double r32035927 = r32035925 / r32035926;
double r32035928 = r32035922 - r32035927;
double r32035929 = cos(r32035928);
double r32035930 = r32035921 * r32035929;
double r32035931 = a;
double r32035932 = b;
double r32035933 = r32035932 * r32035926;
double r32035934 = r32035931 / r32035933;
double r32035935 = r32035930 - r32035934;
return r32035935;
}
double f(double x, double y, double z, double t, double a, double b) {
double r32035936 = z;
double r32035937 = t;
double r32035938 = r32035936 * r32035937;
double r32035939 = -2.0242052511188462e+300;
bool r32035940 = r32035938 <= r32035939;
double r32035941 = -0.5;
double r32035942 = y;
double r32035943 = r32035942 * r32035942;
double r32035944 = 1.0;
double r32035945 = fma(r32035941, r32035943, r32035944);
double r32035946 = x;
double r32035947 = sqrt(r32035946);
double r32035948 = 2.0;
double r32035949 = r32035947 * r32035948;
double r32035950 = r32035945 * r32035949;
double r32035951 = a;
double r32035952 = b;
double r32035953 = 3.0;
double r32035954 = r32035952 * r32035953;
double r32035955 = r32035951 / r32035954;
double r32035956 = r32035950 - r32035955;
double r32035957 = -9.018122894565441e+61;
bool r32035958 = r32035938 <= r32035957;
double r32035959 = cbrt(r32035942);
double r32035960 = r32035959 * r32035959;
double r32035961 = -r32035937;
double r32035962 = r32035961 / r32035953;
double r32035963 = r32035962 * r32035936;
double r32035964 = fma(r32035960, r32035959, r32035963);
double r32035965 = cos(r32035964);
double r32035966 = r32035937 / r32035953;
double r32035967 = r32035966 * r32035936;
double r32035968 = fma(r32035962, r32035936, r32035967);
double r32035969 = cos(r32035968);
double r32035970 = r32035965 * r32035969;
double r32035971 = sin(r32035964);
double r32035972 = sin(r32035968);
double r32035973 = r32035971 * r32035972;
double r32035974 = r32035970 - r32035973;
double r32035975 = r32035974 * r32035949;
double r32035976 = r32035975 - r32035955;
double r32035977 = 7.38439639698813e+306;
bool r32035978 = r32035938 <= r32035977;
double r32035979 = r32035938 / r32035953;
double r32035980 = cos(r32035979);
double r32035981 = cos(r32035942);
double r32035982 = r32035980 * r32035981;
double r32035983 = sin(r32035942);
double r32035984 = cbrt(r32035953);
double r32035985 = r32035937 / r32035984;
double r32035986 = r32035984 * r32035984;
double r32035987 = r32035936 / r32035986;
double r32035988 = r32035985 * r32035987;
double r32035989 = sin(r32035988);
double r32035990 = r32035983 * r32035989;
double r32035991 = r32035982 + r32035990;
double r32035992 = r32035949 * r32035991;
double r32035993 = r32035992 - r32035955;
double r32035994 = r32035978 ? r32035993 : r32035956;
double r32035995 = r32035958 ? r32035976 : r32035994;
double r32035996 = r32035940 ? r32035956 : r32035995;
return r32035996;
}




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 | 20.1 |
|---|---|
| Target | 18.4 |
| Herbie | 16.7 |
if (* z t) < -2.0242052511188462e+300 or 7.38439639698813e+306 < (* z t) Initial program 61.6
Taylor expanded around 0 44.8
Simplified44.8
if -2.0242052511188462e+300 < (* z t) < -9.018122894565441e+61Initial program 33.5
rmApplied *-un-lft-identity33.5
Applied times-frac33.2
Applied add-cube-cbrt33.2
Applied prod-diff33.2
Applied cos-sum27.6
if -9.018122894565441e+61 < (* z t) < 7.38439639698813e+306Initial program 10.6
rmApplied cos-diff10.0
rmApplied add-cube-cbrt10.0
Applied times-frac10.0
Final simplification16.7
herbie shell --seed 2019163 +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 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))))