Average Error: 0.0 → 0.0
Time: 8.3s
Precision: 64
\[x.re \cdot y.re - x.im \cdot y.im\]
\[x.re \cdot y.re - x.im \cdot y.im\]
x.re \cdot y.re - x.im \cdot y.im
x.re \cdot y.re - x.im \cdot y.im
double f(double x_re, double x_im, double y_re, double y_im) {
        double r1835127 = x_re;
        double r1835128 = y_re;
        double r1835129 = r1835127 * r1835128;
        double r1835130 = x_im;
        double r1835131 = y_im;
        double r1835132 = r1835130 * r1835131;
        double r1835133 = r1835129 - r1835132;
        return r1835133;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1835134 = x_re;
        double r1835135 = y_re;
        double r1835136 = r1835134 * r1835135;
        double r1835137 = x_im;
        double r1835138 = y_im;
        double r1835139 = r1835137 * r1835138;
        double r1835140 = r1835136 - r1835139;
        return r1835140;
}

Error

Bits error versus x.re

Bits error versus x.im

Bits error versus y.re

Bits error versus y.im

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.0

    \[x.re \cdot y.re - x.im \cdot y.im\]
  2. Final simplification0.0

    \[\leadsto x.re \cdot y.re - x.im \cdot y.im\]

Reproduce

herbie shell --seed 2019170 
(FPCore (x.re x.im y.re y.im)
  :name "_multiplyComplex, real part"
  (- (* x.re y.re) (* x.im y.im)))