|
|
1.1 root 1: #include "mprec.h"
2:
3:
4: /*
5: * Spow sets "b" to "a" raised to the "n" power. Note that
6: * a = b is acceptable.
7: */
8:
9: void
10: spow(a, n, b)
11: register mint *a, *b;
12: register unsigned n;
13: {
14: mint ac;
15:
16: minit(&ac);
17: mcopy(a, &ac);
18: mcopy(mone, b);
19: if (n != 0) {
20: for (; n != 1; n >>= 1, mult(&ac, &ac, &ac))
21: if (n % 2 != 0)
22: mult(&ac, b, b);
23: mult(&ac, b, b);
24: }
25: mpfree(ac.val);
26: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.