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 r41161 = x_re;
        double r41162 = y_re;
        double r41163 = r41161 * r41162;
        double r41164 = x_im;
        double r41165 = y_im;
        double r41166 = r41164 * r41165;
        double r41167 = r41163 - r41166;
        return r41167;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r41168 = x_re;
        double r41169 = y_re;
        double r41170 = r41168 * r41169;
        double r41171 = x_im;
        double r41172 = y_im;
        double r41173 = r41171 * r41172;
        double r41174 = r41170 - r41173;
        return r41174;
}

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