Average Error: 0.0 → 0.0
Time: 16.7s
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 r6798380 = d1;
        double r6798381 = d2;
        double r6798382 = r6798380 * r6798381;
        double r6798383 = d3;
        double r6798384 = r6798380 * r6798383;
        double r6798385 = r6798382 - r6798384;
        double r6798386 = d4;
        double r6798387 = r6798386 * r6798380;
        double r6798388 = r6798385 + r6798387;
        double r6798389 = r6798380 * r6798380;
        double r6798390 = r6798388 - r6798389;
        return r6798390;
}

double f(double d1, double d2, double d3, double d4) {
        double r6798391 = d1;
        double r6798392 = d2;
        double r6798393 = r6798391 * r6798392;
        double r6798394 = d3;
        double r6798395 = r6798394 * r6798391;
        double r6798396 = r6798393 - r6798395;
        double r6798397 = d4;
        double r6798398 = r6798391 * r6798397;
        double r6798399 = r6798396 + r6798398;
        double r6798400 = r6798391 * r6798391;
        double r6798401 = r6798399 - r6798400;
        return r6798401;
}

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