Average Error: 0.0 → 0.0
Time: 8.0s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[d1 \cdot \left(\left(d4 + \left(d2 - d3\right)\right) - d1\right)\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot \left(\left(d4 + \left(d2 - d3\right)\right) - d1\right)
double f(double d1, double d2, double d3, double d4) {
        double r481549 = d1;
        double r481550 = d2;
        double r481551 = r481549 * r481550;
        double r481552 = d3;
        double r481553 = r481549 * r481552;
        double r481554 = r481551 - r481553;
        double r481555 = d4;
        double r481556 = r481555 * r481549;
        double r481557 = r481554 + r481556;
        double r481558 = r481549 * r481549;
        double r481559 = r481557 - r481558;
        return r481559;
}

double f(double d1, double d2, double d3, double d4) {
        double r481560 = d1;
        double r481561 = d4;
        double r481562 = d2;
        double r481563 = d3;
        double r481564 = r481562 - r481563;
        double r481565 = r481561 + r481564;
        double r481566 = r481565 - r481560;
        double r481567 = r481560 * r481566;
        return r481567;
}

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
\[d1 \cdot \left(\left(\left(d2 - d3\right) + d4\right) - d1\right)\]

Derivation

  1. Initial program 0.0

    \[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
  2. Simplified0.0

    \[\leadsto \color{blue}{d1 \cdot \left(\left(d4 + \left(d2 - d3\right)\right) - d1\right)}\]
  3. Final simplification0.0

    \[\leadsto d1 \cdot \left(\left(d4 + \left(d2 - d3\right)\right) - d1\right)\]

Reproduce

herbie shell --seed 2020042 
(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)))