Average Error: 0.0 → 0.0
Time: 16.9s
Precision: 64
\[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right)\]
\[\mathsf{fma}\left(0.5 \cdot \sin re, e^{im}, \frac{0.5 \cdot \sin re}{e^{im}}\right)\]
\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right)
\mathsf{fma}\left(0.5 \cdot \sin re, e^{im}, \frac{0.5 \cdot \sin re}{e^{im}}\right)
double f(double re, double im) {
        double r473541 = 0.5;
        double r473542 = re;
        double r473543 = sin(r473542);
        double r473544 = r473541 * r473543;
        double r473545 = 0.0;
        double r473546 = im;
        double r473547 = r473545 - r473546;
        double r473548 = exp(r473547);
        double r473549 = exp(r473546);
        double r473550 = r473548 + r473549;
        double r473551 = r473544 * r473550;
        return r473551;
}

double f(double re, double im) {
        double r473552 = 0.5;
        double r473553 = re;
        double r473554 = sin(r473553);
        double r473555 = r473552 * r473554;
        double r473556 = im;
        double r473557 = exp(r473556);
        double r473558 = r473555 / r473557;
        double r473559 = fma(r473555, r473557, r473558);
        return r473559;
}

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 \cdot \sin re, e^{im}, \frac{0.5 \cdot \sin re}{e^{im}}\right)}\]
  3. Final simplification0.0

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

Reproduce

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