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
codes.hpp File Reference

Error control codes library. More...

#include <bit>
#include <queue>
#include "code_bounds.hpp"
#include "graphs.hpp"
Include dependency graph for codes.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  CECCO::details::verbosity_guard
 Restores the stream's verbosity level on scope exit (used when printing info for codes constructed from other codes). More...
class  CECCO::Code< T >
class  CECCO::EmptyCode< T >
class  CECCO::CodewordIterator< T >
class  CECCO::decoding_failure
class  CECCO::LinearCode< T >
class  CECCO::UniverseCode< T >
class  CECCO::ZeroCode< T >
class  CECCO::HammingCode< T >
class  CECCO::SimplexCode< T >
class  CECCO::RepetitionCode< T >
class  CECCO::SingleParityCheckCode< T >
class  CECCO::GolayCode< T >
class  CECCO::GRSCode< T >
class  CECCO::RSCode< T >
class  CECCO::CordaroWagnerCode
class  CECCO::ConvolutionalCode< T >
class  CECCO::LDCCode< BU, BV >
class  CECCO::RMCode
class  CECCO::SubfieldSubcode< B >
class  CECCO::AlternantCode< B >
class  CECCO::BCHCode< B >
class  CECCO::GoppaCode< SUPER >
class  CECCO::ExtendedCode< T, B >
class  CECCO::AugmentedCode< T, B >
class  CECCO::Enc< T >
class  CECCO::Dec< T >
class  CECCO::Dec_list< T >
class  CECCO::ListProcessor
class  CECCO::Encinv< T >

Namespaces

namespace  CECCO
 Provides a framework for error correcting codes.
namespace  CECCO::details
 Contains implementation details not to be exposed to the user. Functions and classes here may change without notice.

Macros

#define BOLD(x)
#define DECODING_TABLES_LIMIT   256
#define VITERBI_LIST_SIZE   2
#define BP_MAX_ITERATIONS   50
#define OSD_ORDER   2
#define LC_OSD_DELTA   4
#define LC_OSD_LIST_SIZE   1024
#define SA_LIST_SIZE   2
#define GSA_MULTIPLICITY   2
#define GSA_LIST_SIZE   4
#define KVA_STRENGTH   7
#define KVA_LIST_SIZE   8

Typedefs

template<class B>
using CECCO::base_t = std::remove_cvref_t<B>
template<class C>
using CECCO::field_t = typename base_t<C>::FIELD

Enumerations

enum class  CECCO::method_t {
  CECCO::BD , CECCO::standard_array , CECCO::BD_standard_array , CECCO::boosted_BD_standard_array ,
  CECCO::ML , CECCO::ML_soft , CECCO::Viterbi , CECCO::Viterbi_soft ,
  CECCO::BCJR , CECCO::ssMAP , CECCO::BP , CECCO::recursive ,
  CECCO::Meggitt , CECCO::WBA , CECCO::WBA_optimized , CECCO::BMA ,
  CECCO::OSD , CECCO::LC_OSD , CECCO::WBA_EE , CECCO::BMA_EE ,
  CECCO::BD_EE , CECCO::ML_EE , CECCO::Viterbi_EE , CECCO::recursive_EE ,
  CECCO::GMD
}
enum class  CECCO::list_method_t {
  CECCO::Viterbi , CECCO::Viterbi_soft , CECCO::SA , CECCO::SA_optimized ,
  CECCO::GSA , CECCO::GSA_optimized , CECCO::KVA
}
enum class  CECCO::list_processing_t { CECCO::pick_first , CECCO::pick_random }
enum class  CECCO::termination_t { CECCO::zero_terminated , CECCO::tailbitten }

Functions

template<FiniteFieldType T>
Polynomial< InfInt > CECCO::MacWilliamsIdentity (const Polynomial< InfInt > &A, size_t n, size_t k)
std::ostream & CECCO::showbasic (std::ostream &os)
std::ostream & CECCO::showmost (std::ostream &os)
std::ostream & CECCO::showall (std::ostream &os)
std::ostream & CECCO::showspecial (std::ostream &os)
template<FieldType T>
Matrix< T > CECCO::details::LDC_G (const Matrix< T > &G_U, const Matrix< T > &G_V)
template<class B>
 CECCO::SubfieldSubcode (const B &) -> SubfieldSubcode< B >
template<class B>
 CECCO::SubfieldSubcode (B &&) -> SubfieldSubcode< B >
