Average Error: 0.0 → 0.0
Time: 14.9s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[\left(d4 + \left(d2 - 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(d4 + \left(d2 - d3\right)\right) \cdot d1 - d1 \cdot d1
double f(double d1, double d2, double d3, double d4) {
        double r8717053 = d1;
        double r8717054 = d2;
        double r8717055 = r8717053 * r8717054;
        double r8717056 = d3;
        double r8717057 = r8717053 * r8717056;
        double r8717058 = r8717055 - r8717057;
        double r8717059 = d4;
        double r8717060 = r8717059 * r8717053;
        double r8717061 = r8717058 + r8717060;
        double r8717062 = r8717053 * r8717053;
        double r8717063 = r8717061 - r8717062;
        return r8717063;
}

double f(double d1, double d2, double d3, double d4) {
        double r8717064 = d4;
        double r8717065 = d2;
        double r8717066 = d3;
        double r8717067 = r8717065 - r8717066;
        double r8717068 = r8717064 + r8717067;
        double r8717069 = d1;
        double r8717070 = r8717068 * r8717069;
        double r8717071 = r8717069 * r8717069;
        double r8717072 = r8717070 - r8717071;
        return r8717072;
}

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

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

Reproduce

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

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

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