Average Error: 0.0 → 0.0
Time: 35.5s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[d1 \cdot \left(\left(\left(d2 - d3\right) + d4\right) - d1\right)\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot \left(\left(\left(d2 - d3\right) + d4\right) - d1\right)
double f(double d1, double d2, double d3, double d4) {
        double r208182 = d1;
        double r208183 = d2;
        double r208184 = r208182 * r208183;
        double r208185 = d3;
        double r208186 = r208182 * r208185;
        double r208187 = r208184 - r208186;
        double r208188 = d4;
        double r208189 = r208188 * r208182;
        double r208190 = r208187 + r208189;
        double r208191 = r208182 * r208182;
        double r208192 = r208190 - r208191;
        return r208192;
}

double f(double d1, double d2, double d3, double d4) {
        double r208193 = d1;
        double r208194 = d2;
        double r208195 = d3;
        double r208196 = r208194 - r208195;
        double r208197 = d4;
        double r208198 = r208196 + r208197;
        double r208199 = r208198 - r208193;
        double r208200 = r208193 * r208199;
        return r208200;
}

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

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

Reproduce

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