Average Error: 0.0 → 0.0
Time: 25.0s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[\left(\left(d1 \cdot d2 - d3 \cdot d1\right) + d1 \cdot d4\right) - d1 \cdot d1\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
\left(\left(d1 \cdot d2 - d3 \cdot d1\right) + d1 \cdot d4\right) - d1 \cdot d1
double f(double d1, double d2, double d3, double d4) {
        double r9036462 = d1;
        double r9036463 = d2;
        double r9036464 = r9036462 * r9036463;
        double r9036465 = d3;
        double r9036466 = r9036462 * r9036465;
        double r9036467 = r9036464 - r9036466;
        double r9036468 = d4;
        double r9036469 = r9036468 * r9036462;
        double r9036470 = r9036467 + r9036469;
        double r9036471 = r9036462 * r9036462;
        double r9036472 = r9036470 - r9036471;
        return r9036472;
}

double f(double d1, double d2, double d3, double d4) {
        double r9036473 = d1;
        double r9036474 = d2;
        double r9036475 = r9036473 * r9036474;
        double r9036476 = d3;
        double r9036477 = r9036476 * r9036473;
        double r9036478 = r9036475 - r9036477;
        double r9036479 = d4;
        double r9036480 = r9036473 * r9036479;
        double r9036481 = r9036478 + r9036480;
        double r9036482 = r9036473 * r9036473;
        double r9036483 = r9036481 - r9036482;
        return r9036483;
}

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. Final simplification0.0

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

Reproduce

herbie shell --seed 2019158 +o rules:numerics
(FPCore (d1 d2 d3 d4)
  :name "FastMath dist4"

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

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