Average Error: 0.0 → 0.0
Time: 13.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 r2618486 = x_re;
        double r2618487 = y_re;
        double r2618488 = r2618486 * r2618487;
        double r2618489 = x_im;
        double r2618490 = y_im;
        double r2618491 = r2618489 * r2618490;
        double r2618492 = r2618488 - r2618491;
        return r2618492;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2618493 = x_re;
        double r2618494 = y_re;
        double r2618495 = r2618493 * r2618494;
        double r2618496 = x_im;
        double r2618497 = y_im;
        double r2618498 = r2618496 * r2618497;
        double r2618499 = r2618495 - r2618498;
        return r2618499;
}

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