Average Error: 0.0 → 0.0
Time: 11.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 r2718376 = x_re;
        double r2718377 = y_re;
        double r2718378 = r2718376 * r2718377;
        double r2718379 = x_im;
        double r2718380 = y_im;
        double r2718381 = r2718379 * r2718380;
        double r2718382 = r2718378 - r2718381;
        return r2718382;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2718383 = x_re;
        double r2718384 = y_re;
        double r2718385 = r2718383 * r2718384;
        double r2718386 = x_im;
        double r2718387 = y_im;
        double r2718388 = r2718386 * r2718387;
        double r2718389 = r2718385 - r2718388;
        return r2718389;
}

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