Average Error: 0.0 → 0.0
Time: 6.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 r2028629 = x_re;
        double r2028630 = y_re;
        double r2028631 = r2028629 * r2028630;
        double r2028632 = x_im;
        double r2028633 = y_im;
        double r2028634 = r2028632 * r2028633;
        double r2028635 = r2028631 - r2028634;
        return r2028635;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2028636 = x_re;
        double r2028637 = y_re;
        double r2028638 = r2028636 * r2028637;
        double r2028639 = x_im;
        double r2028640 = y_im;
        double r2028641 = r2028639 * r2028640;
        double r2028642 = r2028638 - r2028641;
        return r2028642;
}

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