Average Error: 0.0 → 0.0
Time: 2.5m
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 r23241066 = x_re;
        double r23241067 = y_re;
        double r23241068 = r23241066 * r23241067;
        double r23241069 = x_im;
        double r23241070 = y_im;
        double r23241071 = r23241069 * r23241070;
        double r23241072 = r23241068 - r23241071;
        return r23241072;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r23241073 = x_re;
        double r23241074 = y_re;
        double r23241075 = r23241073 * r23241074;
        double r23241076 = x_im;
        double r23241077 = y_im;
        double r23241078 = r23241076 * r23241077;
        double r23241079 = r23241075 - r23241078;
        return r23241079;
}

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