Average Error: 0.0 → 0.0
Time: 1.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 r53333 = x_re;
        double r53334 = y_re;
        double r53335 = r53333 * r53334;
        double r53336 = x_im;
        double r53337 = y_im;
        double r53338 = r53336 * r53337;
        double r53339 = r53335 - r53338;
        return r53339;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r53340 = x_re;
        double r53341 = y_re;
        double r53342 = r53340 * r53341;
        double r53343 = x_im;
        double r53344 = y_im;
        double r53345 = r53343 * r53344;
        double r53346 = r53342 - r53345;
        return r53346;
}

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