|
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>
|
Provides a framework for error correcting codes. More...
Namespaces | |
| namespace | details |
| Contains implementation details not to be exposed to the user. Functions and classes here may change without notice. | |
Classes | |
| class | SDMEC |
| Symmetric Discrete Memoryless Erasure Channel (SDMEC) over any finite field 𝔽_q. More... | |
| class | SDMC |
| Symmetric Discrete Memoryless Channel — errors only, no erasures. More... | |
| class | BEC |
| Binary Erasure Channel — symbols are received correctly or marked erased. More... | |
| class | BAC |
| Binary Asymmetric Channel (Z-channel) — 0 is preserved; 1 flips to 0 with probability p. More... | |
| class | NRZMapper |
| Non-Return-to-Zero (NRZ) mapper for binary modulation. More... | |
| class | BPSKMapper |
| Binary Phase Shift Keying mapper — NRZMapper with a = 0, b = 2. More... | |
| class | AWGN |
| Additive White Gaussian Noise channel for complex-valued symbols. More... | |
| class | BI_AWGN |
| Binary-Input AWGN — fused NRZMapper + AWGN block. More... | |
| class | NRZDemapper |
| Non-Return-to-Zero (NRZ) hard-decision demapper. More... | |
| class | BPSKDemapper |
| BPSK hard-decision demapper — NRZDemapper with threshold 0. More... | |
| class | LLRCalculator |
| Log-Likelihood Ratio calculator for NRZ-over-AWGN soft demodulation. More... | |
| class | DEMUX |
| Field demultiplexer — expand 𝔽_E elements into 𝔽_S coefficient vectors/matrices. More... | |
| class | MUX |
| Field multiplexer — reconstruct 𝔽_E elements from 𝔽_S coefficients. More... | |
| class | Code |
| class | EmptyCode |
| class | LinearCode |
| class | UniverseCode |
| class | ZeroCode |
| class | SimplexCode |
| class | SingleParityCheckCode |
| class | ExtendedCode |
| class | CodewordIterator |
| class | decoding_failure |
| class | HammingCode |
| class | RepetitionCode |
| class | GolayCode |
| class | GRSCode |
| class | RSCode |
| class | CordaroWagnerCode |
| class | LDCCode |
| class | RMCode |
| class | SubfieldSubcode |
| class | AlternantCode |
| class | BCHCode |
| class | GoppaCode |
| class | AugmentedCode |
| class | Enc |
| class | Dec |
| class | Encinv |
| class | Rationals |
| Field of rational numbers ℚ = { p/q : p, q ∈ ℤ, q ≠ 0 } with selectable precision. More... | |
| class | Fp |
| Prime field 𝔽_p ≅ ℤ/pℤ More... | |
| class | Ext |
| Extension field 𝔽_{q^m} ≅ B[x]/(f(x)), constructed from a base field and an irreducible monic modulus polynomial. More... | |
| class | Iso |
| Single logical field unifying several pairwise-isomorphic representations. More... | |
| class | Vector |
| Vector v = (v₀, v₁, …, vₙ₋₁) over a CECCO::ComponentType. More... | |
| class | Polynomial |
| Univariate polynomial p(x) = a₀ + a₁x + … + aₙxⁿ over a CECCO::ComponentType. More... | |
| class | Matrix |
| Dense m × n matrix over a CECCO::ComponentType. More... | |
| class | Embedding |
| Functor representing the field embedding φ: SUBFIELD → SUPERFIELD, with reverse lookup. More... | |
| class | Isomorphism |
| Functor representing the field isomorphism φ: A → B between two same-size finite fields. More... | |
| class | RNG |
| Thread-local random number generator with shared seeding policy. More... | |
| struct | Trellis |
| Trellis with field-labelled edges between consecutive layers. More... | |
Concepts | |
| concept | FieldType |
| Concept for field types: full algebraic interface. | |
| concept | FiniteFieldType |
| Refines FieldType for finite fields 𝔽_{p^m}. | |
| concept | SignedIntType |
Standard signed integers or InfInt for arbitrary precision. | |
| concept | ReliablyComparableType |
| Types whose operator== reflects mathematical equality. | |
| concept | ComponentType |
| Admissible component type for CECCO::Vector, CECCO::Polynomial, CECCO::Matrix. | |
| concept | BelongsTo |
| T is identical to at least one of Types.... | |
| concept | Isomorphic |
| A and B are finite fields of the same size (and thus isomorphic). | |
| concept | SubfieldOf |
| SUBFIELD ⊆ SUPERFIELD as constructed in this library (Iso paths included). | |
| concept | ExtensionOf |
| Inverse of SubfieldOf: ExtensionOf<S, E> iff SubfieldOf<E, S>. | |
Typedefs | |
| using | BSC = SDMC<Fp<2>> |
| Binary Symmetric Channel — type alias for SDMC<Fp<2>>. | |
| template<class B> | |
| using | base_t = std::remove_cvref_t<B> |
| template<class C> | |
| using | field_t = typename base_t<C>::FIELD |
| template<uint16_t p, uint8_t m = 1> | |
| using | label_t = typename std::conditional_t<sqm(p, m) < 255, uint8_t, uint16_t> |
Enumerations | |
| enum class | method_t { BD , boosted_BD , ML , ML_soft , Viterbi , Viterbi_soft , BCJR , recursive , Meggitt , WBA , BMA , WBA_EE , BMA_EE , BD_EE , ML_EE , Viterbi_EE , recursive_EE } |
| enum class | LutMode { CompileTime , RunTime } |
| LUT generation mode for field operations. More... | |
Functions | |
| template<class LHS, class RHS> | |
| decltype(auto) | operator>> (LHS &&lhs, RHS &&rhs) |
| Function-call chaining: x >> f ≡ f(x). | |
| template<class LHS, class RHS> | |
| RHS & | operator>> (LHS &&lhs, RHS &dst) |
| Assignment chaining: x >> dst ≡ dst = x; return dst. | |
| template<FiniteFieldType T> | |
| long double | HammingUpperBound (size_t n, size_t dmin) |
| template<FiniteFieldType T> | |
| long double | JohnsonUpperBound (size_t n, size_t dmin) |
| template<FiniteFieldType T> | |
| long double | PlotkinUpperBound (size_t n, size_t dmin) |
| template<FiniteFieldType T> | |
| long double | EliasUpperBound (size_t n, size_t dmin) |
| size_t | SingletonUpperBound (size_t n, size_t dmin) |
| template<FiniteFieldType T> | |
| size_t | GriesmerUpperBound (size_t n, size_t dmin) |
| template<FiniteFieldType T> | |
| long double | UpperBound (size_t n, size_t dmin) |
| template<FiniteFieldType T> | |
| size_t | GilbertVarshamovLowerBound (size_t n, size_t dmin) |
| template<FiniteFieldType T> | |
| size_t | BurstUpperBound (size_t n, size_t ell) |
| size_t | ReigerBurstUpperBound (size_t n, size_t ell) |
| template<FiniteFieldType T> | |
| Polynomial< InfInt > | MacWilliamsIdentity (const Polynomial< InfInt > &A, size_t n, size_t k) |
| std::ostream & | showbasic (std::ostream &os) |
| std::ostream & | showmost (std::ostream &os) |
| std::ostream & | showall (std::ostream &os) |
| std::ostream & | showspecial (std::ostream &os) |
| template<class B> | |
| SubfieldSubcode (const B &) -> SubfieldSubcode< B > | |
| template<class B> | |
| SubfieldSubcode (B &&) -> SubfieldSubcode< B > | |
| template<FieldType T> | |
| auto | dual (const T &C) |
| template<class B> | |
| auto | extend (B &&base, size_t i, const Vector< field_t< B > > &v) |
| template<class B> | |
| auto | extend (B &&base) |
| template<FieldType T, class B> | |
| B | unextend (const ExtendedCode< T, B > &C) |
| template<class B> | |
| auto | augment (B &&base, size_t j, const Vector< field_t< B > > &w) |
| template<FieldType T, class B> | |
| B | unaugment (const AugmentedCode< T, B > &C) |
| template<class B> | |
| auto | 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 | lengthen (B &&base, size_t j, const Vector< field_t< B > > &w) |
| template<FieldType T, class D> | |
| auto | unlengthen (const ExtendedCode< T, AugmentedCode< T, D > > &C) |
| template<FieldType T> | |
| LinearCode< T > | puncture (const LinearCode< T > &C, const std::vector< size_t > &v) |
| template<FieldType T> | |
| auto | puncture (const EmptyCode< T > &C, const std::vector< size_t > &v) |
| template<FieldType T> | |
| auto | puncture (const ZeroCode< T > &C, const std::vector< size_t > &v) |
| template<FieldType T> | |
| auto | puncture (const UniverseCode< T > &C, const std::vector< size_t > &v) |
| template<FieldType T> | |
| auto | puncture (const RepetitionCode< T > &C, const std::vector< size_t > &v) |
| template<class C> | |
| auto | puncture (C &&code, size_t i) |
| template<FieldType T> | |
| LinearCode< T > | expurgate (const LinearCode< T > &C, const std::vector< size_t > &v) |
| template<FieldType T> | |
| auto | expurgate (const EmptyCode< T > &C, const std::vector< size_t > &v) |
| template<FieldType T> | |
| auto | expurgate (const ZeroCode< T > &C, const std::vector< size_t > &v) |
| template<FieldType T> | |
| auto | expurgate (const RepetitionCode< T > &C, const std::vector< size_t > &v) |
| template<class C> | |
| auto | expurgate (C &&code, size_t j) |
| template<class B> | |
| auto | shorten (B &&base, size_t j, size_t i) |
| template<FieldType L, FieldType R> | |
| bool | operator== (const LinearCode< L > &lhs, const LinearCode< R > &rhs) |
| template<FieldType L, FieldType R> | |
| bool | operator!= (const LinearCode< L > &lhs, const LinearCode< R > &rhs) |
| template<FieldType L, FieldType R> | |
| bool | identical (const LinearCode< L > &lhs, const LinearCode< R > &rhs) |
| template<FieldType L, FieldType R> | |
| bool | equivalent (const LinearCode< L > &lhs, const LinearCode< R > &rhs) |
| template<FieldType T> | |
| std::ostream & | operator<< (std::ostream &os, const Code< T > &rhs) |
| template<SignedIntType T> | |
| std::ostream & | operator<< (std::ostream &os, const Rationals< T > &e) |
| Print as "numerator/denominator" (or just "numerator" when denominator is 1). | |
| template<uint16_t p> | |
| std::ostream & | operator<< (std::ostream &os, const Fp< p > &e) |
| Print as the integer label (or ERASURE_MARKER if erased). | |
| template<FiniteFieldType B, MOD modulus, LutMode mode> | |
| std::ostream & | operator<< (std::ostream &os, const Ext< B, modulus, mode > &e) |
| Print as the integer label (or ERASURE_MARKER if erased). | |
| std::mt19937 & | gen () |
| Current thread's random number generator. | |
| template<class T> | |
| std::vector< size_t > | find_maxima (const std::vector< T > &v) |
| Indices of all maximum elements. | |
| template<class T> | |
| constexpr bool | is_prime (T a) noexcept |
| Primality test by trial division. | |
| template<class T> | |
| constexpr T | GCD (T a, T b, T *s=nullptr, T *t=nullptr) noexcept |
| Greatest common divisor and optional Bézout coefficients. | |
| template<uint16_t p, class T> | |
| constexpr T | modinv (T a) noexcept |
| Multiplicative inverse modulo a prime. | |
| template<class T> | |
| T | fac (T a) noexcept |
| Factorial a! | |
| template<class T> | |
| T | bin (const T &n, T k) noexcept |
| Binomial coefficient C(n,k). | |
| template<> | |
| InfInt | bin (const InfInt &n, InfInt k) noexcept |
| Binomial coefficient specialization for InfInt. | |
| template<class T> | |
| constexpr T | sqm (T b, int e) |
| Exponentiation by square-and-multiply. | |
| template<class T> | |
| constexpr T | daa (T b, int m) |
| Scalar multiplication by double-and-add. | |
| template<ComponentType T> | |
| constexpr Matrix< T > | ZeroMatrix (size_t m, size_t n) |
| m × n matrix of zeros (tag details::Zero) | |
| template<ComponentType T> | |
| constexpr Matrix< T > | IdentityMatrix (size_t m) |
| m × m identity matrix I_m (tag details::Identity) | |
| template<ComponentType T> | |
| constexpr Matrix< T > | DiagonalMatrix (const Vector< T > &v) |
| Diagonal matrix with diagonal v (tag details::Diagonal). | |
| template<ComponentType T> | |
| constexpr Matrix< T > | ToeplitzMatrix (const Vector< T > &v, size_t m, size_t n) |
| m × n Toeplitz matrix from its diagonal entries (tag details::Toeplitz) | |
| template<ComponentType T> | |
| constexpr Matrix< T > | VandermondeMatrix (const Vector< T > &v, size_t m) |
| Vandermonde matrix V_{i, j} = v[j]^i (tag details::Vandermonde). | |
| template<ComponentType T> | |
| std::ostream & | operator<< (std::ostream &os, const Matrix< T > &rhs) |
| Pretty-print the matrix with column alignment and bracket borders. | |
| template<ComponentType T> | |
| constexpr Matrix< T > | operator+ (const Matrix< T > &lhs, const Matrix< T > &rhs) |
| template<ComponentType T> | |
| constexpr Matrix< T > | operator+ (Matrix< T > &&lhs, const Matrix< T > &rhs) |
| template<ComponentType T> | |
| constexpr Matrix< T > | operator+ (const Matrix< T > &lhs, Matrix< T > &&rhs) |
| template<ComponentType T> | |
| constexpr Matrix< T > | operator+ (Matrix< T > &&lhs, Matrix< T > &&rhs) |
| template<ComponentType T> | |
| constexpr Matrix< T > | operator- (const Matrix< T > &lhs, const Matrix< T > &rhs) |
| template<ComponentType T> | |
| constexpr Matrix< T > | operator- (Matrix< T > &&lhs, const Matrix< T > &rhs) |
| template<ComponentType T> | |
| constexpr Matrix< T > | operator- (const Matrix< T > &lhs, Matrix< T > &&rhs) |
| template<ComponentType T> | |
| constexpr Matrix< T > | operator- (Matrix< T > &&lhs, Matrix< T > &&rhs) |
| template<ComponentType T> | |
| constexpr Matrix< T > | operator* (const Matrix< T > &lhs, const Matrix< T > &rhs) |
| template<ComponentType T> | |
| constexpr Matrix< T > | operator* (Matrix< T > &&lhs, const Matrix< T > &rhs) |
| template<ComponentType T> | |
| constexpr Vector< T > | operator* (const Vector< T > &lhs, const Matrix< T > &rhs) |
| template<ComponentType T> | |
| constexpr Vector< T > | operator* (Vector< T > &&lhs, const Matrix< T > &rhs) |
| template<ComponentType T> | |
| constexpr Matrix< T > | operator* (const Matrix< T > &lhs, const T &rhs) |
| template<ComponentType T> | |
| constexpr Matrix< T > | operator* (Matrix< T > &&lhs, const T &rhs) |
| template<ComponentType T> | |
| constexpr Matrix< T > | operator* (const T &lhs, const Matrix< T > &rhs) |
| template<ComponentType T> | |
| constexpr Matrix< T > | operator* (const T &lhs, Matrix< T > &&rhs) |
| template<ComponentType T> | |
| constexpr Matrix< T > | operator/ (const Matrix< T > &lhs, const T &rhs) |
| template<ComponentType T> | |
| constexpr Matrix< T > | operator/ (Matrix< T > &&lhs, const T &rhs) |
| template<ComponentType T> | |
| Matrix< T > | randomize (const Matrix< T > &M) |
| template<ComponentType T> | |
| Matrix< T > | randomize (Matrix< T > &&M) |
| template<ReliablyComparableType T> | |
| constexpr size_t | wH (const Matrix< T > &M) |
| template<ComponentType T> requires std::convertible_to<std::decay_t<decltype(M)>, Matrix<T>> | |
| Matrix< T > | set_component (auto &&M, size_t i, size_t j, const T &c) |
| template<ComponentType T> | |
| Matrix< T > | get_submatrix (const Matrix< T > &M, size_t i, size_t j, size_t h, size_t w) |
| template<ComponentType T> | |
| Matrix< T > | get_submatrix (Matrix< T > &&M, size_t i, size_t j, size_t h, size_t w) |
| template<ComponentType T> | |
| Matrix< T > | set_submatrix (const Matrix< T > &M, size_t i, size_t j, const Matrix< T > &N) |
| template<ComponentType T> | |
| Matrix< T > | set_submatrix (Matrix< T > &&M, size_t i, size_t j, const Matrix< T > &N) |
| template<ComponentType T> | |
| Matrix< T > | horizontal_join (const Matrix< T > &lhs, const Matrix< T > &rhs) |
| template<ComponentType T> | |
| Matrix< T > | horizontal_join (Matrix< T > &&lhs, const Matrix< T > &rhs) |
| template<ComponentType T> | |
| Matrix< T > | horizontal_join (Matrix< T > &&lhs, Matrix< T > &&rhs) |
| template<ComponentType T> | |
| Matrix< T > | vertical_join (const Matrix< T > &lhs, const Matrix< T > &rhs) |
| template<ComponentType T> | |
| Matrix< T > | vertical_join (Matrix< T > &&lhs, const Matrix< T > &rhs) |
| template<ComponentType T> | |
| Matrix< T > | vertical_join (Matrix< T > &&lhs, Matrix< T > &&rhs) |
| template<ComponentType T> | |
| Matrix< T > | diagonal_join (const Matrix< T > &lhs, const Matrix< T > &rhs) |
| template<ComponentType T> | |
| Matrix< T > | diagonal_join (Matrix< T > &&lhs, const Matrix< T > &rhs) |
| template<ComponentType T> | |
| Matrix< T > | diagonal_join (Matrix< T > &&lhs, Matrix< T > &&rhs) |
| template<ComponentType T> | |
| Matrix< T > | Kronecker_product (const Matrix< T > &lhs, const Matrix< T > &rhs) |
| template<ComponentType T> | |
| Matrix< T > | Kronecker_product (Matrix< T > &&lhs, const Matrix< T > &rhs) |
| template<ComponentType T> | |
| Matrix< T > | Kronecker_product (Matrix< T > &&lhs, Matrix< T > &&rhs) |
| template<ComponentType T> | |
| Matrix< T > | swap_rows (const Matrix< T > &M, size_t i, size_t j) |
| template<ComponentType T> | |
| Matrix< T > | swap_columns (const Matrix< T > &M, size_t i, size_t j) |
| template<ComponentType T> | |
| Matrix< T > | swap_rows (Matrix< T > &&M, size_t i, size_t j) |
| template<ComponentType T> | |
| Matrix< T > | swap_columns (Matrix< T > &&M, size_t i, size_t j) |
| template<ComponentType T> | |
| Matrix< T > | scale_row (const Matrix< T > &M, const T &s, size_t i) |
| template<ComponentType T> | |
| Matrix< T > | scale_column (const Matrix< T > &M, const T &s, size_t i) |
| template<ComponentType T> | |
| Matrix< T > | scale_row (Matrix< T > &&M, const T &s, size_t i) |
| template<ComponentType T> | |
| Matrix< T > | scale_column (Matrix< T > &&M, const T &s, size_t i) |
| template<ComponentType T> | |
| Matrix< T > | add_scaled_row (const Matrix< T > &M, const T &s, size_t i, size_t j) |
| template<ComponentType T> | |
| Matrix< T > | add_scaled_column (const Matrix< T > &M, const T &s, size_t i, size_t j) |
| template<ComponentType T> | |
| Matrix< T > | add_scaled_row (Matrix< T > &&M, const T &s, size_t i, size_t j) |
| template<ComponentType T> | |
| Matrix< T > | add_scaled_column (Matrix< T > &&M, const T &s, size_t i, size_t j) |
| template<ComponentType T> | |
| Matrix< T > | add_row (const Matrix< T > &M, size_t i, size_t j) |
| template<ComponentType T> | |
| Matrix< T > | add_column (const Matrix< T > &M, size_t i, size_t j) |
| template<ComponentType T> | |
| Matrix< T > | add_row (Matrix< T > &&M, size_t i, size_t j) |
| template<ComponentType T> | |
| Matrix< T > | add_column (Matrix< T > &&M, size_t i, size_t j) |
| template<ComponentType T> | |
| constexpr Matrix< T > | delete_columns (const Matrix< T > &lhs, const std::vector< size_t > &v) |
| template<ComponentType T> | |
| constexpr Matrix< T > | delete_columns (Matrix< T > &&lhs, const std::vector< size_t > &v) |
| template<ComponentType T> | |
| constexpr Matrix< T > | delete_column (const Matrix< T > &lhs, size_t i) |
| template<ComponentType T> | |
| constexpr Matrix< T > | delete_column (Matrix< T > &&lhs, size_t i) |
| template<ComponentType T> | |
| constexpr Matrix< T > | delete_rows (const Matrix< T > &lhs, const std::vector< size_t > &v) |
| template<ComponentType T> | |
| constexpr Matrix< T > | delete_rows (Matrix< T > &&lhs, const std::vector< size_t > &v) |
| template<ComponentType T> | |
| constexpr Matrix< T > | delete_row (const Matrix< T > &lhs, size_t i) |
| template<ComponentType T> | |
| constexpr Matrix< T > | delete_row (Matrix< T > &&lhs, size_t i) |
| template<ComponentType T> | |
| constexpr Matrix< T > | erase_component (const Matrix< T > &lhs, size_t i, size_t j) |
| template<ComponentType T> | |
| constexpr Matrix< T > | erase_component (Matrix< T > &&lhs, size_t i, size_t j) |
| template<ComponentType T> | |
| constexpr Matrix< T > | unerase_component (const Matrix< T > &lhs, size_t i, size_t j) |
| template<ComponentType T> | |
| constexpr Matrix< T > | unerase_component (Matrix< T > &&lhs, size_t i, size_t j) |
| template<ComponentType T> | |
| constexpr Matrix< T > | erase_columns (const Matrix< T > &lhs, const std::vector< size_t > &v) |
| template<ComponentType T> | |
| constexpr Matrix< T > | erase_columns (Matrix< T > &&lhs, const std::vector< size_t > &v) |
| template<ComponentType T> | |
| constexpr Matrix< T > | erase_column (const Matrix< T > &lhs, size_t i) |
| template<ComponentType T> | |
| constexpr Matrix< T > | erase_column (Matrix< T > &&lhs, size_t i) |
| template<ComponentType T> | |
| constexpr Matrix< T > | unerase_columns (const Matrix< T > &lhs, const std::vector< size_t > &v) |
| template<ComponentType T> | |
| constexpr Matrix< T > | unerase_columns (Matrix< T > &&lhs, const std::vector< size_t > &v) |
| template<ComponentType T> | |
| constexpr Matrix< T > | unerase_column (const Matrix< T > &lhs, size_t i) |
| template<ComponentType T> | |
| constexpr Matrix< T > | unerase_column (Matrix< T > &&lhs, size_t i) |
| template<ComponentType T> | |
| constexpr Matrix< T > | erase_rows (const Matrix< T > &lhs, const std::vector< size_t > &v) |
| template<ComponentType T> | |
| constexpr Matrix< T > | erase_rows (Matrix< T > &&lhs, const std::vector< size_t > &v) |
| template<ComponentType T> | |
| constexpr Matrix< T > | erase_row (const Matrix< T > &lhs, size_t i) |
| template<ComponentType T> | |
| constexpr Matrix< T > | erase_row (Matrix< T > &&lhs, size_t i) |
| template<ComponentType T> | |
| constexpr Matrix< T > | unerase_rows (const Matrix< T > &lhs, const std::vector< size_t > &v) |
| template<ComponentType T> | |
| constexpr Matrix< T > | unerase_rows (Matrix< T > &&lhs, const std::vector< size_t > &v) |
| template<ComponentType T> | |
| constexpr Matrix< T > | unerase_row (const Matrix< T > &lhs, size_t i) |
| template<ComponentType T> | |
| constexpr Matrix< T > | unerase_row (Matrix< T > &&lhs, size_t i) |
| template<ComponentType T> | |
| Matrix< T > | reverse_rows (const Matrix< T > &M) |
| template<ComponentType T> | |
| Matrix< T > | reverse_rows (Matrix< T > &&M) |
| template<ComponentType T> | |
| Matrix< T > | reverse_columns (const Matrix< T > &M) |
| template<ComponentType T> | |
| Matrix< T > | reverse_columns (Matrix< T > &&M) |
| template<ComponentType T> | |
| constexpr Matrix< T > | fill (const Matrix< T > &m, const T &value) |
| template<ComponentType T> | |
| constexpr Matrix< T > | fill (Matrix< T > &&m, const T &value) |
| template<ComponentType T> | |
| constexpr Matrix< T > | transpose (const Matrix< T > &M) |
| template<ComponentType T> | |
| constexpr Matrix< T > | transpose (Matrix< T > &&M) |
| template<FieldType T> | |
| Matrix< T > | rref (const Matrix< T > &M) |
| template<FieldType T> | |
| Matrix< T > | rref (Matrix< T > &&M) |
| template<ComponentType T> | |
| Matrix< T > | inverse (const Matrix< T > &M) |
| template<ComponentType T> | |
| Matrix< T > | inverse (Matrix< T > &&M) |
| template<ReliablyComparableType T> | |
| constexpr bool | operator== (const Matrix< T > &lhs, const Matrix< T > &rhs) |
| Equality of two matrices. | |
| template<ReliablyComparableType T> | |
| constexpr bool | operator!= (const Matrix< T > &lhs, const Matrix< T > &rhs) |
| Negation of operator==. | |
| template<ComponentType T> | |
| constexpr Matrix< T > | PermutationMatrix (const std::vector< size_t > &perm) |
| Permutation matrix P with P_{i, perm[i]} = 1. | |
| template<ComponentType T> | |
| constexpr Matrix< T > | ExchangeMatrix (size_t m) |
| m × m exchange matrix (ones on the anti-diagonal) | |
| template<ComponentType T> | |
| constexpr Matrix< T > | HankelMatrix (const Vector< T > &v, size_t m, size_t n) |
| m × n Hankel matrix from its anti-diagonal entries | |
| template<ComponentType T> | |
| constexpr Matrix< T > | UpperShiftMatrix (size_t m) |
| m × m upper shift matrix (ones on the superdiagonal) | |
| template<ComponentType T> | |
| constexpr Matrix< T > | LowerShiftMatrix (size_t m) |
| m × m lower shift matrix (ones on the subdiagonal); transpose of UpperShiftMatrix | |
| template<ComponentType T> | |
| constexpr Matrix< T > | CompanionMatrix (const Polynomial< T > &poly) |
| Companion matrix of a monic polynomial p(x) = x^n + a_{n−1} x^{n−1} + … + a_0. | |
| template<ComponentType T> | |
| constexpr bool | operator== (const Polynomial< T > &lhs, const Polynomial< T > &rhs) |
| template<ComponentType T> | |
| std::ostream & | operator<< (std::ostream &os, const Polynomial< T > &rhs) |
| template<ComponentType T> | |
| Polynomial< T > | ZeroPolynomial () |
| Constant polynomial 0 (cached). | |
| template<ComponentType T> | |
| constexpr Polynomial< T > | operator+ (const Polynomial< T > &lhs, const Polynomial< T > &rhs) |
| template<ComponentType T> | |
| constexpr Polynomial< T > | operator+ (Polynomial< T > &&lhs, const Polynomial< T > &rhs) |
| template<ComponentType T> | |
| constexpr Polynomial< T > | operator+ (const Polynomial< T > &lhs, Polynomial< T > &&rhs) |
| template<ComponentType T> | |
| constexpr Polynomial< T > | operator+ (Polynomial< T > &&lhs, Polynomial< T > &&rhs) |
| template<ComponentType T> | |
| constexpr Polynomial< T > | operator- (const Polynomial< T > &lhs, const Polynomial< T > &rhs) |
| template<ComponentType T> | |
| constexpr Polynomial< T > | operator- (Polynomial< T > &&lhs, const Polynomial< T > &rhs) |
| template<ComponentType T> | |
| constexpr Polynomial< T > | operator- (const Polynomial< T > &lhs, Polynomial< T > &&rhs) |
| template<ComponentType T> | |
| constexpr Polynomial< T > | operator- (Polynomial< T > &&lhs, Polynomial< T > &&rhs) |
| template<ComponentType T> | |
| constexpr Polynomial< T > | operator* (const Polynomial< T > &lhs, const Polynomial< T > &rhs) |
| template<ComponentType T> | |
| constexpr Polynomial< T > | operator* (Polynomial< T > &&lhs, const Polynomial< T > &rhs) |
| template<ComponentType T> | |
| constexpr Polynomial< T > | operator* (const Polynomial< T > &lhs, Polynomial< T > &&rhs) |
| template<ComponentType T> | |
| constexpr Polynomial< T > | operator* (Polynomial< T > &&lhs, Polynomial< T > &&rhs) |
| template<ComponentType T> | |
| constexpr Polynomial< T > | operator/ (const Polynomial< T > &lhs, const Polynomial< T > &rhs) |
| template<ComponentType T> | |
| constexpr Polynomial< T > | operator/ (Polynomial< T > &&lhs, const Polynomial< T > &rhs) |
| template<ComponentType T> | |
| constexpr Polynomial< T > | operator% (const Polynomial< T > &lhs, const Polynomial< T > &rhs) |
| template<ComponentType T> | |
| constexpr Polynomial< T > | operator% (Polynomial< T > &&lhs, const Polynomial< T > &rhs) |
| template<ComponentType T> | |
| constexpr Polynomial< T > | operator* (const Polynomial< T > &lhs, const T &rhs) |
| template<ComponentType T> | |
| constexpr Polynomial< T > | operator* (Polynomial< T > &&lhs, const T &rhs) |
| template<ComponentType T> | |
| constexpr Polynomial< T > | operator* (const T &lhs, const Polynomial< T > &rhs) |
| template<ComponentType T> | |
| constexpr Polynomial< T > | operator* (const T &lhs, Polynomial< T > &&rhs) |
| template<ComponentType T> | |
| constexpr Polynomial< T > | operator/ (const Polynomial< T > &lhs, const T &rhs) |
| template<ComponentType T> | |
| constexpr Polynomial< T > | operator/ (Polynomial< T > &&lhs, const T &rhs) |
| template<ComponentType T> | |
| constexpr Polynomial< T > | operator* (const Polynomial< T > &lhs, size_t n) |
| template<ComponentType T> | |
| constexpr Polynomial< T > | operator* (Polynomial< T > &&lhs, size_t n) |
| template<ComponentType T> | |
| constexpr Polynomial< T > | operator* (size_t n, const Polynomial< T > &rhs) |
| template<ComponentType T> | |
| constexpr Polynomial< T > | operator* (size_t n, Polynomial< T > &&rhs) |
| template<ComponentType T> | |
| std::pair< Polynomial< T >, Polynomial< T > > | poly_long_div (const Polynomial< T > &lhs, const Polynomial< T > &rhs) |
| template<ComponentType T> | |
| std::pair< Polynomial< T >, Polynomial< T > > | poly_long_div (Polynomial< T > &&lhs, const Polynomial< T > &rhs) |
| template<ComponentType T> requires FieldType<T> | |
| constexpr Polynomial< T > | derivative (const Polynomial< T > &poly, size_t s) |
| template<ComponentType T> requires FieldType<T> | |
| constexpr Polynomial< T > | derivative (Polynomial< T > &&poly, size_t s) |
| template<ComponentType T> requires FieldType<T> | |
| constexpr Polynomial< T > | Hasse_derivative (const Polynomial< T > &poly, size_t s) |
| template<ComponentType T> requires FieldType<T> | |
| constexpr Polynomial< T > | Hasse_derivative (Polynomial< T > &&poly, size_t s) |
| template<ComponentType T> | |
| constexpr Polynomial< T > | reciprocal (const Polynomial< T > &poly) |
| template<ComponentType T> | |
| constexpr Polynomial< T > | reciprocal (Polynomial< T > &&poly) |
| template<ComponentType T> requires FieldType<T> | |
| constexpr Polynomial< T > | normalize (const Polynomial< T > &poly) |
| template<ComponentType T> requires FieldType<T> | |
| constexpr Polynomial< T > | normalize (Polynomial< T > &&poly) |
| template<ComponentType T> | |
| constexpr bool | operator!= (const Polynomial< T > &lhs, const Polynomial< T > &rhs) |
| template<ComponentType T> requires std::convertible_to<std::decay_t<decltype(a)>, T> | |
| constexpr Polynomial< T > | Monomial (size_t i, auto &&a=T(1)) |
| Monomial a · xⁱ | |
| template<ComponentType T> | |
| Polynomial< T > | OnePolynomial () |
| Constant polynomial 1 (cached). | |
| template<ComponentType T> requires FieldType<T> | |
| Polynomial< T > | GCD (Polynomial< T > a, Polynomial< T > b, Polynomial< T > *s=nullptr, Polynomial< T > *t=nullptr) |
| Greatest common divisor of two polynomials via the (extended) Euclidean algorithm. | |
| template<ComponentType T> requires FieldType<T> | |
| Polynomial< T > | GCD (const std::vector< Polynomial< T > > &polys) |
| Greatest common divisor of a list of polynomials, computed iteratively. | |
| template<ComponentType T> requires FieldType<T> | |
| Polynomial< T > | LCM (const Polynomial< T > &a, const Polynomial< T > &b) |
| Least common multiple lcm(a, b) = (a · b) / gcd(a, b). | |
| template<ComponentType T> requires FieldType<T> | |
| Polynomial< T > | LCM (const std::vector< Polynomial< T > > &polys) |
| Least common multiple of a list of polynomials, computed iteratively. | |
| template<ComponentType T> | |
| constexpr Polynomial< T > | operator^ (const Polynomial< T > &base, int exponent) |
| Polynomial exponentiation by square-and-multiply. | |
| template<uint16_t p, size_t m> | |
| constexpr Vector< Fp< p > > | ConwayCoefficients () |
| Coefficient vector [a₀, a₁, …, aₘ] of the Conway polynomial for 𝔽_{p^m}. | |
| template<uint16_t p, size_t m> | |
| constexpr Polynomial< Fp< p > > | ConwayPolynomial () |
| Conway polynomial for 𝔽_{p^m} as a Polynomial<Fp<p>>. | |
| template<FieldType T> | |
| Polynomial< T > | find_irreducible (size_t degree) |
Sample a random monic irreducible polynomial of degree degree over T. | |
| template<FieldType T> | |
| std::ostream & | operator<< (std::ostream &os, const Trellis< T > &Tr) |
| template<ComponentType T> | |
| T | inner_product (const Vector< T > &lhs, const Vector< T > &rhs) |
| Inner product ⟨lhs, rhs⟩ = Σᵢ lhs[i] · rhs[i]. | |
| template<ComponentType T> | |
| Vector< T > | Schur_product (const Vector< T > &lhs, const Vector< T > &rhs) |
| Schur (component-wise) product. | |
| template<ComponentType T> | |
| Vector< T > | unit_vector (size_t length, size_t i) |
| Length-length vector with T(1) at index i and zeros elsewhere. | |
| template<ComponentType T> | |
| std::ostream & | operator<< (std::ostream &os, const Vector< T > &rhs) |
| Stream output as ( c₀, c₁, …, cₙ₋₁ ). | |
| template<ComponentType T> | |
| Vector< T > | delete_component (const Vector< T > &lhs, size_t i) |
| template<ComponentType T> | |
| Vector< T > | delete_component (Vector< T > &&lhs, size_t i) |
| template<ComponentType T> | |
| constexpr Vector< T > | operator+ (const Vector< T > &lhs, const Vector< T > &rhs) |
| template<ComponentType T> | |
| constexpr Vector< T > | operator+ (Vector< T > &&lhs, const Vector< T > &rhs) |
| template<ComponentType T> | |
| constexpr Vector< T > | operator+ (const Vector< T > &lhs, Vector< T > &&rhs) |
| template<ComponentType T> | |
| constexpr Vector< T > | operator+ (Vector< T > &&lhs, Vector< T > &&rhs) |
| template<ComponentType T> | |
| constexpr Vector< T > | operator- (const Vector< T > &lhs, const Vector< T > &rhs) |
| template<ComponentType T> | |
| constexpr Vector< T > | operator- (Vector< T > &&lhs, const Vector< T > &rhs) |
| template<ComponentType T> | |
| constexpr Vector< T > | operator- (const Vector< T > &lhs, Vector< T > &&rhs) |
| template<ComponentType T> | |
| constexpr Vector< T > | operator- (Vector< T > &&lhs, Vector< T > &&rhs) |
| template<ComponentType T> | |
| constexpr Vector< T > | operator* (const Vector< T > &lhs, const T &rhs) noexcept |
| template<ComponentType T> | |
| constexpr Vector< T > | operator* (Vector< T > &&lhs, const T &rhs) noexcept |
| template<ComponentType T> | |
| constexpr Vector< T > | operator* (const T &lhs, const Vector< T > &rhs) noexcept |
| template<ComponentType T> | |
| constexpr Vector< T > | operator* (const T &lhs, Vector< T > &&rhs) noexcept |
| template<ComponentType T> | |
| constexpr Vector< T > | operator/ (const Vector< T > &lhs, const T &rhs) |
| template<FieldType T> | |
| constexpr Vector< T > | operator/ (Vector< T > &&lhs, const T &rhs) |
| template<ComponentType T> | |
| Vector< T > | convolve (const Vector< T > &v, const Vector< T > &w) |
| Discrete linear convolution (= coefficients of Polynomial(v) * Polynomial(w)). | |
| template<ComponentType T> | |
| Vector< T > | randomize (const Vector< T > &v) |
| template<ComponentType T> | |
| Vector< T > | randomize (Vector< T > &&v) |
| template<ComponentType T> | |
| Vector< T > | set_component (const Vector< T > &v, size_t i, const T &c) |
| template<ComponentType T> | |
| Vector< T > | set_component (Vector< T > &&v, size_t i, const T &c) |
| template<ComponentType T> | |
| constexpr Vector< T > | get_subvector (const Vector< T > &v, size_t start, size_t end) |
| template<ComponentType T> | |
| constexpr Vector< T > | get_subvector (Vector< T > &&v, size_t start, size_t end) |
| template<ComponentType T> | |
| constexpr Vector< T > | set_subvector (Vector< T > v, size_t start, const Vector< T > &w) |
| template<ComponentType T> | |
| constexpr Vector< T > | set_subvector (Vector< T > &&v, size_t start, const Vector< T > &w) |
| template<ComponentType T> | |
| constexpr Vector< T > | concatenate (const Vector< T > &lhs, const Vector< T > &rhs) |
| template<ComponentType T> | |
| constexpr Vector< T > | concatenate (Vector< T > &&lhs, const Vector< T > &rhs) |
| template<ComponentType T> | |
| constexpr Vector< T > | concatenate (const Vector< T > &lhs, Vector< T > &&rhs) |
| template<ComponentType T> | |
| constexpr Vector< T > | concatenate (Vector< T > &&lhs, Vector< T > &&rhs) |
| template<ComponentType T> | |
| Vector< T > | delete_components (const Vector< T > &lhs, const std::vector< size_t > &v) |
| template<ComponentType T> | |
| Vector< T > | delete_components (Vector< T > &&lhs, const std::vector< size_t > &v) |
| template<ComponentType T> | |
| Vector< T > | erase_components (const Vector< T > &lhs, const std::vector< size_t > &v) |
| template<ComponentType T> | |
| Vector< T > | erase_components (Vector< T > &&lhs, const std::vector< size_t > &v) |
| template<ComponentType T> | |
| Vector< T > | erase_component (const Vector< T > &lhs, size_t i) |
| template<ComponentType T> | |
| Vector< T > | erase_component (Vector< T > &&lhs, size_t i) |
| template<ComponentType T> | |
| Vector< T > | unerase_components (const Vector< T > &lhs, const std::vector< size_t > &v) |
| template<ComponentType T> | |
| Vector< T > | unerase_components (Vector< T > &&lhs, const std::vector< size_t > &v) |
| template<ComponentType T> | |
| Vector< T > | unerase_component (const Vector< T > &lhs, size_t i) |
| template<ComponentType T> | |
| Vector< T > | unerase_component (Vector< T > &&lhs, size_t i) |
| template<ComponentType T> | |
| constexpr Vector< T > | pad_front (const Vector< T > &v, size_t n) |
| template<ComponentType T> | |
| constexpr Vector< T > | pad_front (Vector< T > &&v, size_t n) |
| template<ComponentType T> | |
| constexpr Vector< T > | pad_back (const Vector< T > &v, size_t n) |
| template<ComponentType T> | |
| constexpr Vector< T > | pad_back (Vector< T > &&v, size_t n) |
| template<ComponentType T> | |
| constexpr Vector< T > | rotate_left (const Vector< T > &v, size_t i) |
| template<ComponentType T> | |
| constexpr Vector< T > | rotate_left (Vector< T > &&v, size_t i) |
| template<ComponentType T> | |
| constexpr Vector< T > | rotate_right (const Vector< T > &v, size_t i) |
| template<ComponentType T> | |
| constexpr Vector< T > | rotate_right (Vector< T > &&v, size_t i) |
| template<ComponentType T> | |
| constexpr Vector< T > | reverse (const Vector< T > &v) |
| template<ComponentType T> | |
| constexpr Vector< T > | reverse (Vector< T > &&v) |
| template<ComponentType T> | |
| constexpr Vector< T > | fill (const Vector< T > &v, const T &value) |
| template<ComponentType T> | |
| constexpr Vector< T > | fill (Vector< T > &&v, const T &value) |
| template<ReliablyComparableType T> | |
| constexpr bool | operator== (const Vector< T > &lhs, const Vector< T > &rhs) noexcept |
| template<ReliablyComparableType T> | |
| constexpr bool | operator!= (const Vector< T > &lhs, const Vector< T > &rhs) noexcept |
Field Arithmetic Operators | |
Free CRTP operators (+, −, *, /, ^) for any CECCO::FieldType Each operator constructs a result by calling T's compound assignment, with rvalue overloads that move from a temporary instead of copying. Scalar multiplication takes the integer on either side. Division throws std::invalid_argument if the right operand is zero. operator^ exponentiates by square-and-multiply via CECCO::sqm.
| |
| template<FieldType T> | |
| constexpr T | operator+ (const T &lhs, const T &rhs) |
| template<FieldType T> | |
| constexpr T | operator+ (T &&lhs, const T &rhs) |
| template<FieldType T> | |
| constexpr T | operator+ (const T &lhs, T &&rhs) |
| template<FieldType T> | |
| constexpr T | operator+ (T &&lhs, T &&rhs) |
| template<FieldType T> | |
| constexpr T | operator- (const T &lhs, const T &rhs) |
| template<FieldType T> | |
| constexpr T | operator- (T &&lhs, const T &rhs) |
| template<FieldType T> | |
| constexpr T | operator- (const T &lhs, T &&rhs) |
| template<FieldType T> | |
| constexpr T | operator- (T &&lhs, T &&rhs) |
| template<FieldType T> | |
| constexpr T | operator* (const T &lhs, const T &rhs) |
| template<FieldType T> | |
| constexpr T | operator* (T &&lhs, const T &rhs) |
| template<FieldType T> | |
| constexpr T | operator* (const T &lhs, T &&rhs) |
| template<FieldType T> | |
| constexpr T | operator* (T &&lhs, T &&rhs) |
| template<FieldType T> | |
| constexpr T | operator* (const T &lhs, uint16_t rhs) |
| template<FieldType T> | |
| constexpr T | operator* (uint16_t lhs, const T &rhs) |
| template<FieldType T> | |
| constexpr T | operator* (T &&lhs, int rhs) |
| template<FieldType T> | |
| constexpr T | operator* (int lhs, T &&rhs) |
| template<FieldType T> | |
| T | operator/ (const T &lhs, const T &rhs) |
| template<FieldType T> | |
| T | operator/ (T &&lhs, const T &rhs) |
| template<FieldType T> | |
| constexpr T | operator^ (const T &base, int exponent) |
| template<FieldType T> | |
| constexpr T | operator^ (T &&base, int exponent) |
Error control coding-related functions | |
| double | dE (const Vector< std::complex< double > > &lhs, const Vector< std::complex< double > > &rhs) |
| Euclidean distance ‖lhs − rhs‖₂ = √(Σᵢ |lhs[i] − rhs[i]|²) for complex vectors. | |
| template<ReliablyComparableType T> | |
| constexpr size_t | wH (const Vector< T > &v) noexcept |
| Hamming weight; see Vector::wH for semantics. | |
| template<ReliablyComparableType T> | |
| std::vector< size_t > | supp (const Vector< T > &v) |
| Support; see Vector::supp for semantics. | |
| template<ReliablyComparableType T> | |
| size_t | dH (const Vector< T > &lhs, const Vector< T > &rhs) |
| Hamming distance dₕ(lhs, rhs) = wₕ(lhs − rhs). | |
| template<ReliablyComparableType T> | |
| size_t | dH (Vector< T > &&lhs, const Vector< T > &rhs) |
| template<ReliablyComparableType T> | |
| size_t | dH (const Vector< T > &lhs, Vector< T > &&rhs) |
| template<ReliablyComparableType T> | |
| size_t | dH (Vector< T > &&lhs, Vector< T > &&rhs) |
| template<ReliablyComparableType T> | |
| constexpr size_t | burst_length (const Vector< T > &v) noexcept |
| Burst length; see Vector::burst_length for semantics. | |
| template<ReliablyComparableType T> | |
| constexpr size_t | cyclic_burst_length (const Vector< T > &v) noexcept |
| Cyclic burst length; see Vector::cyclic_burst_length for semantics. | |
Variables | |
| constexpr std::string_view | ERASURE_MARKER = "X" |
Provides a framework for error correcting codes.
| using CECCO::base_t = std::remove_cvref_t<B> |
| using CECCO::BSC = SDMC<Fp<2>> |
Binary Symmetric Channel — type alias for SDMC<Fp<2>>.
Bits are flipped with probability pe.
Definition at line 370 of file blocks.hpp.
| using CECCO::field_t = typename base_t<C>::FIELD |
| using CECCO::label_t = typename std::conditional_t<sqm(p, m) < 255, uint8_t, uint16_t> |
Definition at line 774 of file fields.hpp.
|
strong |
LUT generation mode for field operations.
| Enumerator | |
|---|---|
| CompileTime | Generate LUTs at compile-time using constexpr (default). |
| RunTime | Generate LUTs at runtime using lazy initialization. |
Definition at line 53 of file field_concepts_traits.hpp.
|
strong |
| Matrix< T > CECCO::add_column | ( | const Matrix< T > & | M, |
| size_t | i, | ||
| size_t | j ) |
Definition at line 3017 of file matrices.hpp.
Definition at line 3031 of file matrices.hpp.
Definition at line 3010 of file matrices.hpp.
Definition at line 3024 of file matrices.hpp.
| Matrix< T > CECCO::add_scaled_column | ( | const Matrix< T > & | M, |
| const T & | s, | ||
| size_t | i, | ||
| size_t | j ) |
Definition at line 2989 of file matrices.hpp.
| Matrix< T > CECCO::add_scaled_column | ( | Matrix< T > && | M, |
| const T & | s, | ||
| size_t | i, | ||
| size_t | j ) |
Definition at line 3003 of file matrices.hpp.
| Matrix< T > CECCO::add_scaled_row | ( | const Matrix< T > & | M, |
| const T & | s, | ||
| size_t | i, | ||
| size_t | j ) |
Definition at line 2982 of file matrices.hpp.
| Matrix< T > CECCO::add_scaled_row | ( | Matrix< T > && | M, |
| const T & | s, | ||
| size_t | i, | ||
| size_t | j ) |
Definition at line 2996 of file matrices.hpp.
Binomial coefficient specialization for InfInt.
| n | Total number of items |
| k | Number of items to choose |
Builds numerator and denominator separately, then performs one division.
Definition at line 271 of file helpers.hpp.

