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

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

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