Average Error: 43.6 → 0.8
Time: 33.7s
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}{60}, {x}^{5}, \mathsf{fma}\left(\left(x \cdot x\right) \cdot \frac{1}{3}, x, x \cdot 2\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}{60}, {x}^{5}, \mathsf{fma}\left(\left(x \cdot x\right) \cdot \frac{1}{3}, x, x \cdot 2\right)\right)}{2} \cdot \sin y i\right))
double f(double x, double y) {
        double r1868842 = x;
        double r1868843 = exp(r1868842);
        double r1868844 = -r1868842;
        double r1868845 = exp(r1868844);
        double r1868846 = r1868843 + r1868845;
        double r1868847 = 2.0;
        double r1868848 = r1868846 / r1868847;
        double r1868849 = y;
        double r1868850 = cos(r1868849);
        double r1868851 = r1868848 * r1868850;
        double r1868852 = r1868843 - r1868845;
        double r1868853 = r1868852 / r1868847;
        double r1868854 = sin(r1868849);
        double r1868855 = r1868853 * r1868854;
        double r1868856 = /* ERROR: no complex support in C */;
        double r1868857 = /* ERROR: no complex support in C */;
        return r1868857;
}

double f(double x, double y) {
        double r1868858 = x;
        double r1868859 = exp(r1868858);
        double r1868860 = -r1868858;
        double r1868861 = exp(r1868860);
        double r1868862 = r1868859 + r1868861;
        double r1868863 = 2.0;
        double r1868864 = r1868862 / r1868863;
        double r1868865 = y;
        double r1868866 = cos(r1868865);
        double r1868867 = r1868864 * r1868866;
        double r1868868 = 0.016666666666666666;
        double r1868869 = 5.0;
        double r1868870 = pow(r1868858, r1868869);
        double r1868871 = r1868858 * r1868858;
        double r1868872 = 0.3333333333333333;
        double r1868873 = r1868871 * r1868872;
        double r1868874 = 2.0;
        double r1868875 = r1868858 * r1868874;
        double r1868876 = fma(r1868873, r1868858, r1868875);
        double r1868877 = fma(r1868868, r1868870, r1868876);
        double r1868878 = r1868877 / r1868863;
        double r1868879 = sin(r1868865);
        double r1868880 = r1868878 * r1868879;
        double r1868881 = /* ERROR: no complex support in C */;
        double r1868882 = /* ERROR: no complex support in C */;
        return r1868882;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 43.6

    \[\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}{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.8

    \[\leadsto \Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{\color{blue}{\mathsf{fma}\left(\frac{1}{60}, {x}^{5}, \mathsf{fma}\left(\frac{1}{3} \cdot \left(x \cdot x\right), x, x \cdot 2\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}{60}, {x}^{5}, \mathsf{fma}\left(\left(x \cdot x\right) \cdot \frac{1}{3}, x, x \cdot 2\right)\right)}{2} \cdot \sin y i\right))\]

Reproduce

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