Average Error: 0.0 → 0.0
Time: 3.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 r121962 = x_re;
        double r121963 = y_re;
        double r121964 = r121962 * r121963;
        double r121965 = x_im;
        double r121966 = y_im;
        double r121967 = r121965 * r121966;
        double r121968 = r121964 - r121967;
        return r121968;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r121969 = x_re;
        double r121970 = y_re;
        double r121971 = r121969 * r121970;
        double r121972 = x_im;
        double r121973 = y_im;
        double r121974 = r121972 * r121973;
        double r121975 = r121971 - r121974;
        return r121975;
}

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