Average Error: 0.0 → 0.0
Time: 6.8s
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 r2105913 = x_re;
        double r2105914 = y_re;
        double r2105915 = r2105913 * r2105914;
        double r2105916 = x_im;
        double r2105917 = y_im;
        double r2105918 = r2105916 * r2105917;
        double r2105919 = r2105915 - r2105918;
        return r2105919;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2105920 = x_re;
        double r2105921 = y_re;
        double r2105922 = r2105920 * r2105921;
        double r2105923 = x_im;
        double r2105924 = y_im;
        double r2105925 = r2105923 * r2105924;
        double r2105926 = r2105922 - r2105925;
        return r2105926;
}

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