Average Error: 0.0 → 0.0
Time: 7.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 r98294 = x_re;
        double r98295 = y_re;
        double r98296 = r98294 * r98295;
        double r98297 = x_im;
        double r98298 = y_im;
        double r98299 = r98297 * r98298;
        double r98300 = r98296 - r98299;
        return r98300;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r98301 = x_re;
        double r98302 = y_re;
        double r98303 = r98301 * r98302;
        double r98304 = x_im;
        double r98305 = y_im;
        double r98306 = r98304 * r98305;
        double r98307 = r98303 - r98306;
        return r98307;
}

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