typedef unsigned long int L; #include #include char irrp[] = {0, 1, 3, 3, 3, 5, 3, 3, 27, 3, 9, 5, 9, 27, 33, 3, 43, 9, 9, 39, 9, 5, 3, 33, 27, 9, 27, 39, 3, 5, 3, 9, 141, 75, 27, 5, 53, 63, 99, 17, 57, 9, 39, 89, 33, 27, 3, 33, 45, 113, 29, 75, 9, 71, 125, 71, 149, 17, 99, 123, 3, 39, 105, 3, 27}; int q; // number of bits in an L. L irp; // pmul is the polynomial multiply for low 64 bits. L pmul(L a, L b){L sm=0; while(b) {if(b&1) sm ^= a; a = a<<1; b>>=1;} return sm;} // fmul is the field multiply. L fmul(L a, L b){L ts=1L<<(q-1); L sm=0; while(b) {if(b&1) sm ^= a; a = (a<<1)^(a&ts?irp:0); b>>=1;} return sm&((1L<>= p; y += p;}}} return y;} PR pqr(L n, L d){if(!d) exit(printf("foss\n")); // synthetic division int hn = High(n), hd = High(d); L a=0; int k = hn-hd; while(k>=0) {if(n&(1L<<(hn--))) {n ^= d< L rn(){int k=q; L j=0; while(k>30) {j = (j<<31) | random(); k -= 31;} return (j<i (F2 'p->i))) (((fileVal "Do") 'DoL) 64 (lambda (L) (let ((q (+ L 1))) (- (p->i ((F2 'gfip) q)) (expt 2 q)))))) */