Average Error: 0.0 → 0.0
Time: 1.6s
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 r117781 = x_re;
        double r117782 = y_re;
        double r117783 = r117781 * r117782;
        double r117784 = x_im;
        double r117785 = y_im;
        double r117786 = r117784 * r117785;
        double r117787 = r117783 - r117786;
        return r117787;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r117788 = x_re;
        double r117789 = y_re;
        double r117790 = r117788 * r117789;
        double r117791 = x_im;
        double r117792 = y_im;
        double r117793 = r117791 * r117792;
        double r117794 = r117790 - r117793;
        return r117794;
}

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