Average Error: 0.0 → 0.0
Time: 22.3s
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 r3974900 = x_re;
        double r3974901 = y_re;
        double r3974902 = r3974900 * r3974901;
        double r3974903 = x_im;
        double r3974904 = y_im;
        double r3974905 = r3974903 * r3974904;
        double r3974906 = r3974902 - r3974905;
        return r3974906;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r3974907 = x_re;
        double r3974908 = y_re;
        double r3974909 = r3974907 * r3974908;
        double r3974910 = x_im;
        double r3974911 = y_im;
        double r3974912 = r3974910 * r3974911;
        double r3974913 = r3974909 - r3974912;
        return r3974913;
}

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