Crypto++ 8.7
Free C++ class library of cryptographic schemes
Classes | Public Types | List of all members
PolynomialOverFixedRing< T, instance > Class Template Reference

Polynomials over a fixed ring. More...

#include <polynomi.h>

+ Inheritance diagram for PolynomialOverFixedRing< T, instance >:

Public Types

typedef T Ring
 
typedef T::Element CoefficientType
 
typedef B::DivideByZero DivideByZero
 
typedef B::RandomizationParameter RandomizationParameter
 

Public Member Functions

ACCESSORS
int Degree () const
 the zero polynomial will return a degree of -1 More...
 
unsigned int CoefficientCount () const
 degree + 1 More...
 
CoefficientType GetCoefficient (unsigned int i) const
 return coefficient for x^i More...
 
CoefficientType operator[] (unsigned int i) const
 return coefficient for x^i More...
 
MANIPULATORS
ThisTypeoperator= (const ThisType &t)
 
ThisTypeoperator+= (const ThisType &t)
 
ThisTypeoperator-= (const ThisType &t)
 
ThisTypeoperator*= (const ThisType &t)
 
ThisTypeoperator/= (const ThisType &t)
 
ThisTypeoperator%= (const ThisType &t)
 
ThisTypeoperator<<= (unsigned int n)
 
ThisTypeoperator>>= (unsigned int n)
 
void SetCoefficient (unsigned int i, const CoefficientType &value)
 set the coefficient for x^i to value More...
 
void Randomize (RandomNumberGenerator &rng, const RandomizationParameter &parameter)
 
void Negate ()
 
void swap (ThisType &t)
 
UNARY OPERATORS
bool operator! () const
 
ThisType operator+ () const
 
ThisType operator- () const
 

Friends

BINARY OPERATORS
ThisType operator>> (ThisType a, unsigned int n)
 
ThisType operator<< (ThisType a, unsigned int n)
 

INPUT/OUTPUT

std::istream & operator>> (std::istream &in, ThisType &a)
 
std::ostream & operator<< (std::ostream &out, const ThisType &a)
 

CREATORS

 PolynomialOverFixedRing (unsigned int count=0)
 creates the zero polynomial More...
 
 PolynomialOverFixedRing (const ThisType &t)
 copy constructor More...
 
 PolynomialOverFixedRing (const B &t)
 
 PolynomialOverFixedRing (const CoefficientType &element)
 construct constant polynomial More...
 
template<typename Iterator >
 PolynomialOverFixedRing (Iterator first, Iterator last)
 construct polynomial with specified coefficients, starting from coefficient of x^0 More...
 
 PolynomialOverFixedRing (const char *str)
 convert from string More...
 
 PolynomialOverFixedRing (const byte *encodedPoly, unsigned int byteCount)
 convert from big-endian byte array More...
 
 PolynomialOverFixedRing (const byte *BEREncodedPoly)
 convert from Basic Encoding Rules encoded byte array More...
 
 PolynomialOverFixedRing (BufferedTransformation &bt)
 convert from BER encoded byte array stored in a BufferedTransformation object More...
 
 PolynomialOverFixedRing (RandomNumberGenerator &rng, const RandomizationParameter &parameter)
 create a random PolynomialOverFixedRing More...
 
static const ThisTypeZero ()
 
static const ThisTypeOne ()
 

OTHER ARITHMETIC FUNCTIONS

ThisType MultiplicativeInverse () const
 
bool IsUnit () const
 
ThisType Doubled () const
 
ThisType Squared () const
 
CoefficientType EvaluateAt (const CoefficientType &x) const
 
static void Divide (ThisType &r, ThisType &q, const ThisType &a, const ThisType &d)
 calculate r and q such that (a == d*q + r) && (0 <= r < abs(d)) More...
 

Detailed Description

template<class T, int instance>
class PolynomialOverFixedRing< T, instance >

Polynomials over a fixed ring.

Having a fixed ring allows overloaded operators

Definition at line 163 of file polynomi.h.

Member Typedef Documentation

◆ Ring

template<class T , int instance>
typedef T PolynomialOverFixedRing< T, instance >::Ring

Definition at line 169 of file polynomi.h.

◆ CoefficientType

template<class T , int instance>
typedef T::Element PolynomialOverFixedRing< T, instance >::CoefficientType

Definition at line 170 of file polynomi.h.

◆ DivideByZero

template<class T , int instance>
typedef B::DivideByZero PolynomialOverFixedRing< T, instance >::DivideByZero

Definition at line 171 of file polynomi.h.

◆ RandomizationParameter

template<class T , int instance>
typedef B::RandomizationParameter PolynomialOverFixedRing< T, instance >::RandomizationParameter

