Average Error: 0.0 → 0.0
Time: 4.5s
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 r252698 = d1;
        double r252699 = d2;
        double r252700 = r252698 * r252699;
        double r252701 = d3;
        double r252702 = r252698 * r252701;
        double r252703 = r252700 - r252702;
        double r252704 = d4;
        double r252705 = r252704 * r252698;
        double r252706 = r252703 + r252705;
        double r252707 = r252698 * r252698;
        double r252708 = r252706 - r252707;
        return r252708;
}

double f(double d1, double d2, double d3, double d4) {
        double r252709 = d1;
        double r252710 = d2;
        double r252711 = d3;
        double r252712 = r252710 - r252711;
        double r252713 = d4;
        double r252714 = r252713 - r252709;
        double r252715 = r252712 + r252714;
        double r252716 = r252709 * r252715;
        return r252716;
}

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