 |
My Project
debian-1:4.1.1-p2+ds-4build3
|
Go to the documentation of this file.
34 # define PLURAL_INTERNAL_DECLARATIONS
53 static poly ggnc_pp_Mult_mm(
const poly
p,
const poly
m,
const ring r)
61 PrintS(
"VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV ggnc_pp_Mult_mm(p, m) VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV ");
75 poly pMonom = pMultiplier->
LM(
m, r);
88 PrintS(
"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ");
96 static poly ggnc_p_Mult_mm(poly
p,
const poly
m,
const ring r)
107 PrintS(
"VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV ggnc_p_Mult_mm(p, m) VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV ");
124 poly pMonom = pMultiplier->
LM(
m, r);
137 PrintS(
"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ");
145 static poly ggnc_mm_Mult_p(
const poly
m, poly
p,
const ring r)
159 PrintS(
"VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV ggnc_mm_Mult_p(m, p) VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV ");
174 poly pMonom = pMultiplier->
LM(
m, r);
187 PrintS(
"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ");
194 static poly ggnc_mm_Mult_pp(
const poly
m,
const poly
p,
const ring r)
207 PrintS(
"VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV ggnc_mm_Mult_pp(m, p) VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV ");
222 poly pMonom = pMultiplier->
LM(
m, r);
235 PrintS(
"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ");
242 static void ggnc_p_ProcsSet(ring rGR,
p_Procs_s* p_Procs)
245 PrintS(
"|ggnc_p_ProcsSet()");
252 p_Procs->p_Mult_mm = rGR->p_Procs->p_Mult_mm = ggnc_p_Mult_mm;
253 p_Procs->pp_Mult_mm = rGR->p_Procs->pp_Mult_mm = ggnc_pp_Mult_mm;
255 p_Procs->p_Minus_mm_Mult_qq = rGR->p_Procs->p_Minus_mm_Mult_qq =
NULL;
258 rGR->GetNC()->p_Procs.mm_Mult_p = ggnc_mm_Mult_p;
259 rGR->GetNC()->p_Procs.mm_Mult_pp = ggnc_mm_Mult_pp;
268 PrintS(
"ncInitSpecialPairMultiplication(ring), ring: \n");
279 if( r->GetNC()->GetGlobalMultiplier() !=
NULL )
281 WarnS(
"Already defined!");
287 ggnc_p_ProcsSet(r, r->p_Procs);
296 PrintS(
"CGlobalMultiplier::CGlobalMultiplier(ring)!");
308 PrintS(
"CGlobalMultiplier::~CGlobalMultiplier()!");
328 PrintS(
"CGlobalMultiplier::MultiplyEE(expLeft, expRight)!");
353 while( (
i <
j) && !((ej != 0) && (ei != 0)) )
364 PrintS(
"<CGlobalMultiplier::MultiplyEE>");
368 Print(
"ei: %d, ej: %d", ei, ej);
381 product =
p_Head(expRight, r);
429 PrintS(
"<CGlobalMultiplier::MultiplyEE> ==> ");
433 Print(
"ei: %d, ej: %d", ei, ej);
441 while( (product !=
NULL) && !((
i ==
NVars()) && (
j == 1)) )
450 while( (ei == 0) && (
i <
NVars()) )
461 while( (ej == 0) && (1 <
j) )
470 PrintS(
"<CGlobalMultiplier::MultiplyEE> ==> ");
474 Print(
"ei: %d, ej: %d", ei, ej);
494 PrintS(
"CGlobalMultiplier::MultiplyME(monom, expR)!");
507 PrintS(
"CGlobalMultiplier::MultiplyEM(expL, monom)!");
525 Print(
"CCommutativeSpecialPairMultiplier::CCommutativeSpecialPairMultiplier(ring, i: %d, j: %d)!",
i,
j);
534 PrintS(
"CCommutativeSpecialPairMultiplier::~CCommutativeSpecialPairMultiplier()");
543 Print(
"CCommutativeSpecialPairMultiplier::MultiplyEE(var(%d)^{%d}, var(%d)^{%d})!",
GetJ(), expLeft,
GetI(), expRight);
557 Print(
"CAntiCommutativeSpecialPairMultiplier::CAntiCommutativeSpecialPairMultiplier(ring, i: %d, j: %d)!",
i,
j);
566 PrintS(
"CAntiCommutativeSpecialPairMultiplier::~CAntiCommutativeSpecialPairMultiplier()");
575 Print(
"CAntiCommutativeSpecialPairMultiplier::MultiplyEE(var(%d)^{%d}, var(%d)^{%d})!",
GetJ(), expLeft,
GetI(), expRight);
589 Print(
"CQuasiCommutativeSpecialPairMultiplier::CQuasiCommutativeSpecialPairMultiplier(ring, i: %d, j: %d, q)!",
i,
j);
600 PrintS(
"CQuasiCommutativeSpecialPairMultiplier::~CQuasiCommutativeSpecialPairMultiplier()");
609 Print(
"CQuasiCommutativeSpecialPairMultiplier::MultiplyEE(var(%d)^{%d}, var(%d)^{%d})!",
GetJ(), expLeft,
GetI(), expRight);
624 Print(
"CWeylSpecialPairMultiplier::CWeylSpecialPairMultiplier(ring, i: %d, j: %d, g)!",
i,
j);
635 PrintS(
"CWeylSpecialPairMultiplier::~CWeylSpecialPairMultiplier()");
644 Print(
"CWeylSpecialPairMultiplier::MultiplyEE(var(%d)^{%d}, var(%d)^{%d})!",
GetJ(), expLeft,
GetI(), expRight);
652 assume( expLeft*expRight > 0 );
662 Print(
"CHWeylSpecialPairMultiplier::CHWeylSpecialPairMultiplier(ring, i: %d, j: %d, k: %d)!",
i,
j,
k);
671 PrintS(
"CHWeylSpecialPairMultiplier::~CHWeylSpecialPairMultiplier()");
680 Print(
"CHWeylSpecialPairMultiplier::MultiplyEE(var(%d)^{%d}, var(%d)^{%d})!",
GetJ(), expLeft,
GetI(), expRight);
688 assume( expLeft*expRight > 0 );
699 Print(
"CShiftSpecialPairMultiplier::CShiftSpecialPairMultiplier(ring, i: %d, j: %d, s: %d, c)!",
i,
j,
s);
709 PrintS(
"CShiftSpecialPairMultiplier::~CShiftSpecialPairMultiplier()");
718 Print(
"CShiftSpecialPairMultiplier::MultiplyEE(var(%d)^{%d}, var(%d)^{%d})!",
GetJ(), expLeft,
GetI(), expRight);
723 assume( expLeft*expRight > 0 );
741 Print(
"CExternalSpecialPairMultiplier::CExternalSpecialPairMultiplier(ring, i: %d, j: %d, type: %d, c)!",
i,
j, (
int)type);
750 PrintS(
"CExternalSpecialPairMultiplier::~CExternalSpecialPairMultiplier()");
759 Print(
"CExternalSpecialPairMultiplier::MultiplyEE(var(%d)^{%d}, var(%d)^{%d})!",
GetJ(), expLeft,
GetI(), expRight);
764 assume( expLeft*expRight > 0 );
780 Print(
"AnalyzePair(ring, i: %d, j: %d)!",
i,
j);
805 const poly d =
GetD(r,
i,
j);
834 PrintS(
"CPowerMultiplier::CPowerMultiplier(ring)!");
849 PrintS(
"CPowerMultiplier::~CPowerMultiplier()!");
861 const int j = expRight.
Var;
862 const int n = expRight.
Power;
867 Print(
"CPowerMultiplier::MultiplyME(monom * var(%d)^{%d})!",
j, n);
881 while((
v >
j) && (e == 0))
914 PrintS(
"CPowerMultiplier::MultiplyME() ===> ");
928 const int j = expLeft.
Var;
929 const int n = expLeft.
Power;
932 Print(
"CPowerMultiplier::MultiplyEM(var(%d)^{%d} * monom)!",
j, n);
946 while((
v <
j) && (e == 0))
979 PrintS(
"CPowerMultiplier::MultiplyEM() ===> ");
993 PrintS(
"CPowerMultiplier::MultiplyEE)!");
997 const int i = expRight.
Var,
j = expLeft.
Var;
998 const int ei = expRight.
Power, ej = expLeft.
Power;
1001 Print(
"Input: var(%d)^{%d} * var(%d)^{%d}",
j, ej,
i, ei);
1016 poly product =
p_One(r);
1032 if( pSpecialMultiplier !=
NULL )
1038 return pSpecialMultiplier->
MultiplyEE(ej, ei);
1044 WerrorS(
"Sorry the general case is not implemented this way yet!!!");
1063 Print(
"CSpecialPairMultiplier::CSpecialPairMultiplier(ring, i: %d, j: %d)!",
i,
j);
1076 PrintS(
"CSpecialPairMultiplier::~CSpecialPairMultiplier()!");
1087 Print(
"CSpecialPairMultiplier::MultiplyME(monom, var(%d)^{%d})!",
GetI(), expRight);
1099 Print(
"CSpecialPairMultiplier::MultiplyEM(var(%d)^{%d}, monom)!",
GetJ(), expLeft);
poly LM(const poly pTerm, const ring r, int i=1) const
BOOLEAN ncInitSpecialPairMultiplication(ring r)
CSpecialPairMultiplier * GetPair(int i, int j) const
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)
static long p_GetExp(const poly p, const unsigned long iBitmask, const int VarOffset)
get a single variable exponent @Note: the integer VarOffset encodes:
virtual poly MultiplyEE(const int expLeft, const int expRight)
virtual poly MultiplyME(const poly pMonom, const CExponent expRight)
static poly GetC(const ring r, int i, int j)
virtual poly MultiplyEE(const CExponent expLeft, const CExponent expRight)
virtual poly MultiplyEE(const int expLeft, const int expRight)
static poly p_Head(poly p, const ring r)
virtual ~CQuasiCommutativeSpecialPairMultiplier()
poly MultiplyEPDestroy(const CExponent expLeft, poly pPoly)
const CFormulaPowerMultiplier * m_RingFormulaMultiplier
virtual poly MultiplyME(const poly pMonom, const CExponent expRight)
virtual ~CSpecialPairMultiplier()
const CanonicalForm CFMap CFMap & N
#define __p_Mult_nn(p, n, r)
virtual ~CWeylSpecialPairMultiplier()
virtual ~CExternalSpecialPairMultiplier()
static unsigned long p_SetExp(poly p, const unsigned long e, const unsigned long iBitmask, const int VarOffset)
set a single variable exponent @Note: VarOffset encodes the position in p->exp
CPowerMultiplier * m_powers
static BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
static FORCE_INLINE void n_Write(number n, const coeffs r, const BOOLEAN bShortOut=TRUE)
CSpecialPairMultiplier * AnalyzePair(const ring r, int i, int j)
void PrintS(const char *s)
#define omFreeSize(addr, size)
poly MultiplyPEDestroy(poly pPoly, const CExponent expRight)
poly MultiplyEPDestroy(const CExponent expLeft, poly pPoly)
poly MultiplyPEDestroy(poly pPoly, const CExponent expRight)
void p_Write(poly p, ring lmRing, ring tailRing)
CGlobalMultiplier(ring r)
CHWeylSpecialPairMultiplier(ring r, int i, int j, int k)
CShiftSpecialPairMultiplier(ring r, int i, int j, int s, number c)
struct p_Procs_s p_Procs_s
CAntiCommutativeSpecialPairMultiplier(ring r, int i, int j)
virtual ~CGlobalMultiplier()
#define __pp_Mult_nn(p, n, r)
virtual ~CAntiCommutativeSpecialPairMultiplier()
virtual poly MultiplyEM(const CExponent expLeft, const poly pMonom)
int p_IsPurePower(const poly p, const ring r)
return i, if head depends only on var(i)
static void p_Delete(poly *p, const ring r)
poly MultiplyEP(const CExponent expLeft, const poly pPoly)
virtual ~CCommutativeSpecialPairMultiplier()
void rWrite(ring r, BOOLEAN details)
virtual poly MultiplyEM(const CExponent expLeft, const poly pMonom)
poly MultiplyPE(const poly pPoly, const CExponent expRight)
CQuasiCommutativeSpecialPairMultiplier(ring r, int i, int j, number q)
CSpecialPairMultiplier(ring r, int i, int j)
void WerrorS(const char *s)
virtual poly MultiplyEE(const int expLeft, const int expRight)
static poly GetD(const ring r, int i, int j)
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)
static void p_Setm(poly p, const ring r)
const Variable & v
< [in] a sqrfree bivariate poly
static BOOLEAN p_IsConstant(const poly p, const ring r)
const CanonicalForm int s
virtual ~CShiftSpecialPairMultiplier()
virtual poly MultiplyEM(const CExponent expLeft, const poly pMonom)
virtual poly MultiplyEE(const int expLeft, const int expRight)
static bool rIsSCA(const ring r)
CCommutativeSpecialPairMultiplier(ring r, int i, int j)
virtual poly MultiplyEE(const int expLeft, const int expRight)
CSpecialPairMultiplier ** m_specialpairs