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::FiniteFieldType Concept Reference

Refines FieldType for finite fields 𝔽_{p^m}. More...

#include <field_concepts_traits.hpp>

Concept definition

template<typename T>
concept FiniteFieldType = FieldType<T> && requires(const T& t) {
requires(T::get_characteristic() > 1);
requires is_prime(T::get_p());
{ t.get_size() } -> std::convertible_to<size_t>;
{ t.get_m() } -> std::convertible_to<size_t>;
{ t.get_p() } -> std::convertible_to<size_t>;
{ t.get_q() } -> std::convertible_to<size_t>;
{ T::get_generator() } -> std::same_as<T>;
{ t.get_multiplicative_order() } -> std::convertible_to<size_t>;
{ t.get_additive_order() } -> std::convertible_to<size_t>;
}
Concept for field types: full algebraic interface.
Refines FieldType for finite fields 𝔽_{p^m}.
constexpr bool is_prime(T a) noexcept
Primality test by trial division.
Definition helpers.hpp:157

Detailed Description

Refines FieldType for finite fields 𝔽_{p^m}.

Template Parameters
TCandidate type

Adds: prime characteristic ≥ 2; field-structure queries get_size(), get_m(), get_p(), get_q(); static generator access via T::get_generator(); element-order queries get_multiplicative_order() and get_additive_order().

Cross-field constructors (embeddings between subfield and superfield) are expected but not enforced by the concept — they live in the concrete classes.

Note
Satisfied by CECCO::Fp, CECCO::Ext, CECCO::Iso. Not by CECCO::Rationals (characteristic 0).

Definition at line 140 of file field_concepts_traits.hpp.