Average Error: 0.0 → 0.0
Time: 12.4s
Precision: 64
\[\left(0.5 \cdot \cos re\right) \cdot \left(e^{-im} + e^{im}\right)\]
\[\mathsf{fma}\left(e^{im}, 0.5, \frac{0.5}{e^{im}}\right) \cdot \cos re\]
\left(0.5 \cdot \cos re\right) \cdot \left(e^{-im} + e^{im}\right)
\mathsf{fma}\left(e^{im}, 0.5, \frac{0.5}{e^{im}}\right) \cdot \cos re
double f(double re, double im) {
        double r1303827 = 0.5;
        double r1303828 = re;
        double r1303829 = cos(r1303828);
        double r1303830 = r1303827 * r1303829;
        double r1303831 = im;
        double r1303832 = -r1303831;
        double r1303833 = exp(r1303832);
        double r1303834 = exp(r1303831);
        double r1303835 = r1303833 + r1303834;
        double r1303836 = r1303830 * r1303835;
        return r1303836;
}

double f(double re, double im) {
        double r1303837 = im;
        double r1303838 = exp(r1303837);
        double r1303839 = 0.5;
        double r1303840 = r1303839 / r1303838;
        double r1303841 = fma(r1303838, r1303839, r1303840);
        double r1303842 = re;
        double r1303843 = cos(r1303842);
        double r1303844 = r1303841 * r1303843;
        return r1303844;
}

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

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

Reproduce

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