Average Error: 0.0 → 0.0
Time: 10.2s
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 r3639262 = x_re;
        double r3639263 = y_re;
        double r3639264 = r3639262 * r3639263;
        double r3639265 = x_im;
        double r3639266 = y_im;
        double r3639267 = r3639265 * r3639266;
        double r3639268 = r3639264 - r3639267;
        return r3639268;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r3639269 = x_re;
        double r3639270 = y_re;
        double r3639271 = r3639269 * r3639270;
        double r3639272 = x_im;
        double r3639273 = y_im;
        double r3639274 = r3639272 * r3639273;
        double r3639275 = r3639271 - r3639274;
        return r3639275;
}

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