Average Error: 0.0 → 0.0
Time: 10.7s
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 r110402 = x_re;
        double r110403 = y_re;
        double r110404 = r110402 * r110403;
        double r110405 = x_im;
        double r110406 = y_im;
        double r110407 = r110405 * r110406;
        double r110408 = r110404 - r110407;
        return r110408;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r110409 = x_re;
        double r110410 = y_re;
        double r110411 = r110409 * r110410;
        double r110412 = x_im;
        double r110413 = y_im;
        double r110414 = r110412 * r110413;
        double r110415 = r110411 - r110414;
        return r110415;
}

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