C(++)ECCO
C++ Error Control COding: a header-only library for ECC simulations and experiments, modeling complete coding systems across arbitrary finite fields and complex inter-field relationships - Christian Senger <senger@inue.uni-stuttgart.de>
Loading...
Searching...
No Matches
CECCO::LinearCode< T > Class Template Reference

#include <codes.hpp>

Inheritance diagram for CECCO::LinearCode< T >:
Inheritance graph

Public Types

using FIELD = T

Public Member Functions

 LinearCode (size_t n, size_t k, const Matrix< T > &X)
 LinearCode (size_t k, Polynomial< T > gamma)
 LinearCode (const std::vector< Vector< T > > &codewords)
size_t get_k () const noexcept
double get_R () const noexcept
InfInt get_size () const
const Matrix< T > & get_G () const noexcept
const Matrix< T > & get_HT () const noexcept
Matrix< T > get_H () const
virtual size_t get_dmin () const
size_t get_tmax () const
virtual const Polynomial< InfInt > & get_weight_enumerator () const
const Polynomial< InfInt > & get_p_ary_image_weight_enumerator () const
long double P_word (double pe) const
long double P_error (double pe) const
long double P_failure (double pe) const
long double Bhattacharyya_bound (long double gamma) const
const Polynomial< T > & get_gamma () const
Polynomial< T > get_h () const
InfInt standard_array_MB () const
InfInt Meggitt_table_MB () const
InfInt punctured_codes_MB (size_t tau_max) const
const std::vector< Vector< T > > & get_standard_array () const
void export_standard_array_as_latex (const std::string &filename, method_t method) const
const std::unordered_map< size_t, T > & get_Meggitt_table () const
void export_Meggitt_table_as_latex (const std::string &filename) const
auto cbegin () const
auto cend () const
template<FieldType S>
bool is_identical (const LinearCode< S > &other, Matrix< T > *L_ptr=nullptr) const
template<FieldType S>
bool is_equivalent (const LinearCode< S > &other, Matrix< T > *L_ptr=nullptr, Matrix< T > *P_ptr=nullptr) const
bool is_perfect () const
bool is_MDS () const
bool is_equidistant () const
bool is_weakly_self_dual () const
bool is_dual_containing () const
bool is_self_dual () const
bool is_polynomial () const
bool is_cyclic () const
bool is_reversible () const
bool is_quasi_cyclic (size_t *ell_ptr=nullptr) const
void get_info (std::ostream &os) const override
LinearCode< T > get_dual () const
LinearCode< T > get_equivalent_code_in_standard_form () const
LinearCode< T > get_identical_code_in_polynomial_form () const
Matrix< T > get_G_in_polynomial_form () const
Matrix< T > get_G_in_trellis_oriented_form () const
Trellis< T > get_trivial_trellis () const
const Trellis< T > & get_minimal_trellis () const
Vector< T > enc (const Vector< T > &u) const override
Vector< T > encinv (const Vector< T > &c) const override
Vector< T > dec_Meggitt (const Vector< T > &r) const override
Vector< T > dec_standard_array (const Vector< T > &r) const override
Vector< T > dec_BD_standard_array (const Vector< T > &r) const override
Vector< T > dec_boosted_BD_standard_array (const Vector< T > &r) const override
Vector< T > dec_BD_Viterbi (const Vector< T > &r) const
Vector< T > dec_BD (const Vector< T > &r) const override
Vector< T > dec_Viterbi (const Vector< T > &r, const std::string &filename="") const override
Vector< T > dec_ML (const Vector< T > &r) const override
Vector< T > dec_Viterbi_soft (const Vector< double > &llrs, const std::string &filename="") const override
Vector< T > dec_Viterbi_soft (const Matrix< double > &llrs, const std::string &filename="") const override
std::vector< Vector< T > > dec_Viterbi_list (const Vector< T > &r, size_t list_size) const override
std::vector< Vector< T > > dec_Viterbi_soft_list (const Vector< double > &llrs, size_t list_size) const override
std::vector< Vector< T > > dec_Viterbi_soft_list (const Matrix< double > &llrs, size_t list_size) const override
Vector< T > dec_ML_soft (const Vector< double > &llrs) const override
Vector< T > dec_ML_soft (const Matrix< double > &llrs) const override
Vector< T > dec_exhaustive_ML_soft (const Vector< double > &llrs, size_t ml_soft_cache_limit=1000) const
Vector< T > dec_exhaustive_ML_soft (const Matrix< double > &llrs, size_t ml_soft_cache_limit=1000) const
Vector< T > dec_BCJR (const Vector< double > &llrs, Matrix< double > *Lambda_ptr=nullptr, const std::string &filename="") const override
Vector< T > dec_BCJR (const Matrix< double > &llrs, Matrix< double > *Lambda_ptr=nullptr, const std::string &filename="") const override
Vector< T > dec_ssMAP (const Vector< double > &llrs, Matrix< double > *Lambda_ptr=nullptr, const std::string &filename="") const override
Vector< T > dec_ssMAP (const Matrix< double > &llrs, Matrix< double > *Lambda_ptr=nullptr, const std::string &filename="") const override
Vector< T > dec_OSD (const Vector< double > &llrs, size_t w=OSD_ORDER) const override
Vector< T > dec_OSD (const Matrix< double > &llrs, size_t w=OSD_ORDER) const override
Vector< T > dec_LC_OSD (const Vector< double > &llrs, size_t delta=LC_OSD_DELTA, size_t ell_max=LC_OSD_LIST_SIZE) const override
Vector< T > dec_LC_OSD (const Matrix< double > &llrs, size_t delta=LC_OSD_DELTA, size_t ell_max=LC_OSD_LIST_SIZE) const override
const TannerGraph< T > & get_tanner_graph () const
Vector< T > dec_BP (const Vector< double > &llrs, size_t max_iterations=BP_MAX_ITERATIONS, Matrix< double > *Lambda_ptr=nullptr, const std::string &filename="", size_t *nof_iterations_ptr=nullptr) const override
Vector< T > dec_BP (const Matrix< double > &llrs, size_t max_iterations=BP_MAX_ITERATIONS, Matrix< double > *Lambda_ptr=nullptr, const std::string &filename="", size_t *nof_iterations_ptr=nullptr) const override
std::optional< Vector< T > > complete_erasures (const std::vector< size_t > &X, const std::vector< size_t > &E, const Vector< T > &c_E) const
Vector< T > dec_BD_standard_array_EE (const Vector< T > &r) const override
Vector< T > dec_BD_Viterbi_EE (const Vector< T > &r) const
Vector< T > dec_BD_EE (const Vector< T > &r) const override
Vector< T > dec_Viterbi_EE (const Vector< T > &r, const std::string &filename="") const override
Vector< T > dec_ML_EE (const Vector< T > &r) const override
Vector< T > dec_GMD (const Vector< T > &r, const Vector< double > &reliability) const
Vector< T > dec_GMD (const Vector< double > &llrs) const override
Vector< T > dec_GMD (const Matrix< double > &llrs) const override
Public Member Functions inherited from CECCO::Code< T >
 Code (size_t n) noexcept
 Code (const Code &other) noexcept
 Code (Code &&) noexcept=default
