package lt-code
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=59c8c4022413d5cf28439b08fbded9c408fdf8dcfe77a92c84391769c7be78b9
Description
Luby Transform codes are a type of fountain codes, allowing data recovery from data erasure.
This library provides an encoder and decoder for a Luby Transform code, and can operate in systematic or non-systematic mode.
Published: 21 Jul 2021
README
OCaml-LT-code
OCaml implementation of a Luby Transform code
Technical details
PRNG and hash used are based on the Lehmer random number generator to achieve good performance.
Degree selection of drops is randomly generated once during construction of encoder, and randomly regenerated once during resetting. This is to ensure a bad selection does not have a lasting effect.
The robust soliton distribution is used for the degree selection, with constant factors tuned to favour low degree count. There is an additional modification for the case of systematic encoding, in which degrees of parity drops are multiplied by a factor proportional to the ratio between data blocks and parity drops and an additional adjustable factor. This essentially "amplifies" the coverage of each parity drop due to the reduced total number of parity drops.
License
Code files are licensed under the MIT license as specified in the LICENSE
file
Acknowledgement/references
Luby transform code implementation is based on a blog post by François Andrieux and the corresponding repo
M.Luby, "LT Codes", The 43rd Annual IEEE Symposium on Foundations of Computer Science, 2002.
Tirronen, Tuomas (2005). "Optimal Degree Distributions for LT Codes in Small Cases". Helsinki University of Technology.
Lehmer random number generator implementation is based on sample C99 code described on Wikipedia
Dependencies (4)
-
cstruct
>= "6.0.0"
-
containers
>= "3.4"
-
dune
>= "2.7.0"
-
ocaml
>= "4.08.1"
Dev Dependencies (3)
-
qcheck
with-test
-
qcheck-alcotest
with-test
-
alcotest
with-test
Used by
None
Conflicts
None