Quasi-Cyclic Codes

Quasi-cyclic codes are a subtype of LinearCode and inherit its methods. While quasi-cyclic codes may be seen as generalizations of cyclic codes, here they are treated as independent topics.

Constructors

CodingTheory.QuasiCyclicCodeType
QuasiCyclicCode(A::MatElem{T}, parity::Bool=false) where T <: ResElem

Return the quasi-cycle code specified by the matrix A of polynomial circulant generators. If the optional paramater parity is set to true, the input is used to construct the parity-check matrix.

source
QuasiCyclicCode(v::Vector{fq_nmod_mat}, l::Int, circ_gens::Bool, parity::Bool=false)

Return the quasi-cyclic code of index l generated by right-bit shifts of size l of the generator vectors v. If circ_gens is true, the vectors are taken to be (column) generators for the circulant matrices instead of generator vectors for the code. If the optional paramater parity is set to true, the input is used to construct the parity-check matrix.

Notes

  • If circ_gens is false, then the length of the code is ncols(v[1]) and must be divisible by l.
  • If circ_gens is true, then the length of the code is ncols(v[1]) * l. Circulant matrices are stacked in rows of length l, so l must divide length(v).
source
QuasiCyclicCode(v::fq_nmod_mat, l::Int, parity::Bool=false)

Return the quasi-cyclic code of index l generated by right-bit shifts of size l of the generator vector v. If the optional paramater parity is set to true, the input is used to construct the parity check matrix.

source
QuasiCyclicCode(v::Vector{fq_nmod_poly}, n::Int, l::Int, parity::Bool=false)

Return the quasi-cyclic code of index l whose circulants are defined by the generator polynomials v. If the optional paramater parity is set to true, the input is used to construct the parity check matrix.

source
QuasiCyclicCode(v::Vector{AbstractCyclicCode}, l::Int, parity::Bool=false)

Return the quasi-cyclic code of index l whose circulants are determined by the cyclic codes in v. If the optional paramater parity is set to true, the input is used to construct the parity check matrix.

source

Attributes

Hecke.indexFunction
index(C::AbstractQuasiCyclicCode)

Return the index of the quasi-cyclic code.

source
CodingTheory.polynomial_matrixFunction
polynomial_matrix(C::AbstractQuasiCyclicCode)

Return the polynomial matrix used to define the code.

Use polynomial_matrix_type to determine if specifies the generator or parity-check matrix.

source

The type parameter is either :G or :H, specifying whether the polynomial matrix represents the generator or parity-check matrix.

CodingTheory.typeFunction
type(C::AbstractQuasiCyclicCode)

Return the type of the quasi-cycle code C.

source
type(W::WeightEnumerator)

Returns the type of the weight enumerator W.

source

Methods

The following are not computed and stored at the time of construction and must be computed by using these methods.

CodingTheory.weight_matrixFunction
base_matrix(A::MatElem{T}) where T <: ResElem
protograph_matrix(A::MatElem{T}) where T <: ResElem
weight_matrix(A::MatElem{T}) where T <: ResElem

Return the base/protograph/weight matrix of A.

source
CodingTheory.noncirculant_generator_matrixFunction
noncirculant_generator_matrix(C::AbstractQuasiCyclicCode)

Return the non-circulant form of the generator matrix for the quasi-cyclic code C if the polynomial matrix specifies the generator matrix; otherwise, return missing.

source
CodingTheory.noncirculant_parity_check_matrixFunction
noncirculant_parity_check_matrix(C::AbstractQuasiCyclicCode)

Return the non-circulant form of the parity-check matrix for the quasi-cyclic code C if the polynomial matrix specifies the parity-check matrix; otherwise, return missing.

source
Hecke.generatorsFunction
generators(C::AbstractQuasiCyclicCode)

Return the generators of the quasi-cyclic code.

source