Average Error: 0.0 → 0.0
Time: 2.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 r1224176 = x_re;
        double r1224177 = y_re;
        double r1224178 = r1224176 * r1224177;
        double r1224179 = x_im;
        double r1224180 = y_im;
        double r1224181 = r1224179 * r1224180;
        double r1224182 = r1224178 - r1224181;
        return r1224182;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1224183 = x_re;
        double r1224184 = y_re;
        double r1224185 = r1224183 * r1224184;
        double r1224186 = x_im;
        double r1224187 = y_im;
        double r1224188 = r1224186 * r1224187;
        double r1224189 = r1224185 - r1224188;
        return r1224189;
}

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