Average Error: 0.0 → 0.0
Time: 810.0ms
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 r39371 = x_re;
        double r39372 = y_re;
        double r39373 = r39371 * r39372;
        double r39374 = x_im;
        double r39375 = y_im;
        double r39376 = r39374 * r39375;
        double r39377 = r39373 - r39376;
        return r39377;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r39378 = x_re;
        double r39379 = y_re;
        double r39380 = r39378 * r39379;
        double r39381 = x_im;
        double r39382 = y_im;
        double r39383 = r39381 * r39382;
        double r39384 = r39380 - r39383;
        return r39384;
}

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