|
noexcept |
Binomial coefficient C(n,k).
| T | Integer type |
| n | Total number of items |
| k | Number of items to choose |
Uses the multiplicative formula and the symmetry C(n,k) = C(n,n-k).
Definition at line 253 of file helpers.hpp.
|
constexprnoexcept |
Burst length; see Vector::burst_length for semantics.
Definition at line 1637 of file vectors.hpp.
| size_t CECCO::BurstUpperBound | ( | size_t | n, |
| size_t | ell ) |
Definition at line 236 of file code_bounds.hpp.
|
constexpr |
Companion matrix of a monic polynomial p(x) = x^n + a_{n−1} x^{n−1} + … + a_0.
| poly | Monic polynomial of degree n |
Built from a lower shift matrix; the last column holds the negated coefficients of poly.
| std::invalid_argument | if poly is not monic |
Definition at line 3641 of file matrices.hpp.
|
constexpr |
Definition at line 1320 of file vectors.hpp.
|
constexpr |
Definition at line 1334 of file vectors.hpp.
|
constexpr |
Definition at line 1327 of file vectors.hpp.
|
constexpr |
Definition at line 1341 of file vectors.hpp.
| Vector< T > CECCO::convolve | ( | const Vector< T > & | v, |
| const Vector< T > & | w ) |
Discrete linear convolution (= coefficients of Polynomial(v) * Polynomial(w)).
Definition at line 1267 of file vectors.hpp.
Coefficient vector [a₀, a₁, …, aₘ] of the Conway polynomial for 𝔽_{p^m}.
| p | Prime characteristic |
| m | Extension degree |
The built-in table covers all primes ≤ 97 and degrees ≤ ~13 (more for small p).
Definition at line 1408 of file polynomials.hpp.
|
constexpr |
Conway polynomial for 𝔽_{p^m} as a Polynomial<Fp<p>>.
Wraps ConwayCoefficients; returns the empty polynomial if (p, m) is not tabulated.
Definition at line 1594 of file polynomials.hpp.
|
constexprnoexcept |
Cyclic burst length; see Vector::cyclic_burst_length for semantics.
Definition at line 1643 of file vectors.hpp.
|
constexpr |
Scalar multiplication by double-and-add.
| T | Type supporting addition and unary minus |
| b | Multiplicand |
| m | Integer multiplier |
For negative multipliers, computes (-b) * |m|.
Definition at line 330 of file helpers.hpp.
|
inline |
Euclidean distance ‖lhs − rhs‖₂ = √(Σᵢ |lhs[i] − rhs[i]|²) for complex vectors.
| std::invalid_argument | if lengths differ |
Definition at line 1651 of file vectors.hpp.
|
constexpr |
Definition at line 3052 of file matrices.hpp.
|
constexpr |
Definition at line 3059 of file matrices.hpp.
|
constexpr |
Definition at line 3038 of file matrices.hpp.
|
constexpr |
Definition at line 3045 of file matrices.hpp.
Definition at line 784 of file vectors.hpp.
Definition at line 791 of file vectors.hpp.
| Vector< T > CECCO::delete_components | ( | const Vector< T > & | lhs, |
| const std::vector< size_t > & | v ) |
Definition at line 1348 of file vectors.hpp.
| Vector< T > CECCO::delete_components | ( | Vector< T > && | lhs, |
| const std::vector< size_t > & | v ) |
Definition at line 1355 of file vectors.hpp.
|
constexpr |
Definition at line 3080 of file matrices.hpp.
Definition at line 3087 of file matrices.hpp.
|
constexpr |
Definition at line 3066 of file matrices.hpp.
|
constexpr |
Definition at line 3073 of file matrices.hpp.
|
constexpr |
Definition at line 1138 of file polynomials.hpp.
|
constexpr |
Definition at line 1147 of file polynomials.hpp.
| size_t CECCO::dH | ( | const Vector< T > & | lhs, |
| const Vector< T > & | rhs ) |
Hamming distance dₕ(lhs, rhs) = wₕ(lhs − rhs).
Number of positions in which lhs and rhs differ. Under CECCO_ERASURE_SUPPORT, positions where either side is erased are not counted (subtraction propagates the erasure marker, and wH skips erased components).
| std::invalid_argument | if lengths differ |
Definition at line 1600 of file vectors.hpp.
Definition at line 1619 of file vectors.hpp.
Definition at line 1610 of file vectors.hpp.
Definition at line 1627 of file vectors.hpp.
| Matrix< T > CECCO::diagonal_join | ( | const Matrix< T > & | lhs, |
| const Matrix< T > & | rhs ) |
Definition at line 2884 of file matrices.hpp.
| Matrix< T > CECCO::diagonal_join | ( | Matrix< T > && | lhs, |
| const Matrix< T > & | rhs ) |
Definition at line 2891 of file matrices.hpp.
| Matrix< T > CECCO::diagonal_join | ( | Matrix< T > && | lhs, |
| Matrix< T > && | rhs ) |
Definition at line 2898 of file matrices.hpp.
Diagonal matrix with diagonal v (tag details::Diagonal).
| v | Vector of diagonal entries; the result is v.length() × v.length() |
Definition at line 3511 of file matrices.hpp.
| long double CECCO::EliasUpperBound | ( | size_t | n, |
| size_t | dmin ) |
| bool CECCO::equivalent | ( | const LinearCode< L > & | lhs, |
| const LinearCode< R > & | rhs ) |
|
constexpr |
Definition at line 3138 of file matrices.hpp.
|
constexpr |
Definition at line 3145 of file matrices.hpp.
|
constexpr |
Definition at line 3124 of file matrices.hpp.
|
constexpr |
Definition at line 3131 of file matrices.hpp.
|
constexpr |
Definition at line 3096 of file matrices.hpp.
Definition at line 1378 of file vectors.hpp.
|
constexpr |
Definition at line 3103 of file matrices.hpp.
Definition at line 1385 of file vectors.hpp.
| Vector< T > CECCO::erase_components | ( | const Vector< T > & | lhs, |
| const std::vector< size_t > & | v ) |
Definition at line 1364 of file vectors.hpp.
| Vector< T > CECCO::erase_components | ( | Vector< T > && | lhs, |
| const std::vector< size_t > & | v ) |
Definition at line 1371 of file vectors.hpp.
|
constexpr |
Definition at line 3194 of file matrices.hpp.
Definition at line 3201 of file matrices.hpp.
|
constexpr |
Definition at line 3180 of file matrices.hpp.
|
constexpr |
Definition at line 3187 of file matrices.hpp.
|
constexpr |
m × m exchange matrix (ones on the anti-diagonal)
| m | Side length |
Definition at line 3498 of file matrices.hpp.
| auto CECCO::expurgate | ( | C && | code, |
| size_t | j ) |
| auto CECCO::expurgate | ( | const EmptyCode< T > & | C, |
| const std::vector< size_t > & | v ) |
| LinearCode< T > CECCO::expurgate | ( | const LinearCode< T > & | C, |
| const std::vector< size_t > & | v ) |
| auto CECCO::expurgate | ( | const RepetitionCode< T > & | C, |
| const std::vector< size_t > & | v ) |
| auto CECCO::expurgate | ( | const ZeroCode< T > & | C, |
| const std::vector< size_t > & | v ) |
|
noexcept |
Factorial a!
| T | Integer type |
| a | Non-negative integer |
Definition at line 234 of file helpers.hpp.
|
constexpr |
Definition at line 3266 of file matrices.hpp.
|
constexpr |
Definition at line 1492 of file vectors.hpp.
Definition at line 3273 of file matrices.hpp.
Definition at line 1499 of file vectors.hpp.
| Polynomial< T > CECCO::find_irreducible | ( | size_t | degree | ) |
Sample a random monic irreducible polynomial of degree degree over T.
Tries random polynomials until Polynomial::is_irreducible accepts one. Runtime is bounded in expectation by the density of irreducibles, but unbounded in the worst case; suitable as a modulus for CECCO::Ext.
Definition at line 1606 of file polynomials.hpp.
| std::vector< size_t > CECCO::find_maxima | ( | const std::vector< T > & | v | ) |
Indices of all maximum elements.
| T | Element type (must support operator< for comparison) |
| v | Input vector |
v is emptyUses two passes over v.
Definition at line 138 of file helpers.hpp.
| Polynomial< T > CECCO::GCD | ( | const std::vector< Polynomial< T > > & | polys | ) |
Greatest common divisor of a list of polynomials, computed iteratively.
| std::invalid_argument | if polys is empty |
Definition at line 1341 of file polynomials.hpp.
| Polynomial< T > CECCO::GCD | ( | Polynomial< T > | a, |
| Polynomial< T > | b, | ||
| Polynomial< T > * | s = nullptr, | ||
| Polynomial< T > * | t = nullptr ) |
Greatest common divisor of two polynomials via the (extended) Euclidean algorithm.
| a | First polynomial |
| b | Second polynomial |
| s | Optional out-pointer for the Bézout coefficient of a |
| t | Optional out-pointer for the Bézout coefficient of b |
s and t are non-null, additionally gcd(a, b) = s·a + t·bOperands are reordered internally so that the higher-degree one drives the recursion.
Definition at line 1299 of file polynomials.hpp.
|
constexprnoexcept |
Greatest common divisor and optional Bézout coefficients.
| T | Signed integral type |
| a | First integer |
| b | Second integer |
| s | Pointer to store Bézout coefficient for a (optional) |
| t | Pointer to store Bézout coefficient for b (optional) |
If s and t are non-null, stores coefficients satisfying a*s + b*t = gcd(a,b).
Definition at line 178 of file helpers.hpp.
|
inline |
Current thread's random number generator.
Equivalent to RNG::get.
Definition at line 127 of file helpers.hpp.


