Average Error: 0.0 → 0.0
Time: 10.0s
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 r919823 = 0.5;
        double r919824 = re;
        double r919825 = cos(r919824);
        double r919826 = r919823 * r919825;
        double r919827 = im;
        double r919828 = -r919827;
        double r919829 = exp(r919828);
        double r919830 = exp(r919827);
        double r919831 = r919829 + r919830;
        double r919832 = r919826 * r919831;
        return r919832;
}

double f(double re, double im) {
        double r919833 = re;
        double r919834 = cos(r919833);
        double r919835 = im;
        double r919836 = exp(r919835);
        double r919837 = 0.5;
        double r919838 = r919837 / r919836;
        double r919839 = fma(r919836, r919837, r919838);
        double r919840 = r919834 * r919839;
        return r919840;
}

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 2019152 +o rules:numerics
(FPCore (re im)
  :name "math.cos on complex, real part"
  (* (* 0.5 (cos re)) (+ (exp (- im)) (exp im))))