1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//! # comnum-fec — channel coding
//!
//! Codes take information bits and return coded bits; decoders take log-likelihood
//! ratios (positive for a 0, the convention of the whole library) and return the
//! decided information bits. Every code implements [`block::BlockCode`] and the verb
//! traits [`Encode`](comnum_core::traits::Encode) and [`Decode`](comnum_core::traits::Decode);
//! the LDPC, convolutional, turbo and NR LDPC codes (punctured or not) also give the a
//! posteriori LLRs of their information bits ([`block::SoftDecode`]).
//!
//! | Module | Content |
//! |---|---|
//! | [`crc`] | cyclic redundancy checks of 5G NR (CRC24A/B/C, CRC16, CRC11, CRC6) |
//! | [`scrambling`] | the Gold scrambler of 3GPP TS 38.211 (its sequences are `comnum_math::sequences`) |
//! | [`interleaving`] | block, random and QPP interleavers |
//! | [`conv`] | convolutional codes: trellis, Viterbi (soft and hard), BCJR (log-MAP, max-log) |
//! | [`turbo`] | turbo codes (two $(13, 15)_{8}$ recursive codes, LTE) with iterative decoding |
//! | [`ldpc`] | LDPC codes: progressive edge growth, repeat-accumulate codes, `alist` files, belief propagation, (normalised and offset) min-sum, layered scheduling |
//! | [`ccdm`] | constant-composition distribution matching (uniform bits to a shaped symbol sequence) |
//! | [`bch`] | shortened binary BCH codes (the outer code of DVB-S2) with Berlekamp–Massey decoding, over the fields of [`comnum_math::gf2m`] |
//! | [`rs`] | Reed–Solomon codes: systematic encoding, errors-and-erasures decoding, shortening, closed-form error rates |
//! | [`puncture`] | puncturing of the convolutional and turbo codes (802.11, DVB-S patterns), the bit selection of a rate matching, free distance of punctured codes |
//! | [`polar`] | polar codes: Gaussian-approximation construction, SC and CRC-aided SC-list decoding |
//! | [`ccsds`] | the codes of CCSDS 131.0-B (TM synchronization and channel coding): Reed–Solomon in the dual basis with interleaving and virtual fill, the (8160, 7136) and AR4JA LDPC codes, the 16-state turbo codes |
//! | [`nr`] | the codes of 5G NR (TS 38.212): the LDPC code of the data channels and the polar code of the control channels, with their rate matching |
//! | [`density_evolution`] | density evolution of regular LDPC ensembles: Gallager's hard-decision algorithms A, B and E on the BSC, discretized belief propagation on the BSC and the binary-input AWGN channel, thresholds (Richardson & Urbanke 2001) |
//! | [`exit`] | EXIT charts: the J function, the mutual information of LLRs, transfer curves of recursive constituent codes under BCJR, the pinch-off of a parallel concatenation (ten Brink 2001) |
//! | [`bounds`] | the capacity of the binary-input AWGN channel and the normal approximation of the error probability at finite length |
//! | [`block`] | the [`BlockCode`](block::BlockCode) interface and the soft output [`SoftDecode`](block::SoftDecode) |