Average Error: 0.0 → 0.0
Time: 11.1s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[d1 \cdot \left(\left(d2 - d1\right) - d3\right) + d1 \cdot d4\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot \left(\left(d2 - d1\right) - d3\right) + d1 \cdot d4
double f(double d1, double d2, double d3, double d4) {
        double r159467 = d1;
        double r159468 = d2;
        double r159469 = r159467 * r159468;
        double r159470 = d3;
        double r159471 = r159467 * r159470;
        double r159472 = r159469 - r159471;
        double r159473 = d4;
        double r159474 = r159473 * r159467;
        double r159475 = r159472 + r159474;
        double r159476 = r159467 * r159467;
        double r159477 = r159475 - r159476;
        return r159477;
}

double f(double d1, double d2, double d3, double d4) {
        double r159478 = d1;
        double r159479 = d2;
        double r159480 = r159479 - r159478;
        double r159481 = d3;
        double r159482 = r159480 - r159481;
        double r159483 = r159478 * r159482;
        double r159484 = d4;
        double r159485 = r159478 * r159484;
        double r159486 = r159483 + r159485;
        return r159486;
}

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(d4 + \left(\left(d2 - d1\right) - d3\right)\right)}\]
  3. Using strategy rm
  4. Applied distribute-lft-in0.0

    \[\leadsto \color{blue}{d1 \cdot d4 + d1 \cdot \left(\left(d2 - d1\right) - d3\right)}\]
  5. Final simplification0.0

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

Reproduce

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

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

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