Average Error: 0.0 → 0.0
Time: 14.4s
Precision: 64
\[\left(x \cdot x + \left(x \cdot 2\right) \cdot y\right) + y \cdot y\]
\[\left(x \cdot x + \left(x \cdot 2\right) \cdot y\right) + y \cdot y\]
\left(x \cdot x + \left(x \cdot 2\right) \cdot y\right) + y \cdot y
\left(x \cdot x + \left(x \cdot 2\right) \cdot y\right) + y \cdot y
double f(double x, double y) {
        double r442485 = x;
        double r442486 = r442485 * r442485;
        double r442487 = 2.0;
        double r442488 = r442485 * r442487;
        double r442489 = y;
        double r442490 = r442488 * r442489;
        double r442491 = r442486 + r442490;
        double r442492 = r442489 * r442489;
        double r442493 = r442491 + r442492;
        return r442493;
}

double f(double x, double y) {
        double r442494 = x;
        double r442495 = r442494 * r442494;
        double r442496 = 2.0;
        double r442497 = r442494 * r442496;
        double r442498 = y;
        double r442499 = r442497 * r442498;
        double r442500 = r442495 + r442499;
        double r442501 = r442498 * r442498;
        double r442502 = r442500 + r442501;
        return r442502;
}

Error

Bits error versus x

Bits error versus y

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original0.0
Target0.0
Herbie0.0
\[x \cdot x + \left(y \cdot y + \left(x \cdot y\right) \cdot 2\right)\]

Derivation

  1. Initial program 0.0

    \[\left(x \cdot x + \left(x \cdot 2\right) \cdot y\right) + y \cdot y\]
  2. Final simplification0.0

    \[\leadsto \left(x \cdot x + \left(x \cdot 2\right) \cdot y\right) + y \cdot y\]

Reproduce

herbie shell --seed 2019304 
(FPCore (x y)
  :name "Examples.Basics.ProofTests:f4 from sbv-4.4"
  :precision binary64

  :herbie-target
  (+ (* x x) (+ (* y y) (* (* x y) 2)))

  (+ (+ (* x x) (* (* x 2) y)) (* y y)))