Average Error: 0.0 → 0.0
Time: 6.2s
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 r45203 = x_re;
        double r45204 = y_re;
        double r45205 = r45203 * r45204;
        double r45206 = x_im;
        double r45207 = y_im;
        double r45208 = r45206 * r45207;
        double r45209 = r45205 - r45208;
        return r45209;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r45210 = x_re;
        double r45211 = y_re;
        double r45212 = r45210 * r45211;
        double r45213 = x_im;
        double r45214 = y_im;
        double r45215 = r45213 * r45214;
        double r45216 = r45212 - r45215;
        return r45216;
}

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