Givaro
Public Types | Public Member Functions | Static Public Member Functions | Data Fields | Static Public Attributes
Modular< _Storage_t, _Compute_t, typename std::enable_if< std::is_integral< _Storage_t >::value &&std::is_integral< _Compute_t >::value &&(sizeof(_Storage_t)==sizeof(_Compute_t)||2 *sizeof(_Storage_t)==sizeof(_Compute_t))>::type > Class Template Reference

#include <modular-integral.h>

+ Inheritance diagram for Modular< _Storage_t, _Compute_t, typename std::enable_if< std::is_integral< _Storage_t >::value &&std::is_integral< _Compute_t >::value &&(sizeof(_Storage_t)==sizeof(_Compute_t)||2 *sizeof(_Storage_t)==sizeof(_Compute_t))>::type >:
+ Collaboration diagram for Modular< _Storage_t, _Compute_t, typename std::enable_if< std::is_integral< _Storage_t >::value &&std::is_integral< _Compute_t >::value &&(sizeof(_Storage_t)==sizeof(_Compute_t)||2 *sizeof(_Storage_t)==sizeof(_Compute_t))>::type >:

Public Types

using Storage_t = _Storage_t
 
using Residu_t = typename std::make_unsigned< _Storage_t >::type
 
using Compute_t = typename std::make_unsigned< _Compute_t >::type
 
using Element = Storage_t
 
using Self_t = Modular< Storage_t, _Compute_t >
 
using Parent_t = Modular_implem< Storage_t, Compute_t, Residu_t >
 
typedef ModularRandIter< Self_tRandIter
 
typedef GeneralRingNonZeroRandIter< Self_tNonZeroRandIter
 
enum  
 
using Element_ptr = Element *
 
using ConstElement = const Element
 
using ConstElement_ptr = const Element *
 
using is_elt_integral = std::is_integral< Element >
 
using is_elt_floating_point = std::is_floating_point< Element >
 

Public Member Functions

Elementinit (Element &) const
 
template<typename Source , typename std::enable_if<(std::is_integral< Source >::value &&std::is_unsigned< Source >::value &&(sizeof(Source) > sizeof(Storage_t))), int >::type * = nullptr>
Elementinit (Element &, const Source) const
 
template<typename Source , typename std::enable_if<(std::is_integral< Source >::value &&std::is_signed< Source >::value &&(sizeof(Source) > sizeof(Storage_t))), int >::type * = nullptr>
Elementinit (Element &, const Source) const
 
template<typename Source , typename std::enable_if<(std::is_floating_point< Source >::value &&(sizeof(Source) >=sizeof(Storage_t)) &&std::is_integral< Storage_t >::value &&std::is_signed< Storage_t >::value), int >::type * = nullptr>
Elementinit (Element &, const Source) const
 
template<typename Source , typename std::enable_if<(std::is_floating_point< Source >::value &&sizeof(Source) >=sizeof(Storage_t) &&std::is_integral< Storage_t >::value &&std::is_unsigned< Storage_t >::value), int >::type * = nullptr>
Elementinit (Element &, const Source) const
 
Elementinit (Element &, const Integer &) const final
 
template<typename Source , typename std::enable_if<(std::is_integral< Storage_t >::value &&std::is_unsigned< Storage_t >::value &&!(std::is_integral< Source >::value &&(sizeof(Source) > sizeof(Storage_t))) &&!(std::is_floating_point< Source >::value &&(sizeof(Source) >=sizeof(Storage_t)))), int >::type * = nullptr>
Elementinit (Element &, const Source &) const
 
template<typename Source , typename std::enable_if<(std::is_integral< Storage_t >::value &&std::is_signed< Storage_t >::value &&!(std::is_integral< Source >::value &&(sizeof(Source) > sizeof(Storage_t))) &&!(std::is_floating_point< Source >::value &&(sizeof(Source) >=sizeof(Storage_t)))), int >::type * = nullptr>
Elementinit (Element &, const Source &) const
 
