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::GRSCode< T > Class Template Reference

#include <codes.hpp>

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

Public Member Functions

 GRSCode (const Vector< T > &a, const Vector< T > &d, size_t k)
 GRSCode (const GRSCode &other)
 GRSCode (GRSCode &&other)
GRSCodeoperator= (const GRSCode &other)
GRSCodeoperator= (GRSCode &&other)
const Vector< T > & get_a () const noexcept
const Vector< T > & get_d () const noexcept
GRSCode< T > get_equivalent_code_in_standard_form () const
bool is_singly_extended () const
bool is_primitive () const
bool is_narrow_sense () const
bool is_normalized () const
virtual void get_info (std::ostream &os) const override
Vector< T > dec_BD (const Vector< T > &r) const override
Vector< T > dec_WBA (const Vector< T > &r) const override
Vector< T > dec_BMA (const Vector< T > &r) const override
Vector< T > dec_BD_EE (const Vector< T > &r) const override
Vector< T > dec_WBA_EE (const Vector< T > &r) const override
Vector< T > dec_BMA_EE (const Vector< T > &r) const override
Public Member Functions inherited from CECCO::LinearCode< T >
 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)
LinearCodeoperator= (const LinearCode &other)
LinearCodeoperator= (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
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_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_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
Codeoperator= (const Code &other)
Codeoperator= (Code &&)=default
size_t get_n () const noexcept
virtual Vector< T > dec_recursive (const Vector< T > &r) const
virtual Vector< T > dec_recursive_EE (const Vector< T > &r) const

Protected Member Functions

 GRSCode (const Vector< T > &a, const Vector< T > &d, size_t k, Matrix< T > G)
Protected Member Functions inherited from CECCO::LinearCode< T >
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

Additional Inherited Members

Public Types inherited from CECCO::LinearCode< T >
using FIELD = T
Static Protected Member Functions inherited from CECCO::LinearCode< T >
static bool erasures_present (const Vector< T > &r)
Protected Attributes inherited from CECCO::LinearCode< T >
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

Detailed Description

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

Definition at line 2859 of file codes.hpp.

Constructor & Destructor Documentation

◆ GRSCode() [1/4]

template<FieldType T>
CECCO::GRSCode< T >::GRSCode ( const Vector< T > & a,
const Vector< T > & d,
size_t k )
inline

Definition at line 2861 of file codes.hpp.

◆ GRSCode() [2/4]

template<FieldType T>
CECCO::GRSCode< T >::GRSCode ( const GRSCode< T > & other)
inline

Definition at line 2892 of file codes.hpp.

◆ GRSCode() [3/4]

template<FieldType T>
CECCO::GRSCode< T >::GRSCode ( GRSCode< T > && other)
inline

Definition at line 2899 of file codes.hpp.

◆ GRSCode() [4/4]

template<FieldType T>
CECCO::GRSCode< T >::GRSCode ( const Vector< T > & a,
const Vector< T > & d,
size_t k,
Matrix< T > G )
inlineprotected

Definition at line 3006 of file codes.hpp.

Member Function Documentation

◆ dec_BD()

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

Reimplemented from CECCO::LinearCode< T >.

Definition at line 2993 of file codes.hpp.

Here is the call graph for this function:

◆ dec_BD_EE()

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

Reimplemented from CECCO::LinearCode< T >.

Definition at line 2998 of file codes.hpp.

◆ dec_BMA()

template<FieldType T>
Vector< T > CECCO::GRSCode< T >::dec_BMA ( const Vector< T > & r) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 2995 of file codes.hpp.

◆ dec_BMA_EE()

template<FieldType T>
Vector< T > CECCO::GRSCode< T >::dec_BMA_EE ( const Vector< T > & r) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 3002 of file codes.hpp.

◆ dec_WBA()

template<FieldType T>
Vector< T > CECCO::GRSCode< T >::dec_WBA ( const Vector< T > & r) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 2994 of file codes.hpp.

Here is the caller graph for this function:

◆ dec_WBA_EE()

template<FieldType T>
Vector< T > CECCO::GRSCode< T >::dec_WBA_EE ( const Vector< T > & r) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 3000 of file codes.hpp.

◆ get_a()

template<FieldType T>
const Vector< T > & CECCO::GRSCode< T >::get_a ( ) const
inlinenoexcept

Definition at line 2928 of file codes.hpp.

◆ get_d()

template<FieldType T>
const Vector< T > & CECCO::GRSCode< T >::get_d ( ) const
inlinenoexcept

Definition at line 2929 of file codes.hpp.

◆ get_equivalent_code_in_standard_form()

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

Definition at line 2931 of file codes.hpp.

◆ get_info()

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

Reimplemented from CECCO::LinearCode< T >.

Reimplemented in CECCO::RSCode< T >.

Definition at line 2970 of file codes.hpp.

Here is the call graph for this function:

◆ is_narrow_sense()

template<FieldType T>
bool CECCO::GRSCode< T >::is_narrow_sense ( ) const
inline

Definition at line 2961 of file codes.hpp.

Here is the caller graph for this function:

◆ is_normalized()

template<FieldType T>
bool CECCO::GRSCode< T >::is_normalized ( ) const
inline

Definition at line 2968 of file codes.hpp.

Here is the caller graph for this function:

◆ is_primitive()

template<FieldType T>
bool CECCO::GRSCode< T >::is_primitive ( ) const
inline

Definition at line 2948 of file codes.hpp.

Here is the caller graph for this function:

◆ is_singly_extended()

template<FieldType T>
bool CECCO::GRSCode< T >::is_singly_extended ( ) const
inline

Definition at line 2941 of file codes.hpp.

Here is the caller graph for this function:

◆ operator=() [1/2]

template<FieldType T>
GRSCode & CECCO::GRSCode< T >::operator= ( const GRSCode< T > & other)
inline

Definition at line 2906 of file codes.hpp.

◆ operator=() [2/2]

template<FieldType T>
GRSCode & CECCO::GRSCode< T >::operator= ( GRSCode< T > && other)
inline

Definition at line 2917 of file codes.hpp.


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