Average Error: 0.0 → 0.0
Time: 30.8s
Precision: 64
\[\left(0.5 \cdot \cos re\right) \cdot \left(e^{-im} + e^{im}\right)\]
\[\mathsf{fma}\left(\left(e^{im}\right), \left(\cos re \cdot 0.5\right), \left(\frac{1}{e^{im}} \cdot \left(\cos re \cdot 0.5\right)\right)\right)\]
\left(0.5 \cdot \cos re\right) \cdot \left(e^{-im} + e^{im}\right)
\mathsf{fma}\left(\left(e^{im}\right), \left(\cos re \cdot 0.5\right), \left(\frac{1}{e^{im}} \cdot \left(\cos re \cdot 0.5\right)\right)\right)
double f(double re, double im) {
        double r2667963 = 0.5;
        double r2667964 = re;
        double r2667965 = cos(r2667964);
        double r2667966 = r2667963 * r2667965;
        double r2667967 = im;
        double r2667968 = -r2667967;
        double r2667969 = exp(r2667968);
        double r2667970 = exp(r2667967);
        double r2667971 = r2667969 + r2667970;
        double r2667972 = r2667966 * r2667971;
        return r2667972;
}

double f(double re, double im) {
        double r2667973 = im;
        double r2667974 = exp(r2667973);
        double r2667975 = re;
        double r2667976 = cos(r2667975);
        double r2667977 = 0.5;
        double r2667978 = r2667976 * r2667977;
        double r2667979 = 1.0;
        double r2667980 = r2667979 / r2667974;
        double r2667981 = r2667980 * r2667978;
        double r2667982 = fma(r2667974, r2667978, r2667981);
        return r2667982;
}

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(\left(e^{im}\right), \left(0.5 \cdot \cos re\right), \left(\frac{0.5 \cdot \cos re}{e^{im}}\right)\right)}\]
  3. Using strategy rm
  4. Applied div-inv0.0

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

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

Reproduce

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