Average Error: 0.0 → 0.0
Time: 14.0s
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 r1326507 = x_re;
        double r1326508 = y_re;
        double r1326509 = r1326507 * r1326508;
        double r1326510 = x_im;
        double r1326511 = y_im;
        double r1326512 = r1326510 * r1326511;
        double r1326513 = r1326509 - r1326512;
        return r1326513;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1326514 = x_re;
        double r1326515 = y_re;
        double r1326516 = r1326514 * r1326515;
        double r1326517 = x_im;
        double r1326518 = y_im;
        double r1326519 = r1326517 * r1326518;
        double r1326520 = r1326516 - r1326519;
        return r1326520;
}

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