template<FieldType T>
auto CECCO::dual (const LinearCode< T > &C)
bool CECCO::details::validate_modification_pattern (const std::vector< size_t > &v, std::size_t n)
template<class B>
auto CECCO::extend (B &&base, size_t i, const Vector< field_t< B > > &v)
template<class B>
auto CECCO::extend (B &&base)
template<FieldType T, class B>
B CECCO::unextend (const ExtendedCode< T, B > &C)
template<class B>
auto CECCO::augment (B &&base, size_t j, const Vector< field_t< B > > &w)
template<FieldType T, class B>
B CECCO::unaugment (const AugmentedCode< T, B > &C)
template<class B>
auto CECCO::lengthen (B &&base, size_t j, const Vector< field_t< B > > &w, size_t i, const Vector< field_t< B > > &v)
template<class B>
auto CECCO::lengthen (B &&base, size_t j, const Vector< field_t< B > > &w)
template<FieldType T, class D>
auto CECCO::unlengthen (const ExtendedCode< T, AugmentedCode< T, D > > &C)
template<FieldType T>
LinearCode< T > CECCO::puncture (const LinearCode< T > &C, const std::vector< size_t > &v)
template<FieldType T>
EmptyCode< T > CECCO::puncture (const EmptyCode< T > &, const std::vector< size_t > &)
template<class C>
auto CECCO::puncture (C &&code, size_t i)
template<FieldType T>
LinearCode< T > CECCO::expurgate (const LinearCode< T > &C, const std::vector< size_t > &v)
template<FieldType T>
EmptyCode< T > CECCO::expurgate (const EmptyCode< T > &, const std::vector< size_t > &)
template<class C>
auto CECCO::expurgate (C &&code, size_t j)
template<class B>
auto CECCO::shorten (B &&base, size_t j, size_t i)
template<FieldType L, FieldType R>
bool CECCO::operator== (const LinearCode< L > &lhs, const LinearCode< R > &rhs)
template<FieldType L, FieldType R>
bool CECCO::operator!= (const LinearCode< L > &lhs, const LinearCode< R > &rhs)
template<FieldType L, FieldType R>
bool CECCO::identical (const LinearCode< L > &lhs, const LinearCode< R > &rhs)
template<FieldType L, FieldType R>
bool CECCO::equivalent (const LinearCode< L > &lhs, const LinearCode< R > &rhs)
template<FieldType T>
std::ostream & CECCO::operator<< (std::ostream &os, const Code< T > &rhs)

Variables

const int CECCO::details::index = std::ios_base::xalloc()
constexpr long CECCO::details::basic = 0
 Verbosity levels stored in os.iword(index), set by the show* manipulators.
constexpr long CECCO::details::most = 1
constexpr long CECCO::details::all = 2
constexpr long CECCO::details::special = 3

Detailed Description

Error control codes library.

Author
Christian Senger senge.nosp@m.r@in.nosp@m.ue.un.nosp@m.i-st.nosp@m.uttga.nosp@m.rt.d.nosp@m.e
Version
2.5.5
Date
2026

Licensed for noncommercial use only, including academic teaching, research, and personal non-profit purposes. Commercial use is prohibited without a separate commercial license. See the LICENSE file in the repository root for full terms and how to request a commercial license.

Definition in file codes.hpp.

Macro Definition Documentation

◆ BOLD

#define BOLD ( x)
Value:
"\033[1m" x "\033[0m"

Definition at line 57 of file codes.hpp.

◆ BP_MAX_ITERATIONS

#define BP_MAX_ITERATIONS   50

Definition at line 80 of file codes.hpp.

◆ DECODING_TABLES_LIMIT

#define DECODING_TABLES_LIMIT   256

Definition at line 65 of file codes.hpp.

◆ GSA_LIST_SIZE

#define GSA_LIST_SIZE   4

Definition at line 116 of file codes.hpp.

◆ GSA_MULTIPLICITY

#define GSA_MULTIPLICITY   2

Definition at line 112 of file codes.hpp.

◆ KVA_LIST_SIZE

#define KVA_LIST_SIZE   8

Definition at line 124 of file codes.hpp.

◆ KVA_STRENGTH

#define KVA_STRENGTH   7

Definition at line 120 of file codes.hpp.

◆ LC_OSD_DELTA

#define LC_OSD_DELTA   4

Definition at line 92 of file codes.hpp.

◆ LC_OSD_LIST_SIZE

#define LC_OSD_LIST_SIZE   1024

Definition at line 98 of file codes.hpp.

◆ OSD_ORDER

#define OSD_ORDER   2

Definition at line 86 of file codes.hpp.

◆ SA_LIST_SIZE

#define SA_LIST_SIZE   2

Definition at line 108 of file codes.hpp.

◆ VITERBI_LIST_SIZE

#define VITERBI_LIST_SIZE   2

Definition at line 72 of file codes.hpp.