Average Error: 42.9 → 0.4
Time: 19.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.0166569179939537911:\\ \;\;\;\;\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{\mathsf{fma}\left(\sqrt{e^{x}}, \sqrt{e^{x}}, -e^{-x}\right)}{2} \cdot \sin y i\right))\\ \mathbf{else}:\\ \;\;\;\;\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \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 i\right))\\ \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.0166569179939537911:\\
\;\;\;\;\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{\mathsf{fma}\left(\sqrt{e^{x}}, \sqrt{e^{x}}, -e^{-x}\right)}{2} \cdot \sin y i\right))\\

\mathbf{else}:\\
\;\;\;\;\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \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 i\right))\\

\end{array}
double f(double x, double y) {
        double r42629 = x;
        double r42630 = exp(r42629);
        double r42631 = -r42629;
        double r42632 = exp(r42631);
        double r42633 = r42630 + r42632;
        double r42634 = 2.0;
        double r42635 = r42633 / r42634;
        double r42636 = y;
        double r42637 = cos(r42636);
        double r42638 = r42635 * r42637;
        double r42639 = r42630 - r42632;
        double r42640 = r42639 / r42634;
        double r42641 = sin(r42636);
        double r42642 = r42640 * r42641;
        double r42643 = /* ERROR: no complex support in C */;
        double r42644 = /* ERROR: no complex support in C */;
        return r42644;
}

double f(double x, double y) {
        double r42645 = x;
        double r42646 = -0.01665691799395379;
        bool r42647 = r42645 <= r42646;
        double r42648 = exp(r42645);
        double r42649 = -r42645;
        double r42650 = exp(r42649);
        double r42651 = r42648 + r42650;
        double r42652 = 2.0;
        double r42653 = r42651 / r42652;
        double r42654 = y;
        double r42655 = cos(r42654);
        double r42656 = r42653 * r42655;
        double r42657 = sqrt(r42648);
        double r42658 = -r42650;
        double r42659 = fma(r42657, r42657, r42658);
        double r42660 = r42659 / r42652;
        double r42661 = sin(r42654);
        double r42662 = r42660 * r42661;
        double r42663 = /* ERROR: no complex support in C */;
        double r42664 = /* ERROR: no complex support in C */;
        double r42665 = 0.3333333333333333;
        double r42666 = 3.0;
        double r42667 = pow(r42645, r42666);
        double r42668 = 0.016666666666666666;
        double r42669 = 5.0;
        double r42670 = pow(r42645, r42669);
        double r42671 = 2.0;
        double r42672 = r42671 * r42645;
        double r42673 = fma(r42668, r42670, r42672);
        double r42674 = fma(r42665, r42667, r42673);
        double r42675 = r42674 / r42652;
        double r42676 = r42675 * r42661;
        double r42677 = /* ERROR: no complex support in C */;
        double r42678 = /* ERROR: no complex support in C */;
        double r42679 = r42647 ? r42664 : r42678;
        return r42679;
}

Error

Bits error versus x

Bits error versus y

Derivation

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

    1. Initial program 1.5

      \[\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))\]
    2. Using strategy rm
    3. Applied add-sqr-sqrt1.6

      \[\leadsto \Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{\color{blue}{\sqrt{e^{x}} \cdot \sqrt{e^{x}}} - e^{-x}}{2} \cdot \sin y i\right))\]
    4. Applied fma-neg1.7

      \[\leadsto \Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{\color{blue}{\mathsf{fma}\left(\sqrt{e^{x}}, \sqrt{e^{x}}, -e^{-x}\right)}}{2} \cdot \sin y i\right))\]

    if -0.01665691799395379 < x

    1. Initial program 43.2

      \[\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))\]
    2. Taylor expanded around 0 0.4

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

      \[\leadsto \Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \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 i\right))\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -0.0166569179939537911:\\ \;\;\;\;\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{\mathsf{fma}\left(\sqrt{e^{x}}, \sqrt{e^{x}}, -e^{-x}\right)}{2} \cdot \sin y i\right))\\ \mathbf{else}:\\ \;\;\;\;\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \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 i\right))\\ \end{array}\]

Reproduce

herbie shell --seed 2020047 +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)))))