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(d1 \cdot d2 - \left(d3 - d4\right) \cdot d1\right) - d1 \cdot d1\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
\left(d1 \cdot d2 - \left(d3 - d4\right) \cdot d1\right) - d1 \cdot d1
double f(double d1, double d2, double d3, double d4) {
        double r8013011 = d1;
        double r8013012 = d2;
        double r8013013 = r8013011 * r8013012;
        double r8013014 = d3;
        double r8013015 = r8013011 * r8013014;
        double r8013016 = r8013013 - r8013015;
        double r8013017 = d4;
        double r8013018 = r8013017 * r8013011;
        double r8013019 = r8013016 + r8013018;
        double r8013020 = r8013011 * r8013011;
        double r8013021 = r8013019 - r8013020;
        return r8013021;
}

double f(double d1, double d2, double d3, double d4) {
        double r8013022 = d1;
        double r8013023 = d2;
        double r8013024 = r8013022 * r8013023;
        double r8013025 = d3;
        double r8013026 = d4;
        double r8013027 = r8013025 - r8013026;
        double r8013028 = r8013027 * r8013022;
        double r8013029 = r8013024 - r8013028;
        double r8013030 = r8013022 * r8013022;
        double r8013031 = r8013029 - r8013030;
        return r8013031;
}

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. Using strategy rm
  3. Applied associate-+l-0.0

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

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

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

Reproduce

herbie shell --seed 2019138 +o rules:numerics
(FPCore (d1 d2 d3 d4)
  :name "FastMath dist4"

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

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