# Low Density Parity Check Codes

- [Introduction](introduction.md)

  - [Constructing LDPC Codes](introduction.md#constructing-ldpc-codes)

    - [`LDPCCode(H): MtrxSprs → Code`](introduction.md#function-ldpccode-mtrxsprs)

    - [`GallagerCode(n, a, b): RngIntElt, RngIntElt, RngIntElt → Code`](introduction.md#function-gallagercode-rngintelt-rngintelt-rngintelt)

    - [`RegularLDPCEnsemble(n, a, b): RngIntElt, RngIntElt, RngIntElt → Code`](introduction.md#function-regularldpcensemble-rngintelt-rngintelt-rngintelt)

    - [`IrregularLDPCEnsemble(n, Sc, Sv): RngIntElt, SeqEnum, SeqEnum → Code`](introduction.md#function-irregularldpcensemble-rngintelt-seqenum-seqenum)

    - [`MargulisCode(p): RngIntElt → Code`](introduction.md#function-marguliscode-rngintelt)

    - [`Example: Is LDPC`](introduction.md#example-ex-f1c0a4)

  - [Access Functions](introduction.md#access-functions)

    - [`IsLDPC(C): Code → BoolElt`](introduction.md#function-isldpc-code)

    - [`AssignLDPCMatrix(~C, H): Code, MtrxSprs`](introduction.md#function-assignldpcmatrix-code-mtrxsprs-ref)

    - [`LDPCMatrix(C): Code → MtrxSprs`](introduction.md#function-ldpcmatrix-code)

    - [`LDPCDensity(C): Code → FldReElt`](introduction.md#function-ldpcdensity-code)

    - [`IsRegularLDPC(C): Code → BoolElt`](introduction.md#function-isregularldpc-code)

    - [`TannerGraph(C): Code → Grph`](introduction.md#function-tannergraph-code)

    - [`LDPCGirth(C): Code → RngIntElt`](introduction.md#function-ldpcgirth-code)

    - [`LDPCEnsembleRate(v, c): RngIntElt, RngIntElt → FldReElt`](introduction.md#function-ldpcensemblerate-rngintelt-rngintelt)

    - [`LDPCEnsembleRate(Sv, Sc): [FldReElt], [FldReElt] → FldReElt`](introduction.md#function-ldpcensemblerate-fldreelt-fldreelt)

    - [`Example: Is LDPC`](introduction.md#example-ex-69eb66)

  - [LDPC Decoding and Simulation](introduction.md#ldpc-decoding-and-simulation)

    - [`LDPCDecode(C, v): Code, ModTupRngElt → ModTupRngElt`](introduction.md#function-ldpcdecode-code-modtuprngelt)

    - [`Example: DecodeLDPC BSC`](introduction.md#example-ex-ece197)

    - [`Example: DecodeLDPC BSC`](introduction.md#example-ex-557473)

    - [`LDPCSimulate(C, N): Code, RngIntElt → FldReElt, FldReElt`](introduction.md#function-ldpcsimulate-code-rngintelt)

    - [`Example: Decode Ensemble`](introduction.md#example-ex-103564)

  - [Density Evolution](introduction.md#density-evolution)

    - [`LDPCBinarySymmetricThreshold(v, c): RngIntElt, RngIntElt → FldReElt`](introduction.md#function-ldpcbinarysymmetricthreshold-rngintelt-rngintelt)

    - [`LDPCBinarySymmetricThreshold(Sv, Sc): [FldReElt], [FldReElt] → FldReElt`](introduction.md#function-ldpcbinarysymmetricthreshold-fldreelt-fldreelt)

    - [`DensityEvolutionBinarySymmetric(v, c, p): RngIntElt, RngIntElt, FldReElt → BoolElt`](introduction.md#function-densityevolutionbinarysymmetric-rngintelt-rngintelt-fldreelt)

    - [`DensityEvolutionBinarySymmetric(Sv, Sc, p): [FldReElt], [FldReElt], FldReElt → BoolElt`](introduction.md#function-densityevolutionbinarysymmetric-fldreelt-fldreelt-fldreelt)

    - [`Example: DE BSC`](introduction.md#example-ex-b0bbfa)

    - [`LDPCGaussianThreshold(v, c): RngIntElt, RngIntElt → FldReElt`](introduction.md#function-ldpcgaussianthreshold-rngintelt-rngintelt)

    - [`LDPCGaussianThreshold(Sv, Sc): [FldReElt], [FldReElt] → FldReElt`](introduction.md#function-ldpcgaussianthreshold-fldreelt-fldreelt)

    - [`DensityEvolutionGaussian(v, c, σ): RngIntElt, RngIntElt, FldReElt → BoolElt`](introduction.md#function-densityevolutiongaussian-rngintelt-rngintelt-fldreelt)

    - [`DensityEvolutionGaussian(Sv, Sc, σ): [FldReElt], [FldReElt], FldReElt → BoolElt`](introduction.md#function-densityevolutiongaussian-fldreelt-fldreelt-fldreelt)

    - [`GoodLDPCEnsemble(i): RngIntElt → FldReElt, [FldReElt], [FldReElt]`](introduction.md#function-goodldpcensemble-rngintelt)

    - [`Example: DE Gaussian`](introduction.md#example-ex-4cd36e)
