Average Error: 0.0 → 0.0
Time: 14.2s
Precision: 64
\[\left(0.5 \cdot \cos re\right) \cdot \left(e^{-im} + e^{im}\right)\]
\[\cos re \cdot \mathsf{fma}\left(e^{im}, 0.5, \frac{0.5}{e^{im}}\right)\]
\left(0.5 \cdot \cos re\right) \cdot \left(e^{-im} + e^{im}\right)
\cos re \cdot \mathsf{fma}\left(e^{im}, 0.5, \frac{0.5}{e^{im}}\right)
double f(double re, double im) {
        double r783149 = 0.5;
        double r783150 = re;
        double r783151 = cos(r783150);
        double r783152 = r783149 * r783151;
        double r783153 = im;
        double r783154 = -r783153;
        double r783155 = exp(r783154);
        double r783156 = exp(r783153);
        double r783157 = r783155 + r783156;
        double r783158 = r783152 * r783157;
        return r783158;
}

double f(double re, double im) {
        double r783159 = re;
        double r783160 = cos(r783159);
        double r783161 = im;
        double r783162 = exp(r783161);
        double r783163 = 0.5;
        double r783164 = r783163 / r783162;
        double r783165 = fma(r783162, r783163, r783164);
        double r783166 = r783160 * r783165;
        return r783166;
}

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

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

Reproduce

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