Average Error: 0.0 → 0.0
Time: 13.4s
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 r3303572 = x_re;
        double r3303573 = y_re;
        double r3303574 = r3303572 * r3303573;
        double r3303575 = x_im;
        double r3303576 = y_im;
        double r3303577 = r3303575 * r3303576;
        double r3303578 = r3303574 - r3303577;
        return r3303578;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r3303579 = x_re;
        double r3303580 = y_re;
        double r3303581 = r3303579 * r3303580;
        double r3303582 = x_im;
        double r3303583 = y_im;
        double r3303584 = r3303582 * r3303583;
        double r3303585 = r3303581 - r3303584;
        return r3303585;
}

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