Average Error: 0.0 → 0.0
Time: 21.2s
Precision: 64
\[\left(0.5 \cdot \cos re\right) \cdot \left(e^{-im} + e^{im}\right)\]
\[0.5 \cdot \mathsf{fma}\left(e^{im}, \cos re, \frac{\cos re}{e^{im}}\right)\]
\left(0.5 \cdot \cos re\right) \cdot \left(e^{-im} + e^{im}\right)
0.5 \cdot \mathsf{fma}\left(e^{im}, \cos re, \frac{\cos re}{e^{im}}\right)
double f(double re, double im) {
        double r39255 = 0.5;
        double r39256 = re;
        double r39257 = cos(r39256);
        double r39258 = r39255 * r39257;
        double r39259 = im;
        double r39260 = -r39259;
        double r39261 = exp(r39260);
        double r39262 = exp(r39259);
        double r39263 = r39261 + r39262;
        double r39264 = r39258 * r39263;
        return r39264;
}

double f(double re, double im) {
        double r39265 = 0.5;
        double r39266 = im;
        double r39267 = exp(r39266);
        double r39268 = re;
        double r39269 = cos(r39268);
        double r39270 = r39269 / r39267;
        double r39271 = fma(r39267, r39269, r39270);
        double r39272 = r39265 * r39271;
        return r39272;
}

Error

Bits error versus re

Bits error versus im

Derivation

  1. Initial program 0.0

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

    \[\leadsto \color{blue}{\left(0.5 \cdot \cos re\right) \cdot \left(e^{im} + e^{-im}\right)}\]
  3. Using strategy rm
  4. Applied distribute-lft-in0.0

    \[\leadsto \color{blue}{\left(0.5 \cdot \cos re\right) \cdot e^{im} + \left(0.5 \cdot \cos re\right) \cdot e^{-im}}\]
  5. Simplified0.0

    \[\leadsto \color{blue}{0.5 \cdot \left(\cos re \cdot e^{im}\right)} + \left(0.5 \cdot \cos re\right) \cdot e^{-im}\]
  6. Simplified0.0

    \[\leadsto 0.5 \cdot \left(\cos re \cdot e^{im}\right) + \color{blue}{0.5 \cdot \frac{\cos re}{e^{im}}}\]
  7. Using strategy rm
  8. Applied distribute-lft-out0.0

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

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

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

Reproduce

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