Average Error: 0.0 → 0.0
Time: 9.6s
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 r4793516 = d1;
        double r4793517 = d2;
        double r4793518 = r4793516 * r4793517;
        double r4793519 = d3;
        double r4793520 = r4793516 * r4793519;
        double r4793521 = r4793518 - r4793520;
        double r4793522 = d4;
        double r4793523 = r4793522 * r4793516;
        double r4793524 = r4793521 + r4793523;
        double r4793525 = r4793516 * r4793516;
        double r4793526 = r4793524 - r4793525;
        return r4793526;
}

double f(double d1, double d2, double d3, double d4) {
        double r4793527 = d2;
        double r4793528 = d4;
        double r4793529 = d3;
        double r4793530 = r4793528 - r4793529;
        double r4793531 = r4793527 + r4793530;
        double r4793532 = d1;
        double r4793533 = r4793531 * r4793532;
        double r4793534 = r4793532 * r4793532;
        double r4793535 = r4793533 - r4793534;
        return r4793535;
}

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