Average Error: 0.0 → 0.0
Time: 31.0s
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 r8146665 = d1;
        double r8146666 = d2;
        double r8146667 = r8146665 * r8146666;
        double r8146668 = d3;
        double r8146669 = r8146665 * r8146668;
        double r8146670 = r8146667 - r8146669;
        double r8146671 = d4;
        double r8146672 = r8146671 * r8146665;
        double r8146673 = r8146670 + r8146672;
        double r8146674 = r8146665 * r8146665;
        double r8146675 = r8146673 - r8146674;
        return r8146675;
}

double f(double d1, double d2, double d3, double d4) {
        double r8146676 = d4;
        double r8146677 = d3;
        double r8146678 = r8146676 - r8146677;
        double r8146679 = d2;
        double r8146680 = d1;
        double r8146681 = r8146679 - r8146680;
        double r8146682 = r8146678 + r8146681;
        double r8146683 = r8146682 * r8146680;
        return r8146683;
}

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 2019165 
(FPCore (d1 d2 d3 d4)
  :name "FastMath dist4"

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

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