Average Error: 0.0 → 0.0
Time: 9.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 r3701931 = x_re;
        double r3701932 = y_re;
        double r3701933 = r3701931 * r3701932;
        double r3701934 = x_im;
        double r3701935 = y_im;
        double r3701936 = r3701934 * r3701935;
        double r3701937 = r3701933 - r3701936;
        return r3701937;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r3701938 = x_re;
        double r3701939 = y_re;
        double r3701940 = r3701938 * r3701939;
        double r3701941 = x_im;
        double r3701942 = y_im;
        double r3701943 = r3701941 * r3701942;
        double r3701944 = r3701940 - r3701943;
        return r3701944;
}

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