virtual ~Code ()=default
Code & operator= (const Code &other) noexcept
Code & operator= (Code &&) noexcept=default
size_t get_n () const noexcept
virtual Vector< T > dec_recursive (const Vector< T > &) const
virtual Vector< T > dec_WBA (const Vector< T > &) const
virtual Vector< T > dec_WBA_optimized (const Vector< T > &) const
virtual Vector< T > dec_BMA (const Vector< T > &) const
virtual std::vector< Vector< T > > dec_SA_list (const Vector< T > &, size_t=SA_LIST_SIZE) const
virtual std::vector< Vector< T > > dec_SA_list_optimized (const Vector< T > &, size_t=SA_LIST_SIZE) const
virtual std::vector< Vector< T > > dec_GSA_list (const Vector< T > &, size_t=GSA_MULTIPLICITY, size_t=GSA_LIST_SIZE) const
virtual std::vector< Vector< T > > dec_GSA_list_optimized (const Vector< T > &, size_t=GSA_MULTIPLICITY, size_t=GSA_LIST_SIZE) const
virtual std::vector< Vector< T > > dec_KVA_list (const Vector< double > &, size_t=KVA_STRENGTH, size_t=KVA_LIST_SIZE) const
virtual std::vector< Vector< T > > dec_KVA_list (const Matrix< double > &, size_t=KVA_STRENGTH, size_t=KVA_LIST_SIZE) const
virtual Vector< T > dec_recursive_EE (const Vector< T > &) const
virtual Vector< T > dec_WBA_EE (const Vector< T > &) const
virtual Vector< T > dec_BMA_EE (const Vector< T > &) const

