Average Error: 0.0 → 0.0
Time: 21.6s
Precision: 64
\[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right)\]
\[0.5 \cdot \mathsf{fma}\left(\sin re, e^{im}, \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(\sin re, e^{im}, \frac{\sin re}{e^{im}}\right)
double f(double re, double im) {
        double r447301 = 0.5;
        double r447302 = re;
        double r447303 = sin(r447302);
        double r447304 = r447301 * r447303;
        double r447305 = 0.0;
        double r447306 = im;
        double r447307 = r447305 - r447306;
        double r447308 = exp(r447307);
        double r447309 = exp(r447306);
        double r447310 = r447308 + r447309;
        double r447311 = r447304 * r447310;
        return r447311;
}

double f(double re, double im) {
        double r447312 = 0.5;
        double r447313 = re;
        double r447314 = sin(r447313);
        double r447315 = im;
        double r447316 = exp(r447315);
        double r447317 = r447314 / r447316;
        double r447318 = fma(r447314, r447316, r447317);
        double r447319 = r447312 * r447318;
        return r447319;
}

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

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

Reproduce

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