Average Error: 0.0 → 0.0
Time: 4.3s
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 r2658515 = x_re;
        double r2658516 = y_re;
        double r2658517 = r2658515 * r2658516;
        double r2658518 = x_im;
        double r2658519 = y_im;
        double r2658520 = r2658518 * r2658519;
        double r2658521 = r2658517 - r2658520;
        return r2658521;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2658522 = x_re;
        double r2658523 = y_re;
        double r2658524 = r2658522 * r2658523;
        double r2658525 = x_im;
        double r2658526 = y_im;
        double r2658527 = r2658525 * r2658526;
        double r2658528 = r2658524 - r2658527;
        return r2658528;
}

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