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::LDCCode< BU, BV > Class Template Reference

#include <codes.hpp>

Inheritance diagram for CECCO::LDCCode< BU, BV >:
Inheritance graph

Public Types

using T = typename BU::FIELD
Public Types inherited from CECCO::LinearCode< BU::FIELD >
using FIELD

Public Member Functions

 LDCCode (const BU &U, const BV &V)
const BU & get_U () const noexcept
const BV & get_V () const noexcept
size_t get_dmin () const override
void get_info (std::ostream &os) const override
Vector< T > dec_recursive (const Vector< T > &r) const override
Vector< T > dec_recursive_EE (const Vector< T > &r) const override
Public Member Functions inherited from CECCO::LinearCode< BU::FIELD >
 LinearCode (size_t n, size_t k, const Matrix< T > &X)
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
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
bool is_identical (const LinearCode< S > &other, Matrix< T > *L_ptr=nullptr) const
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
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
Vector< T > dec_ML_soft (const Vector< 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_BCJR (const Vector< 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_OSD (const Vector< 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
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
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
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 Vector< T > dec_ML_soft (const Matrix< double > &) const
virtual Vector< T > dec_Viterbi_soft (const Matrix< double > &, const std::string &="") const
virtual std::vector< Vector< T > > dec_Viterbi_soft_list (const Matrix< double > &, size_t) const
virtual Vector< T > dec_BCJR (const Matrix< double > &, Matrix< double > *=nullptr, const std::string &="") const
virtual Vector< T > dec_ssMAP (const Matrix< double > &, Matrix< double > *=nullptr, const std::string &="") const
virtual Vector< T > dec_BP (const Matrix< double > &, size_t=BP_MAX_ITERATIONS, Matrix< double > *=nullptr, const std::string &="", size_t *=nullptr) const
virtual Vector< T > dec_OSD (const Matrix< double > &, size_t=OSD_ORDER) const
virtual Vector< T > dec_LC_OSD (const Matrix< double > &, size_t=LC_OSD_DELTA, size_t=LC_OSD_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
virtual Vector< T > dec_GMD (const Vector< double > &) const
virtual Vector< T > dec_GMD (const Matrix< double > &) const

Additional Inherited Members

Protected Member Functions inherited from CECCO::LinearCode< BU::FIELD >
void set_dmin (size_t d) const
void set_weight_enumerator (const Polynomial< InfInt > &p) const
void set_gamma (const Polynomial< T > &g) const
void validate_length (const Vector< T > &r) 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 inherited from CECCO::LinearCode< BU::FIELD >
static bool erasures_present (const Vector< T > &r)
Protected Attributes inherited from CECCO::LinearCode< BU::FIELD >
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<class BU, class BV>
requires (std::derived_from<BU, LinearCode<typename BU::FIELD>> && std::derived_from<BV, LinearCode<typename BV::FIELD>> && std::same_as<typename BU::FIELD, typename BV::FIELD>)
class CECCO::LDCCode< BU, BV >

Definition at line 5856 of file codes.hpp.

Member Typedef Documentation

◆ T

template<class BU, class BV>
using CECCO::LDCCode< BU, BV >::T = typename BU::FIELD

Definition at line 5858 of file codes.hpp.

Constructor & Destructor Documentation

◆ LDCCode()

template<class BU, class BV>
CECCO::LDCCode< BU, BV >::LDCCode ( const BU & U,
const BV & V )
inline

Definition at line 5860 of file codes.hpp.

Member Function Documentation

◆ dec_recursive()

template<class BU, class BV>
Vector< T > CECCO::LDCCode< BU, BV >::dec_recursive ( const Vector< T > & r) const
inlineoverride

Definition at line 5891 of file codes.hpp.

◆ dec_recursive_EE()

template<class BU, class BV>
Vector< T > CECCO::LDCCode< BU, BV >::dec_recursive_EE ( const Vector< T > & r) const
inlineoverride

Definition at line 5915 of file codes.hpp.

◆ get_dmin()

template<class BU, class BV>
size_t CECCO::LDCCode< BU, BV >::get_dmin ( ) const
inlineoverridevirtual

Reimplemented from CECCO::LinearCode< BU::FIELD >.

Definition at line 5869 of file codes.hpp.

◆ get_info()

template<class BU, class BV>
void CECCO::LDCCode< BU, BV >::get_info ( std::ostream & os) const
inlineoverridevirtual

Reimplemented from CECCO::Code< T >.

Definition at line 5879 of file codes.hpp.

Here is the call graph for this function:

◆ get_U()

template<class BU, class BV>
const BU & CECCO::LDCCode< BU, BV >::get_U ( ) const
inlinenoexcept

Definition at line 5866 of file codes.hpp.

◆ get_V()

template<class BU, class BV>
const BV & CECCO::LDCCode< BU, BV >::get_V ( ) const
inlinenoexcept

Definition at line 5867 of file codes.hpp.


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