Protected Member Functions

void set_dmin (size_t d) const
void set_weight_enumerator (const Polynomial< InfInt > &p) const
void set_weight_enumerator (Polynomial< InfInt > &&p) const
void set_gamma (const Polynomial< T > &g) const
void set_gamma (Polynomial< T > &&g) const
void validate_length (const Vector< T > &r) const
void validate_length (const Vector< double > &llrs) const
void validate_length (const Matrix< double > &llrs) const
Protected Member Functions inherited from CECCO::Code< T >
template<class BASE>
bool info_prelude (std::ostream &os) const
std::vector< size_t > erasure_positions (const Vector< T > &r) const

Static Protected Member Functions

static bool erasures_present (const Vector< T > &r)

Protected Attributes

size_t k
Matrix< T > G
Matrix< T > HT
Matrix< T > MI
details::OnceCache< size_t > dmin
details::OnceCache< Polynomial< InfInt > > weight_enumerator
details::OnceCache< Polynomial< InfInt > > p_ary_image_weight_enumerator
details::OnceCache< std::vector< Vector< T > > > codewords
details::OnceCache< Trellis< T > > minimal_trellis
Protected Attributes inherited from CECCO::Code< T >
size_t n

Detailed Description

template<FieldType T>
class CECCO::LinearCode< T >

Definition at line 544 of file codes.hpp.

Member Typedef Documentation

◆ FIELD

template<FieldType T>
using CECCO::LinearCode< T >::FIELD = T

Definition at line 547 of file codes.hpp.

Constructor & Destructor Documentation

◆ LinearCode() [1/3]

template<FieldType T>
CECCO::LinearCode< T >::LinearCode ( size_t n,
size_t k,
const Matrix< T > & X )
inline

Definition at line 552 of file codes.hpp.

◆ LinearCode() [2/3]

template<FieldType T>
CECCO::LinearCode< T >::LinearCode ( size_t k,
Polynomial< T > gamma )
inline

Definition at line 604 of file codes.hpp.

◆ LinearCode() [3/3]

template<FieldType T>
CECCO::LinearCode< T >::LinearCode ( const std::vector< Vector< T > > & codewords)
inline

Definition at line 615 of file codes.hpp.

Member Function Documentation

◆ Bhattacharyya_bound()

template<FieldType T>
long double CECCO::LinearCode< T >::Bhattacharyya_bound ( long double gamma) const
inline

Definition at line 815 of file codes.hpp.

◆ cbegin()

template<FieldType T>
auto CECCO::LinearCode< T >::cbegin ( ) const
inline

Definition at line 1095 of file codes.hpp.

◆ cend()

template<FieldType T>
auto CECCO::LinearCode< T >::cend ( ) const
inline

Definition at line 1101 of file codes.hpp.

◆ complete_erasures()