| Matrix< T > CECCO::get_submatrix | ( | const Matrix< T > & | M, |
| size_t | i, | ||
| size_t | j, | ||
| size_t | h, | ||
| size_t | w ) |
Definition at line 2816 of file matrices.hpp.
| Matrix< T > CECCO::get_submatrix | ( | Matrix< T > && | M, |
| size_t | i, | ||
| size_t | j, | ||
| size_t | h, | ||
| size_t | w ) |
Definition at line 2822 of file matrices.hpp.
|
constexpr |
Definition at line 1300 of file vectors.hpp.
|
constexpr |
Definition at line 1305 of file vectors.hpp.
| size_t CECCO::GilbertVarshamovLowerBound | ( | size_t | n, |
| size_t | dmin ) |
| size_t CECCO::GriesmerUpperBound | ( | size_t | n, |
| size_t | dmin ) |
Definition at line 166 of file code_bounds.hpp.
| long double CECCO::HammingUpperBound | ( | size_t | n, |
| size_t | dmin ) |
|
constexpr |
m × n Hankel matrix from its anti-diagonal entries
| v | Anti-diagonal values; length m + n − 1 |
| m | Number of rows |
| n | Number of columns |
Constructed as ToeplitzMatrix(reverse(v), m, n) * ExchangeMatrix(n).
| std::invalid_argument | if v.length() != m + n - 1 |
Definition at line 3563 of file matrices.hpp.
|
constexpr |
Definition at line 1156 of file polynomials.hpp.
|
constexpr |
Definition at line 1165 of file polynomials.hpp.
| Matrix< T > CECCO::horizontal_join | ( | const Matrix< T > & | lhs, |
| const Matrix< T > & | rhs ) |
Definition at line 2842 of file matrices.hpp.
| Matrix< T > CECCO::horizontal_join | ( | Matrix< T > && | lhs, |
| const Matrix< T > & | rhs ) |
Definition at line 2849 of file matrices.hpp.
| Matrix< T > CECCO::horizontal_join | ( | Matrix< T > && | lhs, |
| Matrix< T > && | rhs ) |
Definition at line 2856 of file matrices.hpp.
| bool CECCO::identical | ( | const LinearCode< L > & | lhs, |
| const LinearCode< R > & | rhs ) |
|
constexpr |
m × m identity matrix I_m (tag details::Identity)
| m | Side length |
Definition at line 3455 of file matrices.hpp.
| T CECCO::inner_product | ( | const Vector< T > & | lhs, |
| const Vector< T > & | rhs ) |
Inner product ⟨lhs, rhs⟩ = Σᵢ lhs[i] · rhs[i].
For complex inputs this is the standard product (not the conjugate inner product).
| std::invalid_argument | if lengths differ |
Definition at line 1513 of file vectors.hpp.
Definition at line 3308 of file matrices.hpp.
Definition at line 3315 of file matrices.hpp.
|
constexprnoexcept |
Primality test by trial division.
| T | Unsigned integer type |
| a | Number to test for primality |
Tests odd divisors up to √a. Returns false for a ≤ 1 and even a > 2.
Definition at line 157 of file helpers.hpp.
| long double CECCO::JohnsonUpperBound | ( | size_t | n, |
| size_t | dmin ) |
| Matrix< T > CECCO::Kronecker_product | ( | const Matrix< T > & | lhs, |
| const Matrix< T > & | rhs ) |
Definition at line 2905 of file matrices.hpp.
| Matrix< T > CECCO::Kronecker_product | ( | Matrix< T > && | lhs, |
| const Matrix< T > & | rhs ) |
Definition at line 2912 of file matrices.hpp.
| Matrix< T > CECCO::Kronecker_product | ( | Matrix< T > && | lhs, |
| Matrix< T > && | rhs ) |
Definition at line 2919 of file matrices.hpp.
| Polynomial< T > CECCO::LCM | ( | const Polynomial< T > & | a, |
| const Polynomial< T > & | b ) |
Least common multiple lcm(a, b) = (a · b) / gcd(a, b).
Definition at line 1357 of file polynomials.hpp.
| Polynomial< T > CECCO::LCM | ( | const std::vector< Polynomial< T > > & | polys | ) |
Least common multiple of a list of polynomials, computed iteratively.
| std::invalid_argument | if polys is empty |
Definition at line 1370 of file polynomials.hpp.
|
constexpr |
m × m lower shift matrix (ones on the subdiagonal); transpose of UpperShiftMatrix
| m | Side length |
Definition at line 3626 of file matrices.hpp.
| Polynomial< InfInt > CECCO::MacWilliamsIdentity | ( | const Polynomial< InfInt > & | A, |
| size_t | n, | ||
| size_t | k ) |
|
constexprnoexcept |
Multiplicative inverse modulo a prime.
| p | Prime modulus (must be prime for correct results) |
| T | Signed integer type |
| a | Element to invert |
Uses the extended Euclidean algorithm.
Definition at line 219 of file helpers.hpp.
|
constexpr |
Monomial a · xⁱ
| i | Power of x |
| a | Coefficient (defaults to T(1)) |
Definition at line 1265 of file polynomials.hpp.
|
constexpr |
Definition at line 1188 of file polynomials.hpp.
|
constexpr |
Definition at line 1197 of file polynomials.hpp.
| Polynomial< T > CECCO::OnePolynomial | ( | ) |
Constant polynomial 1 (cached).
Definition at line 1282 of file polynomials.hpp.
| bool CECCO::operator!= | ( | const LinearCode< L > & | lhs, |
| const LinearCode< R > & | rhs ) |
|
constexpr |
Negation of operator==.
Definition at line 3376 of file matrices.hpp.
|
constexpr |
Definition at line 1211 of file polynomials.hpp.
|
constexprnoexcept |
Definition at line 1543 of file vectors.hpp.
|
constexpr |
Definition at line 1042 of file polynomials.hpp.
|
constexpr |
Definition at line 1049 of file polynomials.hpp.
|
constexpr |
Definition at line 2706 of file matrices.hpp.
|
constexpr |
Definition at line 2738 of file matrices.hpp.
|
constexpr |
Definition at line 1000 of file polynomials.hpp.
|
constexpr |
Definition at line 1056 of file polynomials.hpp.
|
constexpr |
Definition at line 1014 of file polynomials.hpp.
|
constexpr |
Definition at line 1099 of file polynomials.hpp.
|
constexpr |
Definition at line 2756 of file matrices.hpp.
|
constexpr |
Definition at line 1070 of file polynomials.hpp.
|
constexpr |
Definition at line 363 of file fields.hpp.
|
constexprnoexcept |
Definition at line 1234 of file vectors.hpp.
|
constexpr |
Definition at line 2763 of file matrices.hpp.
|
constexpr |
Definition at line 1077 of file polynomials.hpp.
|
constexpr |
Definition at line 377 of file fields.hpp.
|
constexpr |
Definition at line 391 of file fields.hpp.
|
constexprnoexcept |
Definition at line 1241 of file vectors.hpp.
|
constexpr |
Definition at line 2724 of file matrices.hpp.
|
constexprnoexcept |
Definition at line 1216 of file vectors.hpp.
|
constexpr |
Definition at line 412 of file fields.hpp.
|
constexpr |
Definition at line 2713 of file matrices.hpp.
|
constexpr |
Definition at line 2745 of file matrices.hpp.
|
constexpr |
Definition at line 1007 of file polynomials.hpp.
|
constexpr |
Definition at line 1063 of file polynomials.hpp.
|
constexpr |
Definition at line 1021 of file polynomials.hpp.
|
constexpr |
Definition at line 1106 of file polynomials.hpp.
|
constexpr |
Definition at line 1113 of file polynomials.hpp.
|
constexpr |
Definition at line 1120 of file polynomials.hpp.
|
constexpr |
Definition at line 370 of file fields.hpp.
|
constexpr |
Definition at line 405 of file fields.hpp.
|
constexpr |
Definition at line 384 of file fields.hpp.
|
constexpr |
Definition at line 398 of file fields.hpp.
|
constexpr |
Definition at line 2729 of file matrices.hpp.
|
constexprnoexcept |
Definition at line 1223 of file vectors.hpp.
|
constexpr |
Definition at line 2642 of file matrices.hpp.
|
constexpr |
Definition at line 2656 of file matrices.hpp.
|
constexpr |
Definition at line 943 of file polynomials.hpp.
|
constexpr |
Definition at line 957 of file polynomials.hpp.
|
constexpr |
Definition at line 307 of file fields.hpp.
|
constexpr |
Definition at line 321 of file fields.hpp.
|
constexpr |
Definition at line 1152 of file vectors.hpp.
|
constexpr |
Definition at line 1166 of file vectors.hpp.
|
constexpr |
Definition at line 2649 of file matrices.hpp.
|
constexpr |
Definition at line 2663 of file matrices.hpp.
|
constexpr |
Definition at line 950 of file polynomials.hpp.
|
constexpr |
Definition at line 964 of file polynomials.hpp.
|
constexpr |
Definition at line 314 of file fields.hpp.
|
constexpr |
Definition at line 328 of file fields.hpp.
|
constexpr |
Definition at line 1159 of file vectors.hpp.
|
constexpr |
Definition at line 1173 of file vectors.hpp.
|
constexpr |
Definition at line 2674 of file matrices.hpp.
|
constexpr |
Definition at line 2688 of file matrices.hpp.
|
constexpr |
Definition at line 971 of file polynomials.hpp.
|
constexpr |
Definition at line 985 of file polynomials.hpp.
|
constexpr |
Definition at line 335 of file fields.hpp.
|
constexpr |
Definition at line 349 of file fields.hpp.
|
constexpr |
Definition at line 1184 of file vectors.hpp.
|
constexpr |
Definition at line 1198 of file vectors.hpp.
|
constexpr |
Definition at line 2681 of file matrices.hpp.
|
constexpr |
Definition at line 2695 of file matrices.hpp.
|
constexpr |
Definition at line 978 of file polynomials.hpp.
|
constexpr |
Definition at line 993 of file polynomials.hpp.
|
constexpr |
Definition at line 342 of file fields.hpp.
|
constexpr |
Definition at line 356 of file fields.hpp.
|
constexpr |
Definition at line 1191 of file vectors.hpp.
|
constexpr |
Definition at line 1205 of file vectors.hpp.
|
constexpr |
Definition at line 2774 of file matrices.hpp.
|
constexpr |
Definition at line 1028 of file polynomials.hpp.
|
constexpr |
Definition at line 1085 of file polynomials.hpp.
| T CECCO::operator/ | ( | const T & | lhs, |
| const T & | rhs ) |
Definition at line 419 of file fields.hpp.
|
constexpr |
Definition at line 1252 of file vectors.hpp.
|
constexpr |
Definition at line 2781 of file matrices.hpp.
|
constexpr |
Definition at line 1035 of file polynomials.hpp.
|
constexpr |
Definition at line 1092 of file polynomials.hpp.
| T CECCO::operator/ | ( | T && | lhs, |
| const T & | rhs ) |
Definition at line 426 of file fields.hpp.
Definition at line 1259 of file vectors.hpp.
| std::ostream & CECCO::operator<< | ( | std::ostream & | os, |
| const Code< T > & | rhs ) |
| std::ostream & CECCO::operator<< | ( | std::ostream & | os, |
| const Ext< B, modulus, mode > & | e ) |
Print as the integer label (or ERASURE_MARKER if erased).
Definition at line 3072 of file fields.hpp.
| std::ostream & CECCO::operator<< | ( | std::ostream & | os, |
| const Fp< p > & | e ) |
Print as the integer label (or ERASURE_MARKER if erased).
Definition at line 2174 of file fields.hpp.
| std::ostream & CECCO::operator<< | ( | std::ostream & | os, |
| const Matrix< T > & | rhs ) |
Pretty-print the matrix with column alignment and bracket borders.
os for chainingAn empty matrix is printed as "(empty matrix)".
Definition at line 3388 of file matrices.hpp.
| std::ostream & CECCO::operator<< | ( | std::ostream & | os, |
| const Polynomial< T > & | rhs ) |
Definition at line 1216 of file polynomials.hpp.
| std::ostream & CECCO::operator<< | ( | std::ostream & | os, |
| const Rationals< T > & | e ) |
Print as "numerator/denominator" (or just "numerator" when denominator is 1).
Single stream insertion for std::setw compatibility.
Definition at line 754 of file fields.hpp.
| std::ostream & CECCO::operator<< | ( | std::ostream & | os, |
| const Trellis< T > & | Tr ) |
Definition at line 538 of file trellises.hpp.
|
noexcept |
Stream output as ( c₀, c₁, …, cₙ₋₁ ).
Definition at line 1562 of file vectors.hpp.
| bool CECCO::operator== | ( | const LinearCode< L > & | lhs, |
| const LinearCode< R > & | rhs ) |
|
constexpr |
Equality of two matrices.
Tag-aware fast paths handle structured operands (e.g. two Toeplitz matrices compare only their first row and column).
Definition at line 3330 of file matrices.hpp.
|
constexpr |
Definition at line 1206 of file polynomials.hpp.
|
constexprnoexcept |
Definition at line 1537 of file vectors.hpp.
| decltype(auto) CECCO::operator>> | ( | LHS && | lhs, |
| RHS && | rhs ) |
Function-call chaining: x >> f ≡ f(x).
| LHS | Input type |
| RHS | Callable on LHS |
| lhs | Input value (perfect-forwarded) |
| rhs | Callable (perfect-forwarded) |
Selected when RHS is invocable with LHS. Disabled for std::ios_base-derived types to avoid clashing with stream operators. The companion overload below handles the case where the right-hand side is an assignment target.
Definition at line 954 of file blocks.hpp.
| RHS & CECCO::operator>> | ( | LHS && | lhs, |
| RHS & | dst ) |
Assignment chaining: x >> dst ≡ dst = x; return dst.
| LHS | Input type |
| RHS | Assignment target type (assignable from LHS) |
| lhs | Input value |
| dst | Destination variable |
Selected only when the callable overload above is not viable, so block calls always win over capture-into-variable when both are possible. Useful for capturing intermediate results in a chain (c >> map >> x >> awgn >> y >> demap >> r;).
Definition at line 974 of file blocks.hpp.
|
constexpr |
Polynomial exponentiation by square-and-multiply.
Definition at line 1394 of file polynomials.hpp.
|
constexpr |
Definition at line 433 of file fields.hpp.
|
constexpr |
Definition at line 438 of file fields.hpp.
Definition at line 1436 of file vectors.hpp.
Definition at line 1443 of file vectors.hpp.
|
constexpr |
Definition at line 1422 of file vectors.hpp.
Definition at line 1429 of file vectors.hpp.
|
constexpr |
Permutation matrix P with P_{i, perm[i]} = 1.
| perm | Permutation of {0, …, m-1}; m is inferred from perm.size() |
| std::invalid_argument | if perm contains out-of-range or duplicate indices |
Definition at line 3471 of file matrices.hpp.
| long double CECCO::PlotkinUpperBound | ( | size_t | n, |
| size_t | dmin ) |
| std::pair< Polynomial< T >, Polynomial< T > > CECCO::poly_long_div | ( | const Polynomial< T > & | lhs, |
| const Polynomial< T > & | rhs ) |
Definition at line 1127 of file polynomials.hpp.
| std::pair< Polynomial< T >, Polynomial< T > > CECCO::poly_long_div | ( | Polynomial< T > && | lhs, |
| const Polynomial< T > & | rhs ) |
Definition at line 1133 of file polynomials.hpp.
| auto CECCO::puncture | ( | C && | code, |
| size_t | i ) |
| auto CECCO::puncture | ( | const EmptyCode< T > & | C, |
| const std::vector< size_t > & | v ) |
| LinearCode< T > CECCO::puncture | ( | const LinearCode< T > & | C, |
| const std::vector< size_t > & | v ) |
| auto CECCO::puncture | ( | const RepetitionCode< T > & | C, |
| const std::vector< size_t > & | v ) |
| auto CECCO::puncture | ( | const UniverseCode< T > & | C, |
| const std::vector< size_t > & | v ) |
| auto CECCO::puncture | ( | const ZeroCode< T > & | C, |
| const std::vector< size_t > & | v ) |
Definition at line 2788 of file matrices.hpp.
Definition at line 1272 of file vectors.hpp.
Definition at line 2795 of file matrices.hpp.
Definition at line 1279 of file vectors.hpp.
|
constexpr |
Definition at line 1174 of file polynomials.hpp.
|
constexpr |
Definition at line 1181 of file polynomials.hpp.
|
inline |
Definition at line 242 of file code_bounds.hpp.
Definition at line 1478 of file vectors.hpp.
Definition at line 1485 of file vectors.hpp.
Definition at line 3252 of file matrices.hpp.
Definition at line 3259 of file matrices.hpp.
Definition at line 3238 of file matrices.hpp.
Definition at line 3245 of file matrices.hpp.
|
constexpr |
Definition at line 1450 of file vectors.hpp.
Definition at line 1457 of file vectors.hpp.
|
constexpr |
Definition at line 1464 of file vectors.hpp.
Definition at line 1471 of file vectors.hpp.
Definition at line 3294 of file matrices.hpp.
Definition at line 3301 of file matrices.hpp.
| Matrix< T > CECCO::scale_column | ( | const Matrix< T > & | M, |
| const T & | s, | ||
| size_t | i ) |
Definition at line 2961 of file matrices.hpp.
| Matrix< T > CECCO::scale_column | ( | Matrix< T > && | M, |
| const T & | s, | ||
| size_t | i ) |
Definition at line 2975 of file matrices.hpp.
| Matrix< T > CECCO::scale_row | ( | const Matrix< T > & | M, |
| const T & | s, | ||
| size_t | i ) |
Definition at line 2954 of file matrices.hpp.
Definition at line 2968 of file matrices.hpp.
| Vector< T > CECCO::Schur_product | ( | const Vector< T > & | lhs, |
| const Vector< T > & | rhs ) |
Schur (component-wise) product.
| std::invalid_argument | if lengths differ |
Definition at line 1526 of file vectors.hpp.
| Matrix< T > CECCO::set_component | ( | auto && | M, |
| size_t | i, | ||
| size_t | j, | ||
| const T & | c ) |
Definition at line 2807 of file matrices.hpp.
| Vector< T > CECCO::set_component | ( | const Vector< T > & | v, |
| size_t | i, | ||
| const T & | c ) |
Definition at line 1286 of file vectors.hpp.
| Vector< T > CECCO::set_component | ( | Vector< T > && | v, |
| size_t | i, | ||
| const T & | c ) |
Definition at line 1293 of file vectors.hpp.
| Matrix< T > CECCO::set_submatrix | ( | const Matrix< T > & | M, |
| size_t | i, | ||
| size_t | j, | ||
| const Matrix< T > & | N ) |
Definition at line 2828 of file matrices.hpp.
| Matrix< T > CECCO::set_submatrix | ( | Matrix< T > && | M, |
| size_t | i, | ||
| size_t | j, | ||
| const Matrix< T > & | N ) |
Definition at line 2835 of file matrices.hpp.
|
constexpr |
Definition at line 1315 of file vectors.hpp.
|
constexpr |
Definition at line 1310 of file vectors.hpp.
| auto CECCO::shorten | ( | B && | base, |
| size_t | j, | ||
| size_t | i ) |
|
inline |
|
inline |
|
inline |
|
inline |
Definition at line 158 of file code_bounds.hpp.
|
constexpr |
Exponentiation by square-and-multiply.
| T | Type supporting multiplication and, for negative exponents, division |
| b | Base value |
| e | Exponent |
For negative exponents, computes (1/b)^|e|.
Definition at line 297 of file helpers.hpp.
| CECCO::SubfieldSubcode | ( | B && | ) | -> SubfieldSubcode< B > |
| CECCO::SubfieldSubcode | ( | const B & | ) | -> SubfieldSubcode< B > |
| std::vector< size_t > CECCO::supp | ( | const Vector< T > & | v | ) |
Support; see Vector::supp for semantics.
Definition at line 1586 of file vectors.hpp.
| Matrix< T > CECCO::swap_columns | ( | const Matrix< T > & | M, |
| size_t | i, | ||
| size_t | j ) |
Definition at line 2933 of file matrices.hpp.
Definition at line 2947 of file matrices.hpp.
| Matrix< T > CECCO::swap_rows | ( | const Matrix< T > & | M, |
| size_t | i, | ||
| size_t | j ) |
Definition at line 2926 of file matrices.hpp.
Definition at line 2940 of file matrices.hpp.
|
constexpr |
m × n Toeplitz matrix from its diagonal entries (tag details::Toeplitz)
| v | Diagonal values, ordered so that v[i − j + n − 1] sits on entry (i, j); length m + n − 1 |
| m | Number of rows |
| n | Number of columns |
| std::invalid_argument | if v.length() != m + n - 1 |
Definition at line 3530 of file matrices.hpp.
Definition at line 3280 of file matrices.hpp.
Definition at line 3287 of file matrices.hpp.
| B CECCO::unaugment | ( | const AugmentedCode< T, B > & | C | ) |
|
constexpr |
Definition at line 3166 of file matrices.hpp.
|
constexpr |
Definition at line 3173 of file matrices.hpp.
|
constexpr |
Definition at line 3152 of file matrices.hpp.
|
constexpr |
Definition at line 3159 of file matrices.hpp.
|
constexpr |
Definition at line 3110 of file matrices.hpp.
| Vector< T > CECCO::unerase_component | ( | const Vector< T > & | lhs, |
| size_t | i ) |
Definition at line 1406 of file vectors.hpp.
|
constexpr |
Definition at line 3117 of file matrices.hpp.
Definition at line 1413 of file vectors.hpp.
| Vector< T > CECCO::unerase_components | ( | const Vector< T > & | lhs, |
| const std::vector< size_t > & | v ) |
Definition at line 1392 of file vectors.hpp.
| Vector< T > CECCO::unerase_components | ( | Vector< T > && | lhs, |
| const std::vector< size_t > & | v ) |
Definition at line 1399 of file vectors.hpp.
|
constexpr |
Definition at line 3222 of file matrices.hpp.
Definition at line 3229 of file matrices.hpp.
|
constexpr |
Definition at line 3208 of file matrices.hpp.
|
constexpr |
Definition at line 3215 of file matrices.hpp.
| B CECCO::unextend | ( | const ExtendedCode< T, B > & | C | ) |
| Vector< T > CECCO::unit_vector | ( | size_t | length, |
| size_t | i ) |
Length-length vector with T(1) at index i and zeros elsewhere.
| std::invalid_argument | if i >= length |
Definition at line 1552 of file vectors.hpp.
| auto CECCO::unlengthen | ( | const ExtendedCode< T, AugmentedCode< T, D > > & | C | ) |
| long double CECCO::UpperBound | ( | size_t | n, |
| size_t | dmin ) |
Definition at line 196 of file code_bounds.hpp.
|
constexpr |
m × m upper shift matrix (ones on the superdiagonal)
| m | Side length |
Definition at line 3613 of file matrices.hpp.
|
constexpr |
Vandermonde matrix V_{i, j} = v[j]^i (tag details::Vandermonde).
| v | Evaluation points; must be pairwise distinct |
| m | Number of rows (i.e. the highest power is m − 1) |
| std::invalid_argument | if v is empty, has duplicates, or m is zero |
Definition at line 3577 of file matrices.hpp.
| Matrix< T > CECCO::vertical_join | ( | const Matrix< T > & | lhs, |
| const Matrix< T > & | rhs ) |
Definition at line 2863 of file matrices.hpp.
| Matrix< T > CECCO::vertical_join | ( | Matrix< T > && | lhs, |
| const Matrix< T > & | rhs ) |
Definition at line 2870 of file matrices.hpp.
| Matrix< T > CECCO::vertical_join | ( | Matrix< T > && | lhs, |
| Matrix< T > && | rhs ) |
Definition at line 2877 of file matrices.hpp.
|
constexpr |
Definition at line 2802 of file matrices.hpp.
|
constexprnoexcept |
Hamming weight; see Vector::wH for semantics.
Definition at line 1580 of file vectors.hpp.
|
constexpr |
m × n matrix of zeros (tag details::Zero)
| m | Number of rows |
| n | Number of columns |
Definition at line 3444 of file matrices.hpp.
| Polynomial< T > CECCO::ZeroPolynomial | ( | ) |
Constant polynomial 0 (cached).
Definition at line 1275 of file polynomials.hpp.
|
inlineconstexpr |
Definition at line 445 of file fields.hpp.