\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.01288229977934218090096507580710749607533:\\
\;\;\;\;\left(\sqrt[3]{\frac{e^{x} - e^{-x}}{2} \cdot \sin y} \cdot \sqrt[3]{\frac{e^{x} - e^{-x}}{2} \cdot \sin y}\right) \cdot \sqrt[3]{\frac{e^{x} - e^{-x}}{2} \cdot \sin y}\\
\mathbf{else}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{1}{3}, {x}^{3}, \mathsf{fma}\left(\frac{1}{60}, {x}^{5}, 2 \cdot x\right)\right)}{2} \cdot \sin y\\
\end{array}double f(double x, double y) {
double r50328 = x;
double r50329 = exp(r50328);
double r50330 = -r50328;
double r50331 = exp(r50330);
double r50332 = r50329 + r50331;
double r50333 = 2.0;
double r50334 = r50332 / r50333;
double r50335 = y;
double r50336 = cos(r50335);
double r50337 = r50334 * r50336;
double r50338 = r50329 - r50331;
double r50339 = r50338 / r50333;
double r50340 = sin(r50335);
double r50341 = r50339 * r50340;
double r50342 = /* ERROR: no complex support in C */;
double r50343 = /* ERROR: no complex support in C */;
return r50343;
}
double f(double x, double y) {
double r50344 = x;
double r50345 = -0.012882299779342181;
bool r50346 = r50344 <= r50345;
double r50347 = exp(r50344);
double r50348 = -r50344;
double r50349 = exp(r50348);
double r50350 = r50347 - r50349;
double r50351 = 2.0;
double r50352 = r50350 / r50351;
double r50353 = y;
double r50354 = sin(r50353);
double r50355 = r50352 * r50354;
double r50356 = cbrt(r50355);
double r50357 = r50356 * r50356;
double r50358 = r50357 * r50356;
double r50359 = 0.3333333333333333;
double r50360 = 3.0;
double r50361 = pow(r50344, r50360);
double r50362 = 0.016666666666666666;
double r50363 = 5.0;
double r50364 = pow(r50344, r50363);
double r50365 = 2.0;
double r50366 = r50365 * r50344;
double r50367 = fma(r50362, r50364, r50366);
double r50368 = fma(r50359, r50361, r50367);
double r50369 = r50368 / r50351;
double r50370 = r50369 * r50354;
double r50371 = r50346 ? r50358 : r50370;
return r50371;
}



Bits error versus x



Bits error versus y
if x < -0.012882299779342181Initial program 2.8
Simplified2.8
rmApplied add-cube-cbrt3.5
if -0.012882299779342181 < x Initial program 43.5
Simplified43.5
Taylor expanded around 0 0.4
Simplified0.4
Final simplification0.5
herbie shell --seed 2019323 +o rules:numerics
(FPCore (x y)
:name "Euler formula imaginary part (p55)"
:precision binary64
(im (complex (* (/ (+ (exp x) (exp (- x))) 2) (cos y)) (* (/ (- (exp x) (exp (- x))) 2) (sin y)))))