Average Error: 0.0 → 0.0
Time: 1.5s
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 r26852 = x_re;
        double r26853 = y_re;
        double r26854 = r26852 * r26853;
        double r26855 = x_im;
        double r26856 = y_im;
        double r26857 = r26855 * r26856;
        double r26858 = r26854 - r26857;
        return r26858;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r26859 = x_re;
        double r26860 = y_re;
        double r26861 = r26859 * r26860;
        double r26862 = x_im;
        double r26863 = y_im;
        double r26864 = r26862 * r26863;
        double r26865 = r26861 - r26864;
        return r26865;
}

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)))