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 r2450509 = x_re;
        double r2450510 = y_re;
        double r2450511 = r2450509 * r2450510;
        double r2450512 = x_im;
        double r2450513 = y_im;
        double r2450514 = r2450512 * r2450513;
        double r2450515 = r2450511 - r2450514;
        return r2450515;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2450516 = x_re;
        double r2450517 = y_re;
        double r2450518 = r2450516 * r2450517;
        double r2450519 = x_im;
        double r2450520 = y_im;
        double r2450521 = r2450519 * r2450520;
        double r2450522 = r2450518 - r2450521;
        return r2450522;
}

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