WSJT-X/lib/ldpc32_table.c
Steven Franke 7b54487b91 Change msk32 messages to (32,16) code (no sync word) with 6-bit report and 10-bit hash. No decoder yet.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6952 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2016-07-26 23:14:30 +00:00

31 lines
796 B
C

void ldpc32_table_(int cw[])
{
// Compute and return the table of 65535 codewords for the (32,16) code.
// Array y contains the sixteen rows (columns) of the parity-check matrix
int y[16] = { 0xd452, 0x7ecb, 0xc5d5, 0xf81c,
0x61d7, 0x0ed8, 0xa3c5, 0x9ef9,
0xb3bd, 0xe5b6, 0x2fcd, 0xc23a,
0x5deb, 0xfa0e, 0x35fc, 0x1379 };
unsigned int c[2]; /* Codeword composed of 16-bit info and 16-bit parity */
int i,j,k;
int aux;
int weight(int vector);
for(k=0; k<65536; k++) {
c[0] = k;
c[1] = 0;
for (i=0; i<16; i++) {
aux = 0;
for (j=0; j<16; j++) {
aux = aux ^ ((c[0] & y[i]) >> j & 1);
}
c[1] = (c[1] << 1) ^ aux;
}
cw[k]=65536*c[1] + c[0];
}
}