Average Error: 58.0 → 27.9
Time: 36.1s
Precision: 64
\[\left(0.5 \cdot \cos re\right) \cdot \left(e^{0 - im} - e^{im}\right)\]
\[\begin{array}{l} \mathbf{if}\;\cos re \le -0.024407493522205715:\\ \;\;\;\;\left(\cos re \cdot 0.5\right) \cdot \left(e^{-im} - e^{im}\right)\\ \mathbf{elif}\;\cos re \le 0.9991588276041066:\\ \;\;\;\;\left(\left(\sqrt[3]{\sqrt[3]{\left(\left(im \cdot im\right) \cdot im\right) \cdot \frac{-1}{3} + -2 \cdot im} \cdot \sqrt[3]{\left(\left(im \cdot im\right) \cdot im\right) \cdot \frac{-1}{3} + -2 \cdot im}} \cdot \left(\sqrt[3]{\sqrt[3]{\left(\left(im \cdot im\right) \cdot im\right) \cdot \frac{-1}{3} + -2 \cdot im} \cdot \sqrt[3]{\left(\left(im \cdot im\right) \cdot im\right) \cdot \frac{-1}{3} + -2 \cdot im}} \cdot \sqrt[3]{\sqrt[3]{\left(\left(im \cdot im\right) \cdot im\right) \cdot \frac{-1}{3} + -2 \cdot im} \cdot \sqrt[3]{\left(\left(im \cdot im\right) \cdot im\right) \cdot \frac{-1}{3} + -2 \cdot im}}\right)\right) \cdot \sqrt[3]{\left(\left(im \cdot im\right) \cdot im\right) \cdot \frac{-1}{3} + -2 \cdot im}\right) \cdot 0.5\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(im \cdot \left(re \cdot re\right) + \left(-2 + \left(im \cdot im\right) \cdot \frac{-1}{3}\right) \cdot im\right)\\ \end{array}\]
\left(0.5 \cdot \cos re\right) \cdot \left(e^{0 - im} - e^{im}\right)
\begin{array}{l}
\mathbf{if}\;\cos re \le -0.024407493522205715:\\
\;\;\;\;\left(\cos re \cdot 0.5\right) \cdot \left(e^{-im} - e^{im}\right)\\

\mathbf{elif}\;\cos re \le 0.9991588276041066:\\
\;\;\;\;\left(\left(\sqrt[3]{\sqrt[3]{\left(\left(im \cdot im\right) \cdot im\right) \cdot \frac{-1}{3} + -2 \cdot im} \cdot \sqrt[3]{\left(\left(im \cdot im\right) \cdot im\right) \cdot \frac{-1}{3} + -2 \cdot im}} \cdot \left(\sqrt[3]{\sqrt[3]{\left(\left(im \cdot im\right) \cdot im\right) \cdot \frac{-1}{3} + -2 \cdot im} \cdot \sqrt[3]{\left(\left(im \cdot im\right) \cdot im\right) \cdot \frac{-1}{3} + -2 \cdot im}} \cdot \sqrt[3]{\sqrt[3]{\left(\left(im \cdot im\right) \cdot im\right) \cdot \frac{-1}{3} + -2 \cdot im} \cdot \sqrt[3]{\left(\left(im \cdot im\right) \cdot im\right) \cdot \frac{-1}{3} + -2 \cdot im}}\right)\right) \cdot \sqrt[3]{\left(\left(im \cdot im\right) \cdot im\right) \cdot \frac{-1}{3} + -2 \cdot im}\right) \cdot 0.5\\

\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(im \cdot \left(re \cdot re\right) + \left(-2 + \left(im \cdot im\right) \cdot \frac{-1}{3}\right) \cdot im\right)\\

\end{array}
double f(double re, double im) {
        double r7393027 = 0.5;
        double r7393028 = re;
        double r7393029 = cos(r7393028);
        double r7393030 = r7393027 * r7393029;
        double r7393031 = 0.0;
        double r7393032 = im;
        double r7393033 = r7393031 - r7393032;
        double r7393034 = exp(r7393033);
        double r7393035 = exp(r7393032);
        double r7393036 = r7393034 - r7393035;
        double r7393037 = r7393030 * r7393036;
        return r7393037;
}

