Average Error: 0.0 → 0.0
Time: 6.5s
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 r1308377 = x_re;
        double r1308378 = y_re;
        double r1308379 = r1308377 * r1308378;
        double r1308380 = x_im;
        double r1308381 = y_im;
        double r1308382 = r1308380 * r1308381;
        double r1308383 = r1308379 - r1308382;
        return r1308383;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1308384 = x_re;
        double r1308385 = y_re;
        double r1308386 = r1308384 * r1308385;
        double r1308387 = x_im;
        double r1308388 = y_im;
        double r1308389 = r1308387 * r1308388;
        double r1308390 = r1308386 - r1308389;
        return r1308390;
}

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