Average Error: 0.0 → 0.0
Time: 1.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 r105753 = x_re;
        double r105754 = y_re;
        double r105755 = r105753 * r105754;
        double r105756 = x_im;
        double r105757 = y_im;
        double r105758 = r105756 * r105757;
        double r105759 = r105755 - r105758;
        return r105759;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r105760 = x_re;
        double r105761 = y_re;
        double r105762 = r105760 * r105761;
        double r105763 = x_im;
        double r105764 = y_im;
        double r105765 = r105763 * r105764;
        double r105766 = r105762 - r105765;
        return r105766;
}

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