Average Error: 0.0 → 0.0
Time: 4.1s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[d1 \cdot \left(\left(d2 - d3\right) + \left(d4 - d1\right)\right)\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot \left(\left(d2 - d3\right) + \left(d4 - d1\right)\right)
double f(double d1, double d2, double d3, double d4) {
        double r156980 = d1;
        double r156981 = d2;
        double r156982 = r156980 * r156981;
        double r156983 = d3;
        double r156984 = r156980 * r156983;
        double r156985 = r156982 - r156984;
        double r156986 = d4;
        double r156987 = r156986 * r156980;
        double r156988 = r156985 + r156987;
        double r156989 = r156980 * r156980;
        double r156990 = r156988 - r156989;
        return r156990;
}

double f(double d1, double d2, double d3, double d4) {
        double r156991 = d1;
        double r156992 = d2;
        double r156993 = d3;
        double r156994 = r156992 - r156993;
        double r156995 = d4;
        double r156996 = r156995 - r156991;
        double r156997 = r156994 + r156996;
        double r156998 = r156991 * r156997;
        return r156998;
}

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. Final simplification0.0

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

Reproduce

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

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

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