Average Error: 0.0 → 0.0
Time: 10.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 r2693837 = x_re;
        double r2693838 = y_re;
        double r2693839 = r2693837 * r2693838;
        double r2693840 = x_im;
        double r2693841 = y_im;
        double r2693842 = r2693840 * r2693841;
        double r2693843 = r2693839 - r2693842;
        return r2693843;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2693844 = x_re;
        double r2693845 = y_re;
        double r2693846 = r2693844 * r2693845;
        double r2693847 = x_im;
        double r2693848 = y_im;
        double r2693849 = r2693847 * r2693848;
        double r2693850 = r2693846 - r2693849;
        return r2693850;
}

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