Average Error: 0.0 → 0.1
Time: 41.7s
Precision: 64
\[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0.0 - im} + e^{im}\right)\]
\[\left(\left(0.5 \cdot \sin re\right) \cdot \left({\left(e^{0.0 - im}\right)}^{3} + {\left(e^{im}\right)}^{3}\right)\right) \cdot \frac{1}{\mathsf{fma}\left(e^{im}, e^{im} - e^{0.0 - im}, {\left(e^{0.0 - im}\right)}^{2}\right)}\]
\left(0.5 \cdot \sin re\right) \cdot \left(e^{0.0 - im} + e^{im}\right)
\left(\left(0.5 \cdot \sin re\right) \cdot \left({\left(e^{0.0 - im}\right)}^{3} + {\left(e^{im}\right)}^{3}\right)\right) \cdot \frac{1}{\mathsf{fma}\left(e^{im}, e^{im} - e^{0.0 - im}, {\left(e^{0.0 - im}\right)}^{2}\right)}
double f(double re, double im) {
        double r96037 = 0.5;
        double r96038 = re;
        double r96039 = sin(r96038);
        double r96040 = r96037 * r96039;
        double r96041 = 0.0;
        double r96042 = im;
        double r96043 = r96041 - r96042;
        double r96044 = exp(r96043);
        double r96045 = exp(r96042);
        double r96046 = r96044 + r96045;
        double r96047 = r96040 * r96046;
        return r96047;
}

double f(double re, double im) {
        double r96048 = 0.5;
        double r96049 = re;
        double r96050 = sin(r96049);
        double r96051 = r96048 * r96050;
        double r96052 = 0.0;
        double r96053 = im;
        double r96054 = r96052 - r96053;
        double r96055 = exp(r96054);
        double r96056 = 3.0;
        double r96057 = pow(r96055, r96056);
        double r96058 = exp(r96053);
        double r96059 = pow(r96058, r96056);
        double r96060 = r96057 + r96059;
        double r96061 = r96051 * r96060;
        double r96062 = 1.0;
        double r96063 = r96058 - r96055;
        double r96064 = 2.0;
        double r96065 = pow(r96055, r96064);
        double r96066 = fma(r96058, r96063, r96065);
        double r96067 = r96062 / r96066;
        double r96068 = r96061 * r96067;
        return r96068;
}

Error

Bits error versus re

Bits error versus im

Derivation

  1. Initial program 0.0

    \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0.0 - im} + e^{im}\right)\]
  2. Using strategy rm
  3. Applied flip3-+0.1

    \[\leadsto \left(0.5 \cdot \sin re\right) \cdot \color{blue}{\frac{{\left(e^{0.0 - im}\right)}^{3} + {\left(e^{im}\right)}^{3}}{e^{0.0 - im} \cdot e^{0.0 - im} + \left(e^{im} \cdot e^{im} - e^{0.0 - im} \cdot e^{im}\right)}}\]
  4. Applied associate-*r/0.1

    \[\leadsto \color{blue}{\frac{\left(0.5 \cdot \sin re\right) \cdot \left({\left(e^{0.0 - im}\right)}^{3} + {\left(e^{im}\right)}^{3}\right)}{e^{0.0 - im} \cdot e^{0.0 - im} + \left(e^{im} \cdot e^{im} - e^{0.0 - im} \cdot e^{im}\right)}}\]
  5. Using strategy rm
  6. Applied div-inv0.1

    \[\leadsto \color{blue}{\left(\left(0.5 \cdot \sin re\right) \cdot \left({\left(e^{0.0 - im}\right)}^{3} + {\left(e^{im}\right)}^{3}\right)\right) \cdot \frac{1}{e^{0.0 - im} \cdot e^{0.0 - im} + \left(e^{im} \cdot e^{im} - e^{0.0 - im} \cdot e^{im}\right)}}\]
  7. Simplified0.1

    \[\leadsto \left(\left(0.5 \cdot \sin re\right) \cdot \left({\left(e^{0.0 - im}\right)}^{3} + {\left(e^{im}\right)}^{3}\right)\right) \cdot \color{blue}{\frac{1}{\mathsf{fma}\left(e^{im}, e^{im} - e^{0.0 - im}, {\left(e^{0.0 - im}\right)}^{2}\right)}}\]
  8. Final simplification0.1

    \[\leadsto \left(\left(0.5 \cdot \sin re\right) \cdot \left({\left(e^{0.0 - im}\right)}^{3} + {\left(e^{im}\right)}^{3}\right)\right) \cdot \frac{1}{\mathsf{fma}\left(e^{im}, e^{im} - e^{0.0 - im}, {\left(e^{0.0 - im}\right)}^{2}\right)}\]

Reproduce

herbie shell --seed 2020045 +o rules:numerics
(FPCore (re im)
  :name "math.sin on complex, real part"
  :precision binary64
  (* (* 0.5 (sin re)) (+ (exp (- 0.0 im)) (exp im))))