\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}\;\cos \left(y - \frac{t \cdot z}{3.0}\right) \le 0.9999999999997474:\\
\;\;\;\;\left(\sqrt{x} \cdot 2.0\right) \cdot \left(\cos \left(\mathsf{fma}\left(-\frac{t}{3.0}, z, \frac{t}{3.0} \cdot z\right)\right) \cdot \log \left(e^{\cos \left(\mathsf{fma}\left(1, y, z \cdot \left(-\frac{t}{3.0}\right)\right)\right)}\right) - \sin \left(\mathsf{fma}\left(1, y, z \cdot \left(-\frac{t}{3.0}\right)\right)\right) \cdot \sin \left(\mathsf{fma}\left(-\frac{t}{3.0}, z, \frac{t}{3.0} \cdot z\right)\right)\right) - \frac{a}{b \cdot 3.0}\\
\mathbf{else}:\\
\;\;\;\;\left(\sqrt{x} \cdot 2.0\right) \cdot \mathsf{fma}\left(y \cdot y, \frac{-1}{2}, 1\right) - \frac{a}{b \cdot 3.0}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r32976893 = 2.0;
double r32976894 = x;
double r32976895 = sqrt(r32976894);
double r32976896 = r32976893 * r32976895;
double r32976897 = y;
double r32976898 = z;
double r32976899 = t;
double r32976900 = r32976898 * r32976899;
double r32976901 = 3.0;
double r32976902 = r32976900 / r32976901;
double r32976903 = r32976897 - r32976902;
double r32976904 = cos(r32976903);
double r32976905 = r32976896 * r32976904;
double r32976906 = a;
double r32976907 = b;
double r32976908 = r32976907 * r32976901;
double r32976909 = r32976906 / r32976908;
double r32976910 = r32976905 - r32976909;
return r32976910;
}
double f(double x, double y, double z, double t, double a, double b) {
double r32976911 = y;
double r32976912 = t;
double r32976913 = z;
double r32976914 = r32976912 * r32976913;
double r32976915 = 3.0;
double r32976916 = r32976914 / r32976915;
double r32976917 = r32976911 - r32976916;
double r32976918 = cos(r32976917);
double r32976919 = 0.9999999999997474;
bool r32976920 = r32976918 <= r32976919;
double r32976921 = x;
double r32976922 = sqrt(r32976921);
double r32976923 = 2.0;
double r32976924 = r32976922 * r32976923;
double r32976925 = r32976912 / r32976915;
double r32976926 = -r32976925;
double r32976927 = r32976925 * r32976913;
double r32976928 = fma(r32976926, r32976913, r32976927);
double r32976929 = cos(r32976928);
double r32976930 = 1.0;
double r32976931 = r32976913 * r32976926;
double r32976932 = fma(r32976930, r32976911, r32976931);
double r32976933 = cos(r32976932);
double r32976934 = exp(r32976933);
double r32976935 = log(r32976934);
double r32976936 = r32976929 * r32976935;
double r32976937 = sin(r32976932);
double r32976938 = sin(r32976928);
double r32976939 = r32976937 * r32976938;
double r32976940 = r32976936 - r32976939;
double r32976941 = r32976924 * r32976940;
double r32976942 = a;
double r32976943 = b;
double r32976944 = r32976943 * r32976915;
double r32976945 = r32976942 / r32976944;
double r32976946 = r32976941 - r32976945;
double r32976947 = r32976911 * r32976911;
double r32976948 = -0.5;
double r32976949 = fma(r32976947, r32976948, r32976930);
double r32976950 = r32976924 * r32976949;
double r32976951 = r32976950 - r32976945;
double r32976952 = r32976920 ? r32976946 : r32976951;
return r32976952;
}




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.6 |
|---|---|
| Target | 18.6 |
| Herbie | 16.1 |
if (cos (- y (/ (* z t) 3.0))) < 0.9999999999997474Initial program 19.5
rmApplied *-un-lft-identity19.5
Applied times-frac19.4
Applied *-un-lft-identity19.4
Applied prod-diff19.4
Applied cos-sum16.3
rmApplied add-log-exp16.4
if 0.9999999999997474 < (cos (- y (/ (* z t) 3.0))) Initial program 22.6
Taylor expanded around 0 15.6
Simplified15.6
Final simplification16.1
herbie shell --seed 2019164 +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))))