Elementreduce (Element &, const Element &) const
 
Elementreduce (Element &) const
 
Elementmul (Element &, const Element &, const Element &) const
 
Elementsub (Element &, const Element &, const Element &) const
 
Elementadd (Element &, const Element &, const Element &) const
 
Elementneg (Element &, const Element &) const
 
Elementinv (Element &, const Element &) const
 
Elementdiv (Element &, const Element &, const Element &) const
 
Elementmulin (Element &, const Element &) const
 
Elementdivin (Element &, const Element &) const
 
Elementaddin (Element &, const Element &) const
 
Elementsubin (Element &, const Element &) const
 
Elementnegin (Element &) const
 
Elementinvin (Element &) const
 
Elementaxpy (Element &, const Element &, const Element &, const Element &) const
 
Elementaxpyin (Element &, const Element &, const Element &) const
 
Elementmaxpy (Element &, const Element &, const Element &, const Element &) const
 
Elementaxmy (Element &, const Element &, const Element &, const Element &) const
 
Elementmaxpyin (Element &, const Element &, const Element &) const
 
Elementaxmyin (Element &, const Element &, const Element &) const
 
template<class Random >
Elementrandom (Random &g, Element &r) const
 
template<class Random >
Elementrandom (Random &g, Element &r, const Residu_t &size) const
 
template<class Random >
Elementnonzerorandom (Random &g, Element &a) const
 
template<class Random >
Elementnonzerorandom (Random &g, Element &a, const Residu_t &size) const
 
Element minElement () const
 
Element maxElement () const
 
Residu_t residu () const
 
Residu_t size () const
 
Residu_t characteristic () const
 
T & characteristic (T &p) const
 
Residu_t cardinality () const
 
T & cardinality (T &p) const
 
bool isZero (const Element &a) const
 
bool isOne (const Element &a) const
 
bool isMOne (const Element &a) const
 
bool areEqual (const Element &a, const Element &b) const
 
bool isUnit (const Element &a) const
 
size_t length (const Element a) const
 
bool operator== (const Self_t &F) const
 
bool operator!= (const Self_t &F) const
 
Elementassign (Element &x, const Element &y) const
 
T & convert (T &r, const Element &a) const
 
std::ostream & write (std::ostream &s, const Element &a) const
 
std::ostream & write (std::ostream &s, const E &a) const
 
std::ostream & write (std::ostream &s, const E &a) const
 
std::ostream & write (std::ostream &s, const E &a) const
 
std::ostream & write (std::ostream &s) const
 
std::ostream & write (std::ostream &s) const
 
std::ostream & write (std::ostream &s) const
 
std::istream & read (std::istream &s)
 
std::istream & read (std::istream &, Element &) const
 

Static Public Member Functions

static const std::string type_string ()
 
static Residu_t minCardinality ()
 
static Residu_t maxCardinality ()
 
static Residu_t maxCardinality ()
 
static Residu_t maxCardinality ()
 
static Residu_t maxCardinality ()
 
static Residu_t maxCardinality ()
 
static Residu_t maxCardinality ()
 
static Residu_t maxCardinality ()
 
static Residu_t maxCardinality ()
 
static Residu_t maxCardinality ()
 
static Residu_t maxCardinality ()
 
static Residu_t maxCardinality ()
 
static Residu_t maxCardinality ()
 
static Residu_t maxCardinality ()
 

Data Fields

Residu_t _p
 
Compute_t _pc
 
const Element zero
 
const Element one
 
const Element mOne
 

Static Public Attributes

static constexpr bool is_elt_integral_v
 
static constexpr bool is_elt_floating_point_v
 

Member Typedef Documentation

◆ Storage_t

using Storage_t = _Storage_t

◆ Residu_t

using Residu_t = typename std::make_unsigned<_Storage_t>::type

