Ahmet Inan
ed4fe54ee9
experimenting with ordered reliability message bits
...
wanted to see if this can be exploited for graceful degradation but the
effect is minimal. order of reliability does not matter, but order of
decoding of message bits gives a very marginal effect.
This means that the probability of an errornous decode of a message bit
at the beginning is less likely than at the end, as a single error will
produce a cascade effect that breaks all later decoded bits.
2023-07-07 15:12:29 +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
Ahmet Inan
6cddcef660
added vcopysign()
2021-07-10 23:34:09 +02:00