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.QuasiCyclicCode
— TypeQuasiCyclicCode(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.
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
isfalse
, then the length of the code isncols(v[1])
and must be divisible byl
. - If
circ_gens
istrue
, then the length of the code isncols(v[1]) * l
. Circulant matrices are stacked in rows of lengthl
, sol
must dividelength(v)
.
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.
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.
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.
Attributes
Hecke.index
— Functionindex(C::AbstractQuasiCyclicCode)
Return the index of the quasi-cyclic code.
CodingTheory.expansion_factor
— Functionexpansion_factor(C::AbstractQuasiCyclicCode)
Return the expansion factor of the quasi-cycle code C
.
CodingTheory.is_single_generator
— Functionis_single_generator(C::AbstractQuasiCyclicCode)
Return true
if C
is a single-generator quasi-cyclic code.
CodingTheory.polynomial_matrix
— Functionpolynomial_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.
CodingTheory.polynomial_matrix_type
— Functionpolynomial_matrix_type(C::AbstractQuasiCyclicCode)
Return 'G'
if the polynomial matrix of C
specifies the generator or parity-check matrix.
The type parameter is either :G
or :H
, specifying whether the polynomial matrix represents the generator or parity-check matrix.
CodingTheory.type
— Functiontype(C::AbstractQuasiCyclicCode)
Return the type of the quasi-cycle code C
.
type(W::WeightEnumerator)
Returns the type of the weight enumerator W
.
Methods
The following are not computed and stored at the time of construction and must be computed by using these methods.
CodingTheory.weight_matrix
— Functionbase_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
.
CodingTheory.noncirculant_generator_matrix
— Functionnoncirculant_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
.
CodingTheory.noncirculant_parity_check_matrix
— Functionnoncirculant_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
.
Hecke.generators
— Functiongenerators(C::AbstractQuasiCyclicCode)
Return the generators of the quasi-cyclic code.
CodingTheory.circulants
— Functioncirculants(C::AbstractQuasiCyclicCode)
Return the circulant matrices of the quasi-cyclic code.