Average Error: 0.0 → 0.0
Time: 10.1s
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 r2481117 = x_re;
        double r2481118 = y_re;
        double r2481119 = r2481117 * r2481118;
        double r2481120 = x_im;
        double r2481121 = y_im;
        double r2481122 = r2481120 * r2481121;
        double r2481123 = r2481119 - r2481122;
        return r2481123;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2481124 = x_re;
        double r2481125 = y_re;
        double r2481126 = r2481124 * r2481125;
        double r2481127 = x_im;
        double r2481128 = y_im;
        double r2481129 = r2481127 * r2481128;
        double r2481130 = r2481126 - r2481129;
        return r2481130;
}

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