\left(0.5 \cdot \cos re\right) \cdot \left(e^{-im} + e^{im}\right)\mathsf{fma}\left(0.5, e^{im}, \frac{\sqrt{0.5}}{\sqrt{e^{im}}} \cdot \frac{\sqrt{0.5}}{\sqrt{e^{im}}}\right) \cdot \cos redouble f(double re, double im) {
double r57599 = 0.5;
double r57600 = re;
double r57601 = cos(r57600);
double r57602 = r57599 * r57601;
double r57603 = im;
double r57604 = -r57603;
double r57605 = exp(r57604);
double r57606 = exp(r57603);
double r57607 = r57605 + r57606;
double r57608 = r57602 * r57607;
return r57608;
}
double f(double re, double im) {
double r57609 = 0.5;
double r57610 = im;
double r57611 = exp(r57610);
double r57612 = sqrt(r57609);
double r57613 = sqrt(r57611);
double r57614 = r57612 / r57613;
double r57615 = r57614 * r57614;
double r57616 = fma(r57609, r57611, r57615);
double r57617 = re;
double r57618 = cos(r57617);
double r57619 = r57616 * r57618;
return r57619;
}



Bits error versus re



Bits error versus im
Initial program 0.0
Simplified0.0
rmApplied add-sqr-sqrt0.0
Applied add-sqr-sqrt0.0
Applied times-frac0.0
Final simplification0.0
herbie shell --seed 2020035 +o rules:numerics
(FPCore (re im)
:name "math.cos on complex, real part"
:precision binary64
(* (* 0.5 (cos re)) (+ (exp (- im)) (exp im))))