Average Error: 0.0 → 0.0
Time: 12.9s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[d1 \cdot \left(\left(d2 + d4\right) - \left(d1 + d3\right)\right)\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot \left(\left(d2 + d4\right) - \left(d1 + d3\right)\right)
double f(double d1, double d2, double d3, double d4) {
        double r54215185 = d1;
        double r54215186 = d2;
        double r54215187 = r54215185 * r54215186;
        double r54215188 = d3;
        double r54215189 = r54215185 * r54215188;
        double r54215190 = r54215187 - r54215189;
        double r54215191 = d4;
        double r54215192 = r54215191 * r54215185;
        double r54215193 = r54215190 + r54215192;
        double r54215194 = r54215185 * r54215185;
        double r54215195 = r54215193 - r54215194;
        return r54215195;
}

double f(double d1, double d2, double d3, double d4) {
        double r54215196 = d1;
        double r54215197 = d2;
        double r54215198 = d4;
        double r54215199 = r54215197 + r54215198;
        double r54215200 = d3;
        double r54215201 = r54215196 + r54215200;
        double r54215202 = r54215199 - r54215201;
        double r54215203 = r54215196 * r54215202;
        return r54215203;
}

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

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

Reproduce

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

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

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