Average Error: 0.0 → 0.0
Time: 11.4s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[d1 \cdot \left(d2 - d3\right) + d1 \cdot \left(d4 - d1\right)\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot \left(d2 - d3\right) + d1 \cdot \left(d4 - d1\right)
double f(double d1, double d2, double d3, double d4) {
        double r15276101 = d1;
        double r15276102 = d2;
        double r15276103 = r15276101 * r15276102;
        double r15276104 = d3;
        double r15276105 = r15276101 * r15276104;
        double r15276106 = r15276103 - r15276105;
        double r15276107 = d4;
        double r15276108 = r15276107 * r15276101;
        double r15276109 = r15276106 + r15276108;
        double r15276110 = r15276101 * r15276101;
        double r15276111 = r15276109 - r15276110;
        return r15276111;
}

double f(double d1, double d2, double d3, double d4) {
        double r15276112 = d1;
        double r15276113 = d2;
        double r15276114 = d3;
        double r15276115 = r15276113 - r15276114;
        double r15276116 = r15276112 * r15276115;
        double r15276117 = d4;
        double r15276118 = r15276117 - r15276112;
        double r15276119 = r15276112 * r15276118;
        double r15276120 = r15276116 + r15276119;
        return r15276120;
}

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 - d3\right) + d4\right) - d1\right)}\]
  3. Using strategy rm
  4. Applied associate--l+0.0

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

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

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

Reproduce

herbie shell --seed 2019174 +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)))