Average Error: 0.0 → 0.0
Time: 1.7s
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 r99013 = x_re;
        double r99014 = y_re;
        double r99015 = r99013 * r99014;
        double r99016 = x_im;
        double r99017 = y_im;
        double r99018 = r99016 * r99017;
        double r99019 = r99015 - r99018;
        return r99019;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r99020 = x_re;
        double r99021 = y_re;
        double r99022 = r99020 * r99021;
        double r99023 = x_im;
        double r99024 = y_im;
        double r99025 = r99023 * r99024;
        double r99026 = r99022 - r99025;
        return r99026;
}

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