\left(d1 \cdot 3 + d1 \cdot d2\right) + d1 \cdot d3
\mathsf{fma}\left(3, d1, \mathsf{fma}\left(d1, d3, d1 \cdot d2\right)\right)double f(double d1, double d2, double d3) {
double r206824 = d1;
double r206825 = 3.0;
double r206826 = r206824 * r206825;
double r206827 = d2;
double r206828 = r206824 * r206827;
double r206829 = r206826 + r206828;
double r206830 = d3;
double r206831 = r206824 * r206830;
double r206832 = r206829 + r206831;
return r206832;
}
double f(double d1, double d2, double d3) {
double r206833 = 3.0;
double r206834 = d1;
double r206835 = d3;
double r206836 = d2;
double r206837 = r206834 * r206836;
double r206838 = fma(r206834, r206835, r206837);
double r206839 = fma(r206833, r206834, r206838);
return r206839;
}




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
Simplified0.0
Taylor expanded around 0 0.1
Simplified0.0
Final simplification0.0
herbie shell --seed 2020039 +o rules:numerics
(FPCore (d1 d2 d3)
:name "FastMath test3"
:precision binary64
:herbie-target
(* d1 (+ (+ 3 d2) d3))
(+ (+ (* d1 3) (* d1 d2)) (* d1 d3)))