\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 r6417095 = d1;
double r6417096 = 3.0;
double r6417097 = r6417095 * r6417096;
double r6417098 = d2;
double r6417099 = r6417095 * r6417098;
double r6417100 = r6417097 + r6417099;
double r6417101 = d3;
double r6417102 = r6417095 * r6417101;
double r6417103 = r6417100 + r6417102;
return r6417103;
}
double f(double d1, double d2, double d3) {
double r6417104 = d3;
double r6417105 = d1;
double r6417106 = r6417104 * r6417105;
double r6417107 = 3.0;
double r6417108 = d2;
double r6417109 = r6417105 * r6417108;
double r6417110 = fma(r6417105, r6417107, r6417109);
double r6417111 = r6417106 + r6417110;
return r6417111;
}




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 2019134 +o rules:numerics
(FPCore (d1 d2 d3)
:name "FastMath test3"
:herbie-target
(* d1 (+ (+ 3 d2) d3))
(+ (+ (* d1 3) (* d1 d2)) (* d1 d3)))