Average Error: 0.0 → 0.0
Time: 8.7s
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 r107486 = x_re;
        double r107487 = y_re;
        double r107488 = r107486 * r107487;
        double r107489 = x_im;
        double r107490 = y_im;
        double r107491 = r107489 * r107490;
        double r107492 = r107488 - r107491;
        return r107492;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r107493 = x_re;
        double r107494 = y_re;
        double r107495 = r107493 * r107494;
        double r107496 = x_im;
        double r107497 = y_im;
        double r107498 = r107496 * r107497;
        double r107499 = r107495 - r107498;
        return r107499;
}

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