Average Error: 0.0 → 0.0
Time: 2.5s
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 r65477 = x_re;
        double r65478 = y_re;
        double r65479 = r65477 * r65478;
        double r65480 = x_im;
        double r65481 = y_im;
        double r65482 = r65480 * r65481;
        double r65483 = r65479 - r65482;
        return r65483;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r65484 = x_re;
        double r65485 = y_re;
        double r65486 = r65484 * r65485;
        double r65487 = x_im;
        double r65488 = y_im;
        double r65489 = r65487 * r65488;
        double r65490 = r65486 - r65489;
        return r65490;
}

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