Average Error: 43.4 → 0.8
Time: 37.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({x}^{5}, \frac{1}{60}, x \cdot \left(2 + \frac{1}{3} \cdot \left(x \cdot x\right)\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({x}^{5}, \frac{1}{60}, x \cdot \left(2 + \frac{1}{3} \cdot \left(x \cdot x\right)\right)\right)}{2} \cdot \sin y i\right))
double f(double x, double y) {
        double r2025857 = x;
        double r2025858 = exp(r2025857);
        double r2025859 = -r2025857;
        double r2025860 = exp(r2025859);
        double r2025861 = r2025858 + r2025860;
        double r2025862 = 2.0;
        double r2025863 = r2025861 / r2025862;
        double r2025864 = y;
        double r2025865 = cos(r2025864);
        double r2025866 = r2025863 * r2025865;
        double r2025867 = r2025858 - r2025860;
        double r2025868 = r2025867 / r2025862;
        double r2025869 = sin(r2025864);
        double r2025870 = r2025868 * r2025869;
        double r2025871 = /* ERROR: no complex support in C */;
        double r2025872 = /* ERROR: no complex support in C */;
        return r2025872;
}

double f(double x, double y) {
        double r2025873 = x;
        double r2025874 = exp(r2025873);
        double r2025875 = -r2025873;
        double r2025876 = exp(r2025875);
        double r2025877 = r2025874 + r2025876;
        double r2025878 = 2.0;
        double r2025879 = r2025877 / r2025878;
        double r2025880 = y;
        double r2025881 = cos(r2025880);
        double r2025882 = r2025879 * r2025881;
        double r2025883 = 5.0;
        double r2025884 = pow(r2025873, r2025883);
        double r2025885 = 0.016666666666666666;
        double r2025886 = 2.0;
        double r2025887 = 0.3333333333333333;
        double r2025888 = r2025873 * r2025873;
        double r2025889 = r2025887 * r2025888;
        double r2025890 = r2025886 + r2025889;
        double r2025891 = r2025873 * r2025890;
        double r2025892 = fma(r2025884, r2025885, r2025891);
        double r2025893 = r2025892 / r2025878;
        double r2025894 = sin(r2025880);
        double r2025895 = r2025893 * r2025894;
        double r2025896 = /* ERROR: no complex support in C */;
        double r2025897 = /* ERROR: no complex support in C */;
        return r2025897;
}

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.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({x}^{5}, \frac{1}{60}, x \cdot \left(2 + \left(x \cdot x\right) \cdot \frac{1}{3}\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({x}^{5}, \frac{1}{60}, x \cdot \left(2 + \frac{1}{3} \cdot \left(x \cdot x\right)\right)\right)}{2} \cdot \sin y i\right))\]

Reproduce

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