Average Error: 0.0 → 0.0
Time: 7.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 r1403780 = x_re;
        double r1403781 = y_re;
        double r1403782 = r1403780 * r1403781;
        double r1403783 = x_im;
        double r1403784 = y_im;
        double r1403785 = r1403783 * r1403784;
        double r1403786 = r1403782 - r1403785;
        return r1403786;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1403787 = x_re;
        double r1403788 = y_re;
        double r1403789 = r1403787 * r1403788;
        double r1403790 = x_im;
        double r1403791 = y_im;
        double r1403792 = r1403790 * r1403791;
        double r1403793 = r1403789 - r1403792;
        return r1403793;
}

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