Average Error: 0.0 → 0.0
Time: 13.6s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[\left(\left(d4 - d3\right) + \left(d2 - d1\right)\right) \cdot d1\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
\left(\left(d4 - d3\right) + \left(d2 - d1\right)\right) \cdot d1
double f(double d1, double d2, double d3, double d4) {
        double r12822054 = d1;
        double r12822055 = d2;
        double r12822056 = r12822054 * r12822055;
        double r12822057 = d3;
        double r12822058 = r12822054 * r12822057;
        double r12822059 = r12822056 - r12822058;
        double r12822060 = d4;
        double r12822061 = r12822060 * r12822054;
        double r12822062 = r12822059 + r12822061;
        double r12822063 = r12822054 * r12822054;
        double r12822064 = r12822062 - r12822063;
        return r12822064;
}

double f(double d1, double d2, double d3, double d4) {
        double r12822065 = d4;
        double r12822066 = d3;
        double r12822067 = r12822065 - r12822066;
        double r12822068 = d2;
        double r12822069 = d1;
        double r12822070 = r12822068 - r12822069;
        double r12822071 = r12822067 + r12822070;
        double r12822072 = r12822071 * r12822069;
        return r12822072;
}

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

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

Reproduce

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

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

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