Average Error: 0.0 → 0.0
Time: 9.9s
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 r51146 = x_re;
        double r51147 = y_re;
        double r51148 = r51146 * r51147;
        double r51149 = x_im;
        double r51150 = y_im;
        double r51151 = r51149 * r51150;
        double r51152 = r51148 - r51151;
        return r51152;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r51153 = x_re;
        double r51154 = y_re;
        double r51155 = r51153 * r51154;
        double r51156 = x_im;
        double r51157 = y_im;
        double r51158 = r51156 * r51157;
        double r51159 = r51155 - r51158;
        return r51159;
}

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