Average Error: 0.0 → 0.0
Time: 3.4s
Precision: binary64
\[\]
\[\]
double code(double d1, double d2, double d3, double d4) {
	return ((double) (((double) (((double) (((double) (d1 * d2)) - ((double) (d1 * d3)))) + ((double) (d4 * d1)))) - ((double) (d1 * d1))));
}
double code(double d1, double d2, double d3, double d4) {
	return ((double) (d1 * ((double) (d2 + ((double) (d4 - ((double) (d1 + d3))))))));
}

Error

Bits error versus d1

Bits error versus d2

Bits error versus d3

Bits error versus d4

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original0.0
Target0.0
Herbie0.0
\[\]

Derivation

  1. Initial program 0.0

    \[\]
  2. Simplified0.0

    \[\leadsto \]
  3. Final simplification0.0

    \[\leadsto \]

Reproduce

herbie shell --seed 2020191 
(FPCore (d1 d2 d3 d4)
  :name "FastMath dist4"
  :precision binary64

  :herbie-target
  (* d1 (- (+ (- d2 d3) d4) d1))

  (- (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1)))