Average Error: 0.0 → 0.0
Time: 2.4m
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 r2258500 = x_re;
        double r2258501 = y_re;
        double r2258502 = r2258500 * r2258501;
        double r2258503 = x_im;
        double r2258504 = y_im;
        double r2258505 = r2258503 * r2258504;
        double r2258506 = r2258502 - r2258505;
        return r2258506;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2258507 = x_re;
        double r2258508 = y_re;
        double r2258509 = r2258507 * r2258508;
        double r2258510 = x_im;
        double r2258511 = y_im;
        double r2258512 = r2258510 * r2258511;
        double r2258513 = r2258509 - r2258512;
        return r2258513;
}

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