/* k= 47, s=1, t=1, TT=t-1, (r,w) =(-30,4), B=-1073741808 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 0 double dx_47_1f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; S = MODP((PP- MUL2R(30,XX[II]))+ MUL2R(4,XX[II])); XX[II] = MODP(S + XX[II0]); return (PINV* XX[II] + HH); } /* k= 47, s=1, t=1, TT=t-1, (r,w) =(-30,4), B=1073741839 (-1073741808)*/ #define TT 0 #define BB1N 1073741808 #define DMOD(n, p) ((n) % (p)) double dx_47_1d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; XX[II] = PP-DMOD(BB1N * XX[II]+(PP-XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 47, s=1, t=1, TT=t-1, (r,w) =(29,-10), B=536869888 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 0 double dx_47_1f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; S = MODP( MUL2R(29,XX[II])+(PP- MUL2R(10,XX[II]))); XX[II] = MODP(S + XX[II0]); return (PINV* XX[II] + HH); } /* k= 47, s=1, t=1, TT=t-1, (r,w) =(29,-10), B=536869888 */ #define TT 0 #define BB1 536869888 #define DMOD(n, p) ((n) % (p)) double dx_47_1d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; XX[II] = DMOD(BB1 * XX[II]+XX[II0], PP); return (PINV* XX[II] + HH); } /* k= 47, s=1, t=1, TT=t-1, (r,w) =(29,-11), B=536868864 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 0 double dx_47_1f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; S = MODP( MUL2R(29,XX[II])+(PP- MUL2R(11,XX[II]))); XX[II] = MODP(S + XX[II0]); return (PINV* XX[II] + HH); } /* k= 47, s=1, t=1, TT=t-1, (r,w) =(29,-11), B=536868864 */ #define TT 0 #define BB1 536868864 #define DMOD(n, p) ((n) % (p)) double dx_47_1d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; XX[II] = DMOD(BB1 * XX[II]+XX[II0], PP); return (PINV* XX[II] + HH); } /* k= 47, s=2, t=1, TT=t-1, (r,w) =(-29,-9), B=-536871424 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 0 double dx_47_2f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; S = MODP(XX[II] + XX[II0]); XX[II] = MODP((PP- MUL2R(29, S))+(PP- MUL2R(9,S))); return (PINV* XX[II] + HH); } /* k= 47, s=2, t=1, TT=t-1, (r,w) =(-29,-9), B=1610612223 (-536871424) */ #define TT 0 #define BB2N 536871424 #define DMOD(n, p) ((n) % (p)) double dx_47_2d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; XX[II] = PP-DMOD(BB2N * (XX[II]+XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 47, s=2, t=1, TT=t-1, (r,w) =(26,-21), B=65011712 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 0 double dx_47_2f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; S = MODP(XX[II] + XX[II0]); XX[II] = MODP( MUL2R(26, S)+(PP- MUL2R(21,S))); return (PINV* XX[II] + HH); } /* k= 47, s=2, t=1, TT=t-1, (r,w) =(26,-21), B=65011712 */ #define TT 0 #define BB2 65011712 #define DMOD(n, p) ((n) % (p)) double dx_47_2d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; XX[II] = DMOD(BB2 * (XX[II]+XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 47, s=2, t=1, TT=t-1, (r,w) =(-24,-19), B=-17301504 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 0 double dx_47_2f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; S = MODP(XX[II] + XX[II0]); XX[II] = MODP((PP- MUL2R(24, S))+(PP- MUL2R(19,S))); return (PINV* XX[II] + HH); } /* k= 47, s=2, t=1, TT=t-1, (r,w) =(-24,-19), B=2130182143 (-17301504) */ #define TT 0 #define BB2N 17301504 #define DMOD(n, p) ((n) % (p)) double dx_47_2d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; XX[II] = PP-DMOD(BB2N * (XX[II]+XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 47, s=3, t=1, TT=t-1, (r,w) =(29,-26), B=469762048 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 0 double dx_47_3f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K12 >= KK) K12 = 0; S = MODP(XX[II] + XX[K12]); S = MODP(S + XX[II0]); XX[II] = MODP( MUL2R(29, S)+(PP- MUL2R(26,S))); return (PINV* XX[II] + HH); } /* k= 47, s=3, t=1, TT=t-1, (r,w) =(29,-26), B=469762048 */ #define TT 0 #define BB3 469762048 #define DMOD(n, p) ((n) % (p)) double dx_47_3d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K12 >= KK) K12 = 0; XX[II] = DMOD(BB3 * (XX[II]+XX[K12]+XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 47, s=3, t=1, TT=t-1, (r,w) =(-27,-19), B=-134742016 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 0 double dx_47_3f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K12 >= KK) K12 = 0; S = MODP(XX[II] + XX[K12]); S = MODP(S + XX[II0]); XX[II] = MODP((PP- MUL2R(27, S))+(PP- MUL2R(19,S))); return (PINV* XX[II] + HH); } /* k= 47, s=3, t=1, TT=t-1, (r,w) =(-27,-19), B=2012741631 (-134742016) */ #define TT 0 #define BB3N 134742016 #define DMOD(n, p) ((n) % (p)) double dx_47_3d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K12 >= KK) K12 = 0; XX[II] = PP-DMOD(BB3N * (XX[II]+XX[K12]+XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 47, s=3, t=1, TT=t-1, (r,w) =(26,19), B=67633152 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 0 double dx_47_3f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K12 >= KK) K12 = 0; S = MODP(XX[II] + XX[K12]); S = MODP(S + XX[II0]); XX[II] = MODP( MUL2R(26, S)+ MUL2R(19,S)); return (PINV* XX[II] + HH); } /* k= 47, s=3, t=1, TT=t-1, (r,w) =(26,19), B=67633152 */ #define TT 0 #define BB3 67633152 #define DMOD(n, p) ((n) % (p)) double dx_47_3d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K12 >= KK) K12 = 0; XX[II] = DMOD(BB3 * (XX[II]+XX[K12]+XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 47, s=4, t=1, TT=t-1, (r,w) =(29,-6), B=536870848 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 0 double dx_47_4f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K13 >= KK) K13 = 0; if(++K23 >= KK) K23 = 0; XX[II] = MODP(XX[II]+XX[K13]); S = MODP(XX[K23]+XX[II0]); S = MODP(S + XX[II]); XX[II] = MODP( MUL2R(29, S)+(PP- MUL2R(6,S))); return (PINV* XX[II] + HH); } /* k= 47, s=4, t=1, TT=t-1, (r,w) =(29,-6), B=536870848 */ #define TT 0 #define BB4 536870848 #define DMOD(n, p) ((n) % (p)) double dx_47_4d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K13 >= KK) K13 = 0; if(++K23 >= KK) K23 = 0; XX[II] = DMOD(BB4 * (XX[II]+XX[K13]+XX[K23]+XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 47, s=4, t=1, TT=t-1, (r,w) =(26,-7), B=67108736 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 0 double dx_47_4f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K13 >= KK) K13 = 0; if(++K23 >= KK) K23 = 0; XX[II] = MODP(XX[II]+XX[K13]); S = MODP(XX[K23]+XX[II0]); S = MODP(S + XX[II]); XX[II] = MODP( MUL2R(26, S)+(PP- MUL2R(7,S))); return (PINV* XX[II] + HH); } /* k= 47, s=4, t=1, TT=t-1, (r,w) =(26,-7), B=67108736 */ #define TT 0 #define BB4 67108736 #define DMOD(n, p) ((n) % (p)) double dx_47_4d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K13 >= KK) K13 = 0; if(++K23 >= KK) K23 = 0; XX[II] = DMOD(BB4 * (XX[II]+XX[K13]+XX[K23]+XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 47, s=4, t=1, TT=t-1, (r,w) =(-25,-12), B=-33558528 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 0 double dx_47_4f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K13 >= KK) K13 = 0; if(++K23 >= KK) K23 = 0; XX[II] = MODP(XX[II]+XX[K13]); S = MODP(XX[K23]+XX[II0]); S = MODP(S + XX[II]); XX[II] = MODP((PP- MUL2R(25, S))+(PP- MUL2R(12,S))); return (PINV* XX[II] + HH); } /* k= 47, s=4, t=1, TT=t-1, (r,w) =(-25,-12), B=2113925119 (-33558528) */ #define TT 0 #define BB4N 33558528 #define DMOD(n, p) ((n) % (p)) double dx_47_4d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K13 >= KK) K13 = 0; if(++K23 >= KK) K23 = 0; XX[II] = PP-DMOD(BB4N * (XX[II]+XX[K13]+XX[K23]+XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 643, s=1, t=8, TT=t-1, (r,w) =(-29,1), B=-536870910 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 7 double dx_643_1f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; S = MODP((PP- MUL2R(29,XX[II]))+ MUL2R(1,XX[II])); XX[II] = MODP(S + XX[II0]); return (PINV* XX[II] + HH); } /* k= 643, s=1, t=8, TT=t-1, (r,w) =(-29,1), B=1610612737 (-536870910)*/ #define TT 7 #define BB1N 536870910 #define DMOD(n, p) ((n) % (p)) double dx_643_1d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; XX[II] = PP-DMOD(BB1N * XX[II]+(PP-XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 643, s=1, t=10, TT=t-1, (r,w) =(-28,11), B=-268433408 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 9 double dx_643_1f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; S = MODP((PP- MUL2R(28,XX[II]))+ MUL2R(11,XX[II])); XX[II] = MODP(S + XX[II0]); return (PINV* XX[II] + HH); } /* k= 643, s=1, t=10, TT=t-1, (r,w) =(-28,11), B=1879050239 (-268433408)*/ #define TT 9 #define BB1N 268433408 #define DMOD(n, p) ((n) % (p)) double dx_643_1d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; XX[II] = PP-DMOD(BB1N * XX[II]+(PP-XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 643, s=1, t=5, TT=t-1, (r,w) =(20,1), B=1048578 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 4 double dx_643_1f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; S = MODP( MUL2R(20,XX[II])+ MUL2R(1,XX[II])); XX[II] = MODP(S + XX[II0]); return (PINV* XX[II] + HH); } /* k= 643, s=1, t=5, TT=t-1, (r,w) =(20,1), B=1048578 */ #define TT 4 #define BB1 1048578 #define DMOD(n, p) ((n) % (p)) double dx_643_1d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; XX[II] = DMOD(BB1 * XX[II]+XX[II0], PP); return (PINV* XX[II] + HH); } /* k= 643, s=2, t=5, TT=t-1, (r,w) =(25,13), B=33562624 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 4 double dx_643_2f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; S = MODP(XX[II] + XX[II0]); XX[II] = MODP( MUL2R(25, S)+ MUL2R(13,S)); return (PINV* XX[II] + HH); } /* k= 643, s=2, t=5, TT=t-1, (r,w) =(25,13), B=33562624 */ #define TT 4 #define BB2 33562624 #define DMOD(n, p) ((n) % (p)) double dx_643_2d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; XX[II] = DMOD(BB2 * (XX[II]+XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 643, s=2, t=2, TT=t-1, (r,w) =(25,11), B=33556480 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 1 double dx_643_2f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; S = MODP(XX[II] + XX[II0]); XX[II] = MODP( MUL2R(25, S)+ MUL2R(11,S)); return (PINV* XX[II] + HH); } /* k= 643, s=2, t=2, TT=t-1, (r,w) =(25,11), B=33556480 */ #define TT 1 #define BB2 33556480 #define DMOD(n, p) ((n) % (p)) double dx_643_2d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; XX[II] = DMOD(BB2 * (XX[II]+XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 643, s=2, t=4, TT=t-1, (r,w) =(-23,-12), B=-8392704 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 3 double dx_643_2f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; S = MODP(XX[II] + XX[II0]); XX[II] = MODP((PP- MUL2R(23, S))+(PP- MUL2R(12,S))); return (PINV* XX[II] + HH); } /* k= 643, s=2, t=4, TT=t-1, (r,w) =(-23,-12), B=2139090943 (-8392704) */ #define TT 3 #define BB2N 8392704 #define DMOD(n, p) ((n) % (p)) double dx_643_2d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; XX[II] = PP-DMOD(BB2N * (XX[II]+XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 643, s=3, t=2, TT=t-1, (r,w) =(29,10), B=536871936 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 1 double dx_643_3f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K12 >= KK) K12 = 0; S = MODP(XX[II] + XX[K12]); S = MODP(S + XX[II0]); XX[II] = MODP( MUL2R(29, S)+ MUL2R(10,S)); return (PINV* XX[II] + HH); } /* k= 643, s=3, t=2, TT=t-1, (r,w) =(29,10), B=536871936 */ #define TT 1 #define BB3 536871936 #define DMOD(n, p) ((n) % (p)) double dx_643_3d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K12 >= KK) K12 = 0; XX[II] = DMOD(BB3 * (XX[II]+XX[K12]+XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 643, s=3, t=8, TT=t-1, (r,w) =(27,-16), B=134152192 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 7 double dx_643_3f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K12 >= KK) K12 = 0; S = MODP(XX[II] + XX[K12]); S = MODP(S + XX[II0]); XX[II] = MODP( MUL2R(27, S)+(PP- MUL2R(16,S))); return (PINV* XX[II] + HH); } /* k= 643, s=3, t=8, TT=t-1, (r,w) =(27,-16), B=134152192 */ #define TT 7 #define BB3 134152192 #define DMOD(n, p) ((n) % (p)) double dx_643_3d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K12 >= KK) K12 = 0; XX[II] = DMOD(BB3 * (XX[II]+XX[K12]+XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 643, s=3, t=1, TT=t-1, (r,w) =(-26,14), B=-67092480 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 0 double dx_643_3f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K12 >= KK) K12 = 0; S = MODP(XX[II] + XX[K12]); S = MODP(S + XX[II0]); XX[II] = MODP((PP- MUL2R(26, S))+ MUL2R(14,S)); return (PINV* XX[II] + HH); } /* k= 643, s=3, t=1, TT=t-1, (r,w) =(-26,14), B=2080391167 (-67092480) */ #define TT 0 #define BB3N 67092480 #define DMOD(n, p) ((n) % (p)) double dx_643_3d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K12 >= KK) K12 = 0; XX[II] = PP-DMOD(BB3N * (XX[II]+XX[K12]+XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 643, s=4, t=7, TT=t-1, (r,w) =(29,-26), B=469762048 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 6 double dx_643_4f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K13 >= KK) K13 = 0; if(++K23 >= KK) K23 = 0; XX[II] = MODP(XX[II]+XX[K13]); S = MODP(XX[K23]+XX[II0]); S = MODP(S + XX[II]); XX[II] = MODP( MUL2R(29, S)+(PP- MUL2R(26,S))); return (PINV* XX[II] + HH); } /* k= 643, s=4, t=7, TT=t-1, (r,w) =(29,-26), B=469762048 */ #define TT 6 #define BB4 469762048 #define DMOD(n, p) ((n) % (p)) double dx_643_4d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K13 >= KK) K13 = 0; if(++K23 >= KK) K23 = 0; XX[II] = DMOD(BB4 * (XX[II]+XX[K13]+XX[K23]+XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 643, s=4, t=8, TT=t-1, (r,w) =(26,-3), B=67108856 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 7 double dx_643_4f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K13 >= KK) K13 = 0; if(++K23 >= KK) K23 = 0; XX[II] = MODP(XX[II]+XX[K13]); S = MODP(XX[K23]+XX[II0]); S = MODP(S + XX[II]); XX[II] = MODP( MUL2R(26, S)+(PP- MUL2R(3,S))); return (PINV* XX[II] + HH); } /* k= 643, s=4, t=8, TT=t-1, (r,w) =(26,-3), B=67108856 */ #define TT 7 #define BB4 67108856 #define DMOD(n, p) ((n) % (p)) double dx_643_4d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K13 >= KK) K13 = 0; if(++K23 >= KK) K23 = 0; XX[II] = DMOD(BB4 * (XX[II]+XX[K13]+XX[K23]+XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 643, s=4, t=5, TT=t-1, (r,w) =(-25,-21), B=-35651584 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 4 double dx_643_4f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K13 >= KK) K13 = 0; if(++K23 >= KK) K23 = 0; XX[II] = MODP(XX[II]+XX[K13]); S = MODP(XX[K23]+XX[II0]); S = MODP(S + XX[II]); XX[II] = MODP((PP- MUL2R(25, S))+(PP- MUL2R(21,S))); return (PINV* XX[II] + HH); } /* k= 643, s=4, t=5, TT=t-1, (r,w) =(-25,-21), B=2111832063 (-35651584) */ #define TT 4 #define BB4N 35651584 #define DMOD(n, p) ((n) % (p)) double dx_643_4d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K13 >= KK) K13 = 0; if(++K23 >= KK) K23 = 0; XX[II] = PP-DMOD(BB4N * (XX[II]+XX[K13]+XX[K23]+XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 1597, s=1, t=13, TT=t-1, (r,w) =(-27,-4), B=-134217744 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 12 double dx_1597_1f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; S = MODP((PP- MUL2R(27,XX[II]))+(PP- MUL2R(4,XX[II]))); XX[II] = MODP(S + XX[II0]); return (PINV* XX[II] + HH); } /* k= 1597, s=1, t=13, TT=t-1, (r,w) =(-27,-4), B=2013265903 (-134217744)*/ #define TT 12 #define BB1N 134217744 #define DMOD(n, p) ((n) % (p)) double dx_1597_1d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; XX[II] = PP-DMOD(BB1N * XX[II]+(PP-XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 1597, s=1, t=14, TT=t-1, (r,w) =(-26,6), B=-67108800 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 13 double dx_1597_1f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; S = MODP((PP- MUL2R(26,XX[II]))+ MUL2R(6,XX[II])); XX[II] = MODP(S + XX[II0]); return (PINV* XX[II] + HH); } /* k= 1597, s=1, t=14, TT=t-1, (r,w) =(-26,6), B=2080374847 (-67108800)*/ #define TT 13 #define BB1N 67108800 #define DMOD(n, p) ((n) % (p)) double dx_1597_1d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; XX[II] = PP-DMOD(BB1N * XX[II]+(PP-XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 1597, s=1, t=4, TT=t-1, (r,w) =(-24,4), B=-16777200 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 3 double dx_1597_1f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; S = MODP((PP- MUL2R(24,XX[II]))+ MUL2R(4,XX[II])); XX[II] = MODP(S + XX[II0]); return (PINV* XX[II] + HH); } /* k= 1597, s=1, t=4, TT=t-1, (r,w) =(-24,4), B=2130706447 (-16777200)*/ #define TT 3 #define BB1N 16777200 #define DMOD(n, p) ((n) % (p)) double dx_1597_1d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; XX[II] = PP-DMOD(BB1N * XX[II]+(PP-XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 1597, s=2, t=4, TT=t-1, (r,w) =(30,-19), B=1073217536 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 3 double dx_1597_2f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; S = MODP(XX[II] + XX[II0]); XX[II] = MODP( MUL2R(30, S)+(PP- MUL2R(19,S))); return (PINV* XX[II] + HH); } /* k= 1597, s=2, t=4, TT=t-1, (r,w) =(30,-19), B=1073217536 */ #define TT 3 #define BB2 1073217536 #define DMOD(n, p) ((n) % (p)) double dx_1597_2d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; XX[II] = DMOD(BB2 * (XX[II]+XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 1597, s=2, t=1, TT=t-1, (r,w) =(29,-11), B=536868864 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 0 double dx_1597_2f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; S = MODP(XX[II] + XX[II0]); XX[II] = MODP( MUL2R(29, S)+(PP- MUL2R(11,S))); return (PINV* XX[II] + HH); } /* k= 1597, s=2, t=1, TT=t-1, (r,w) =(29,-11), B=536868864 */ #define TT 0 #define BB2 536868864 #define DMOD(n, p) ((n) % (p)) double dx_1597_2d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; XX[II] = DMOD(BB2 * (XX[II]+XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 1597, s=2, t=7, TT=t-1, (r,w) =(-25,-7), B=-33554560 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 6 double dx_1597_2f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; S = MODP(XX[II] + XX[II0]); XX[II] = MODP((PP- MUL2R(25, S))+(PP- MUL2R(7,S))); return (PINV* XX[II] + HH); } /* k= 1597, s=2, t=7, TT=t-1, (r,w) =(-25,-7), B=2113929087 (-33554560) */ #define TT 6 #define BB2N 33554560 #define DMOD(n, p) ((n) % (p)) double dx_1597_2d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; XX[II] = PP-DMOD(BB2N * (XX[II]+XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 1597, s=3, t=15, TT=t-1, (r,w) =(-24,16), B=-16711680 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 14 double dx_1597_3f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K12 >= KK) K12 = 0; S = MODP(XX[II] + XX[K12]); S = MODP(S + XX[II0]); XX[II] = MODP((PP- MUL2R(24, S))+ MUL2R(16,S)); return (PINV* XX[II] + HH); } /* k= 1597, s=3, t=15, TT=t-1, (r,w) =(-24,16), B=2130771967 (-16711680) */ #define TT 14 #define BB3N 16711680 #define DMOD(n, p) ((n) % (p)) double dx_1597_3d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K12 >= KK) K12 = 0; XX[II] = PP-DMOD(BB3N * (XX[II]+XX[K12]+XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 1597, s=3, t=35, TT=t-1, (r,w) =(22,0), B=4194305 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 34 double dx_1597_3f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K12 >= KK) K12 = 0; S = MODP(XX[II] + XX[K12]); S = MODP(S + XX[II0]); XX[II] = MODP( MUL2R(22, S)+(PP- MUL2R(0,S))); return (PINV* XX[II] + HH); } /* k= 1597, s=3, t=35, TT=t-1, (r,w) =(22,0), B=4194305 */ #define TT 34 #define BB3 4194305 #define DMOD(n, p) ((n) % (p)) double dx_1597_3d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K12 >= KK) K12 = 0; XX[II] = DMOD(BB3 * (XX[II]+XX[K12]+XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 1597, s=3, t=30, TT=t-1, (r,w) =(-20,0), B=-1048575 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 29 double dx_1597_3f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K12 >= KK) K12 = 0; S = MODP(XX[II] + XX[K12]); S = MODP(S + XX[II0]); XX[II] = MODP((PP- MUL2R(20, S))+(PP- MUL2R(0,S))); return (PINV* XX[II] + HH); } /* k= 1597, s=3, t=30, TT=t-1, (r,w) =(-20,0), B=2146435072 (-1048575) */ #define TT 29 #define BB3N 1048575 #define DMOD(n, p) ((n) % (p)) double dx_1597_3d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K12 >= KK) K12 = 0; XX[II] = PP-DMOD(BB3N * (XX[II]+XX[K12]+XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 1597, s=4, t=3, TT=t-1, (r,w) =(29,8), B=536871168 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 2 double dx_1597_4f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K13 >= KK) K13 = 0; if(++K23 >= KK) K23 = 0; XX[II] = MODP(XX[II]+XX[K13]); S = MODP(XX[K23]+XX[II0]); S = MODP(S + XX[II]); XX[II] = MODP( MUL2R(29, S)+ MUL2R(8,S)); return (PINV* XX[II] + HH); } /* k= 1597, s=4, t=3, TT=t-1, (r,w) =(29,8), B=536871168 */ #define TT 2 #define BB4 536871168 #define DMOD(n, p) ((n) % (p)) double dx_1597_4d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K13 >= KK) K13 = 0; if(++K23 >= KK) K23 = 0; XX[II] = DMOD(BB4 * (XX[II]+XX[K13]+XX[K23]+XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 1597, s=4, t=3, TT=t-1, (r,w) =(28,11), B=268437504 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 2 double dx_1597_4f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K13 >= KK) K13 = 0; if(++K23 >= KK) K23 = 0; XX[II] = MODP(XX[II]+XX[K13]); S = MODP(XX[K23]+XX[II0]); S = MODP(S + XX[II]); XX[II] = MODP( MUL2R(28, S)+ MUL2R(11,S)); return (PINV* XX[II] + HH); } /* k= 1597, s=4, t=3, TT=t-1, (r,w) =(28,11), B=268437504 */ #define TT 2 #define BB4 268437504 #define DMOD(n, p) ((n) % (p)) double dx_1597_4d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K13 >= KK) K13 = 0; if(++K23 >= KK) K23 = 0; XX[II] = DMOD(BB4 * (XX[II]+XX[K13]+XX[K23]+XX[II0]), PP); return (PINV* XX[II] + HH); } /* k= 1597, s=4, t=1, TT=t-1, (r,w) =(22,-3), B=4194296 */ unsigned long MODP(unsigned long z) {return (((z)&PP)+((z)>>31));} #define MUL2R(b,x) ( ((x)>>(31-b)) + ((x)<<(b))&PP ) #define TT 0 double dx_1597_4f() { unsigned long S; int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K13 >= KK) K13 = 0; if(++K23 >= KK) K23 = 0; XX[II] = MODP(XX[II]+XX[K13]); S = MODP(XX[K23]+XX[II0]); S = MODP(S + XX[II]); XX[II] = MODP( MUL2R(22, S)+(PP- MUL2R(3,S))); return (PINV* XX[II] + HH); } /* k= 1597, s=4, t=1, TT=t-1, (r,w) =(22,-3), B=4194296 */ #define TT 0 #define BB4 4194296 #define DMOD(n, p) ((n) % (p)) double dx_1597_4d() { int II0 = II-TT; if(II0 < 0) II0 += KK; if(++II >= KK) II = 0; if(++K13 >= KK) K13 = 0; if(++K23 >= KK) K23 = 0; XX[II] = DMOD(BB4 * (XX[II]+XX[K13]+XX[K23]+XX[II0]), PP); return (PINV* XX[II] + HH); }