Givaro 4.2.1
RNSsystem< RING, Domain > Class Template Reference

class RNSsystem. More...

#include <givrns.h>

Public Types

typedef RING ring
 
typedef Domain::Element modulo
 
typedef Array0< moduloarray
 
typedef Array0< Domaindomains
 

Public Member Functions

 RNSsystem ()
 
 ~RNSsystem ()
 
 RNSsystem (const Self_t &R)
 
 RNSsystem (const domains &primes)
 
void RnsToMixedRadix (array &mixrad, const array &residu)
 
RING & MixedRadixToRing (RING &res, const array &mixrad) const
 
void RingToRns (array &rns, const RING &a) const
 
RING & RnsToRing (RING &a, const array &rns)
 
size_t size () const
 
const domainsPrimes () const
 
const Domain ith (const size_t i) const
 
const arrayReciprocals () const
 – Returns an array of the reciprocal \(ck = \left(\prod_{j=0..k-1}p_j\right)^{-1} \mod pk\)
 
const modulo reciprocal (const size_t i) const
 
void setPrimes (const domains &primes)
 

Protected Member Functions

void ComputeCk ()
 

Protected Attributes

domains _primes
 
array _ck
 

Detailed Description

template<class RING, class Domain>
class Givaro::RNSsystem< RING, Domain >

class RNSsystem.

Structure which manages list of domains in order to convert integer to/from RNS number system using a mixed radix form. This class is parameterized by the type of RING and of Domain. The ring should have:

  • Ring( Modulo ) and Domain.init(Ring) conversions
  • operator *= (Ring&, const Modulo&)
  • operator += (Ring&, const Modulo&)

Member Typedef Documentation

◆ ring

template<class RING, class Domain>
typedef RING ring

◆ modulo

template<class RING, class Domain>
typedef Domain::Element modulo

◆ array

template<class RING, class Domain>
typedef Array0<modulo> array

◆ domains

template<class RING, class Domain>
typedef Array0<Domain> domains

Constructor & Destructor Documentation

◆ RNSsystem() [1/3]

template<class RING, class Domain>
RNSsystem ( )

◆ ~RNSsystem()

template<class RING, class Domain>
~RNSsystem ( )

◆ RNSsystem() [2/3]

template<class RING, class Domain>
RNSsystem ( const Self_t & R)

◆ RNSsystem() [3/3]

template<class RING, class Domain>
RNSsystem ( const domains & primes)

Member Function Documentation

◆ RnsToMixedRadix()

template<class RING, class Domain>
void RnsToMixedRadix ( array & mixrad,
const array & residu )

◆ MixedRadixToRing()

template<class RING, class Domain>
RING & MixedRadixToRing ( RING & res,
const array & mixrad ) const

◆ RingToRns()

template<class RING, class Domain>
void RingToRns ( array & rns,
const RING & a ) const

◆ RnsToRing()

template<class RING, class Domain>
RING & RnsToRing ( RING & a,
const array & rns )

◆ size()

template<class RING, class Domain>
size_t size ( ) const
inline

◆ Primes()

template<class RING, class Domain>
const RNSsystem< RING, Domain >::domains & Primes ( ) const

◆ ith()

template<class RING, class Domain>
const Domain ith ( const size_t i) const

◆ Reciprocals()

template<class RING, class Domain>
const RNSsystem< RING, Domain >::array & Reciprocals ( ) const

– Returns an array of the reciprocal \(ck = \left(\prod_{j=0..k-1}p_j\right)^{-1} \mod pk\)

◆ reciprocal()

template<class RING, class Domain>
const RNSsystem< RING, Domain >::modulo reciprocal ( const size_t i) const

◆ setPrimes()

template<class RING, class Domain>
void setPrimes ( const domains & primes)

◆ ComputeCk()

template<class RING, class Domain>
void ComputeCk ( )
protected

Field Documentation

◆ _primes

template<class RING, class Domain>
domains _primes
protected

◆ _ck

template<class RING, class Domain>
array _ck
protected

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