  This paper describes the design and C99 implementation of a free and
open-source Low-Density Parity-Check (LDPC) codes encoder and decoder focused
primarily on the Quasi-Cyclic LDPC (QCLDPC) codes utilized in the IEEE
802.11ax-2021 (Wi-Fi 6) and IEEE 802.16-2017 (WiMAX) standards. The encoder is
designed in two variants: the first one universal, the other a minimal memory
usage design. The decoder provides a single- and multi- threaded implementation
of the layered singlescan min-sum LDPC decoding algorithm both for floating
point and fixed-point arithmetic. Both encoder and decoder are directly
callable from MATLAB using the provided MEX wrappers but are designed to be
simply used in any C project. A comparison of throughput and error performance
with the recent commercial closed-source MEX implementation of an LDPC encoder
and decoder introduced in MATLAB R2021b Communications Toolbox is provided.
Source code portability to alternative nonx86 architectures is facilitated by
using only the standard C99 constructs, GNU tools, and POSIX libraries. The
implementation maintains low-memory requirements, enabling its deployment in a
constrained-architecture in the context of Internet of Things. All source codes
are freely available on GitHub under a permissive BSD license.
