Average Error: 0.0 → 0.0
Time: 10.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 r1298331 = x_re;
        double r1298332 = y_re;
        double r1298333 = r1298331 * r1298332;
        double r1298334 = x_im;
        double r1298335 = y_im;
        double r1298336 = r1298334 * r1298335;
        double r1298337 = r1298333 - r1298336;
        return r1298337;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1298338 = x_re;
        double r1298339 = y_re;
        double r1298340 = r1298338 * r1298339;
        double r1298341 = x_im;
        double r1298342 = y_im;
        double r1298343 = r1298341 * r1298342;
        double r1298344 = r1298340 - r1298343;
        return r1298344;
}

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