\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 r47272 = x;
double r47273 = exp(r47272);
double r47274 = -r47272;
double r47275 = exp(r47274);
double r47276 = r47273 + r47275;
double r47277 = 2.0;
double r47278 = r47276 / r47277;
double r47279 = y;
double r47280 = cos(r47279);
double r47281 = r47278 * r47280;
double r47282 = r47273 - r47275;
double r47283 = r47282 / r47277;
double r47284 = sin(r47279);
double r47285 = r47283 * r47284;
double r47286 = /* ERROR: no complex support in C */;
double r47287 = /* ERROR: no complex support in C */;
return r47287;
}
double f(double x, double y) {
double r47288 = x;
double r47289 = -0.012882299779342181;
bool r47290 = r47288 <= r47289;
double r47291 = exp(r47288);
double r47292 = -r47288;
double r47293 = exp(r47292);
double r47294 = r47291 - r47293;
double r47295 = 2.0;
double r47296 = r47294 / r47295;
double r47297 = y;
double r47298 = sin(r47297);
double r47299 = r47296 * r47298;
double r47300 = cbrt(r47299);
double r47301 = r47300 * r47300;
double r47302 = r47301 * r47300;
double r47303 = 0.3333333333333333;
double r47304 = 3.0;
double r47305 = pow(r47288, r47304);
double r47306 = 0.016666666666666666;
double r47307 = 5.0;
double r47308 = pow(r47288, r47307);
double r47309 = 2.0;
double r47310 = r47309 * r47288;
double r47311 = fma(r47306, r47308, r47310);
double r47312 = fma(r47303, r47305, r47311);
double r47313 = r47312 / r47295;
double r47314 = r47313 * r47298;
double r47315 = r47290 ? r47302 : r47314;
return r47315;
}



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)))))