| 570 | |
| 571 | |
| 572 | void rem (unsigned long *a, unsigned long *q, unsigned long p, int °a, |
| 573 | int degq) |
| 574 | { |
| 575 | while(degq <= dega) |
| 576 | { |
| 577 | unsigned d = dega - degq; |
| 578 | long factor = multMod (a[dega], modularInverse (q[degq], p), p); |
| 579 | for(int i = degq; i >= 0; i--) |
| 580 | { |
| 581 | long tmp = p - multMod (factor, q[i], p); |
| 582 | a[d + i] += tmp; |
| 583 | if (a[d + i] >= p) |
| 584 | { |
| 585 | a[d + i] -= p; |
| 586 | } |
| 587 | } |
| 588 | |
| 589 | while(dega >= 0 && a[dega] == 0) |
| 590 | { |
| 591 | dega--; |
| 592 | } |
| 593 | } |
| 594 | } |
| 595 | |
| 596 | |
| 597 | void quo (unsigned long *a, unsigned long *q, unsigned long p, int °a, |
no test coverage detected