Average Error: 0.0 → 0.0
Time: 12.3s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[\left(\left(d1 \cdot d2 - d3 \cdot d1\right) + d1 \cdot d4\right) - d1 \cdot d1\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
\left(\left(d1 \cdot d2 - d3 \cdot d1\right) + d1 \cdot d4\right) - d1 \cdot d1
double f(double d1, double d2, double d3, double d4) {
        double r7311906 = d1;
        double r7311907 = d2;
        double r7311908 = r7311906 * r7311907;
        double r7311909 = d3;
        double r7311910 = r7311906 * r7311909;
        double r7311911 = r7311908 - r7311910;
        double r7311912 = d4;
        double r7311913 = r7311912 * r7311906;
        double r7311914 = r7311911 + r7311913;
        double r7311915 = r7311906 * r7311906;
        double r7311916 = r7311914 - r7311915;
        return r7311916;
}

double f(double d1, double d2, double d3, double d4) {
        double r7311917 = d1;
        double r7311918 = d2;
        double r7311919 = r7311917 * r7311918;
        double r7311920 = d3;
        double r7311921 = r7311920 * r7311917;
        double r7311922 = r7311919 - r7311921;
        double r7311923 = d4;
        double r7311924 = r7311917 * r7311923;
        double r7311925 = r7311922 + r7311924;
        double r7311926 = r7311917 * r7311917;
        double r7311927 = r7311925 - r7311926;
        return r7311927;
}

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 \left(\left(d1 \cdot d2 - d3 \cdot d1\right) + d1 \cdot d4\right) - d1 \cdot d1\]

Reproduce

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

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

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