template<FieldType T>
std::optional< Vector< T > > CECCO::LinearCode< T >::complete_erasures ( const std::vector< size_t > & X,
const std::vector< size_t > & E,
const Vector< T > & c_E ) const
inline

Definition at line 2228 of file codes.hpp.

◆ dec_BCJR() [1/2]

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_BCJR ( const Matrix< double > & llrs,
Matrix< double > * Lambda_ptr = nullptr,
const std::string & filename = "" ) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 2051 of file codes.hpp.

◆ dec_BCJR() [2/2]

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_BCJR ( const Vector< double > & llrs,
Matrix< double > * Lambda_ptr = nullptr,
const std::string & filename = "" ) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 2038 of file codes.hpp.

◆ dec_BD()

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_BD ( const Vector< T > & r) const
inlineoverridevirtual

◆ dec_BD_EE()

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_BD_EE ( const Vector< T > & r) const
inlineoverridevirtual

◆ dec_BD_standard_array()

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_BD_standard_array ( const Vector< T > & r) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 1765 of file codes.hpp.

◆ dec_BD_standard_array_EE()

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_BD_standard_array_EE ( const Vector< T > & r) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 2251 of file codes.hpp.

◆ dec_BD_Viterbi()

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_BD_Viterbi ( const Vector< T > & r) const
inline

Definition at line 1808 of file codes.hpp.

◆ dec_BD_Viterbi_EE()

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_BD_Viterbi_EE ( const Vector< T > & r) const
inline

Definition at line 2303 of file codes.hpp.

◆ dec_boosted_BD_standard_array()

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_boosted_BD_standard_array ( const Vector< T > & r) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 1786 of file codes.hpp.

◆ dec_BP() [1/2]

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_BP ( const Matrix< double > & llrs,
size_t max_iterations = BP_MAX_ITERATIONS,
Matrix< double > * Lambda_ptr = nullptr,
const std::string & filename = "",
size_t * nof_iterations_ptr = nullptr ) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 2215 of file codes.hpp.

◆ dec_BP() [2/2]

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_BP ( const Vector< double > & llrs,
size_t max_iterations = BP_MAX_ITERATIONS,
Matrix< double > * Lambda_ptr = nullptr,
const std::string & filename = "",
size_t * nof_iterations_ptr = nullptr ) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 2202 of file codes.hpp.

◆ dec_exhaustive_ML_soft() [1/2]

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_exhaustive_ML_soft ( const Matrix< double > & llrs,
size_t ml_soft_cache_limit = 1000 ) const
inline

Definition at line 1985 of file codes.hpp.

◆ dec_exhaustive_ML_soft() [2/2]

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_exhaustive_ML_soft ( const Vector< double > & llrs,
size_t ml_soft_cache_limit = 1000 ) const
inline

Definition at line 1974 of file codes.hpp.

◆ dec_GMD() [1/3]

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_GMD ( const Matrix< double > & llrs) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 2468 of file codes.hpp.

◆ dec_GMD() [2/3]

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_GMD ( const Vector< double > & llrs) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 2457 of file codes.hpp.

◆ dec_GMD() [3/3]

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_GMD ( const Vector< T > & r,
const Vector< double > & reliability ) const
inline

Definition at line 2412 of file codes.hpp.

◆ dec_LC_OSD() [1/2]

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_LC_OSD ( const Matrix< double > & llrs,
size_t delta = LC_OSD_DELTA,
size_t ell_max = LC_OSD_LIST_SIZE ) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 2137 of file codes.hpp.

◆ dec_LC_OSD() [2/2]

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_LC_OSD ( const Vector< double > & llrs,
size_t delta = LC_OSD_DELTA,
size_t ell_max = LC_OSD_LIST_SIZE ) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 2118 of file codes.hpp.

◆ dec_Meggitt()

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_Meggitt ( const Vector< T > & r) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 1702 of file codes.hpp.

◆ dec_ML()

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_ML ( const Vector< T > & r) const
inlineoverridevirtual

◆ dec_ML_EE()

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_ML_EE ( const Vector< T > & r) const
inlineoverridevirtual

