Average Error: 0.0 → 0.0
Time: 18.4s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[\left(\left(d4 - d3\right) + \left(d2 - d1\right)\right) \cdot d1\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
\left(\left(d4 - d3\right) + \left(d2 - d1\right)\right) \cdot d1
double f(double d1, double d2, double d3, double d4) {
        double r13675569 = d1;
        double r13675570 = d2;
        double r13675571 = r13675569 * r13675570;
        double r13675572 = d3;
        double r13675573 = r13675569 * r13675572;
        double r13675574 = r13675571 - r13675573;
        double r13675575 = d4;
        double r13675576 = r13675575 * r13675569;
        double r13675577 = r13675574 + r13675576;
        double r13675578 = r13675569 * r13675569;
        double r13675579 = r13675577 - r13675578;
        return r13675579;
}

double f(double d1, double d2, double d3, double d4) {
        double r13675580 = d4;
        double r13675581 = d3;
        double r13675582 = r13675580 - r13675581;
        double r13675583 = d2;
        double r13675584 = d1;
        double r13675585 = r13675583 - r13675584;
        double r13675586 = r13675582 + r13675585;
        double r13675587 = r13675586 * r13675584;
        return r13675587;
}

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}{\left(\left(d2 - d1\right) + \left(d4 - d3\right)\right) \cdot d1}\]
  3. Final simplification0.0

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

Reproduce

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

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

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