|
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>
|
Symmetric Discrete Memoryless Erasure Channel (SDMEC) over any finite field 𝔽_q. More...
#include <blocks.hpp>

Public Member Functions | |
| SDMEC (double pe, double px=0.0) | |
| Construct with error probability pe and erasure probability px. | |
| T | operator() (const T &in) |
| Process one symbol. | |
| double | get_pe () const noexcept |
| Observed symbol error probability pe. | |
| double | get_px () const noexcept |
| Observed symbol erasure probability px. | |
| double | get_capacity () const noexcept |
| Shannon capacity in bits per symbol. | |
| long double | get_Bhattacharyya_param () const |
| Bhattacharyya parameter γ = 2·√(pe·(1 − pe)). | |
| Public Member Functions inherited from CECCO::details::BlockProcessor< T, ElementType, ElementType > | |
| Vector< ElementType > | operator() (const Vector< ElementType > &in) |
| Apply the block element-wise to each vector entry. | |
| Vector< ElementType > | operator() (Vector< ElementType > &&in) |
| Apply the block element-wise (rvalue input). | |
| Matrix< ElementType > | operator() (const Matrix< ElementType > &in) |
| Apply the block element-wise to each matrix entry. | |
| Matrix< ElementType > | operator() (Matrix< ElementType > &&in) |
| Apply the block element-wise (rvalue input). | |
| ElementType | operator() (const U &) |
| Catch-all for inputs whose element type differs from InputType. | |
| Vector< ElementType > | operator() (const Vector< U > &) |
| Matrix< ElementType > | operator() (const Matrix< U > &) |
Additional Inherited Members | |
| Protected Member Functions inherited from CECCO::details::BlockProcessor< T, ElementType, ElementType > | |
| const T & | derived () const noexcept |
| T & | derived () noexcept |
Symmetric Discrete Memoryless Erasure Channel (SDMEC) over any finite field 𝔽_q.
| T | Finite field type for channel input/output symbols |
q-ary symmetric channel with independent error and erasure processes. Each transmitted symbol is changed to a uniformly random different value with observed probability pe, marked erased (overwriting any error) with observed probability px, and otherwise passed through unchanged.
For px = 0 this reduces to the traditional symmetric channel (use CECCO::SDMC, or CECCO::BSC for q = 2). For pe = 0 it is the erasure channel (use CECCO::BEC for q = 2). Erasure support requires the CECCO_ERASURE_SUPPORT macro at compile time.
Capacity (bits/symbol): C = (1 − px) · [ log₂(q) + (1 − p̃)·log₂(1 − p̃) + p̃·log₂(p̃) − p̃·log₂(q − 1) ], where p̃ = pe / (1 − px) is the conditional error probability.
Definition at line 222 of file blocks.hpp.
| CECCO::SDMEC< T >::SDMEC | ( | double | pe, |
| double | px = 0.0 ) |
Construct with error probability pe and erasure probability px.
| pe | Symbol error probability ∈ [0, 1] |
| px | Symbol erasure probability ∈ [0, 1 − pe]; default 0 |
| std::out_of_range | if pe ∉ [0, 1] or px ∉ [0, 1 − pe] |
| std::invalid_argument | if px ≠ 0 and CECCO_ERASURE_SUPPORT is not defined |
Definition at line 284 of file blocks.hpp.

|
inline |
Bhattacharyya parameter γ = 2·√(pe·(1 − pe)).
| std::logic_error | if px ≠ 0 (γ is undefined for channels with erasures) |
Definition at line 265 of file blocks.hpp.
|
noexcept |
Shannon capacity in bits per symbol.
Definition at line 327 of file blocks.hpp.
|
inlinenoexcept |
Observed symbol error probability pe.
Definition at line 245 of file blocks.hpp.
|
inlinenoexcept |
Observed symbol erasure probability px.
Definition at line 248 of file blocks.hpp.
| T CECCO::SDMEC< T >::operator() | ( | const T & | in | ) |
Process one symbol.
| in | Input symbol |
Definition at line 303 of file blocks.hpp.
