Average Error: 0.0 → 0.0
Time: 3.3s
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 r77811 = x_re;
        double r77812 = y_re;
        double r77813 = r77811 * r77812;
        double r77814 = x_im;
        double r77815 = y_im;
        double r77816 = r77814 * r77815;
        double r77817 = r77813 - r77816;
        return r77817;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r77818 = x_re;
        double r77819 = y_re;
        double r77820 = r77818 * r77819;
        double r77821 = x_im;
        double r77822 = y_im;
        double r77823 = r77821 * r77822;
        double r77824 = r77820 - r77823;
        return r77824;
}

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