Average Error: 0.0 → 0.0
Time: 15.7s
Precision: 64
\[\left(0.5 \cdot \cos re\right) \cdot \left(e^{-im} + e^{im}\right)\]
\[\mathsf{fma}\left(\cos re, e^{im}, \frac{\cos re}{e^{im}}\right) \cdot 0.5\]
\left(0.5 \cdot \cos re\right) \cdot \left(e^{-im} + e^{im}\right)
\mathsf{fma}\left(\cos re, e^{im}, \frac{\cos re}{e^{im}}\right) \cdot 0.5
double f(double re, double im) {
        double r2149350 = 0.5;
        double r2149351 = re;
        double r2149352 = cos(r2149351);
        double r2149353 = r2149350 * r2149352;
        double r2149354 = im;
        double r2149355 = -r2149354;
        double r2149356 = exp(r2149355);
        double r2149357 = exp(r2149354);
        double r2149358 = r2149356 + r2149357;
        double r2149359 = r2149353 * r2149358;
        return r2149359;
}

double f(double re, double im) {
        double r2149360 = re;
        double r2149361 = cos(r2149360);
        double r2149362 = im;
        double r2149363 = exp(r2149362);
        double r2149364 = r2149361 / r2149363;
        double r2149365 = fma(r2149361, r2149363, r2149364);
        double r2149366 = 0.5;
        double r2149367 = r2149365 * r2149366;
        return r2149367;
}

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

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

Reproduce

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