double f(double re, double im) {
        double r7393038 = re;
        double r7393039 = cos(r7393038);
        double r7393040 = -0.024407493522205715;
        bool r7393041 = r7393039 <= r7393040;
        double r7393042 = 0.5;
        double r7393043 = r7393039 * r7393042;
        double r7393044 = im;
        double r7393045 = -r7393044;
        double r7393046 = exp(r7393045);
        double r7393047 = exp(r7393044);
        double r7393048 = r7393046 - r7393047;
        double r7393049 = r7393043 * r7393048;
        double r7393050 = 0.9991588276041066;
        bool r7393051 = r7393039 <= r7393050;
        double r7393052 = r7393044 * r7393044;
        double r7393053 = r7393052 * r7393044;
        double r7393054 = -0.3333333333333333;
        double r7393055 = r7393053 * r7393054;
        double r7393056 = -2.0;
        double r7393057 = r7393056 * r7393044;
        double r7393058 = r7393055 + r7393057;
        double r7393059 = cbrt(r7393058);
        double r7393060 = r7393059 * r7393059;
        double r7393061 = cbrt(r7393060);
        double r7393062 = r7393061 * r7393061;
        double r7393063 = r7393061 * r7393062;
        double r7393064 = r7393063 * r7393059;
        double r7393065 = r7393064 * r7393042;
        double r7393066 = r7393038 * r7393038;
        double r7393067 = r7393044 * r7393066;
        double r7393068 = r7393052 * r7393054;
        double r7393069 = r7393056 + r7393068;
        double r7393070 = r7393069 * r7393044;
        double r7393071 = r7393067 + r7393070;
        double r7393072 = r7393042 * r7393071;
        double r7393073 = r7393051 ? r7393065 : r7393072;
        double r7393074 = r7393041 ? r7393049 : r7393073;
        return r7393074;
}

Error

Bits error versus re

Bits error versus im

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original58.0
Target0.3
Herbie27.9
\[\begin{array}{l} \mathbf{if}\;\left|im\right| \lt 1:\\ \;\;\;\;-\cos re \cdot \left(\left(im + \left(\left(\frac{1}{6} \cdot im\right) \cdot im\right) \cdot im\right) + \left(\left(\left(\left(\frac{1}{120} \cdot im\right) \cdot im\right) \cdot im\right) \cdot im\right) \cdot im\right)\\ \mathbf{else}:\\ \;\;\;\;\left(0.5 \cdot \cos re\right) \cdot \left(e^{0 - im} - e^{im}\right)\\ \end{array}\]