◆ dec_ML_soft() [1/2]

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_ML_soft ( const Matrix< double > & llrs) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Reimplemented in CECCO::SimplexCode< T >.

Definition at line 1972 of file codes.hpp.

◆ dec_ML_soft() [2/2]

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_ML_soft ( const Vector< double > & llrs) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Reimplemented in CECCO::SimplexCode< T >.

Definition at line 1971 of file codes.hpp.

◆ dec_OSD() [1/2]

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_OSD ( const Matrix< double > & llrs,
size_t w = OSD_ORDER ) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 2086 of file codes.hpp.

◆ dec_OSD() [2/2]

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_OSD ( const Vector< double > & llrs,
size_t w = OSD_ORDER ) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 2072 of file codes.hpp.

◆ dec_ssMAP() [1/2]

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_ssMAP ( const Matrix< double > & llrs,
Matrix< double > * Lambda_ptr = nullptr,
const std::string & filename = "" ) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 2067 of file codes.hpp.

◆ dec_ssMAP() [2/2]

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_ssMAP ( const Vector< double > & llrs,
Matrix< double > * Lambda_ptr = nullptr,
const std::string & filename = "" ) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 2062 of file codes.hpp.

◆ dec_standard_array()

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_standard_array ( const Vector< T > & r) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 1747 of file codes.hpp.

◆ dec_Viterbi()

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_Viterbi ( const Vector< T > & r,
const std::string & filename = "" ) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 1851 of file codes.hpp.

◆ dec_Viterbi_EE()

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_Viterbi_EE ( const Vector< T > & r,
const std::string & filename = "" ) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 2345 of file codes.hpp.

◆ dec_Viterbi_list()

template<FieldType T>
std::vector< Vector< T > > CECCO::LinearCode< T >::dec_Viterbi_list ( const Vector< T > & r,
size_t list_size ) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 1926 of file codes.hpp.

◆ dec_Viterbi_soft() [1/2]

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_Viterbi_soft ( const Matrix< double > & llrs,
const std::string & filename = "" ) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 1905 of file codes.hpp.

◆ dec_Viterbi_soft() [2/2]

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::dec_Viterbi_soft ( const Vector< double > & llrs,
const std::string & filename = "" ) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 1893 of file codes.hpp.

◆ dec_Viterbi_soft_list() [1/2]

template<FieldType T>
std::vector< Vector< T > > CECCO::LinearCode< T >::dec_Viterbi_soft_list ( const Matrix< double > & llrs,
size_t list_size ) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 1953 of file codes.hpp.

◆ dec_Viterbi_soft_list() [2/2]

template<FieldType T>
std::vector< Vector< T > > CECCO::LinearCode< T >::dec_Viterbi_soft_list ( const Vector< double > & llrs,
size_t list_size ) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 1941 of file codes.hpp.

◆ enc()

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::enc ( const Vector< T > & u) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Reimplemented in CECCO::RepetitionCode< T >, and CECCO::UniverseCode< T >.

Definition at line 1688 of file codes.hpp.

◆ encinv()

template<FieldType T>
Vector< T > CECCO::LinearCode< T >::encinv ( const Vector< T > & c) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Reimplemented in CECCO::RepetitionCode< T >, and CECCO::UniverseCode< T >.

Definition at line 1690 of file codes.hpp.

◆ erasures_present()

template<FieldType T>
bool CECCO::LinearCode< T >::erasures_present ( const Vector< T > & r)
inlinestaticprotected

Definition at line 2539 of file codes.hpp.

◆ export_Meggitt_table_as_latex()

template<FieldType T>
void CECCO::LinearCode< T >::export_Meggitt_table_as_latex ( const std::string & filename) const
inline

Definition at line 1072 of file codes.hpp.

◆ export_standard_array_as_latex()

template<FieldType T>
void CECCO::LinearCode< T >::export_standard_array_as_latex ( const std::string & filename,
method_t method ) const
inline

