Average Error: 0.0 → 0.0
Time: 5.6s
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 r47486 = x_re;
        double r47487 = y_re;
        double r47488 = r47486 * r47487;
        double r47489 = x_im;
        double r47490 = y_im;
        double r47491 = r47489 * r47490;
        double r47492 = r47488 - r47491;
        return r47492;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r47493 = x_re;
        double r47494 = y_re;
        double r47495 = r47493 * r47494;
        double r47496 = x_im;
        double r47497 = y_im;
        double r47498 = r47496 * r47497;
        double r47499 = r47495 - r47498;
        return r47499;
}

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