Average Error: 0.0 → 0.0
Time: 37.9s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[d1 \cdot \left(\left(d2 + d4\right) - \left(d1 + d3\right)\right)\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot \left(\left(d2 + d4\right) - \left(d1 + d3\right)\right)
double f(double d1, double d2, double d3, double d4) {
        double r62980704 = d1;
        double r62980705 = d2;
        double r62980706 = r62980704 * r62980705;
        double r62980707 = d3;
        double r62980708 = r62980704 * r62980707;
        double r62980709 = r62980706 - r62980708;
        double r62980710 = d4;
        double r62980711 = r62980710 * r62980704;
        double r62980712 = r62980709 + r62980711;
        double r62980713 = r62980704 * r62980704;
        double r62980714 = r62980712 - r62980713;
        return r62980714;
}

double f(double d1, double d2, double d3, double d4) {
        double r62980715 = d1;
        double r62980716 = d2;
        double r62980717 = d4;
        double r62980718 = r62980716 + r62980717;
        double r62980719 = d3;
        double r62980720 = r62980715 + r62980719;
        double r62980721 = r62980718 - r62980720;
        double r62980722 = r62980715 * r62980721;
        return r62980722;
}

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

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

Reproduce

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

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

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