Definition at line 975 of file codes.hpp.

◆ get_dmin()

template<FieldType T>
virtual size_t CECCO::LinearCode< T >::get_dmin ( ) const
inlinevirtual

Reimplemented in CECCO::LDCCode< BU, BV >.

Definition at line 634 of file codes.hpp.

◆ get_dual()

template<FieldType T>
LinearCode< T > CECCO::LinearCode< T >::get_dual ( ) const
inline

Definition at line 1476 of file codes.hpp.

◆ get_equivalent_code_in_standard_form()

template<FieldType T>
LinearCode< T > CECCO::LinearCode< T >::get_equivalent_code_in_standard_form ( ) const
inline

Definition at line 1486 of file codes.hpp.

◆ get_G()

template<FieldType T>
const Matrix< T > & CECCO::LinearCode< T >::get_G ( ) const
inlinenoexcept

Definition at line 630 of file codes.hpp.

◆ get_G_in_polynomial_form()

template<FieldType T>
Matrix< T > CECCO::LinearCode< T >::get_G_in_polynomial_form ( ) const
inline

Definition at line 1523 of file codes.hpp.

◆ get_G_in_trellis_oriented_form()

template<FieldType T>
Matrix< T > CECCO::LinearCode< T >::get_G_in_trellis_oriented_form ( ) const
inline

Definition at line 1532 of file codes.hpp.

◆ get_gamma()

template<FieldType T>
const Polynomial< T > & CECCO::LinearCode< T >::get_gamma ( ) const
inline

Definition at line 827 of file codes.hpp.

◆ get_H()

template<FieldType T>
Matrix< T > CECCO::LinearCode< T >::get_H ( ) const
inline

Definition at line 632 of file codes.hpp.

◆ get_h()

template<FieldType T>
Polynomial< T > CECCO::LinearCode< T >::get_h ( ) const
inline

Definition at line 833 of file codes.hpp.

◆ get_HT()

template<FieldType T>
const Matrix< T > & CECCO::LinearCode< T >::get_HT ( ) const
inlinenoexcept

Definition at line 631 of file codes.hpp.

◆ get_identical_code_in_polynomial_form()

template<FieldType T>
LinearCode< T > CECCO::LinearCode< T >::get_identical_code_in_polynomial_form ( ) const
inline

Definition at line 1509 of file codes.hpp.

◆ get_info()

template<FieldType T>
void CECCO::LinearCode< T >::get_info ( std::ostream & os) const
inlineoverridevirtual

◆ get_k()

template<FieldType T>
size_t CECCO::LinearCode< T >::get_k ( ) const
inlinenoexcept

Definition at line 617 of file codes.hpp.

◆ get_Meggitt_table()

template<FieldType T>
const std::unordered_map< size_t, T > & CECCO::LinearCode< T >::get_Meggitt_table ( ) const
inline

Definition at line 1008 of file codes.hpp.

◆ get_minimal_trellis()

template<FieldType T>
const Trellis< T > & CECCO::LinearCode< T >::get_minimal_trellis ( ) const
inline

Definition at line 1627 of file codes.hpp.

◆ get_p_ary_image_weight_enumerator()

template<FieldType T>
const Polynomial< InfInt > & CECCO::LinearCode< T >::get_p_ary_image_weight_enumerator ( ) const
inline

Definition at line 740 of file codes.hpp.

◆ get_R()

template<FieldType T>
double CECCO::LinearCode< T >::get_R ( ) const
inlinenoexcept

Definition at line 618 of file codes.hpp.

◆ get_size()

template<FieldType T>
InfInt CECCO::LinearCode< T >::get_size ( ) const
inline

Definition at line 620 of file codes.hpp.

◆ get_standard_array()

template<FieldType T>
const std::vector< Vector< T > > & CECCO::LinearCode< T >::get_standard_array ( ) const
inline

Definition at line 886 of file codes.hpp.

◆ get_tanner_graph()

