\frac{\left(\frac{\left(d1 \cdot d2\right)}{\left(\left(\frac{d3}{\left(5\right)}\right) \cdot d1\right)}\right)}{\left(d1 \cdot \left(32\right)\right)}\left(d1 \cdot d2 + \left(d3 + 5\right) \cdot d1\right) + d1 \cdot 32
double f(double d1, double d2, double d3) {
double r3009611 = d1;
double r3009612 = d2;
double r3009613 = r3009611 * r3009612;
double r3009614 = d3;
double r3009615 = 5.0;
double r3009616 = /* ERROR: no posit support in C */;
double r3009617 = r3009614 + r3009616;
double r3009618 = r3009617 * r3009611;
double r3009619 = r3009613 + r3009618;
double r3009620 = 32.0;
double r3009621 = /* ERROR: no posit support in C */;
double r3009622 = r3009611 * r3009621;
double r3009623 = r3009619 + r3009622;
return r3009623;
}
double f(double d1, double d2, double d3) {
double r3009624 = d1;
double r3009625 = d2;
double r3009626 = r3009624 * r3009625;
double r3009627 = d3;
double r3009628 = 5.0;
double r3009629 = r3009627 + r3009628;
double r3009630 = r3009629 * r3009624;
double r3009631 = r3009626 + r3009630;
double r3009632 = 32.0;
double r3009633 = r3009624 * r3009632;
double r3009634 = r3009631 + r3009633;
return r3009634;
}



Bits error versus d1



Bits error versus d2



Bits error versus d3
Initial program 0.3
Final simplification0.3
herbie shell --seed 2019128 +o rules:numerics
(FPCore (d1 d2 d3)
:name "FastMath dist3"
(+.p16 (+.p16 (*.p16 d1 d2) (*.p16 (+.p16 d3 (real->posit16 5)) d1)) (*.p16 d1 (real->posit16 32))))