Average Error: 0.0 → 0.0
Time: 26.2s
Precision: 64
\[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right)\]
\[0.5 \cdot \mathsf{fma}\left(e^{im}, \sin re, \frac{\sin re}{e^{im}}\right)\]
\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right)
0.5 \cdot \mathsf{fma}\left(e^{im}, \sin re, \frac{\sin re}{e^{im}}\right)
double f(double re, double im) {
        double r487574 = 0.5;
        double r487575 = re;
        double r487576 = sin(r487575);
        double r487577 = r487574 * r487576;
        double r487578 = 0.0;
        double r487579 = im;
        double r487580 = r487578 - r487579;
        double r487581 = exp(r487580);
        double r487582 = exp(r487579);
        double r487583 = r487581 + r487582;
        double r487584 = r487577 * r487583;
        return r487584;
}

double f(double re, double im) {
        double r487585 = 0.5;
        double r487586 = im;
        double r487587 = exp(r487586);
        double r487588 = re;
        double r487589 = sin(r487588);
        double r487590 = r487589 / r487587;
        double r487591 = fma(r487587, r487589, r487590);
        double r487592 = r487585 * r487591;
        return r487592;
}

Error

Bits error versus re

Bits error versus im

Derivation

  1. Initial program 0.0

    \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right)\]
  2. Simplified0.0

    \[\leadsto \color{blue}{\mathsf{fma}\left(0.5, e^{im}, \frac{0.5}{e^{im}}\right) \cdot \sin re}\]
  3. Taylor expanded around -inf 0.0

    \[\leadsto \color{blue}{\sin re \cdot \left(0.5 \cdot e^{im} + 0.5 \cdot \frac{1}{e^{im}}\right)}\]
  4. Simplified0.0

    \[\leadsto \color{blue}{0.5 \cdot \mathsf{fma}\left(e^{im}, \sin re, \frac{\sin re}{e^{im}}\right)}\]
  5. Final simplification0.0

    \[\leadsto 0.5 \cdot \mathsf{fma}\left(e^{im}, \sin re, \frac{\sin re}{e^{im}}\right)\]

Reproduce

herbie shell --seed 2019139 +o rules:numerics
(FPCore (re im)
  :name "math.sin on complex, real part"
  (* (* 0.5 (sin re)) (+ (exp (- 0 im)) (exp im))))