Average Error: 0.0 → 0.0
Time: 3.9s
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 r522273 = d1;
        double r522274 = d2;
        double r522275 = r522273 * r522274;
        double r522276 = d3;
        double r522277 = r522273 * r522276;
        double r522278 = r522275 - r522277;
        double r522279 = d4;
        double r522280 = r522279 * r522273;
        double r522281 = r522278 + r522280;
        double r522282 = r522273 * r522273;
        double r522283 = r522281 - r522282;
        return r522283;
}

double f(double d1, double d2, double d3, double d4) {
        double r522284 = d1;
        double r522285 = d2;
        double r522286 = d3;
        double r522287 = r522285 - r522286;
        double r522288 = d4;
        double r522289 = r522288 - r522284;
        double r522290 = r522287 + r522289;
        double r522291 = r522284 * r522290;
        return r522291;
}

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 2019362 
(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)))