Average Error: 0.0 → 0.0
Time: 4.4s
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 r266939 = d1;
        double r266940 = d2;
        double r266941 = r266939 * r266940;
        double r266942 = d3;
        double r266943 = r266939 * r266942;
        double r266944 = r266941 - r266943;
        double r266945 = d4;
        double r266946 = r266945 * r266939;
        double r266947 = r266944 + r266946;
        double r266948 = r266939 * r266939;
        double r266949 = r266947 - r266948;
        return r266949;
}

double f(double d1, double d2, double d3, double d4) {
        double r266950 = d1;
        double r266951 = d2;
        double r266952 = d3;
        double r266953 = r266951 - r266952;
        double r266954 = d4;
        double r266955 = r266954 - r266950;
        double r266956 = r266953 + r266955;
        double r266957 = r266950 * r266956;
        return r266957;
}

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(d2 - d3\right) + \left(d4 - d1\right)\right)}\]
  3. Final simplification0.0

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

Reproduce

herbie shell --seed 2020047 
(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)))