Ahmet Inan
ee9fe7439f
added CA-SCL example similar to DVB 2/3 LDPC+BCH code
...
- use floating point for numerical stability
- shortened message by 736 to get 64800 codeword bits
- replaced 10*16 bits of BCH coding with a 32 bit CRC
2021-07-22 16:06:39 +02:00
Ahmet Inan
0e1a5a45e4
the 2/3 LDPC code uses T=10 BCH code in DVB
v1.0
2021-07-22 09:24:45 +02:00
Ahmet Inan
d9b98653dd
use short code and a larger list with fixed-point
2021-07-13 13:45:06 +02:00
Ahmet Inan
a1764d4d83
added CRC aided SCL example
2021-07-13 12:15:57 +02:00
Ahmet Inan
9662bf9609
simplified branches with only information bits
2021-07-13 10:50:06 +02:00
Ahmet Inan
d87ce6e81e
simplified branches with only frozen bits
2021-07-13 10:50:06 +02:00
Ahmet Inan
631ec8beef
use uint32_t for the frozen bits
2021-07-13 10:50:06 +02:00
Ahmet Inan
687ae706d7
double needs __m128d
2021-07-13 10:50:06 +02:00
Ahmet Inan
cc1f412f5d
added polar bit freezers, encoders and decoders
2021-07-11 10:30:22 +02:00
Ahmet Inan
024ffa1d25
use C++17 for new alignment support
2021-07-10 23:34:09 +02:00
Ahmet Inan
6cddcef660
added vcopysign()
2021-07-10 23:34:09 +02:00
Ahmet Inan
778d51ac0f
added vshuf()
2021-06-21 10:17:46 +02:00
Ahmet Inan
369decd8c3
added and used DVB 2/3 code as default
2021-06-08 14:58:19 +02:00
Ahmet Inan
912c89a0b9
added more examples and references
2021-06-08 13:37:29 +02:00
Ahmet Inan
6bfbc4ed66
CRC is in CODE namespace
2021-04-13 14:58:12 +02:00
Ahmet Inan
189715364e
faster to xor the rows with machine word size
2020-08-10 10:56:20 +02:00
Ahmet Inan
671b2f22ce
relax range requirement for soft inputs to full range
2020-08-07 08:13:08 +02:00
Ahmet Inan
811024f128
added BCH(15, 5) T=3 example
2020-08-06 20:39:01 +02:00
Ahmet Inan
304a7c8045
pad horizontally to next size of machine word
2020-08-06 20:02:38 +02:00
Ahmet Inan
34a21139c7
added ordered statistics decoding
2020-08-06 13:39:09 +02:00
Ahmet Inan
2944a44b28
time to embrace #pragma once
2020-08-05 10:43:49 +02:00
Ahmet Inan
d196187187
use const on args to improve readability
2020-08-05 10:08:02 +02:00
Ahmet Inan
ea07a593d7
added BCH(127, 64) T=10 example
2020-07-31 10:10:38 +02:00
Ahmet Inan
451bc4e5cc
added BCH(255, 131) T=18 example
2020-07-28 15:41:45 +02:00
Ahmet Inan
48303e7f58
added vmul() and vsignum()
2020-07-13 10:21:19 +02:00
Ahmet Inan
0797171e03
don't rely on err[] being signed
2020-07-08 13:46:07 +02:00
Ahmet Inan
14967f8841
lowered ML-decoding threshold to K <= 4
2020-07-08 11:25:11 +02:00
Ahmet Inan
af5160efd3
return -1 for more than T errors
2020-07-08 11:15:29 +02:00
Ahmet Inan
21a44acf4b
added result_type, min() and max() methods
2020-07-04 18:53:47 +02:00
Ahmet Inan
6045870288
added BCH(31, 16) T=3 for testing
2020-06-15 07:33:21 +02:00
Ahmet Inan
945da60cbd
introduced L constant to play with the number
2020-06-14 23:13:10 +02:00
Ahmet Inan
eccb5ea436
removed T=4 as it is unrealistic for short codes
2020-06-14 21:10:11 +02:00
Ahmet Inan
b54be1c997
moved constructor generator argument to template parameter
2020-06-14 20:43:45 +02:00
Ahmet Inan
538950ca88
improved unrolled K = 2 .. 4 and removed 5 and 6
...
the generic divide and conquer method produces now better code than the
manually unrolled versions for K > 4
2020-06-14 00:48:11 +02:00
Ahmet Inan
9b4998a3c5
use in-place fast Walsh–Hadamard transform
2020-06-14 00:23:11 +02:00
Ahmet Inan
c0ab2902e8
minor cleanup
2020-06-14 00:01:37 +02:00
Ahmet Inan
a0f710f9b7
improved unrolled K = 2 .. 4 and removed 5 and 6
...
the generic divide and conquer method produces now better code than the
manually unrolled versions for K > 4
2020-06-13 22:42:29 +02:00
Ahmet Inan
3596f2943b
use in-place fast Walsh–Hadamard transform
2020-06-13 21:37:31 +02:00
Ahmet Inan
759ca4b896
added tests for Simplex and Hadamard encoders
2020-06-13 13:28:42 +02:00
Ahmet Inan
003d3bbd4f
divide and conquer decoders for K = 2 .. 6
2020-06-12 12:08:47 +02:00
Ahmet Inan
ae13fc7acc
doubled loops
2020-06-12 12:06:41 +02:00
Ahmet Inan
43c5d6a91a
encoder and soft decoder for augmented Hadamard codes
2020-06-11 23:11:31 +02:00
Ahmet Inan
619d8bd3b4
reduced code duplication with lambda update()
2020-06-11 12:29:22 +02:00
Ahmet Inan
8c2e824b4e
moved runtime assert for radius T to compile time
2020-06-11 08:26:15 +02:00
Ahmet Inan
961e5b19fa
only flip worst T bits
2020-06-10 20:16:33 +02:00
Ahmet Inan
77f27a8c5e
made T a template parameter
2020-06-10 19:53:10 +02:00
Ahmet Inan
f8b782033d
print histogram of distances and verify T
2020-06-10 18:32:52 +02:00
Ahmet Inan
fd0555a3e5
added more examples
2020-06-10 14:01:33 +02:00
Ahmet Inan
fd2cdb4d58
do ML decoding if K <= 6 and Chase decoding otherwise
2020-06-10 14:00:27 +02:00
Ahmet Inan
f83c785867
skip metric computation if same as last word
2020-06-09 22:09:56 +02:00