[c0,c1,c2] += n * [d0,d1,d2]. c2 is 0 initially */
| 39 | |
| 40 | /* [c0,c1,c2] += n * [d0,d1,d2]. c2 is 0 initially */ |
| 41 | inline void mulnadd3(limb_t& c0, limb_t& c1, limb_t& c2, limb_t& d0, limb_t& d1, limb_t& d2, const limb_t& n) |
| 42 | { |
| 43 | double_limb_t t = (double_limb_t)d0 * n + c0; |
| 44 | c0 = t; |
| 45 | t >>= LIMB_SIZE; |
| 46 | t += (double_limb_t)d1 * n + c1; |
| 47 | c1 = t; |
| 48 | t >>= LIMB_SIZE; |
| 49 | c2 = t + d2 * n; |
| 50 | } |
| 51 | |
| 52 | /* [c0,c1] *= n */ |
| 53 | inline void muln2(limb_t& c0, limb_t& c1, const limb_t& n) |