Average Error: 0.0 → 0.0
Time: 7.2s
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 r45121 = x_re;
        double r45122 = y_re;
        double r45123 = r45121 * r45122;
        double r45124 = x_im;
        double r45125 = y_im;
        double r45126 = r45124 * r45125;
        double r45127 = r45123 - r45126;
        return r45127;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r45128 = x_re;
        double r45129 = y_re;
        double r45130 = r45128 * r45129;
        double r45131 = x_im;
        double r45132 = y_im;
        double r45133 = r45131 * r45132;
        double r45134 = r45130 - r45133;
        return r45134;
}

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