My Project
Loading...
Searching...
No Matches
Public Member Functions | Protected Attributes | Private Member Functions
CMultiplier< CExponent > Class Template Referenceabstract

#include <ncSAMult.h>

Public Member Functions

 CMultiplier (ring rBaseRing)
 
virtual ~CMultiplier ()
 
ring GetBasering () const
 
int NVars () const
 
poly LM (const poly pTerm, const ring r, int i=1) const
 
poly MultiplyTE (const poly pTerm, const CExponent expRight)
 
poly MultiplyET (const CExponent expLeft, const poly pTerm)
 
virtual poly MultiplyEE (const CExponent expLeft, const CExponent expRight)=0
 
virtual poly MultiplyME (const poly pMonom, const CExponent expRight)=0
 
virtual poly MultiplyEM (const CExponent expLeft, const poly pMonom)=0
 

Protected Attributes

const ring m_basering
 
const int m_NVars
 

Private Member Functions

 CMultiplier ()
 
 CMultiplier (const CMultiplier &)
 
CMultiplieroperator= (const CMultiplier &)
 

Detailed Description

template<typename CExponent>
class CMultiplier< CExponent >

Definition at line 25 of file ncSAMult.h.

Constructor & Destructor Documentation

◆ CMultiplier() [1/3]

template<typename CExponent >
CMultiplier< CExponent >::CMultiplier ( ring  rBaseRing)
inline

Definition at line 32 of file ncSAMult.h.

32: m_basering(rBaseRing), m_NVars(rBaseRing->N) {};
const ring m_basering
Definition: ncSAMult.h:28
const int m_NVars
Definition: ncSAMult.h:29

◆ ~CMultiplier()

template<typename CExponent >
virtual CMultiplier< CExponent >::~CMultiplier ( )
inlinevirtual

Definition at line 33 of file ncSAMult.h.

33{};

◆ CMultiplier() [2/3]

template<typename CExponent >
CMultiplier< CExponent >::CMultiplier ( )
private

◆ CMultiplier() [3/3]

template<typename CExponent >
CMultiplier< CExponent >::CMultiplier ( const CMultiplier< CExponent > &  )
private

Member Function Documentation

◆ GetBasering()

template<typename CExponent >
ring CMultiplier< CExponent >::GetBasering ( ) const
inline

Definition at line 35 of file ncSAMult.h.

35{ return m_basering; };

◆ LM()

template<typename CExponent >
poly CMultiplier< CExponent >::LM ( const poly  pTerm,
const ring  r,
int  i = 1 
) const
inline

Definition at line 39 of file ncSAMult.h.

40 {
41 poly pMonom = p_LmInit(pTerm, r);
42 pSetCoeff0(pMonom, n_Init(i, r->cf));
43 return pMonom;
44 }
int i
Definition: cfEzgcd.cc:132
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
Definition: coeffs.h:535
#define pSetCoeff0(p, n)
Definition: monomials.h:59
static poly p_LmInit(poly p, const ring r)
Definition: p_polys.h:1333

◆ MultiplyEE()

template<typename CExponent >
virtual poly CMultiplier< CExponent >::MultiplyEE ( const CExponent  expLeft,
const CExponent  expRight 
)
pure virtual

◆ MultiplyEM()

template<typename CExponent >
virtual poly CMultiplier< CExponent >::MultiplyEM ( const CExponent  expLeft,
const poly  pMonom 
)
pure virtual

◆ MultiplyET()

template<typename CExponent >
poly CMultiplier< CExponent >::MultiplyET ( const CExponent  expLeft,
const poly  pTerm 
)
inline

Definition at line 61 of file ncSAMult.h.

62 {
63 const ring r = GetBasering();
64 poly pMonom = LM(pTerm, r);
65
66 poly result = p_Mult_nn(MultiplyEM(expLeft, pMonom), p_GetCoeff(pTerm, r), r);
67
68 p_Delete(&pMonom, r);
69 return result;
70
71
72 }
poly LM(const poly pTerm, const ring r, int i=1) const
Definition: ncSAMult.h:39
virtual poly MultiplyEM(const CExponent expLeft, const poly pMonom)=0
ring GetBasering() const
Definition: ncSAMult.h:35
return result
Definition: facAbsBiFact.cc:75
#define p_GetCoeff(p, r)
Definition: monomials.h:50
static poly p_Mult_nn(poly p, number n, const ring r)
Definition: p_polys.h:956
static void p_Delete(poly *p, const ring r)
Definition: p_polys.h:899

◆ MultiplyME()

template<typename CExponent >
virtual poly CMultiplier< CExponent >::MultiplyME ( const poly  pMonom,
const CExponent  expRight 
)
pure virtual

◆ MultiplyTE()

template<typename CExponent >
poly CMultiplier< CExponent >::MultiplyTE ( const poly  pTerm,
const CExponent  expRight 
)
inline

Definition at line 47 of file ncSAMult.h.

48 {
49 const ring r = GetBasering();
50 poly pMonom = LM(pTerm, r);
51
52 poly result = p_Mult_nn(MultiplyME(pMonom, expRight), p_GetCoeff(pTerm, r), r);
53
54 p_Delete(&pMonom, r);
55
56 return result;
57 }
virtual poly MultiplyME(const poly pMonom, const CExponent expRight)=0

◆ NVars()

template<typename CExponent >
int CMultiplier< CExponent >::NVars ( ) const
inline

Definition at line 36 of file ncSAMult.h.

36{ return m_NVars; }

◆ operator=()

template<typename CExponent >
CMultiplier & CMultiplier< CExponent >::operator= ( const CMultiplier< CExponent > &  )
private

Field Documentation

◆ m_basering

template<typename CExponent >
const ring CMultiplier< CExponent >::m_basering
protected

Definition at line 28 of file ncSAMult.h.

◆ m_NVars

template<typename CExponent >
const int CMultiplier< CExponent >::m_NVars
protected

Definition at line 29 of file ncSAMult.h.


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