Average Error: 0.0 → 0.0
Time: 10.7s
Precision: 64
\[re \cdot re - im \cdot im\]
\[re \cdot re - im \cdot im\]
re \cdot re - im \cdot im
re \cdot re - im \cdot im
double f(double re, double im) {
        double r154362 = re;
        double r154363 = r154362 * r154362;
        double r154364 = im;
        double r154365 = r154364 * r154364;
        double r154366 = r154363 - r154365;
        return r154366;
}

double f(double re, double im) {
        double r154367 = re;
        double r154368 = r154367 * r154367;
        double r154369 = im;
        double r154370 = r154369 * r154369;
        double r154371 = r154368 - r154370;
        return r154371;
}

Error

Bits error versus re

Bits error versus im

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.0

    \[re \cdot re - im \cdot im\]
  2. Final simplification0.0

    \[\leadsto re \cdot re - im \cdot im\]

Reproduce

herbie shell --seed 2019139 +o rules:numerics
(FPCore (re im)
  :name "math.square on complex, real part"
  (- (* re re) (* im im)))