Average Error: 0.0 → 0.0
Time: 4.1s
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 r3271753 = x_re;
        double r3271754 = y_re;
        double r3271755 = r3271753 * r3271754;
        double r3271756 = x_im;
        double r3271757 = y_im;
        double r3271758 = r3271756 * r3271757;
        double r3271759 = r3271755 - r3271758;
        return r3271759;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r3271760 = x_re;
        double r3271761 = y_re;
        double r3271762 = r3271760 * r3271761;
        double r3271763 = x_im;
        double r3271764 = y_im;
        double r3271765 = r3271763 * r3271764;
        double r3271766 = r3271762 - r3271765;
        return r3271766;
}

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