Average Error: 0.0 → 0.0
Time: 8.0s
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 r1239867 = x_re;
        double r1239868 = y_re;
        double r1239869 = r1239867 * r1239868;
        double r1239870 = x_im;
        double r1239871 = y_im;
        double r1239872 = r1239870 * r1239871;
        double r1239873 = r1239869 - r1239872;
        return r1239873;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1239874 = x_re;
        double r1239875 = y_re;
        double r1239876 = r1239874 * r1239875;
        double r1239877 = x_im;
        double r1239878 = y_im;
        double r1239879 = r1239877 * r1239878;
        double r1239880 = r1239876 - r1239879;
        return r1239880;
}

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