Average Error: 43.4 → 0.8
Time: 13.3s
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{\frac{1}{3} \cdot {x}^{3} + \left(\frac{1}{60} \cdot {x}^{5} + 2 \cdot x\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{\frac{1}{3} \cdot {x}^{3} + \left(\frac{1}{60} \cdot {x}^{5} + 2 \cdot x\right)}{2} \cdot \sin y i\right))
double f(double x, double y) {
        double r48660 = x;
        double r48661 = exp(r48660);
        double r48662 = -r48660;
        double r48663 = exp(r48662);
        double r48664 = r48661 + r48663;
        double r48665 = 2.0;
        double r48666 = r48664 / r48665;
        double r48667 = y;
        double r48668 = cos(r48667);
        double r48669 = r48666 * r48668;
        double r48670 = r48661 - r48663;
        double r48671 = r48670 / r48665;
        double r48672 = sin(r48667);
        double r48673 = r48671 * r48672;
        double r48674 = /* ERROR: no complex support in C */;
        double r48675 = /* ERROR: no complex support in C */;
        return r48675;
}

double f(double x, double y) {
        double r48676 = x;
        double r48677 = exp(r48676);
        double r48678 = -r48676;
        double r48679 = exp(r48678);
        double r48680 = r48677 + r48679;
        double r48681 = 2.0;
        double r48682 = r48680 / r48681;
        double r48683 = y;
        double r48684 = cos(r48683);
        double r48685 = r48682 * r48684;
        double r48686 = 0.3333333333333333;
        double r48687 = 3.0;
        double r48688 = pow(r48676, r48687);
        double r48689 = r48686 * r48688;
        double r48690 = 0.016666666666666666;
        double r48691 = 5.0;
        double r48692 = pow(r48676, r48691);
        double r48693 = r48690 * r48692;
        double r48694 = 2.0;
        double r48695 = r48694 * r48676;
        double r48696 = r48693 + r48695;
        double r48697 = r48689 + r48696;
        double r48698 = r48697 / r48681;
        double r48699 = sin(r48683);
        double r48700 = r48698 * r48699;
        double r48701 = /* ERROR: no complex support in C */;
        double r48702 = /* ERROR: no complex support in C */;
        return r48702;
}

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

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

Reproduce

herbie shell --seed 2020083 
(FPCore (x y)
  :name "Euler formula imaginary part (p55)"
  :precision binary64
  (im (complex (* (/ (+ (exp x) (exp (- x))) 2) (cos y)) (* (/ (- (exp x) (exp (- x))) 2) (sin y)))))