|
|
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.