◆ Compute_t

using Compute_t = typename std::make_unsigned<_Compute_t>::type

◆ Element

using Element = Storage_t

◆ Self_t

using Self_t = Modular<Storage_t, _Compute_t>

◆ Parent_t

◆ RandIter

◆ NonZeroRandIter

◆ Element_ptr

using Element_ptr = Element*
inherited

◆ ConstElement

using ConstElement = const Element
inherited

◆ ConstElement_ptr

using ConstElement_ptr = const Element*
inherited

◆ is_elt_integral

using is_elt_integral = std::is_integral<Element>
inherited

◆ is_elt_floating_point

using is_elt_floating_point = std::is_floating_point<Element>
inherited

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
inherited

Member Function Documentation

◆ init() [1/8]

Element& init ( Element ) const

◆ init() [2/8]

Element& init ( Element ,
const  Source 
) const
inline

◆ init() [3/8]

Element& init ( Element ,
const  Source 
) const
inline

◆ init() [4/8]

Element& init ( Element ,
const  Source 
) const
inline

◆ init() [5/8]

Element& init ( Element ,
const  Source 
) const
inline

◆ init() [6/8]

Element& init ( Element ,
const Integer  
) const
inlinefinalvirtual

◆ init() [7/8]

Element& init ( Element ,
const Source &   
) const
inline

◆ init() [8/8]

Element& init ( Element ,
const Source &   
) const
inline

◆ reduce() [1/2]

Element& reduce ( Element ,
const Element  
) const

◆ reduce() [2/2]

Element& reduce ( Element ) const

◆ mul()

Element& mul ( Element ,
const Element ,
const Element  
) const

◆ sub()

Element& sub ( Element ,
const Element ,
const Element  
) const

◆ add()

Element& add ( Element ,
const Element ,
const Element  
) const

◆ neg()

Element& neg ( Element ,
const Element  
) const

◆ inv()

Element& inv ( Element ,
const Element  
) const

◆ div()

Element& div ( Element ,
const Element ,
const Element  
) const

◆ mulin()

Element& mulin ( Element ,
const Element  
) const

◆ divin()

Element& divin ( Element ,
const Element  
) const

◆ addin()

Element& addin ( Element ,
const Element  
) const

◆ subin()

Element& subin ( Element ,
const Element  
) const

◆ negin()

Element& negin ( Element ) const

◆ invin()

Element& invin ( Element ) const

◆ axpy()

Element& axpy ( Element ,
const Element ,
const Element ,
const Element  
) const

◆ axpyin()

Element& axpyin ( Element ,
const Element ,
const Element  
) const

◆ maxpy()

Element& maxpy ( Element ,
const Element ,
const Element ,
const Element  
) const

◆ axmy()

Element& axmy ( Element ,
const Element ,
const Element ,
const Element  
) const

◆ maxpyin()

Element& maxpyin ( Element ,
const Element ,
const Element  
) const

◆ axmyin()

Element& axmyin ( Element ,
const Element ,
const Element  
) const

◆ type_string()

static const std::string type_string ( )
inlinestatic

◆ random() [1/2]

Element& random ( Random &  g,
Element r 
) const
inline

◆ random() [2/2]

Element& random ( Random &  g,
Element r,
const Residu_t size 
) const
inline

◆ nonzerorandom() [1/2]

Element& nonzerorandom ( Random &  g,
Element a 
) const
inline

◆ nonzerorandom() [2/2]

Element& nonzerorandom ( Random &  g,
Element a,
const Residu_t size 
) const
inline

◆ minElement()

Element minElement ( ) const
inlineinherited

◆ maxElement()

Element maxElement ( ) const
inlineinherited

◆ residu()

Residu_t residu ( ) const
inlineinherited

◆ size()

Residu_t size ( ) const
inlineinherited

◆ characteristic() [1/2]

Residu_t characteristic ( ) const
inlineinherited

