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 "code_bounds.hpp"
#include "trellises.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::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::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::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)

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::boosted_BD , CECCO::ML , CECCO::ML_soft ,
  CECCO::Viterbi , CECCO::Viterbi_soft , CECCO::BCJR , CECCO::recursive ,
  CECCO::Meggitt , CECCO::WBA , CECCO::BMA , CECCO::WBA_EE ,
  CECCO::BMA_EE , CECCO::BD_EE , CECCO::ML_EE , CECCO::Viterbi_EE ,
  CECCO::recursive_EE
}

Functions

template<FiniteFieldType T>
Polynomial< InfIntCECCO::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 T &C)
bool CECCO::details::validate (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>
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>
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>
auto CECCO::puncture (const EmptyCode< T > &C, const std::vector< size_t > &v)
template<FieldType T>
auto CECCO::puncture (const ZeroCode< T > &C, const std::vector< size_t > &v)
template<FieldType T>
auto CECCO::puncture (const UniverseCode< T > &C, const std::vector< size_t > &v)
template<FieldType T>
auto CECCO::puncture (const RepetitionCode< T > &C, const std::vector< size_t > &v)
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>
auto CECCO::expurgate (const EmptyCode< T > &C, const std::vector< size_t > &v)
template<FieldType T>
auto CECCO::expurgate (const ZeroCode< T > &C, const std::vector< size_t > &v)
template<FieldType T>
auto CECCO::expurgate (const RepetitionCode< T > &C, const std::vector< size_t > &v)
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()

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.1.1
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.