Average Error: 0.0 → 0.0
Time: 3.2s
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 r54117 = x_re;
        double r54118 = y_re;
        double r54119 = r54117 * r54118;
        double r54120 = x_im;
        double r54121 = y_im;
        double r54122 = r54120 * r54121;
        double r54123 = r54119 - r54122;
        return r54123;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r54124 = x_re;
        double r54125 = y_re;
        double r54126 = r54124 * r54125;
        double r54127 = x_im;
        double r54128 = y_im;
        double r54129 = r54127 * r54128;
        double r54130 = r54126 - r54129;
        return r54130;
}

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