Average Error: 0.0 → 0.0
Time: 4.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 r102433 = x_re;
        double r102434 = y_re;
        double r102435 = r102433 * r102434;
        double r102436 = x_im;
        double r102437 = y_im;
        double r102438 = r102436 * r102437;
        double r102439 = r102435 - r102438;
        return r102439;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r102440 = x_re;
        double r102441 = y_re;
        double r102442 = r102440 * r102441;
        double r102443 = x_im;
        double r102444 = y_im;
        double r102445 = r102443 * r102444;
        double r102446 = r102442 - r102445;
        return r102446;
}

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