Definition at line 172 of file polynomi.h.

Constructor & Destructor Documentation

◆ PolynomialOverFixedRing() [1/10]

template<class T , int instance>
PolynomialOverFixedRing< T, instance >::PolynomialOverFixedRing ( unsigned int  count = 0)
inline

creates the zero polynomial

Definition at line 177 of file polynomi.h.

◆ PolynomialOverFixedRing() [2/10]

template<class T , int instance>
PolynomialOverFixedRing< T, instance >::PolynomialOverFixedRing ( const ThisType t)
inline

copy constructor

Definition at line 180 of file polynomi.h.

◆ PolynomialOverFixedRing() [3/10]

template<class T , int instance>
PolynomialOverFixedRing< T, instance >::PolynomialOverFixedRing ( const B t)
inlineexplicit

Definition at line 182 of file polynomi.h.

◆ PolynomialOverFixedRing() [4/10]

template<class T , int instance>
PolynomialOverFixedRing< T, instance >::PolynomialOverFixedRing ( const CoefficientType &  element)
inline

construct constant polynomial

Definition at line 185 of file polynomi.h.

◆ PolynomialOverFixedRing() [5/10]

template<class T , int instance>
template<typename Iterator >
PolynomialOverFixedRing< T, instance >::PolynomialOverFixedRing ( Iterator  first,
Iterator  last 
)
inline

construct polynomial with specified coefficients, starting from coefficient of x^0

Definition at line 188 of file polynomi.h.

◆ PolynomialOverFixedRing() [6/10]

template<class T , int instance>
PolynomialOverFixedRing< T, instance >::PolynomialOverFixedRing ( const char *  str)
inlineexplicit

convert from string

Definition at line 192 of file polynomi.h.

◆ PolynomialOverFixedRing() [7/10]

template<class T , int instance>
PolynomialOverFixedRing< T, instance >::PolynomialOverFixedRing ( const byte encodedPoly,
unsigned int  byteCount 
)
inline

convert from big-endian byte array

Definition at line 195 of file polynomi.h.

◆ PolynomialOverFixedRing() [8/10]

template<class T , int instance>
PolynomialOverFixedRing< T, instance >::PolynomialOverFixedRing ( const byte BEREncodedPoly)
inlineexplicit

convert from Basic Encoding Rules encoded byte array

Definition at line 198 of file polynomi.h.

◆ PolynomialOverFixedRing() [9/10]

template<class T , int instance>
PolynomialOverFixedRing< T, instance >::PolynomialOverFixedRing ( BufferedTransformation bt)
inlineexplicit

convert from BER encoded byte array stored in a BufferedTransformation object

Definition at line 201 of file polynomi.h.

◆ PolynomialOverFixedRing() [10/10]

template<class T , int instance>
PolynomialOverFixedRing< T, instance >::PolynomialOverFixedRing ( RandomNumberGenerator rng,
const RandomizationParameter parameter 
)
inline

create a random PolynomialOverFixedRing

Definition at line 204 of file polynomi.h.

Member Function Documentation

◆ Zero()

template<class T , int instance>
const PolynomialOverFixedRing< T, instance > & PolynomialOverFixedRing< T, instance >::Zero
static

Definition at line 566 of file polynomi.cpp.

◆ One()

template<class T , int instance>
const PolynomialOverFixedRing< T, instance > & PolynomialOverFixedRing< T, instance >::One
static

Definition at line 572 of file polynomi.cpp.

◆ Degree()

template<class T , int instance>
int PolynomialOverFixedRing< T, instance >::Degree ( ) const
inline

the zero polynomial will return a degree of -1

Definition at line 213 of file polynomi.h.

◆ CoefficientCount()

template<class T , int instance>
unsigned int PolynomialOverFixedRing< T, instance >::CoefficientCount ( ) const
inline

degree + 1

Definition at line 215 of file polynomi.h.

◆ GetCoefficient()

template<class T , int instance>
CoefficientType PolynomialOverFixedRing< T, instance >::GetCoefficient ( unsigned int  i) const
inline

return coefficient for x^i

Definition at line 217 of file polynomi.h.

◆ operator[]()

template<class T , int instance>
CoefficientType PolynomialOverFixedRing< T, instance >::operator[] ( unsigned int  i) const
inline

return coefficient for x^i

Definition at line 219 of file polynomi.h.

◆ operator=()

template<class T , int instance>
ThisType & PolynomialOverFixedRing< T, instance >::operator= ( const ThisType t)
inline

Definition at line 225 of file polynomi.h.

◆ operator+=()

template<class T , int instance>
ThisType & PolynomialOverFixedRing< T, instance >::operator+= ( const ThisType t)
inline

Definition at line 227 of file polynomi.h.

