Average Error: 0.0 → 0.0
Time: 1.6s
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 r33634 = x_re;
        double r33635 = y_re;
        double r33636 = r33634 * r33635;
        double r33637 = x_im;
        double r33638 = y_im;
        double r33639 = r33637 * r33638;
        double r33640 = r33636 - r33639;
        return r33640;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r33641 = x_re;
        double r33642 = y_re;
        double r33643 = r33641 * r33642;
        double r33644 = x_im;
        double r33645 = y_im;
        double r33646 = r33644 * r33645;
        double r33647 = r33643 - r33646;
        return r33647;
}

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