Average Error: 0.0 → 0.0
Time: 10.4s
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 r1232278 = x_re;
        double r1232279 = y_re;
        double r1232280 = r1232278 * r1232279;
        double r1232281 = x_im;
        double r1232282 = y_im;
        double r1232283 = r1232281 * r1232282;
        double r1232284 = r1232280 - r1232283;
        return r1232284;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1232285 = x_re;
        double r1232286 = y_re;
        double r1232287 = r1232285 * r1232286;
        double r1232288 = x_im;
        double r1232289 = y_im;
        double r1232290 = r1232288 * r1232289;
        double r1232291 = r1232287 - r1232290;
        return r1232291;
}

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