◆ operator-=()

template<class T , int instance>
ThisType & PolynomialOverFixedRing< T, instance >::operator-= ( const ThisType t)
inline

Definition at line 229 of file polynomi.h.

◆ operator*=()

template<class T , int instance>
ThisType & PolynomialOverFixedRing< T, instance >::operator*= ( const ThisType t)
inline

Definition at line 231 of file polynomi.h.

◆ operator/=()

template<class T , int instance>
ThisType & PolynomialOverFixedRing< T, instance >::operator/= ( const ThisType t)
inline

Definition at line 233 of file polynomi.h.

◆ operator%=()

template<class T , int instance>
ThisType & PolynomialOverFixedRing< T, instance >::operator%= ( const ThisType t)
inline

Definition at line 235 of file polynomi.h.

◆ operator<<=()

template<class T , int instance>
ThisType & PolynomialOverFixedRing< T, instance >::operator<<= ( unsigned int  n)
inline

Definition at line 238 of file polynomi.h.

◆ operator>>=()

template<class T , int instance>
ThisType & PolynomialOverFixedRing< T, instance >::operator>>= ( unsigned int  n)
inline

Definition at line 240 of file polynomi.h.

◆ SetCoefficient()

template<class T , int instance>
void PolynomialOverFixedRing< T, instance >::SetCoefficient ( unsigned int  i,
const CoefficientType &  value 
)
inline

set the coefficient for x^i to value

Definition at line 243 of file polynomi.h.

◆ Randomize()

template<class T , int instance>
void PolynomialOverFixedRing< T, instance >::Randomize ( RandomNumberGenerator rng,
const RandomizationParameter parameter 
)
inline

Definition at line 246 of file polynomi.h.

◆ Negate()

template<class T , int instance>
void PolynomialOverFixedRing< T, instance >::Negate ( )
inline

Definition at line 249 of file polynomi.h.

◆ swap()

template<class T , int instance>
void PolynomialOverFixedRing< T, instance >::swap ( ThisType t)
inline

Definition at line 251 of file polynomi.h.

◆ operator!()

template<class T , int instance>
bool PolynomialOverFixedRing< T, instance >::operator! ( ) const
inline

Definition at line 257 of file polynomi.h.

◆ operator+()

template<class T , int instance>
ThisType PolynomialOverFixedRing< T, instance >::operator+ ( ) const
inline

Definition at line 259 of file polynomi.h.

◆ operator-()

template<class T , int instance>
ThisType PolynomialOverFixedRing< T, instance >::operator- ( ) const
inline

Definition at line 261 of file polynomi.h.

◆ MultiplicativeInverse()

template<class T , int instance>
ThisType PolynomialOverFixedRing< T, instance >::MultiplicativeInverse ( ) const
inline

Definition at line 275 of file polynomi.h.

◆ IsUnit()

template<class T , int instance>
bool PolynomialOverFixedRing< T, instance >::IsUnit ( ) const
inline

Definition at line 277 of file polynomi.h.

◆ Doubled()

template<class T , int instance>
ThisType PolynomialOverFixedRing< T, instance >::Doubled ( ) const
inline

Definition at line 280 of file polynomi.h.

◆ Squared()

template<class T , int instance>
ThisType PolynomialOverFixedRing< T, instance >::Squared ( ) const
inline

Definition at line 282 of file polynomi.h.

◆ EvaluateAt()

template<class T , int instance>
CoefficientType PolynomialOverFixedRing< T, instance >::EvaluateAt ( const CoefficientType &  x) const
inline

Definition at line 284 of file polynomi.h.

◆ Divide()

template<class T , int instance>
static void PolynomialOverFixedRing< T, instance >::Divide ( ThisType r,
ThisType q,
const ThisType a,
const ThisType d 
)
inlinestatic

calculate r and q such that (a == d*q + r) && (0 <= r < abs(d))

Definition at line 287 of file polynomi.h.

Friends And Related Function Documentation

◆ operator>> [1/2]

template<class T , int instance>
ThisType operator>> ( ThisType  a,
unsigned int  n 
)
friend

Definition at line 267 of file polynomi.h.

◆ operator<< [1/2]

template<class T , int instance>
ThisType operator<< ( ThisType  a,
unsigned int  n 
)
friend

Definition at line 269 of file polynomi.h.

◆ operator>> [2/2]

template<class T , int instance>
std::istream & operator>> ( std::istream &  in,
ThisType a 
)
friend

Definition at line 294 of file polynomi.h.

◆ operator<< [2/2]

template<class T , int instance>
std::ostream & operator<< ( std::ostream &  out,
const ThisType a 
)
friend

Definition at line 297 of file polynomi.h.


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