Average Error: 0.0 → 0.0
Time: 3.1s
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 r45464 = x_re;
        double r45465 = y_re;
        double r45466 = r45464 * r45465;
        double r45467 = x_im;
        double r45468 = y_im;
        double r45469 = r45467 * r45468;
        double r45470 = r45466 - r45469;
        return r45470;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r45471 = x_re;
        double r45472 = y_re;
        double r45473 = r45471 * r45472;
        double r45474 = x_im;
        double r45475 = y_im;
        double r45476 = r45474 * r45475;
        double r45477 = r45473 - r45476;
        return r45477;
}

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 2020060 
(FPCore (x.re x.im y.re y.im)
  :name "_multiplyComplex, real part"
  :precision binary64
  (- (* x.re y.re) (* x.im y.im)))