|
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>
|
#include <codes.hpp>

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 LinearCode &other) | |
| LinearCode (LinearCode &&other) | |
| LinearCode & | operator= (const LinearCode &other) |
| LinearCode & | operator= (LinearCode &&other) |
| 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 |
| 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 |
| void | set_dmin (size_t d) const noexcept |
| void | set_weight_enumerator (const Polynomial< InfInt > &p) const noexcept |
| void | set_weight_enumerator (Polynomial< InfInt > &&p) const noexcept |
| void | set_gamma (const Polynomial< T > &g) const noexcept |
| void | set_gamma (Polynomial< T > &&g) const noexcept |
| const std::vector< Vector< T > > & | get_standard_array () const |
| const std::vector< bool > & | get_tainted () const |
| const std::unordered_map< size_t, Vector< T > > & | get_Meggitt_table () const |
| auto | cbegin () const noexcept |
| auto | cend () const noexcept |
| template<FieldType S> | |
| bool | is_identical (const LinearCode< S > &other, Matrix< T > *L_ptr=nullptr) const |
| Test whether two linear codes are identical. | |
| template<FieldType S> | |
| bool | is_equivalent (const LinearCode< S > &other, Matrix< T > *L_ptr=nullptr, Matrix< T > *P_ptr=nullptr) const |
| Test whether two linear codes are equivalent. | |
| 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 |
| virtual 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 |
| virtual Vector< T > | dec_BD (const Vector< T > &r) const override |
| virtual Vector< T > | dec_boosted_BD (const Vector< T > &r) const override |
| virtual Vector< T > | dec_ML (const Vector< T > &r) const override |
| virtual Vector< T > | dec_burst (const Vector< T > &r) const override |
| virtual Vector< T > | dec_Meggitt (const Vector< T > &r) const override |
| virtual Vector< T > | dec_Viterbi (const Vector< T > &r, const std::string &filename="") const override |
| virtual Vector< T > | dec_Viterbi_soft (const Vector< double > &llrs, const std::string &filename="") const override |
| virtual Vector< double > | dec_BCJR (const Vector< double > &llrs, const std::string &filename="") const override |
| virtual Vector< T > | dec_ML_soft (const Vector< double > &llrs, size_t cache_limit) const override |
| virtual Vector< T > | dec_BD_EE (const Vector< T > &r) const override |
| virtual Vector< T > | dec_Viterbi_EE (const Vector< T > &r, const std::string &filename="") const override |
| virtual Vector< T > | dec_ML_EE (const Vector< T > &r) const override |
| Vector< T > | dec_GMD (const Vector< T > &r, const std::vector< double > &reliability) const |
| Public Member Functions inherited from CECCO::Code< T > | |
| Code (size_t n) | |
| Code (const Code &other) | |
| Code (Code &&)=default | |
| virtual | ~Code ()=default |
| Code & | operator= (const Code &other) |
| Code & | operator= (Code &&)=default |
| size_t | get_n () const noexcept |
| virtual Vector< T > | dec_recursive (const Vector< T > &r) const |
| virtual Vector< T > | dec_WBA (const Vector< T > &r) const |
| virtual Vector< T > | dec_BMA (const Vector< T > &r) const |
| virtual Vector< T > | dec_recursive_EE (const Vector< T > &r) const |
| virtual Vector< T > | dec_WBA_EE (const Vector< T > &r) const |
| virtual Vector< T > | dec_BMA_EE (const Vector< T > &r) const |
Protected Member Functions | |
| template<ComponentType S> | |
| void | validate_length (const Vector< S > &r) const |
| Protected Member Functions inherited from CECCO::Code< T > | |
| 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 |
| std::vector< size_t > | infoset {} |
| details::OnceCache< size_t > | dmin |
| details::OnceCache< Polynomial< InfInt > > | weight_enumerator |
| details::OnceCache< std::vector< Vector< T > > > | codewords |
| details::OnceCache< std::vector< Vector< T > > > | standard_array |
| details::OnceCache< std::vector< bool > > | tainted |
| details::OnceCache< std::vector< bool > > | tainted_burst |
| details::OnceCache< std::unordered_map< size_t, Vector< T > > > | Meggitt_table |
| details::OnceCache< std::vector< std::optional< LinearCode< T > > > > | punctured_codes_BD |
| details::OnceCache< std::vector< std::optional< LinearCode< T > > > > | punctured_codes_ML |
| details::OnceCache< bool > | polynomial |
| details::OnceCache< Polynomial< T > > | gamma |
| details::OnceCache< Trellis< T > > | minimal_trellis |
| Protected Attributes inherited from CECCO::Code< T > | |
| size_t | n |
| using CECCO::LinearCode< T >::FIELD = T |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlineoverridevirtual |
Reimplemented from CECCO::Code< T >.
|
inlineoverridevirtual |
Reimplemented from CECCO::Code< T >.
Reimplemented in CECCO::AugmentedCode< T, B >, CECCO::ExtendedCode< T, B >, CECCO::GRSCode< T >, CECCO::HammingCode< T >, CECCO::RepetitionCode< T >, CECCO::SimplexCode< T >, CECCO::SingleParityCheckCode< T >, and CECCO::UniverseCode< T >.
|
inlineoverridevirtual |
Reimplemented from CECCO::Code< T >.
Reimplemented in CECCO::AugmentedCode< T, B >, CECCO::ExtendedCode< T, B >, CECCO::GRSCode< T >, CECCO::HammingCode< T >, CECCO::RepetitionCode< T >, CECCO::SimplexCode< T >, CECCO::SingleParityCheckCode< T >, and CECCO::UniverseCode< T >.
|
inlineoverridevirtual |
Reimplemented from CECCO::Code< T >.
|
inlineoverridevirtual |
Reimplemented from CECCO::Code< T >.
Reimplemented in CECCO::UniverseCode< T >.
|
inline |
|
inlineoverridevirtual |
Reimplemented from CECCO::Code< T >.
|
inlineoverridevirtual |
Reimplemented from CECCO::Code< T >.
Reimplemented in CECCO::AugmentedCode< T, B >, CECCO::ExtendedCode< T, B >, CECCO::HammingCode< T >, CECCO::RepetitionCode< T >, CECCO::SimplexCode< T >, CECCO::SingleParityCheckCode< T >, and CECCO::UniverseCode< T >.
|
inlineoverridevirtual |
Reimplemented from CECCO::Code< T >.
Reimplemented in CECCO::AugmentedCode< T, B >, CECCO::ExtendedCode< T, B >, CECCO::HammingCode< T >, CECCO::RepetitionCode< T >, CECCO::SimplexCode< T >, CECCO::SingleParityCheckCode< T >, and CECCO::UniverseCode< T >.
|
inlineoverridevirtual |
Reimplemented from CECCO::Code< T >.
|
inlineoverridevirtual |
Reimplemented from CECCO::Code< T >.
|
inlineoverridevirtual |
Reimplemented from CECCO::Code< T >.
|
inlineoverridevirtual |
Reimplemented from CECCO::Code< T >.
|
inlineoverridevirtual |
Reimplemented from CECCO::Code< T >.
Reimplemented in CECCO::RepetitionCode< T >, and CECCO::UniverseCode< T >.
|
inlineoverridevirtual |
Reimplemented from CECCO::Code< T >.
Reimplemented in CECCO::RepetitionCode< T >, and CECCO::UniverseCode< T >.
|
inlinestaticprotected |
|
inlinevirtual |
Reimplemented in CECCO::LDCCode< BU, BV >.
|
inline |
|
inline |
|
inlinenoexcept |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlinenoexcept |
|
inline |
|
inlineoverridevirtual |
Reimplemented from CECCO::Code< T >.
Reimplemented in CECCO::AlternantCode< B >, CECCO::AlternantCode< GRSCode< SUPER > >, CECCO::AugmentedCode< T, B >, CECCO::BCHCode< B >, CECCO::CordaroWagnerCode, CECCO::ExtendedCode< T, B >, CECCO::GolayCode< T >, CECCO::GoppaCode< SUPER >, CECCO::GRSCode< T >, CECCO::HammingCode< T >, CECCO::LDCCode< BU, BV >, CECCO::RepetitionCode< T >, CECCO::RMCode, CECCO::RSCode< T >, CECCO::SimplexCode< T >, CECCO::SingleParityCheckCode< T >, CECCO::SubfieldSubcode< B >, CECCO::UniverseCode< T >, and CECCO::ZeroCode< T >.
|
inlinenoexcept |
|
inline |
|
inline |
|
inlinenoexcept |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlinevirtual |
Reimplemented in CECCO::ExtendedCode< T, B >.
|
inline |
|
inline |
|
inline |
|
inline |
Test whether two linear codes are equivalent.
| S | Field type of the other code (must equal T for a meaningful comparison) |
| other | Linear code to compare against |
| L_ptr | If non-null, receives the invertible k × k matrix L such that G' = L · G · P |
| P_ptr | If non-null, receives the n × n permutation matrix P such that G' = L · G · P |
Two [n, k] linear codes are equivalent if their generator matrices are related by G' = L · G · P for some invertible matrix L and permutation matrix P. When n − k < k, the search is performed on the dual codes for efficiency.
|
inline |
Test whether two linear codes are identical.
| S | Field type of the other code (must equal T for a meaningful comparison) |
| other | Linear code to compare against |
| L_ptr | If non-null, receives the invertible k × k matrix L such that G' = L · G |
Two [n, k] linear codes are identical if they have the same codebook, which is the case if and only if their generator matrices have the same RREF. When n − k < k, the comparison is performed on the parity-check matrices for efficiency.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlineprotected |
|
mutableprotected |
|
mutableprotected |
|
protected |
|
mutableprotected |
|
protected |
|
protected |
|
protected |
|
mutableprotected |
|
protected |
|
mutableprotected |
|
mutableprotected |
|
mutableprotected |
|
mutableprotected |
|
mutableprotected |
|
mutableprotected |
|
mutableprotected |
|
mutableprotected |