Average Error: 0.0 → 0.0
Time: 15.7s
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) - \left(d3 - d4\right)\right)\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot \left(\left(d2 - d1\right) - \left(d3 - d4\right)\right)
double f(double d1, double d2, double d3, double d4) {
        double r8089156 = d1;
        double r8089157 = d2;
        double r8089158 = r8089156 * r8089157;
        double r8089159 = d3;
        double r8089160 = r8089156 * r8089159;
        double r8089161 = r8089158 - r8089160;
        double r8089162 = d4;
        double r8089163 = r8089162 * r8089156;
        double r8089164 = r8089161 + r8089163;
        double r8089165 = r8089156 * r8089156;
        double r8089166 = r8089164 - r8089165;
        return r8089166;
}

double f(double d1, double d2, double d3, double d4) {
        double r8089167 = d1;
        double r8089168 = d2;
        double r8089169 = r8089168 - r8089167;
        double r8089170 = d3;
        double r8089171 = d4;
        double r8089172 = r8089170 - r8089171;
        double r8089173 = r8089169 - r8089172;
        double r8089174 = r8089167 * r8089173;
        return r8089174;
}

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

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

Reproduce

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

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

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