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 r1762414 = x_re;
        double r1762415 = y_re;
        double r1762416 = r1762414 * r1762415;
        double r1762417 = x_im;
        double r1762418 = y_im;
        double r1762419 = r1762417 * r1762418;
        double r1762420 = r1762416 - r1762419;
        return r1762420;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1762421 = x_re;
        double r1762422 = y_re;
        double r1762423 = r1762421 * r1762422;
        double r1762424 = x_im;
        double r1762425 = y_im;
        double r1762426 = r1762424 * r1762425;
        double r1762427 = r1762423 - r1762426;
        return r1762427;
}

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