Average Error: 0.0 → 0.0
Time: 3.5s
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 r75345 = x_re;
        double r75346 = y_re;
        double r75347 = r75345 * r75346;
        double r75348 = x_im;
        double r75349 = y_im;
        double r75350 = r75348 * r75349;
        double r75351 = r75347 - r75350;
        return r75351;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r75352 = x_re;
        double r75353 = y_re;
        double r75354 = r75352 * r75353;
        double r75355 = x_im;
        double r75356 = y_im;
        double r75357 = r75355 * r75356;
        double r75358 = r75354 - r75357;
        return r75358;
}

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