 |
My Project
debian-1:4.1.1-p2+ds-4build2
|
Go to the documentation of this file. 1 #ifndef GRING_SA_MULT_H
2 #define GRING_SA_MULT_H
24 template <
typename CExponent>
39 inline poly
LM(
const poly pTerm,
const ring r,
int i = 1)
const
47 inline poly
MultiplyTE(
const poly pTerm,
const CExponent expRight)
50 poly pMonom =
LM(pTerm, r);
61 inline poly
MultiplyET(
const CExponent expLeft,
const poly pTerm)
64 poly pMonom =
LM(pTerm, r);
77 virtual poly
MultiplyEE(
const CExponent expLeft,
const CExponent expRight) = 0;
80 virtual poly
MultiplyME(
const poly pMonom,
const CExponent expRight) = 0;
83 virtual poly
MultiplyEM(
const CExponent expLeft,
const poly pMonom) = 0;
216 for( poly q = pPoly; q !=
NULL; q =
pNext(q) )
228 for( poly q = pPoly; q !=
NULL; q =
pNext(q) )
305 if( iComponentMonom!=0 )
307 for( poly q = pPoly; q !=
NULL; q =
pNext(q) )
315 Werror(
"MultiplyPE: both sides have non-zero components: %d and %d!\n", iComponent, iComponentMonom);
329 for( poly q = pPoly; q !=
NULL; q =
pNext(q) )
336 Warn(
"MultiplyPE: Multiplication in the left module from the right by component %d!\n", iComponent);
357 if( iComponentMonom!=0 )
359 for( poly q = pPoly; q !=
NULL; q =
pNext(q) )
367 Werror(
"MultiplyEP: both sides have non-zero components: %d and %d!\n", iComponent, iComponentMonom);
380 for( poly q = pPoly; q !=
NULL; q =
pNext(q) )
402 if( iComponentMonom!=0 )
412 Werror(
"MultiplyPEDestroy: both sides have non-zero components: %d and %d!\n", iComponent, iComponentMonom);
433 Warn(
"MultiplyPEDestroy: Multiplication in the left module from the right by component %d!\n", iComponent);
456 if( iComponentMonom!=0 )
466 Werror(
"MultiplyEPDestroy: both sides have non-zero components: %d and %d!\n", iComponent, iComponentMonom);
507 virtual poly
MultiplyEE(
const int expLeft,
const int expRight);
518 virtual poly
MultiplyEE(
const int expLeft,
const int expRight);
534 virtual poly
MultiplyEE(
const int expLeft,
const int expRight);
550 virtual poly
MultiplyEE(
const int expLeft,
const int expRight);
565 virtual poly
MultiplyEE(
const int expLeft,
const int expRight);
582 virtual poly
MultiplyEE(
const int expLeft,
const int expRight);
600 virtual poly
MultiplyEE(
const int expLeft,
const int expRight);
604 #endif // HAVE_PLURAL :(
poly LM(const poly pTerm, const ring r, int i=1) const
virtual poly MultiplyEM(const CExponent expLeft, const poly pMonom)=0
CSpecialPairMultiplier * GetPair(int i, int j) const
static poly p_LmDeleteAndNext(poly p, const ring r)
virtual ~CPowerMultiplier()
virtual poly MultiplyME(const poly pMonom, const CExponent expRight)
virtual poly MultiplyEE(const CExponent expLeft, const CExponent expRight)=0
virtual ~CHWeylSpecialPairMultiplier()
virtual poly MultiplyEE(const int expLeft, const int expRight)
CExternalSpecialPairMultiplier(ring r, int i, int j, Enum_ncSAType type)
virtual poly MultiplyEE(const int expLeft, const int expRight)
virtual poly MultiplyME(const poly pMonom, const CExponent expRight)
virtual poly MultiplyEE(const CExponent expLeft, const CExponent expRight)
virtual poly MultiplyEE(const int expLeft, const int expRight)
virtual ~CQuasiCommutativeSpecialPairMultiplier()
#define MIN_LENGTH_BUCKET
virtual poly MultiplyME(const poly pMonom, const CExponent expRight)=0
poly MultiplyEP(const CExponent expLeft, const poly pPoly)
static poly p_LmInit(poly p, const ring r)
poly MultiplyEPDestroy(const CExponent expLeft, poly pPoly)
static void p_SetCompP(poly p, int i, ring r)
const CFormulaPowerMultiplier * m_RingFormulaMultiplier
virtual poly MultiplyME(const poly pMonom, const CExponent expRight)
virtual ~CSpecialPairMultiplier()
BOOLEAN ncInitSpecialPairMultiplication(ring r)
const CanonicalForm CFMap CFMap & N
poly MultiplyTE(const poly pTerm, const CExponent expRight)
virtual ~CWeylSpecialPairMultiplier()
CMultiplier< poly > CBaseType
virtual ~CExternalSpecialPairMultiplier()
CPowerMultiplier * m_powers
static unsigned pLength(poly a)
#define TEST_OPT_NOT_BUCKETS
virtual poly MultiplyEE(const CExponent expLeft, const CExponent expRight)=0
poly MultiplyPEDestroy(poly pPoly, const CExponent expRight)
poly MultiplyEPDestroy(const CExponent expLeft, poly pPoly)
poly MultiplyPEDestroy(poly pPoly, const CExponent expRight)
CGlobalMultiplier(ring r)
CHWeylSpecialPairMultiplier(ring r, int i, int j, int k)
CShiftSpecialPairMultiplier(ring r, int i, int j, int s, number c)
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
CAntiCommutativeSpecialPairMultiplier(ring r, int i, int j)
virtual ~CGlobalMultiplier()
virtual ~CAntiCommutativeSpecialPairMultiplier()
virtual poly MultiplyEM(const CExponent expLeft, const poly pMonom)
CMultiplier & operator=(const CMultiplier &)
static void p_Delete(poly *p, const ring r)
poly MultiplyEP(const CExponent expLeft, const poly pPoly)
virtual ~CCommutativeSpecialPairMultiplier()
virtual poly MultiplyEM(const CExponent expLeft, const poly pMonom)
CMultiplier(ring rBaseRing)
poly MultiplyPE(const poly pPoly, const CExponent expRight)
void Werror(const char *fmt,...)
poly MultiplyPE(const poly pPoly, const CExponent expRight)
CQuasiCommutativeSpecialPairMultiplier(ring r, int i, int j, number q)
CSpecialPairMultiplier(ring r, int i, int j)
poly MultiplyET(const CExponent expLeft, const poly pTerm)
virtual poly MultiplyEE(const int expLeft, const int expRight)
virtual poly MultiplyEE(const CExponent expLeft, const CExponent expRight)
CWeylSpecialPairMultiplier(ring r, int i, int j, number g)
virtual poly MultiplyEE(const int expLeft, const int expRight)
const CanonicalForm int s
virtual ~CShiftSpecialPairMultiplier()
virtual poly MultiplyEM(const CExponent expLeft, const poly pMonom)
virtual poly MultiplyEE(const int expLeft, const int expRight)
CPolynomialSummator: unifies bucket and polynomial summation as the later is brocken in buckets :(.
CCommutativeSpecialPairMultiplier(ring r, int i, int j)
virtual poly MultiplyEE(const int expLeft, const int expRight)
static poly p_Mult_nn(poly p, number n, const ring r)
CSpecialPairMultiplier ** m_specialpairs
CSpecialPairMultiplier *& GetPair(int i, int j)