Average Error: 0.0 → 0.0
Time: 12.8s
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 r47825 = x_re;
        double r47826 = y_re;
        double r47827 = r47825 * r47826;
        double r47828 = x_im;
        double r47829 = y_im;
        double r47830 = r47828 * r47829;
        double r47831 = r47827 - r47830;
        return r47831;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r47832 = x_re;
        double r47833 = y_re;
        double r47834 = r47832 * r47833;
        double r47835 = x_im;
        double r47836 = y_im;
        double r47837 = r47835 * r47836;
        double r47838 = r47834 - r47837;
        return r47838;
}

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