\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}\;\cos \left(y - \frac{z \cdot t}{3}\right) \le 0.99999996888221743:\\
\;\;\;\;\left(\left(2 \cdot \sqrt{x}\right) \cdot \left(\cos y \cdot \cos \left(0.333333333333333315 \cdot \left(t \cdot z\right)\right)\right) + \left(2 \cdot \sqrt{x}\right) \cdot \left(\sin y \cdot \sin \left(0.333333333333333315 \cdot \left(t \cdot z\right)\right)\right)\right) - \frac{\frac{a}{b}}{3}\\
\mathbf{else}:\\
\;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \left(1 - \frac{1}{2} \cdot {y}^{2}\right) - \frac{a}{b \cdot 3}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r731915 = 2.0;
double r731916 = x;
double r731917 = sqrt(r731916);
double r731918 = r731915 * r731917;
double r731919 = y;
double r731920 = z;
double r731921 = t;
double r731922 = r731920 * r731921;
double r731923 = 3.0;
double r731924 = r731922 / r731923;
double r731925 = r731919 - r731924;
double r731926 = cos(r731925);
double r731927 = r731918 * r731926;
double r731928 = a;
double r731929 = b;
double r731930 = r731929 * r731923;
double r731931 = r731928 / r731930;
double r731932 = r731927 - r731931;
return r731932;
}
double f(double x, double y, double z, double t, double a, double b) {
double r731933 = y;
double r731934 = z;
double r731935 = t;
double r731936 = r731934 * r731935;
double r731937 = 3.0;
double r731938 = r731936 / r731937;
double r731939 = r731933 - r731938;
double r731940 = cos(r731939);
double r731941 = 0.9999999688822174;
bool r731942 = r731940 <= r731941;
double r731943 = 2.0;
double r731944 = x;
double r731945 = sqrt(r731944);
double r731946 = r731943 * r731945;
double r731947 = cos(r731933);
double r731948 = 0.3333333333333333;
double r731949 = r731935 * r731934;
double r731950 = r731948 * r731949;
double r731951 = cos(r731950);
double r731952 = r731947 * r731951;
double r731953 = r731946 * r731952;
double r731954 = sin(r731933);
double r731955 = sin(r731950);
double r731956 = r731954 * r731955;
double r731957 = r731946 * r731956;
double r731958 = r731953 + r731957;
double r731959 = a;
double r731960 = b;
double r731961 = r731959 / r731960;
double r731962 = r731961 / r731937;
double r731963 = r731958 - r731962;
double r731964 = 1.0;
double r731965 = 0.5;
double r731966 = 2.0;
double r731967 = pow(r731933, r731966);
double r731968 = r731965 * r731967;
double r731969 = r731964 - r731968;
double r731970 = r731946 * r731969;
double r731971 = r731960 * r731937;
double r731972 = r731959 / r731971;
double r731973 = r731970 - r731972;
double r731974 = r731942 ? r731963 : r731973;
return r731974;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 20.5 |
|---|---|
| Target | 18.4 |
| Herbie | 17.7 |
if (cos (- y (/ (* z t) 3.0))) < 0.9999999688822174Initial program 19.4
rmApplied cos-diff18.9
Applied distribute-lft-in18.9
Taylor expanded around inf 18.9
Taylor expanded around inf 18.9
rmApplied associate-/r*18.9
if 0.9999999688822174 < (cos (- y (/ (* z t) 3.0))) Initial program 22.4
Taylor expanded around 0 15.7
Final simplification17.7
herbie shell --seed 2020018
(FPCore (x y z t a b)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, K"
:precision binary64
:herbie-target
(if (< z -1.379333748723514e+129) (- (* (* 2 (sqrt x)) (cos (- (/ 1 y) (/ (/ 0.3333333333333333 z) t)))) (/ (/ a 3) b)) (if (< z 3.516290613555987e+106) (- (* (* (sqrt x) 2) (cos (- y (* (/ t 3) z)))) (/ (/ a 3) b)) (- (* (cos (- y (/ (/ 0.3333333333333333 z) t))) (* 2 (sqrt x))) (/ (/ a b) 3))))
(- (* (* 2 (sqrt x)) (cos (- y (/ (* z t) 3)))) (/ a (* b 3))))