Derivation

  1. Split input into 3 regimes
  2. if (cos re) < -0.024407493522205715

    1. Initial program 57.9

      \[\left(0.5 \cdot \cos re\right) \cdot \left(e^{0 - im} - e^{im}\right)\]

    if -0.024407493522205715 < (cos re) < 0.9991588276041066

    1. Initial program 58.4

      \[\left(0.5 \cdot \cos re\right) \cdot \left(e^{0 - im} - e^{im}\right)\]
    2. Simplified58.5

      \[\leadsto \color{blue}{0.5 \cdot \left(\frac{\cos re}{e^{im}} - e^{im} \cdot \cos re\right)}\]
    3. Taylor expanded around 0 62.4

      \[\leadsto 0.5 \cdot \color{blue}{\left({re}^{2} \cdot im - \left(\frac{1}{3} \cdot {im}^{3} + 2 \cdot im\right)\right)}\]
    4. Simplified62.4

      \[\leadsto 0.5 \cdot \color{blue}{\left(im \cdot \left(re \cdot re - 2\right) + \left(im \cdot \left(im \cdot im\right)\right) \cdot \frac{-1}{3}\right)}\]
    5. Taylor expanded around 0 50.7

      \[\leadsto 0.5 \cdot \left(\color{blue}{-2 \cdot im} + \left(im \cdot \left(im \cdot im\right)\right) \cdot \frac{-1}{3}\right)\]
    6. Using strategy rm
    7. Applied add-cube-cbrt50.7

      \[\leadsto 0.5 \cdot \color{blue}{\left(\left(\sqrt[3]{-2 \cdot im + \left(im \cdot \left(im \cdot im\right)\right) \cdot \frac{-1}{3}} \cdot \sqrt[3]{-2 \cdot im + \left(im \cdot \left(im \cdot im\right)\right) \cdot \frac{-1}{3}}\right) \cdot \sqrt[3]{-2 \cdot im + \left(im \cdot \left(im \cdot im\right)\right) \cdot \frac{-1}{3}}\right)}\]
    8. Using strategy rm
    9. Applied add-cube-cbrt50.7

      \[\leadsto 0.5 \cdot \left(\color{blue}{\left(\left(\sqrt[3]{\sqrt[3]{-2 \cdot im + \left(im \cdot \left(im \cdot im\right)\right) \cdot \frac{-1}{3}} \cdot \sqrt[3]{-2 \cdot im + \left(im \cdot \left(im \cdot im\right)\right) \cdot \frac{-1}{3}}} \cdot \sqrt[3]{\sqrt[3]{-2 \cdot im + \left(im \cdot \left(im \cdot im\right)\right) \cdot \frac{-1}{3}} \cdot \sqrt[3]{-2 \cdot im + \left(im \cdot \left(im \cdot im\right)\right) \cdot \frac{-1}{3}}}\right) \cdot \sqrt[3]{\sqrt[3]{-2 \cdot im + \left(im \cdot \left(im \cdot im\right)\right) \cdot \frac{-1}{3}} \cdot \sqrt[3]{-2 \cdot im + \left(im \cdot \left(im \cdot im\right)\right) \cdot \frac{-1}{3}}}\right)} \cdot \sqrt[3]{-2 \cdot im + \left(im \cdot \left(im \cdot im\right)\right) \cdot \frac{-1}{3}}\right)\]

    if 0.9991588276041066 < (cos re)

    1. Initial program 57.9

      \[\left(0.5 \cdot \cos re\right) \cdot \left(e^{0 - im} - e^{im}\right)\]
    2. Simplified57.9

      \[\leadsto \color{blue}{0.5 \cdot \left(\frac{\cos re}{e^{im}} - e^{im} \cdot \cos re\right)}\]
    3. Taylor expanded around 0 1.8

      \[\leadsto 0.5 \cdot \color{blue}{\left({re}^{2} \cdot im - \left(\frac{1}{3} \cdot {im}^{3} + 2 \cdot im\right)\right)}\]
    4. Simplified1.8

      \[\leadsto 0.5 \cdot \color{blue}{\left(im \cdot \left(re \cdot re - 2\right) + \left(im \cdot \left(im \cdot im\right)\right) \cdot \frac{-1}{3}\right)}\]
    5. Using strategy rm
    6. Applied sub-neg1.8

      \[\leadsto 0.5 \cdot \left(im \cdot \color{blue}{\left(re \cdot re + \left(-2\right)\right)} + \left(im \cdot \left(im \cdot im\right)\right) \cdot \frac{-1}{3}\right)\]
    7. Applied distribute-lft-in1.8

      \[\leadsto 0.5 \cdot \left(\color{blue}{\left(im \cdot \left(re \cdot re\right) + im \cdot \left(-2\right)\right)} + \left(im \cdot \left(im \cdot im\right)\right) \cdot \frac{-1}{3}\right)\]
    8. Applied associate-+l+1.8

      \[\leadsto 0.5 \cdot \color{blue}{\left(im \cdot \left(re \cdot re\right) + \left(im \cdot \left(-2\right) + \left(im \cdot \left(im \cdot im\right)\right) \cdot \frac{-1}{3}\right)\right)}\]
    9. Simplified1.8

      \[\leadsto 0.5 \cdot \left(im \cdot \left(re \cdot re\right) + \color{blue}{im \cdot \left(-2 + \frac{-1}{3} \cdot \left(im \cdot im\right)\right)}\right)\]
  3. Recombined 3 regimes into one program.
  4. Final simplification27.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;\cos re \le -0.024407493522205715:\\ \;\;\;\;\left(\cos re \cdot 0.5\right) \cdot \left(e^{-im} - e^{im}\right)\\ \mathbf{elif}\;\cos re \le 0.9991588276041066:\\ \;\;\;\;\left(\left(\sqrt[3]{\sqrt[3]{\left(\left(im \cdot im\right) \cdot im\right) \cdot \frac{-1}{3} + -2 \cdot im} \cdot \sqrt[3]{\left(\left(im \cdot im\right) \cdot im\right) \cdot \frac{-1}{3} + -2 \cdot im}} \cdot \left(\sqrt[3]{\sqrt[3]{\left(\left(im \cdot im\right) \cdot im\right) \cdot \frac{-1}{3} + -2 \cdot im} \cdot \sqrt[3]{\left(\left(im \cdot im\right) \cdot im\right) \cdot \frac{-1}{3} + -2 \cdot im}} \cdot \sqrt[3]{\sqrt[3]{\left(\left(im \cdot im\right) \cdot im\right) \cdot \frac{-1}{3} + -2 \cdot im} \cdot \sqrt[3]{\left(\left(im \cdot im\right) \cdot im\right) \cdot \frac{-1}{3} + -2 \cdot im}}\right)\right) \cdot \sqrt[3]{\left(\left(im \cdot im\right) \cdot im\right) \cdot \frac{-1}{3} + -2 \cdot im}\right) \cdot 0.5\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(im \cdot \left(re \cdot re\right) + \left(-2 + \left(im \cdot im\right) \cdot \frac{-1}{3}\right) \cdot im\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019139 
(FPCore (re im)
  :name "math.sin on complex, imaginary part"

  :herbie-target
  (if (< (fabs im) 1) (- (* (cos re) (+ (+ im (* (* (* 1/6 im) im) im)) (* (* (* (* (* 1/120 im) im) im) im) im)))) (* (* 0.5 (cos re)) (- (exp (- 0 im)) (exp im))))

  (* (* 0.5 (cos re)) (- (exp (- 0 im)) (exp im))))