Average Error: 0.0 → 0.0
Time: 1.1s
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 r60938 = x_re;
        double r60939 = y_re;
        double r60940 = r60938 * r60939;
        double r60941 = x_im;
        double r60942 = y_im;
        double r60943 = r60941 * r60942;
        double r60944 = r60940 - r60943;
        return r60944;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r60945 = x_re;
        double r60946 = y_re;
        double r60947 = r60945 * r60946;
        double r60948 = x_im;
        double r60949 = y_im;
        double r60950 = r60948 * r60949;
        double r60951 = r60947 - r60950;
        return r60951;
}

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