Average Error: 0.0 → 0.0
Time: 3.3s
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 r55781 = x_re;
        double r55782 = y_re;
        double r55783 = r55781 * r55782;
        double r55784 = x_im;
        double r55785 = y_im;
        double r55786 = r55784 * r55785;
        double r55787 = r55783 - r55786;
        return r55787;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r55788 = x_re;
        double r55789 = y_re;
        double r55790 = r55788 * r55789;
        double r55791 = x_im;
        double r55792 = y_im;
        double r55793 = r55791 * r55792;
        double r55794 = r55790 - r55793;
        return r55794;
}

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