Average Error: 43.4 → 0.7
Time: 32.1s
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 + \sin y \cdot \frac{\mathsf{fma}\left(\frac{1}{60}, {x}^{5}, x \cdot \left(\log \left(e^{\left(x \cdot x\right) \cdot \frac{1}{3}}\right) + 2\right)\right)}{2} 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 + \sin y \cdot \frac{\mathsf{fma}\left(\frac{1}{60}, {x}^{5}, x \cdot \left(\log \left(e^{\left(x \cdot x\right) \cdot \frac{1}{3}}\right) + 2\right)\right)}{2} i\right))
double f(double x, double y) {
        double r1653969 = x;
        double r1653970 = exp(r1653969);
        double r1653971 = -r1653969;
        double r1653972 = exp(r1653971);
        double r1653973 = r1653970 + r1653972;
        double r1653974 = 2.0;
        double r1653975 = r1653973 / r1653974;
        double r1653976 = y;
        double r1653977 = cos(r1653976);
        double r1653978 = r1653975 * r1653977;
        double r1653979 = r1653970 - r1653972;
        double r1653980 = r1653979 / r1653974;
        double r1653981 = sin(r1653976);
        double r1653982 = r1653980 * r1653981;
        double r1653983 = /* ERROR: no complex support in C */;
        double r1653984 = /* ERROR: no complex support in C */;
        return r1653984;
}

double f(double x, double y) {
        double r1653985 = x;
        double r1653986 = exp(r1653985);
        double r1653987 = -r1653985;
        double r1653988 = exp(r1653987);
        double r1653989 = r1653986 + r1653988;
        double r1653990 = 2.0;
        double r1653991 = r1653989 / r1653990;
        double r1653992 = y;
        double r1653993 = cos(r1653992);
        double r1653994 = r1653991 * r1653993;
        double r1653995 = sin(r1653992);
        double r1653996 = 0.016666666666666666;
        double r1653997 = 5.0;
        double r1653998 = pow(r1653985, r1653997);
        double r1653999 = r1653985 * r1653985;
        double r1654000 = 0.3333333333333333;
        double r1654001 = r1653999 * r1654000;
        double r1654002 = exp(r1654001);
        double r1654003 = log(r1654002);
        double r1654004 = 2.0;
        double r1654005 = r1654003 + r1654004;
        double r1654006 = r1653985 * r1654005;
        double r1654007 = fma(r1653996, r1653998, r1654006);
        double r1654008 = r1654007 / r1653990;
        double r1654009 = r1653995 * r1654008;
        double r1654010 = /* ERROR: no complex support in C */;
        double r1654011 = /* ERROR: no complex support in C */;
        return r1654011;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 43.4

    \[\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.7

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

    \[\leadsto \Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{\color{blue}{\mathsf{fma}\left(\frac{1}{60}, {x}^{5}, x \cdot \left(\frac{1}{3} \cdot \left(x \cdot x\right) + 2\right)\right)}}{2} \cdot \sin y i\right))\]
  4. Using strategy rm
  5. Applied add-log-exp0.7

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

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

Reproduce

herbie shell --seed 2019192 +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)))))