\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))\begin{array}{l}
\mathbf{if}\;x \le 0.014008388915516524:\\
\;\;\;\;\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{(\frac{1}{60} \cdot \left({x}^{5}\right) + \left(x \cdot (\frac{1}{3} \cdot \left(x \cdot x\right) + 2)_*\right))_*}{2} \cdot \sin y i\right))\\
\mathbf{else}:\\
\;\;\;\;\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{\frac{e^{x} \cdot e^{x} - e^{-x} \cdot e^{-x}}{e^{x} + e^{-x}}}{2} \cdot \sin y i\right))\\
\end{array}double f(double x, double y) {
double r7523161 = x;
double r7523162 = exp(r7523161);
double r7523163 = -r7523161;
double r7523164 = exp(r7523163);
double r7523165 = r7523162 + r7523164;
double r7523166 = 2.0;
double r7523167 = r7523165 / r7523166;
double r7523168 = y;
double r7523169 = cos(r7523168);
double r7523170 = r7523167 * r7523169;
double r7523171 = r7523162 - r7523164;
double r7523172 = r7523171 / r7523166;
double r7523173 = sin(r7523168);
double r7523174 = r7523172 * r7523173;
double r7523175 = /* ERROR: no complex support in C */;
double r7523176 = /* ERROR: no complex support in C */;
return r7523176;
}
double f(double x, double y) {
double r7523177 = x;
double r7523178 = 0.014008388915516524;
bool r7523179 = r7523177 <= r7523178;
double r7523180 = exp(r7523177);
double r7523181 = -r7523177;
double r7523182 = exp(r7523181);
double r7523183 = r7523180 + r7523182;
double r7523184 = 2.0;
double r7523185 = r7523183 / r7523184;
double r7523186 = y;
double r7523187 = cos(r7523186);
double r7523188 = r7523185 * r7523187;
double r7523189 = 0.016666666666666666;
double r7523190 = 5.0;
double r7523191 = pow(r7523177, r7523190);
double r7523192 = 0.3333333333333333;
double r7523193 = r7523177 * r7523177;
double r7523194 = fma(r7523192, r7523193, r7523184);
double r7523195 = r7523177 * r7523194;
double r7523196 = fma(r7523189, r7523191, r7523195);
double r7523197 = r7523196 / r7523184;
double r7523198 = sin(r7523186);
double r7523199 = r7523197 * r7523198;
double r7523200 = /* ERROR: no complex support in C */;
double r7523201 = /* ERROR: no complex support in C */;
double r7523202 = r7523180 * r7523180;
double r7523203 = r7523182 * r7523182;
double r7523204 = r7523202 - r7523203;
double r7523205 = r7523204 / r7523183;
double r7523206 = r7523205 / r7523184;
double r7523207 = r7523206 * r7523198;
double r7523208 = /* ERROR: no complex support in C */;
double r7523209 = /* ERROR: no complex support in C */;
double r7523210 = r7523179 ? r7523201 : r7523209;
return r7523210;
}



Bits error versus x



Bits error versus y
if x < 0.014008388915516524Initial program 43.5
Taylor expanded around 0 0.4
Simplified0.4
if 0.014008388915516524 < x Initial program 2.3
rmApplied flip--5.2
Final simplification0.5
herbie shell --seed 2019112 +o rules:numerics
(FPCore (x y)
:name "Euler formula imaginary part (p55)"
(im (complex (* (/ (+ (exp x) (exp (- x))) 2) (cos y)) (* (/ (- (exp x) (exp (- x))) 2) (sin y)))))