double f(double d1, double d2) {
double r784552 = d1;
double r784553 = 10.0;
double r784554 = r784552 * r784553;
double r784555 = d2;
double r784556 = r784552 * r784555;
double r784557 = r784554 + r784556;
double r784558 = 20.0;
double r784559 = r784552 * r784558;
double r784560 = r784557 + r784559;
return r784560;
}
double f(double d1, double d2) {
double r784561 = 20.0;
double r784562 = 10.0;
double r784563 = r784561 + r784562;
double r784564 = d2;
double r784565 = r784563 + r784564;
double r784566 = d1;
double r784567 = r784565 * r784566;
return r784567;
}
\left(d1 \cdot 10 + d1 \cdot d2\right) + d1 \cdot 20
\left(\left(20 + 10\right) + d2\right) \cdot d1



Bits error versus d1



Bits error versus d2
Initial program 0.3
Simplified0.3
rmApplied associate-+r+0.3
Final simplification0.3
herbie shell --seed 2019101 +o rules:numerics
(FPCore (d1 d2)
:name "FastMath test2"
(+.p16 (+.p16 (*.p16 d1 (real->posit16 10)) (*.p16 d1 d2)) (*.p16 d1 (real->posit16 20))))