Average Error: 43.2 → 0.5
Time: 37.8s
Precision: 64
\[\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}\]
\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;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Split input into 2 regimes
  2. if x < -0.012882299779342181

    1. Initial program 2.8

      \[\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))\]
    2. Simplified2.8

      \[\leadsto \color{blue}{\frac{e^{x} - e^{-x}}{2} \cdot \sin y}\]
    3. Using strategy rm
    4. Applied add-cube-cbrt3.5

      \[\leadsto \color{blue}{\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}}\]

    if -0.012882299779342181 < x

    1. Initial program 43.5

      \[\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))\]
    2. Simplified43.5

      \[\leadsto \color{blue}{\frac{e^{x} - e^{-x}}{2} \cdot \sin y}\]
    3. Taylor expanded around 0 0.4

      \[\leadsto \frac{\color{blue}{\frac{1}{3} \cdot {x}^{3} + \left(\frac{1}{60} \cdot {x}^{5} + 2 \cdot x\right)}}{2} \cdot \sin y\]
    4. Simplified0.4

      \[\leadsto \frac{\color{blue}{\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\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.5

    \[\leadsto \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}\]

Reproduce

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