Average Error: 0.0 → 0.0
Time: 14.9s
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 r9021307 = d1;
        double r9021308 = d2;
        double r9021309 = r9021307 * r9021308;
        double r9021310 = d3;
        double r9021311 = r9021307 * r9021310;
        double r9021312 = r9021309 - r9021311;
        double r9021313 = d4;
        double r9021314 = r9021313 * r9021307;
        double r9021315 = r9021312 + r9021314;
        double r9021316 = r9021307 * r9021307;
        double r9021317 = r9021315 - r9021316;
        return r9021317;
}

double f(double d1, double d2, double d3, double d4) {
        double r9021318 = d1;
        double r9021319 = d2;
        double r9021320 = r9021318 * r9021319;
        double r9021321 = d3;
        double r9021322 = r9021321 * r9021318;
        double r9021323 = r9021320 - r9021322;
        double r9021324 = d4;
        double r9021325 = r9021318 * r9021324;
        double r9021326 = r9021323 + r9021325;
        double r9021327 = r9021318 * r9021318;
        double r9021328 = r9021326 - r9021327;
        return r9021328;
}

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 2019164 +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)))