Commit graph

204 commits

Author SHA1 Message Date
Ahmet Inan
ea89a27e92 limit polar to order 20 and list decoder to 16 2023-07-25 11:48:23 +02:00
Ahmet Inan
01878fc81a use 3/10-rate sequence from TwoInt project 2023-07-14 10:29:39 +02:00
Ahmet Inan
55ddae0c6f do not rely on long double
see this project if more precision is needed:

https://github.com/xdsopl/TwoInt/blob/main/polar.cc
2023-07-07 10:29:58 +02:00
Ahmet Inan
cb7271c85f added polar code reliability sequence constructor 2023-07-07 10:24:32 +02:00
Ahmet Inan
b9d074adcf set frozen bits from a reliability sequence 2023-06-18 09:41:46 +02:00
Ahmet Inan
c810d3fc84 hopefully these names are less confusing 2023-06-09 10:06:34 +02:00
Ahmet Inan
272440d749 better not to be clever here 2023-06-07 12:27:01 +02:00
Ahmet Inan
60b9dbf2c0 we have the - operator now 2023-06-06 23:06:12 +02:00
Ahmet Inan
fe25fb2a69 flatten hot functions 2023-06-05 12:18:27 +02:00
Ahmet Inan
6ec9fcba1a compute constant terms for same row only once 2023-06-05 10:56:41 +02:00
Ahmet Inan
ebb989ce50 wait for more errors to get a better estimation 2023-06-01 07:28:17 +02:00
Ahmet Inan
7ec6a47c89 added code that might be faster on smaller CPUs 2023-05-18 15:55:11 +02:00
Ahmet Inan
e96e4abe0e oops 2023-05-11 13:41:19 +02:00
Ahmet Inan
9e32042df8 removed block shuffle 2023-05-11 09:01:08 +02:00
Ahmet Inan
8a055ac2b2 split reversible Fisher Yates shuffle into two 2023-05-11 09:00:27 +02:00
Ahmet Inan
8370e6a51c added SIMD acceleration for GF(2^8) and GF(2^16) 2023-05-09 16:04:32 +02:00
Ahmet Inan
5805246088 added multiply accumulate method 2023-05-08 08:49:14 +02:00
Ahmet Inan
078ae40d83 merged encoder and decoder 2023-05-08 08:12:17 +02:00
Ahmet Inan
26e83f13d6 optimize for Raspberry Pi 4 2023-05-05 14:20:00 +02:00
Ahmet Inan
2b7645ced3 use faster vqtbl1q_u8 on ARM64 2023-05-05 08:53:56 +02:00
Ahmet Inan
986059694e added support for aarch64
__ARM_NEON__ is not defined on gcc anymore ..
2023-05-05 08:06:59 +02:00
Ahmet Inan
f2ebaf4504 allow user to decode block by block 2023-04-28 10:55:46 +02:00
Ahmet Inan
43a0f7a5ec less is more 2023-04-25 09:48:34 +02:00
Ahmet Inan
daa622d1eb show some numbers 2023-04-24 15:44:19 +02:00
Ahmet Inan
bb527dd888 better not to bind here 2023-04-24 14:54:22 +02:00
Ahmet Inan
eb6e002d52 added Cauchy Reed Solomon erasure coding
Read more about the Cauchy matrix:

https://en.wikipedia.org/wiki/Cauchy_matrix

The Art of Computer Programming
Volume 1: Fundamental Algorithms
Donald E. Knuth - 1997
Paragraph 1.2.3: Sums and Products

Page 37, Cauchy's matrix:
$a_{ij} = \frac{1}{x_i + y_j}$

Page 38, Exercise 41:
$b_{ij} = \frac{\prod_{k=1}^{n}{(x_j + y_k)(x_k + y_i)}}{(x_j + y_i)\prod_{k \ne j}^{n}{(x_j - x_k)}\prod_{k \ne i}^{n}{(y_i - y_k)}}$
2023-04-24 13:35:30 +02:00
Ahmet Inan
3fa6dde2a8 make gnu compiler happy 2023-04-21 17:06:49 +02:00
Ahmet Inan
41fa2c7f40 use much faster __builtin_clz 2023-04-21 12:00:40 +02:00
Ahmet Inan
9f07a27eaf don't need to recompute degree of r 2023-04-21 09:37:36 +02:00
Ahmet Inan
4a24450351 we can now use TYPE, as degree is always smaller 2023-04-21 09:18:49 +02:00
Ahmet Inan
595cf80cc5 degree of poly is always larger than of the element 2023-04-21 09:17:09 +02:00
Ahmet Inan
9570346a59 experimenting with 3 times faster EEA
https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm#Simple_algebraic_field_extensions
2023-04-21 09:11:11 +02:00
Ahmet Inan
9774948cd3 added reference implementation and exhaustive testing 2023-04-20 14:04:32 +02:00
Ahmet Inan
39f135f8e0 added - operators 2023-04-16 13:10:37 +02:00
Ahmet Inan
03ac76c7d8 added reciprocal from index to index type 2023-04-15 20:17:31 +02:00
Ahmet Inan
e55c2bc083 added a simple reversible block wise shuffle 2023-03-28 11:44:15 +02:00
Ahmet Inan
346245c4cc added simple interleavers 2023-03-27 11:07:04 +02:00
Ahmet Inan
3a860b9c73 use compile time constant for size 2023-03-27 10:09:18 +02:00
Ahmet Inan
f6170cc923 added bit-reversal permutation 2023-03-25 10:52:39 +01:00
Ahmet Inan
e0857552bb added reversible Fisher-Yates shuffle 2023-03-25 09:56:27 +01:00
Ahmet Inan
476a346295 use -O2 with -ffast-math and -ftree-vectorize 2022-04-07 21:36:38 +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