◆ characteristic() [2/2]

T& characteristic ( T &  p) const
inlineinherited

◆ cardinality() [1/2]

Residu_t cardinality ( ) const
inlineinherited

◆ cardinality() [2/2]

T& cardinality ( T &  p) const
inlineinherited

◆ minCardinality()

static Residu_t minCardinality ( )
inlinestaticinherited

◆ maxCardinality() [1/13]

static Residu_t maxCardinality ( )
inlinestaticinherited

◆ maxCardinality() [2/13]

static Residu_t maxCardinality ( )
inlinestaticinherited

◆ maxCardinality() [3/13]

static Residu_t maxCardinality ( )
inlinestaticinherited

◆ maxCardinality() [4/13]

static Residu_t maxCardinality ( )
inlinestaticinherited

◆ maxCardinality() [5/13]

static Residu_t maxCardinality ( )
inlinestaticinherited

◆ maxCardinality() [6/13]

static Residu_t maxCardinality ( )
inlinestaticinherited

◆ maxCardinality() [7/13]

static Residu_t maxCardinality ( )
inlinestaticinherited

◆ maxCardinality() [8/13]

static Residu_t maxCardinality ( )
inlinestaticinherited

◆ maxCardinality() [9/13]

static Residu_t maxCardinality ( )
inlinestaticinherited

◆ maxCardinality() [10/13]

static Residu_t maxCardinality ( )
inlinestaticinherited

◆ maxCardinality() [11/13]

static Residu_t maxCardinality ( )
inlinestaticinherited

◆ maxCardinality() [12/13]

static Residu_t maxCardinality ( )
inlinestaticinherited

◆ maxCardinality() [13/13]

static Residu_t maxCardinality ( )
inlinestaticinherited

◆ isZero()

bool isZero ( const Element a) const
inlineinherited

◆ isOne()

bool isOne ( const Element a) const
inlineinherited

◆ isMOne()

bool isMOne ( const Element a) const
inlineinherited

◆ areEqual()

bool areEqual ( const Element a,
const Element b 
) const
inlineinherited

◆ isUnit()

bool isUnit ( const Element a) const
inlineinherited

◆ length()

size_t length ( const Element  a) const
inlineinherited

◆ operator==()

bool operator== ( const Self_t F) const
inlineinherited

◆ operator!=()

bool operator!= ( const Self_t F) const
inlineinherited

◆ assign()

Element& assign ( Element x,
const Element y 
) const
inlineinherited

◆ convert()

T& convert ( T &  r,
const Element a 
) const
inlineinherited

◆ write() [1/7]

std::ostream& write ( std::ostream &  s,
const Element a 
) const
inlineinherited

◆ write() [2/7]

std::ostream& write ( std::ostream &  s,
const E &  a 
) const
inlineinherited

◆ write() [3/7]

std::ostream& write ( std::ostream &  s,
const E &  a 
) const
inlineinherited

◆ write() [4/7]

std::ostream& write ( std::ostream &  s,
const E &  a 
) const
inlineinherited

◆ write() [5/7]

std::ostream& write ( std::ostream &  s) const
inlineinherited

◆ write() [6/7]

std::ostream& write ( std::ostream &  s) const
inlineinherited

◆ write() [7/7]

std::ostream& write ( std::ostream &  s) const
inlineinherited

◆ read() [1/2]

std::istream& read ( std::istream &  s)
inlineinherited

◆ read() [2/2]

std::istream & read ( std::istream &  s,
Element a 
) const
inlineinherited

Field Documentation

◆ _p

◆ _pc

Compute_t _pc

◆ is_elt_integral_v

constexpr bool is_elt_integral_v
staticconstexprinherited

◆ is_elt_floating_point_v

constexpr bool is_elt_floating_point_v
staticconstexprinherited

◆ zero

const Element zero
inherited

◆ one

const Element one
inherited

◆ mOne

const Element mOne
inherited

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