\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.9999999999999932276395497865451034158468:\\
\;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \left(\sqrt[3]{{\left(\log \left(e^{\cos \left(\frac{t \cdot z}{{\left(\sqrt{3}\right)}^{2}}\right)}\right) \cdot \cos \left(1 \cdot y\right) - \sin \left(1 \cdot y\right) \cdot \sin \left(-\frac{t \cdot z}{{\left(\sqrt{3}\right)}^{2}}\right)\right)}^{3}} \cdot \cos \left(\mathsf{fma}\left(-\frac{t}{\sqrt{3}}, \frac{z}{\sqrt{3}}, \frac{t}{\sqrt{3}} \cdot \frac{z}{\sqrt{3}}\right)\right) - \sin \left(\mathsf{fma}\left(1, y, -\frac{t}{\sqrt{3}} \cdot \frac{z}{\sqrt{3}}\right)\right) \cdot \sin \left(\mathsf{fma}\left(-\frac{t}{\sqrt{3}}, \frac{z}{\sqrt{3}}, \frac{t}{\sqrt{3}} \cdot \frac{z}{\sqrt{3}}\right)\right)\right) - \frac{a}{b \cdot 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 r652708 = 2.0;
double r652709 = x;
double r652710 = sqrt(r652709);
double r652711 = r652708 * r652710;
double r652712 = y;
double r652713 = z;
double r652714 = t;
double r652715 = r652713 * r652714;
double r652716 = 3.0;
double r652717 = r652715 / r652716;
double r652718 = r652712 - r652717;
double r652719 = cos(r652718);
double r652720 = r652711 * r652719;
double r652721 = a;
double r652722 = b;
double r652723 = r652722 * r652716;
double r652724 = r652721 / r652723;
double r652725 = r652720 - r652724;
return r652725;
}
double f(double x, double y, double z, double t, double a, double b) {
double r652726 = y;
double r652727 = z;
double r652728 = t;
double r652729 = r652727 * r652728;
double r652730 = 3.0;
double r652731 = r652729 / r652730;
double r652732 = r652726 - r652731;
double r652733 = cos(r652732);
double r652734 = 0.9999999999999932;
bool r652735 = r652733 <= r652734;
double r652736 = 2.0;
double r652737 = x;
double r652738 = sqrt(r652737);
double r652739 = r652736 * r652738;
double r652740 = r652728 * r652727;
double r652741 = sqrt(r652730);
double r652742 = 2.0;
double r652743 = pow(r652741, r652742);
double r652744 = r652740 / r652743;
double r652745 = cos(r652744);
double r652746 = exp(r652745);
double r652747 = log(r652746);
double r652748 = 1.0;
double r652749 = r652748 * r652726;
double r652750 = cos(r652749);
double r652751 = r652747 * r652750;
double r652752 = sin(r652749);
double r652753 = -r652744;
double r652754 = sin(r652753);
double r652755 = r652752 * r652754;
double r652756 = r652751 - r652755;
double r652757 = 3.0;
double r652758 = pow(r652756, r652757);
double r652759 = cbrt(r652758);
double r652760 = r652728 / r652741;
double r652761 = -r652760;
double r652762 = r652727 / r652741;
double r652763 = r652760 * r652762;
double r652764 = fma(r652761, r652762, r652763);
double r652765 = cos(r652764);
double r652766 = r652759 * r652765;
double r652767 = -r652763;
double r652768 = fma(r652748, r652726, r652767);
double r652769 = sin(r652768);
double r652770 = sin(r652764);
double r652771 = r652769 * r652770;
double r652772 = r652766 - r652771;
double r652773 = r652739 * r652772;
double r652774 = a;
double r652775 = b;
double r652776 = r652775 * r652730;
double r652777 = r652774 / r652776;
double r652778 = r652773 - r652777;
double r652779 = 0.5;
double r652780 = pow(r652726, r652742);
double r652781 = r652779 * r652780;
double r652782 = r652748 - r652781;
double r652783 = r652739 * r652782;
double r652784 = r652783 - r652777;
double r652785 = r652735 ? r652778 : r652784;
return r652785;
}




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.1 |
|---|---|
| Target | 19.1 |
| Herbie | 18.4 |
if (cos (- y (/ (* z t) 3.0))) < 0.9999999999999932Initial program 20.3
rmApplied add-sqr-sqrt20.5
Applied times-frac20.4
Applied add-sqr-sqrt45.3
Applied prod-diff45.3
Applied cos-sum45.2
Simplified42.0
Simplified20.3
rmApplied add-cbrt-cube20.4
Simplified20.4
rmApplied fma-udef20.4
Applied cos-sum19.8
Simplified19.8
rmApplied add-log-exp19.8
if 0.9999999999999932 < (cos (- y (/ (* z t) 3.0))) Initial program 22.5
Taylor expanded around 0 15.8
Final simplification18.4
herbie shell --seed 2020001 +o rules:numerics
(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))))