\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}\;z \cdot t \le -7.67127596277169436 \cdot 10^{304} \lor \neg \left(z \cdot t \le 1.3317928530781586 \cdot 10^{290}\right):\\
\;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \left(1 - \frac{1}{2} \cdot {y}^{2}\right) - \frac{a}{b \cdot 3}\\
\mathbf{else}:\\
\;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \left(\cos y \cdot \cos \left(\frac{z \cdot t}{3}\right) + \log \left(e^{\left(\sqrt[3]{\sin y \cdot \sin \left(0.333333333333333315 \cdot \left(t \cdot z\right)\right)} \cdot \sqrt[3]{\sin y \cdot \sin \left(0.333333333333333315 \cdot \left(t \cdot z\right)\right)}\right) \cdot \sqrt[3]{\sin y \cdot \sin \left(0.333333333333333315 \cdot \left(t \cdot z\right)\right)}}\right)\right) - \frac{a}{b \cdot 3}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r884901 = 2.0;
double r884902 = x;
double r884903 = sqrt(r884902);
double r884904 = r884901 * r884903;
double r884905 = y;
double r884906 = z;
double r884907 = t;
double r884908 = r884906 * r884907;
double r884909 = 3.0;
double r884910 = r884908 / r884909;
double r884911 = r884905 - r884910;
double r884912 = cos(r884911);
double r884913 = r884904 * r884912;
double r884914 = a;
double r884915 = b;
double r884916 = r884915 * r884909;
double r884917 = r884914 / r884916;
double r884918 = r884913 - r884917;
return r884918;
}
double f(double x, double y, double z, double t, double a, double b) {
double r884919 = z;
double r884920 = t;
double r884921 = r884919 * r884920;
double r884922 = -7.671275962771694e+304;
bool r884923 = r884921 <= r884922;
double r884924 = 1.3317928530781586e+290;
bool r884925 = r884921 <= r884924;
double r884926 = !r884925;
bool r884927 = r884923 || r884926;
double r884928 = 2.0;
double r884929 = x;
double r884930 = sqrt(r884929);
double r884931 = r884928 * r884930;
double r884932 = 1.0;
double r884933 = 0.5;
double r884934 = y;
double r884935 = 2.0;
double r884936 = pow(r884934, r884935);
double r884937 = r884933 * r884936;
double r884938 = r884932 - r884937;
double r884939 = r884931 * r884938;
double r884940 = a;
double r884941 = b;
double r884942 = 3.0;
double r884943 = r884941 * r884942;
double r884944 = r884940 / r884943;
double r884945 = r884939 - r884944;
double r884946 = cos(r884934);
double r884947 = r884921 / r884942;
double r884948 = cos(r884947);
double r884949 = r884946 * r884948;
double r884950 = sin(r884934);
double r884951 = 0.3333333333333333;
double r884952 = r884920 * r884919;
double r884953 = r884951 * r884952;
double r884954 = sin(r884953);
double r884955 = r884950 * r884954;
double r884956 = cbrt(r884955);
double r884957 = r884956 * r884956;
double r884958 = r884957 * r884956;
double r884959 = exp(r884958);
double r884960 = log(r884959);
double r884961 = r884949 + r884960;
double r884962 = r884931 * r884961;
double r884963 = r884962 - r884944;
double r884964 = r884927 ? r884945 : r884963;
return r884964;
}




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.8 |
|---|---|
| Target | 18.5 |
| Herbie | 17.8 |
if (* z t) < -7.671275962771694e+304 or 1.3317928530781586e+290 < (* z t) Initial program 62.2
Taylor expanded around 0 43.3
if -7.671275962771694e+304 < (* z t) < 1.3317928530781586e+290Initial program 14.2
rmApplied cos-diff13.7
Taylor expanded around inf 13.7
rmApplied add-log-exp13.7
rmApplied add-cube-cbrt13.7
Final simplification17.8
herbie shell --seed 2020057
(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))))