Average Error: 0.0 → 0.0
Time: 8.5s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[\left(d2 + \left(d4 - d3\right)\right) \cdot d1 - d1 \cdot d1\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
\left(d2 + \left(d4 - d3\right)\right) \cdot d1 - d1 \cdot d1
double f(double d1, double d2, double d3, double d4) {
        double r4751346 = d1;
        double r4751347 = d2;
        double r4751348 = r4751346 * r4751347;
        double r4751349 = d3;
        double r4751350 = r4751346 * r4751349;
        double r4751351 = r4751348 - r4751350;
        double r4751352 = d4;
        double r4751353 = r4751352 * r4751346;
        double r4751354 = r4751351 + r4751353;
        double r4751355 = r4751346 * r4751346;
        double r4751356 = r4751354 - r4751355;
        return r4751356;
}

double f(double d1, double d2, double d3, double d4) {
        double r4751357 = d2;
        double r4751358 = d4;
        double r4751359 = d3;
        double r4751360 = r4751358 - r4751359;
        double r4751361 = r4751357 + r4751360;
        double r4751362 = d1;
        double r4751363 = r4751361 * r4751362;
        double r4751364 = r4751362 * r4751362;
        double r4751365 = r4751363 - r4751364;
        return r4751365;
}

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. Taylor expanded around inf 0.0

    \[\leadsto \color{blue}{\left(\left(d4 \cdot d1 + d2 \cdot d1\right) - d3 \cdot d1\right)} - d1 \cdot d1\]
  3. Simplified0.0

    \[\leadsto \color{blue}{d1 \cdot \left(d2 + \left(d4 - d3\right)\right)} - d1 \cdot d1\]
  4. Final simplification0.0

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

Reproduce

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

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

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