template<FieldType T>
const TannerGraph< T > & CECCO::LinearCode< T >::get_tanner_graph ( ) const
inline

Definition at line 2186 of file codes.hpp.

◆ get_tmax()

template<FieldType T>
size_t CECCO::LinearCode< T >::get_tmax ( ) const
inline

Definition at line 700 of file codes.hpp.

◆ get_trivial_trellis()

template<FieldType T>
Trellis< T > CECCO::LinearCode< T >::get_trivial_trellis ( ) const
inline

Definition at line 1604 of file codes.hpp.

◆ get_weight_enumerator()

template<FieldType T>
virtual const Polynomial< InfInt > & CECCO::LinearCode< T >::get_weight_enumerator ( ) const
inlinevirtual

Reimplemented in CECCO::ExtendedCode< T, B >, and CECCO::GRSCode< T >.

Definition at line 705 of file codes.hpp.

◆ is_cyclic()

template<FieldType T>
bool CECCO::LinearCode< T >::is_cyclic ( ) const
inline

Definition at line 1347 of file codes.hpp.

◆ is_dual_containing()

template<FieldType T>
bool CECCO::LinearCode< T >::is_dual_containing ( ) const
inline

Definition at line 1311 of file codes.hpp.

◆ is_equidistant()

template<FieldType T>
bool CECCO::LinearCode< T >::is_equidistant ( ) const
inline

Definition at line 1302 of file codes.hpp.

◆ is_equivalent()

template<FieldType T>
template<FieldType S>
bool CECCO::LinearCode< T >::is_equivalent ( const LinearCode< S > & other,
Matrix< T > * L_ptr = nullptr,
Matrix< T > * P_ptr = nullptr ) const
inline

Definition at line 1141 of file codes.hpp.

◆ is_identical()

template<FieldType T>
template<FieldType S>
bool CECCO::LinearCode< T >::is_identical ( const LinearCode< S > & other,
Matrix< T > * L_ptr = nullptr ) const
inline

Definition at line 1108 of file codes.hpp.

◆ is_MDS()

template<FieldType T>
bool CECCO::LinearCode< T >::is_MDS ( ) const
inline

Definition at line 1297 of file codes.hpp.

◆ is_perfect()

template<FieldType T>
bool CECCO::LinearCode< T >::is_perfect ( ) const
inline

Definition at line 1289 of file codes.hpp.

◆ is_polynomial()

template<FieldType T>
bool CECCO::LinearCode< T >::is_polynomial ( ) const
inline

Definition at line 1314 of file codes.hpp.

◆ is_quasi_cyclic()

template<FieldType T>
bool CECCO::LinearCode< T >::is_quasi_cyclic ( size_t * ell_ptr = nullptr) const
inline

Definition at line 1384 of file codes.hpp.

◆ is_reversible()

template<FieldType T>
bool CECCO::LinearCode< T >::is_reversible ( ) const
inline

Definition at line 1374 of file codes.hpp.

◆ is_self_dual()

template<FieldType T>
bool CECCO::LinearCode< T >::is_self_dual ( ) const
inline

Definition at line 1312 of file codes.hpp.

◆ is_weakly_self_dual()

template<FieldType T>
bool CECCO::LinearCode< T >::is_weakly_self_dual ( ) const
inline

Definition at line 1310 of file codes.hpp.

◆ Meggitt_table_MB()

template<FieldType T>
InfInt CECCO::LinearCode< T >::Meggitt_table_MB ( ) const
inline

Definition at line 853 of file codes.hpp.

◆ P_error()

template<FieldType T>
long double CECCO::LinearCode< T >::P_error ( double pe) const
inline

Definition at line 784 of file codes.hpp.

◆ P_failure()

template<FieldType T>
long double CECCO::LinearCode< T >::P_failure ( double pe) const
inline

Definition at line 802 of file codes.hpp.

◆ P_word()

template<FieldType T>
long double CECCO::LinearCode< T >::P_word ( double pe) const
inline

