6 int myCRC[16],
D[64],
C[16];
8 for (
int i = 0;
i < 64; ++
i ) { D[
i] = (word >>
i) & 0
x1; }
9 for (
int i = 0;
i < 16; ++
i ) { C[
i] = (myC>>
i) & 0
x1; }
11 myCRC[0] = ( D[63] + D[62] + D[61] + D[60] + D[55] + D[54] +
12 D[53] + D[52] + D[51] + D[50] + D[49] + D[48] +
13 D[47] + D[46] + D[45] + D[43] + D[41] + D[40] +
14 D[39] + D[38] + D[37] + D[36] + D[35] + D[34] +
15 D[33] + D[32] + D[31] + D[30] + D[27] + D[26] +
16 D[25] + D[24] + D[23] + D[22] + D[21] + D[20] +
17 D[19] + D[18] + D[17] + D[16] + D[15] + D[13] +
18 D[12] + D[11] + D[10] + D[9] + D[8] + D[7] +
19 D[6] + D[5] + D[4] + D[3] + D[2] + D[1] +
20 D[0] + C[0] + C[1] + C[2] + C[3] + C[4] +
21 C[5] + C[6] + C[7] + C[12] + C[13] + C[14] +
24 myCRC[1] = ( D[63] + D[62] + D[61] + D[56] + D[55] + D[54] +
25 D[53] + D[52] + D[51] + D[50] + D[49] + D[48] +
26 D[47] + D[46] + D[44] + D[42] + D[41] + D[40] +
27 D[39] + D[38] + D[37] + D[36] + D[35] + D[34] +
28 D[33] + D[32] + D[31] + D[28] + D[27] + D[26] +
29 D[25] + D[24] + D[23] + D[22] + D[21] + D[20] +
30 D[19] + D[18] + D[17] + D[16] + D[14] + D[13] +
31 D[12] + D[11] + D[10] + D[9] + D[8] + D[7] +
32 D[6] + D[5] + D[4] + D[3] + D[2] + D[1] +
33 C[0] + C[1] + C[2] + C[3] + C[4] + C[5] +
34 C[6] + C[7] + C[8] + C[13] + C[14] + C[15] )%2;
36 myCRC[2] = ( D[61] + D[60] + D[57] + D[56] + D[46] + D[42] +
37 D[31] + D[30] + D[29] + D[28] + D[16] + D[14] +
38 D[1] + D[0] + C[8] + C[9] + C[12] + C[13] )%2;
40 myCRC[3] = ( D[62] + D[61] + D[58] + D[57] + D[47] + D[43] +
41 D[32] + D[31] + D[30] + D[29] + D[17] + D[15] +
42 D[2] + D[1] + C[9] + C[10] + C[13] + C[14] )%2;
44 myCRC[4] = ( D[63] + D[62] + D[59] + D[58] + D[48] + D[44] +
45 D[33] + D[32] + D[31] + D[30] + D[18] + D[16] +
46 D[3] + D[2] + C[0] + C[10] + C[11] + C[14] +
49 myCRC[5] = ( D[63] + D[60] + D[59] + D[49] + D[45] + D[34] +
50 D[33] + D[32] + D[31] + D[19] + D[17] + D[4] +
51 D[3] + C[1] + C[11] + C[12] + C[15] )%2;
53 myCRC[6] = ( D[61] + D[60] + D[50] + D[46] + D[35] + D[34] +
54 D[33] + D[32] + D[20] + D[18] + D[5] + D[4] +
55 C[2] + C[12] + C[13] )%2;
57 myCRC[7] = ( D[62] + D[61] + D[51] + D[47] + D[36] + D[35] +
58 D[34] + D[33] + D[21] + D[19] + D[6] + D[5] +
59 C[3] + C[13] + C[14] )%2;
61 myCRC[8] = ( D[63] + D[62] + D[52] + D[48] + D[37] + D[36] +
62 D[35] + D[34] + D[22] + D[20] + D[7] + D[6] +
63 C[0] + C[4] + C[14] + C[15] )%2;
65 myCRC[9] = ( D[63] + D[53] + D[49] + D[38] + D[37] + D[36] +
66 D[35] + D[23] + D[21] + D[8] + D[7] + C[1] +
69 myCRC[10] = ( D[54] + D[50] + D[39] + D[38] + D[37] + D[36] +
70 D[24] + D[22] + D[9] + D[8] + C[2] + C[6] )%2;
72 myCRC[11] = ( D[55] + D[51] + D[40] + D[39] + D[38] + D[37] +
73 D[25] + D[23] + D[10] + D[9] + C[3] + C[7] )%2;
75 myCRC[12] = ( D[56] + D[52] + D[41] + D[40] + D[39] + D[38] +
76 D[26] + D[24] + D[11] + D[10] + C[4] + C[8] )%2;
78 myCRC[13] = ( D[57] + D[53] + D[42] + D[41] + D[40] + D[39] +
79 D[27] + D[25] + D[12] + D[11] + C[5] + C[9] )%2;
81 myCRC[14] = ( D[58] + D[54] + D[43] + D[42] + D[41] + D[40] +
82 D[28] + D[26] + D[13] + D[12] + C[6] + C[10] )%2;
84 myCRC[15] = ( D[63] + D[62] + D[61] + D[60] + D[59] + D[54] +
85 D[53] + D[52] + D[51] + D[50] + D[49] + D[48] +
86 D[47] + D[46] + D[45] + D[44] + D[42] + D[40] +
87 D[39] + D[38] + D[37] + D[36] + D[35] + D[34] +
88 D[33] + D[32] + D[31] + D[30] + D[29] + D[26] +
89 D[25] + D[24] + D[23] + D[22] + D[21] + D[20] +
90 D[19] + D[18] + D[17] + D[16] + D[15] + D[14] +
91 D[12] + D[11] + D[10] + D[9] + D[8] + D[7] +
92 D[6] + D[5] + D[4] + D[3] + D[2] + D[1] +
93 D[0] + C[0] + C[1] + C[2] + C[3] + C[4] +
94 C[5] + C[6] + C[11] + C[12] + C[13] + C[14] +
98 for (
int i = 0;
i < 16 ; ++
i) { tempC = tempC + ( myCRC[
i] <<
i ); }
DecomposeProduct< arg, typename Div::arg > D