Skip to main content

comnum_fec/
lib.rs

1//! # comnum-fec — channel coding
2//!
3//! Codes take information bits and return coded bits; decoders take log-likelihood
4//! ratios (positive for a 0, the convention of the whole library) and return the
5//! decided information bits. Every code implements [`block::BlockCode`] and the verb
6//! traits [`Encode`](comnum_core::traits::Encode) and [`Decode`](comnum_core::traits::Decode);
7//! the LDPC, convolutional, turbo and NR LDPC codes (punctured or not) also give the a
8//! posteriori LLRs of their information bits ([`block::SoftDecode`]).
9//!
10//! | Module | Content |
11//! |---|---|
12//! | [`crc`] | cyclic redundancy checks of 5G NR (CRC24A/B/C, CRC16, CRC11, CRC6) |
13//! | [`scrambling`] | the Gold scrambler of 3GPP TS 38.211 (its sequences are `comnum_math::sequences`) |
14//! | [`interleaving`] | block, random and QPP interleavers |
15//! | [`conv`] | convolutional codes: trellis, Viterbi (soft and hard), BCJR (log-MAP, max-log) |
16//! | [`turbo`] | turbo codes (two $(13, 15)_{8}$ recursive codes, LTE) with iterative decoding |
17//! | [`ldpc`] | LDPC codes: progressive edge growth, repeat-accumulate codes, `alist` files, belief propagation, (normalised and offset) min-sum, layered scheduling |
18//! | [`ccdm`] | constant-composition distribution matching (uniform bits to a shaped symbol sequence) |
19//! | [`bch`] | shortened binary BCH codes (the outer code of DVB-S2) with Berlekamp–Massey decoding, over the fields of [`comnum_math::gf2m`] |
20//! | [`rs`] | Reed–Solomon codes: systematic encoding, errors-and-erasures decoding, shortening, closed-form error rates |
21//! | [`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 |
22//! | [`polar`] | polar codes: Gaussian-approximation construction, SC and CRC-aided SC-list decoding |
23//! | [`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 |
24//! | [`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 |
25//! | [`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) |
26//! | [`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) |
27//! | [`bounds`] | the capacity of the binary-input AWGN channel and the normal approximation of the error probability at finite length |
28//! | [`block`] | the [`BlockCode`](block::BlockCode) interface and the soft output [`SoftDecode`](block::SoftDecode) |
29
30mod algebraic;
31pub mod bch;
32pub mod block;
33pub mod bounds;
34pub mod ccdm;
35pub mod ccsds;
36pub mod conv;
37pub mod crc;
38pub mod density_evolution;
39pub mod exit;
40pub mod interleaving;
41pub mod ldpc;
42pub mod nr;
43pub mod polar;
44pub mod puncture;
45pub mod rs;
46pub mod scrambling;
47pub mod turbo;