\left(d1 \cdot d2 + \left(d3 + 5\right) \cdot d1\right) + d1 \cdot 32
\mathsf{fma}\left(d1, d2, \mathsf{fma}\left(d3 + 5, d1, d1 \cdot 32\right)\right)double f(double d1, double d2, double d3) {
double r265277 = d1;
double r265278 = d2;
double r265279 = r265277 * r265278;
double r265280 = d3;
double r265281 = 5.0;
double r265282 = r265280 + r265281;
double r265283 = r265282 * r265277;
double r265284 = r265279 + r265283;
double r265285 = 32.0;
double r265286 = r265277 * r265285;
double r265287 = r265284 + r265286;
return r265287;
}
double f(double d1, double d2, double d3) {
double r265288 = d1;
double r265289 = d2;
double r265290 = d3;
double r265291 = 5.0;
double r265292 = r265290 + r265291;
double r265293 = 32.0;
double r265294 = r265288 * r265293;
double r265295 = fma(r265292, r265288, r265294);
double r265296 = fma(r265288, r265289, r265295);
return r265296;
}




Bits error versus d1




Bits error versus d2




Bits error versus d3
| Original | 0.0 |
|---|---|
| Target | 0.0 |
| Herbie | 0.0 |
Initial program 0.0
rmApplied associate-+l+0.0
Simplified0.0
rmApplied fma-def0.0
Final simplification0.0
herbie shell --seed 2020035 +o rules:numerics
(FPCore (d1 d2 d3)
:name "FastMath dist3"
:precision binary64
:herbie-target
(* d1 (+ (+ 37 d3) d2))
(+ (+ (* d1 d2) (* (+ d3 5) d1)) (* d1 32)))