Dedekind 0.0.0
A structuralist C++23 Module Library
Loading...
Searching...
No Matches
GaloisFieldRegistration< T, Zero, One, Order, Add, Mult > Struct Template Reference

Extends FieldRegistration with the Galois-specific opt-ins: the carrier is declared a finite field of a given order. More...

Inheritance diagram for GaloisFieldRegistration< T, Zero, One, Order, Add, Mult >:
Collaboration diagram for GaloisFieldRegistration< T, Zero, One, Order, Add, Mult >:

Static Public Attributes

template<typename AddOp, typename MultOp>
static constexpr bool is_galois_field_v
template<typename AddOp, typename MultOp>
static constexpr std::size_t galois_order_v
Static Public Attributes inherited from FieldRegistration< T, Zero, One, Add, Mult >
template<typename Op>
static constexpr bool is_invertible_v
Static Public Attributes inherited from CommutativeRingRegistration< T, Zero, One, Add, Mult >
template<typename Op>
static constexpr bool is_commutative_v
Static Public Attributes inherited from RingRegistration< T, Zero, One, Add, Mult >
template<typename Op>
static constexpr bool is_invertible_v = std::same_as<Op, Add>
Static Public Attributes inherited from RigRegistration< T, Zero, One, Add, Mult >
template<typename Op>
static constexpr bool is_associative_v
template<typename Op>
static constexpr bool is_commutative_v = std::same_as<Op, Add>
template<typename Op>
static constexpr bool is_periodic_v
template<typename Op>
static constexpr T unit_v = std::same_as<Op, Add> ? T(Zero) : T(One)
template<typename MultOp, typename AddOp>
static constexpr bool is_distributive_v

Additional Inherited Members

Public Types inherited from RigRegistration< T, Zero, One, Add, Mult >
using Domain = T
using dedekind_registration_tag = void

Detailed Description

template<typename T, auto Zero, auto One, std::size_t Order, typename Add = std::plus<T>, typename Mult = std::multiplies<T>>
struct GaloisFieldRegistration< T, Zero, One, Order, Add, Mult >

Extends FieldRegistration with the Galois-specific opt-ins: the carrier is declared a finite field of a given order.

Template Parameters
OrderThe field's cardinality \(q = |T| = p^n\) (a prime power). Exposed as galois_order_v for the dedekind.algebra:galois traits.

Member Data Documentation

◆ galois_order_v

template<typename T, auto Zero, auto One, std::size_t Order, typename Add = std::plus<T>, typename Mult = std::multiplies<T>>
template<typename AddOp, typename MultOp>
std::size_t GaloisFieldRegistration< T, Zero, One, Order, Add, Mult >::galois_order_v
staticconstexpr
Initial value:
=
(std::same_as<AddOp, Add> && std::same_as<MultOp, Mult>) ? Order : 0

◆ is_galois_field_v

template<typename T, auto Zero, auto One, std::size_t Order, typename Add = std::plus<T>, typename Mult = std::multiplies<T>>
template<typename AddOp, typename MultOp>
bool GaloisFieldRegistration< T, Zero, One, Order, Add, Mult >::is_galois_field_v
staticconstexpr
Initial value:
=
std::same_as<AddOp, Add> && std::same_as<MultOp, Mult>

The documentation for this struct was generated from the following file: