Average Error: 43.5 → 0.8
Time: 44.4s
Precision: 64
\[\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))\]
\[\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{\mathsf{fma}\left(\frac{1}{3}, {x}^{3}, \mathsf{fma}\left(\frac{1}{60}, {x}^{5}, 2 \cdot x\right)\right)}{2} \cdot \sin y i\right))\]
\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))
\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{\mathsf{fma}\left(\frac{1}{3}, {x}^{3}, \mathsf{fma}\left(\frac{1}{60}, {x}^{5}, 2 \cdot x\right)\right)}{2} \cdot \sin y i\right))
double f(double x, double y) {
        double r64949 = x;
        double r64950 = exp(r64949);
        double r64951 = -r64949;
        double r64952 = exp(r64951);
        double r64953 = r64950 + r64952;
        double r64954 = 2.0;
        double r64955 = r64953 / r64954;
        double r64956 = y;
        double r64957 = cos(r64956);
        double r64958 = r64955 * r64957;
        double r64959 = r64950 - r64952;
        double r64960 = r64959 / r64954;
        double r64961 = sin(r64956);
        double r64962 = r64960 * r64961;
        double r64963 = /* ERROR: no complex support in C */;
        double r64964 = /* ERROR: no complex support in C */;
        return r64964;
}

double f(double x, double y) {
        double r64965 = x;
        double r64966 = exp(r64965);
        double r64967 = -r64965;
        double r64968 = exp(r64967);
        double r64969 = r64966 + r64968;
        double r64970 = 2.0;
        double r64971 = r64969 / r64970;
        double r64972 = y;
        double r64973 = cos(r64972);
        double r64974 = r64971 * r64973;
        double r64975 = 0.3333333333333333;
        double r64976 = 3.0;
        double r64977 = pow(r64965, r64976);
        double r64978 = 0.016666666666666666;
        double r64979 = 5.0;
        double r64980 = pow(r64965, r64979);
        double r64981 = 2.0;
        double r64982 = r64981 * r64965;
        double r64983 = fma(r64978, r64980, r64982);
        double r64984 = fma(r64975, r64977, r64983);
        double r64985 = r64984 / r64970;
        double r64986 = sin(r64972);
        double r64987 = r64985 * r64986;
        double r64988 = /* ERROR: no complex support in C */;
        double r64989 = /* ERROR: no complex support in C */;
        return r64989;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 43.5

    \[\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))\]
  2. Taylor expanded around 0 0.8

    \[\leadsto \Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{\color{blue}{\frac{1}{3} \cdot {x}^{3} + \left(\frac{1}{60} \cdot {x}^{5} + 2 \cdot x\right)}}{2} \cdot \sin y i\right))\]
  3. Simplified0.8

    \[\leadsto \Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{\color{blue}{\mathsf{fma}\left(\frac{1}{3}, {x}^{3}, \mathsf{fma}\left(\frac{1}{60}, {x}^{5}, 2 \cdot x\right)\right)}}{2} \cdot \sin y i\right))\]
  4. Final simplification0.8

    \[\leadsto \Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{\mathsf{fma}\left(\frac{1}{3}, {x}^{3}, \mathsf{fma}\left(\frac{1}{60}, {x}^{5}, 2 \cdot x\right)\right)}{2} \cdot \sin y i\right))\]

Reproduce

herbie shell --seed 2019199 +o rules:numerics
(FPCore (x y)
  :name "Euler formula imaginary part (p55)"
  (im (complex (* (/ (+ (exp x) (exp (- x))) 2.0) (cos y)) (* (/ (- (exp x) (exp (- x))) 2.0) (sin y)))))