| 510 | |
| 511 | |
| 512 | static word LinearMultiply(word *C, const word *A, word B, unsigned int N) |
| 513 | { |
| 514 | word carry=0; |
| 515 | for(unsigned i=0; i<N; i++) |
| 516 | { |
| 517 | DWord p = DWord::MultiplyAndAdd(A[i], B, carry); |
| 518 | C[i] = p.GetLowHalf(); |
| 519 | carry = p.GetHighHalf(); |
| 520 | } |
| 521 | return carry; |
| 522 | } |
| 523 | |
| 524 | |
| 525 | static word AtomicInverseModPower2(word A) |
no test coverage detected