Average Error: 0.0 → 0.0
Time: 3.9s
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 r60820 = x_re;
        double r60821 = y_re;
        double r60822 = r60820 * r60821;
        double r60823 = x_im;
        double r60824 = y_im;
        double r60825 = r60823 * r60824;
        double r60826 = r60822 - r60825;
        return r60826;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r60827 = x_re;
        double r60828 = y_re;
        double r60829 = r60827 * r60828;
        double r60830 = x_im;
        double r60831 = y_im;
        double r60832 = r60830 * r60831;
        double r60833 = r60829 - r60832;
        return r60833;
}

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