Average Error: 0.0 → 0.0
Time: 10.1s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[\left(\left(-d3\right) - d1\right) \cdot d1 + \left(d2 + d4\right) \cdot d1\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
\left(\left(-d3\right) - d1\right) \cdot d1 + \left(d2 + d4\right) \cdot d1
double f(double d1, double d2, double d3, double d4) {
        double r4664249 = d1;
        double r4664250 = d2;
        double r4664251 = r4664249 * r4664250;
        double r4664252 = d3;
        double r4664253 = r4664249 * r4664252;
        double r4664254 = r4664251 - r4664253;
        double r4664255 = d4;
        double r4664256 = r4664255 * r4664249;
        double r4664257 = r4664254 + r4664256;
        double r4664258 = r4664249 * r4664249;
        double r4664259 = r4664257 - r4664258;
        return r4664259;
}

double f(double d1, double d2, double d3, double d4) {
        double r4664260 = d3;
        double r4664261 = -r4664260;
        double r4664262 = d1;
        double r4664263 = r4664261 - r4664262;
        double r4664264 = r4664263 * r4664262;
        double r4664265 = d2;
        double r4664266 = d4;
        double r4664267 = r4664265 + r4664266;
        double r4664268 = r4664267 * r4664262;
        double r4664269 = r4664264 + r4664268;
        return r4664269;
}

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}{d1 \cdot \left(\left(\left(d2 + d4\right) - d3\right) - d1\right)}\]
  3. Using strategy rm
  4. Applied sub-neg0.0

    \[\leadsto d1 \cdot \left(\color{blue}{\left(\left(d2 + d4\right) + \left(-d3\right)\right)} - d1\right)\]
  5. Applied associate--l+0.0

    \[\leadsto d1 \cdot \color{blue}{\left(\left(d2 + d4\right) + \left(\left(-d3\right) - d1\right)\right)}\]
  6. Applied distribute-lft-in0.0

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

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

Reproduce

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

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

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