Average Error: 57.9 → 0.5
Time: 2.1m
Precision: 64
Internal Precision: 1344
\[\left(0.5 \cdot \cos re\right) \cdot \left(e^{0 - im} - e^{im}\right)\]
\[\begin{array}{l} \mathbf{if}\;(\left(\sqrt{(\left(im \cdot \frac{1}{3}\right) \cdot im + 2)_*} \cdot im\right) \cdot \left((\left(\frac{im \cdot im}{\sqrt{2}}\right) \cdot \frac{1}{6} + \left(\sqrt{2}\right))_* - \frac{\frac{\frac{1}{72}}{2} \cdot {im}^{4}}{\sqrt{2}}\right) + \left({im}^{5} \cdot \frac{1}{60}\right))_* \cdot \left(\cos re \cdot \left(-0.5\right)\right) \le 0.13796459554497495:\\ \;\;\;\;(im \cdot \left((im \cdot \left(im \cdot \frac{1}{3}\right) + 2)_*\right) + \left({im}^{5} \cdot \frac{1}{60}\right))_* \cdot \left(\cos re \cdot \left(-0.5\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{\cos re}{e^{im}} - \cos re \cdot e^{im}\right) \cdot 0.5\\ \end{array}\]

Error

Bits error versus re

Bits error versus im

Target

Original57.9
Target0.3
Herbie0.5
\[\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 2 regimes
  2. if (* (fma (* im (sqrt (fma (* im 1/3) im 2))) (- (fma (/ (* im im) (sqrt 2)) 1/6 (sqrt 2)) (/ (* (/ 1/72 2) (pow im 4)) (sqrt 2))) (* (pow im 5) 1/60)) (* (- 0.5) (cos re))) < 0.13796459554497495

    1. Initial program 58.3

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

      \[\leadsto \left(0.5 \cdot \cos re\right) \cdot \color{blue}{\left(-\left(\frac{1}{3} \cdot {im}^{3} + \left(\frac{1}{60} \cdot {im}^{5} + 2 \cdot im\right)\right)\right)}\]
    3. Applied simplify0.5

      \[\leadsto \color{blue}{\left(\cos re \cdot \left(-0.5\right)\right) \cdot (im \cdot \left((im \cdot \left(\frac{1}{3} \cdot im\right) + 2)_*\right) + \left({im}^{5} \cdot \frac{1}{60}\right))_*}\]

    if 0.13796459554497495 < (* (fma (* im (sqrt (fma (* im 1/3) im 2))) (- (fma (/ (* im im) (sqrt 2)) 1/6 (sqrt 2)) (/ (* (/ 1/72 2) (pow im 4)) (sqrt 2))) (* (pow im 5) 1/60)) (* (- 0.5) (cos re)))

    1. Initial program 0.4

      \[\left(0.5 \cdot \cos re\right) \cdot \left(e^{0 - im} - e^{im}\right)\]
    2. Using strategy rm
    3. Applied add-cube-cbrt0.8

      \[\leadsto \left(0.5 \cdot \cos re\right) \cdot \left(e^{0 - im} - \color{blue}{\left(\sqrt[3]{e^{im}} \cdot \sqrt[3]{e^{im}}\right) \cdot \sqrt[3]{e^{im}}}\right)\]
    4. Applied sub-neg0.8

      \[\leadsto \left(0.5 \cdot \cos re\right) \cdot \left(e^{\color{blue}{0 + \left(-im\right)}} - \left(\sqrt[3]{e^{im}} \cdot \sqrt[3]{e^{im}}\right) \cdot \sqrt[3]{e^{im}}\right)\]
    5. Applied exp-sum0.8

      \[\leadsto \left(0.5 \cdot \cos re\right) \cdot \left(\color{blue}{e^{0} \cdot e^{-im}} - \left(\sqrt[3]{e^{im}} \cdot \sqrt[3]{e^{im}}\right) \cdot \sqrt[3]{e^{im}}\right)\]
    6. Applied prod-diff0.8

      \[\leadsto \left(0.5 \cdot \cos re\right) \cdot \color{blue}{\left((\left(e^{0}\right) \cdot \left(e^{-im}\right) + \left(-\sqrt[3]{e^{im}} \cdot \left(\sqrt[3]{e^{im}} \cdot \sqrt[3]{e^{im}}\right)\right))_* + (\left(-\sqrt[3]{e^{im}}\right) \cdot \left(\sqrt[3]{e^{im}} \cdot \sqrt[3]{e^{im}}\right) + \left(\sqrt[3]{e^{im}} \cdot \left(\sqrt[3]{e^{im}} \cdot \sqrt[3]{e^{im}}\right)\right))_*\right)}\]
    7. Applied distribute-lft-in0.8

      \[\leadsto \color{blue}{\left(0.5 \cdot \cos re\right) \cdot (\left(e^{0}\right) \cdot \left(e^{-im}\right) + \left(-\sqrt[3]{e^{im}} \cdot \left(\sqrt[3]{e^{im}} \cdot \sqrt[3]{e^{im}}\right)\right))_* + \left(0.5 \cdot \cos re\right) \cdot (\left(-\sqrt[3]{e^{im}}\right) \cdot \left(\sqrt[3]{e^{im}} \cdot \sqrt[3]{e^{im}}\right) + \left(\sqrt[3]{e^{im}} \cdot \left(\sqrt[3]{e^{im}} \cdot \sqrt[3]{e^{im}}\right)\right))_*}\]
    8. Applied simplify0.5

      \[\leadsto \color{blue}{\left(\frac{\cos re}{e^{im}} - e^{im} \cdot \cos re\right) \cdot 0.5} + \left(0.5 \cdot \cos re\right) \cdot (\left(-\sqrt[3]{e^{im}}\right) \cdot \left(\sqrt[3]{e^{im}} \cdot \sqrt[3]{e^{im}}\right) + \left(\sqrt[3]{e^{im}} \cdot \left(\sqrt[3]{e^{im}} \cdot \sqrt[3]{e^{im}}\right)\right))_*\]
    9. Applied simplify0.5

      \[\leadsto \left(\frac{\cos re}{e^{im}} - e^{im} \cdot \cos re\right) \cdot 0.5 + \color{blue}{0}\]
  3. Recombined 2 regimes into one program.
  4. Applied simplify0.5

    \[\leadsto \color{blue}{\begin{array}{l} \mathbf{if}\;(\left(\sqrt{(\left(im \cdot \frac{1}{3}\right) \cdot im + 2)_*} \cdot im\right) \cdot \left((\left(\frac{im \cdot im}{\sqrt{2}}\right) \cdot \frac{1}{6} + \left(\sqrt{2}\right))_* - \frac{\frac{\frac{1}{72}}{2} \cdot {im}^{4}}{\sqrt{2}}\right) + \left({im}^{5} \cdot \frac{1}{60}\right))_* \cdot \left(\cos re \cdot \left(-0.5\right)\right) \le 0.13796459554497495:\\ \;\;\;\;(im \cdot \left((im \cdot \left(im \cdot \frac{1}{3}\right) + 2)_*\right) + \left({im}^{5} \cdot \frac{1}{60}\right))_* \cdot \left(\cos re \cdot \left(-0.5\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{\cos re}{e^{im}} - \cos re \cdot e^{im}\right) \cdot 0.5\\ \end{array}}\]

Runtime

Time bar (total: 2.1m)Debug logProfile

herbie shell --seed 2018296 +o rules:numerics
(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))))