\left(d1 \cdot 3 + d1 \cdot d2\right) + d1 \cdot d3
d3 \cdot d1 + \mathsf{fma}\left(d1, 3, d1 \cdot d2\right)double f(double d1, double d2, double d3) {
double r8107287 = d1;
double r8107288 = 3.0;
double r8107289 = r8107287 * r8107288;
double r8107290 = d2;
double r8107291 = r8107287 * r8107290;
double r8107292 = r8107289 + r8107291;
double r8107293 = d3;
double r8107294 = r8107287 * r8107293;
double r8107295 = r8107292 + r8107294;
return r8107295;
}
double f(double d1, double d2, double d3) {
double r8107296 = d3;
double r8107297 = d1;
double r8107298 = r8107296 * r8107297;
double r8107299 = 3.0;
double r8107300 = d2;
double r8107301 = r8107297 * r8107300;
double r8107302 = fma(r8107297, r8107299, r8107301);
double r8107303 = r8107298 + r8107302;
return r8107303;
}




Bits error versus d1




Bits error versus d2




Bits error versus d3
| Original | 0.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.0 |
Initial program 0.1
rmApplied fma-def0.0
Final simplification0.0
herbie shell --seed 2019164 +o rules:numerics
(FPCore (d1 d2 d3)
:name "FastMath test3"
:herbie-target
(* d1 (+ (+ 3 d2) d3))
(+ (+ (* d1 3) (* d1 d2)) (* d1 d3)))