\left(0.5 \cdot \sin re\right) \cdot \left(e^{-im} - e^{im}\right)\begin{array}{l}
\mathbf{if}\;e^{-im} - e^{im} \le -0.1633153397779747439955144727719016373158:\\
\;\;\;\;\left(0.5 \cdot \sin re\right) \cdot \frac{\left(-e^{im + im}\right) + {\left(e^{-1}\right)}^{\left(2 \cdot im\right)}}{e^{-im} + e^{im}}\\
\mathbf{else}:\\
\;\;\;\;\left(0.5 \cdot \sin re\right) \cdot \left(-\left(\frac{1}{3} \cdot {im}^{3} + \left(\frac{1}{60} \cdot {im}^{5} + 2 \cdot im\right)\right)\right)\\
\end{array}double f(double re, double im) {
double r168708 = 0.5;
double r168709 = re;
double r168710 = sin(r168709);
double r168711 = r168708 * r168710;
double r168712 = im;
double r168713 = -r168712;
double r168714 = exp(r168713);
double r168715 = exp(r168712);
double r168716 = r168714 - r168715;
double r168717 = r168711 * r168716;
return r168717;
}
double f(double re, double im) {
double r168718 = im;
double r168719 = -r168718;
double r168720 = exp(r168719);
double r168721 = exp(r168718);
double r168722 = r168720 - r168721;
double r168723 = -0.16331533977797474;
bool r168724 = r168722 <= r168723;
double r168725 = 0.5;
double r168726 = re;
double r168727 = sin(r168726);
double r168728 = r168725 * r168727;
double r168729 = r168718 + r168718;
double r168730 = exp(r168729);
double r168731 = -r168730;
double r168732 = -1.0;
double r168733 = exp(r168732);
double r168734 = 2.0;
double r168735 = r168734 * r168718;
double r168736 = pow(r168733, r168735);
double r168737 = r168731 + r168736;
double r168738 = r168720 + r168721;
double r168739 = r168737 / r168738;
double r168740 = r168728 * r168739;
double r168741 = 0.3333333333333333;
double r168742 = 3.0;
double r168743 = pow(r168718, r168742);
double r168744 = r168741 * r168743;
double r168745 = 0.016666666666666666;
double r168746 = 5.0;
double r168747 = pow(r168718, r168746);
double r168748 = r168745 * r168747;
double r168749 = r168748 + r168735;
double r168750 = r168744 + r168749;
double r168751 = -r168750;
double r168752 = r168728 * r168751;
double r168753 = r168724 ? r168740 : r168752;
return r168753;
}




Bits error versus re




Bits error versus im
Results
| Original | 43.7 |
|---|---|
| Target | 0.3 |
| Herbie | 0.5 |
if (- (exp (- im)) (exp im)) < -0.16331533977797474Initial program 1.6
rmApplied flip--5.3
Simplified5.2
if -0.16331533977797474 < (- (exp (- im)) (exp im)) Initial program 44.0
Taylor expanded around 0 0.5
Final simplification0.5
herbie shell --seed 2019291
(FPCore (re im)
:name "math.cos on complex, imaginary part"
:precision binary64
:herbie-target
(if (< (fabs im) 1) (- (* (sin re) (+ (+ im (* (* (* 0.166666666666666657 im) im) im)) (* (* (* (* (* 0.00833333333333333322 im) im) im) im) im)))) (* (* 0.5 (sin re)) (- (exp (- im)) (exp im))))
(* (* 0.5 (sin re)) (- (exp (- im)) (exp im))))