Average Error: 0.0 → 0.0
Time: 16.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 r48520 = x_re;
        double r48521 = y_re;
        double r48522 = r48520 * r48521;
        double r48523 = x_im;
        double r48524 = y_im;
        double r48525 = r48523 * r48524;
        double r48526 = r48522 - r48525;
        return r48526;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r48527 = x_re;
        double r48528 = y_re;
        double r48529 = r48527 * r48528;
        double r48530 = x_im;
        double r48531 = y_im;
        double r48532 = r48530 * r48531;
        double r48533 = r48529 - r48532;
        return r48533;
}

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