Definition at line 775 of file codes.hpp.

◆ punctured_codes_MB()

template<FieldType T>
InfInt CECCO::LinearCode< T >::punctured_codes_MB ( size_t tau_max) const
inline

Definition at line 866 of file codes.hpp.

◆ set_dmin()

template<FieldType T>
void CECCO::LinearCode< T >::set_dmin ( size_t d) const
inlineprotected

Definition at line 2514 of file codes.hpp.

◆ set_gamma() [1/2]

template<FieldType T>
void CECCO::LinearCode< T >::set_gamma ( const Polynomial< T > & g) const
inlineprotected

Definition at line 2528 of file codes.hpp.

◆ set_gamma() [2/2]

template<FieldType T>
void CECCO::LinearCode< T >::set_gamma ( Polynomial< T > && g) const
inlineprotected

Definition at line 2533 of file codes.hpp.

◆ set_weight_enumerator() [1/2]

template<FieldType T>
void CECCO::LinearCode< T >::set_weight_enumerator ( const Polynomial< InfInt > & p) const
inlineprotected

Definition at line 2516 of file codes.hpp.

◆ set_weight_enumerator() [2/2]

template<FieldType T>
void CECCO::LinearCode< T >::set_weight_enumerator ( Polynomial< InfInt > && p) const
inlineprotected

Definition at line 2522 of file codes.hpp.

◆ standard_array_MB()

template<FieldType T>
InfInt CECCO::LinearCode< T >::standard_array_MB ( ) const
inline

Definition at line 845 of file codes.hpp.

◆ validate_length() [1/3]

template<FieldType T>
void CECCO::LinearCode< T >::validate_length ( const Matrix< double > & llrs) const
inlineprotected

Definition at line 2559 of file codes.hpp.

◆ validate_length() [2/3]

template<FieldType T>
void CECCO::LinearCode< T >::validate_length ( const Vector< double > & llrs) const
inlineprotected

Definition at line 2553 of file codes.hpp.

◆ validate_length() [3/3]

template<FieldType T>
void CECCO::LinearCode< T >::validate_length ( const Vector< T > & r) const
inlineprotected

Definition at line 2547 of file codes.hpp.

Member Data Documentation

◆ codewords

template<FieldType T>
details::OnceCache<std::vector<Vector<T> > > CECCO::LinearCode< T >::codewords
mutableprotected

Definition at line 2509 of file codes.hpp.

◆ dmin

template<FieldType T>
details::OnceCache<size_t> CECCO::LinearCode< T >::dmin
mutableprotected

Definition at line 2506 of file codes.hpp.

◆ G

template<FieldType T>
Matrix<T> CECCO::LinearCode< T >::G
protected

Definition at line 2503 of file codes.hpp.

◆ HT

template<FieldType T>
Matrix<T> CECCO::LinearCode< T >::HT
protected

Definition at line 2504 of file codes.hpp.

◆ k

template<FieldType T>
size_t CECCO::LinearCode< T >::k
protected

Definition at line 2502 of file codes.hpp.

◆ MI

template<FieldType T>
Matrix<T> CECCO::LinearCode< T >::MI
protected

Definition at line 2505 of file codes.hpp.

◆ minimal_trellis

template<FieldType T>
details::OnceCache<Trellis<T> > CECCO::LinearCode< T >::minimal_trellis
mutableprotected

Definition at line 2510 of file codes.hpp.

◆ p_ary_image_weight_enumerator

template<FieldType T>
details::OnceCache<Polynomial<InfInt> > CECCO::LinearCode< T >::p_ary_image_weight_enumerator
mutableprotected

Definition at line 2508 of file codes.hpp.

◆ weight_enumerator

template<FieldType T>
details::OnceCache<Polynomial<InfInt> > CECCO::LinearCode< T >::weight_enumerator
mutableprotected

Definition at line 2507 of file codes.hpp.


The documentation for this class was generated from the following file: