#include <ncSAMult.h>
|
| CPowerMultiplier (ring r) |
|
virtual | ~CPowerMultiplier () |
|
CSpecialPairMultiplier * | GetPair (int i, int j) const |
|
CSpecialPairMultiplier *& | GetPair (int i, int j) |
|
virtual poly | MultiplyEE (const CExponent expLeft, const CExponent expRight) |
|
virtual poly | MultiplyME (const poly pMonom, const CExponent expRight) |
|
virtual poly | MultiplyEM (const CExponent expLeft, const poly pMonom) |
|
poly | MultiplyPE (const poly pPoly, const CExponent expRight) |
|
poly | MultiplyEP (const CExponent expLeft, const poly pPoly) |
|
poly | MultiplyPEDestroy (poly pPoly, const CExponent expRight) |
|
poly | MultiplyEPDestroy (const CExponent expLeft, poly pPoly) |
|
| 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 CPower expRight) |
|
poly | MultiplyET (const CPower expLeft, const poly pTerm) |
|
virtual poly | MultiplyEE (const CPower expLeft, const CPower expRight)=0 |
|
virtual poly | MultiplyME (const poly pMonom, const CPower expRight)=0 |
|
virtual poly | MultiplyEM (const CPower expLeft, const poly pMonom)=0 |
|
Definition at line 163 of file ncSAMult.h.
◆ CExponent
◆ CPowerMultiplier()
CPowerMultiplier::CPowerMultiplier |
( |
ring |
r | ) |
|
Definition at line 832 of file ncSAMult.cc.
833{
834#if OUTPUT
835 PrintS(
"CPowerMultiplier::CPowerMultiplier(ring)!");
837#endif
838
840
844}
CSpecialPairMultiplier * GetPair(int i, int j) const
CSpecialPairMultiplier ** m_specialpairs
CSpecialPairMultiplier * AnalyzePair(const ring r, int i, int j)
void PrintS(const char *s)
◆ ~CPowerMultiplier()
CPowerMultiplier::~CPowerMultiplier |
( |
| ) |
|
|
virtual |
Definition at line 847 of file ncSAMult.cc.
848{
849#if OUTPUT
850 PrintS(
"CPowerMultiplier::~CPowerMultiplier()!");
852#endif
853
855}
#define omFreeSize(addr, size)
◆ GetPair() [1/2]
◆ GetPair() [2/2]
◆ MultiplyEE()
Implements CMultiplier< CPower >.
Definition at line 991 of file ncSAMult.cc.
992{
993#if OUTPUT
994 PrintS(
"CPowerMultiplier::MultiplyEE)!");
996#endif
997
998 const int i = expRight.Var,
j = expLeft.Var;
999 const int ei = expRight.Power, ej = expLeft.Power;
1000
1001#if OUTPUT
1002 Print(
"Input: var(%d)^{%d} * var(%d)^{%d}",
j, ej,
i, ei);
1004#endif
1005
1012
1014 {
1016
1017 poly product =
p_One(r);
1021
1022 return product;
1023
1024 } else
1025 {
1027
1028
1029
1031
1032
1033 if( pSpecialMultiplier !=
NULL )
1034 {
1038
1039 return pSpecialMultiplier->
MultiplyEE(ej, ei);
1040 } else
1041 {
1042
1043
1044
1045 WerrorS(
"Sorry the general case is not implemented this way yet!!!");
1047
1048
1049 }
1050 }
1051
1053}
virtual poly MultiplyEE(const CExponent expLeft, const CExponent expRight)=0
void WerrorS(const char *s)
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
static void p_Setm(poly p, const ring r)
◆ MultiplyEM()
Implements CMultiplier< CPower >.
Definition at line 924 of file ncSAMult.cc.
925{
927
928
929 const int j = expLeft.Var;
930 const int n = expLeft.Power;
931
932#if OUTPUT
933 Print(
"CPowerMultiplier::MultiplyEM(var(%d)^{%d} * monom)!",
j, n);
936#endif
937
939
940 if( n == 0 )
942
943
946
947 while((
v <
j) && (e == 0))
949
951 {
955
957 }
958
961
962
963
964
966
968
970 {
972
973 if( e > 0 )
975
977 }
978
979#if OUTPUT
980 PrintS(
"CPowerMultiplier::MultiplyEM() ===> ");
982#endif
983
985
986}
virtual poly MultiplyEE(const CExponent expLeft, const CExponent expRight)
poly MultiplyPEDestroy(poly pPoly, const CExponent expRight)
const Variable & v
< [in] a sqrfree bivariate poly
void p_Write(poly p, ring lmRing, ring tailRing)
static poly p_Head(const poly p, const ring r)
copy the (leading) term of p
static long p_GetExp(const poly p, const unsigned long iBitmask, const int VarOffset)
get a single variable exponent @Note: the integer VarOffset encodes:
◆ MultiplyEP()
Definition at line 223 of file ncSAMult.h.
224 {
227
228 for( poly q = pPoly; q !=
NULL; q =
pNext(q) )
230
231 return sum;
232 }
poly MultiplyET(const CPower expLeft, const poly pTerm)
CPolynomialSummator: unifies bucket and polynomial summation as the later is brocken in buckets :(.
#define TEST_OPT_NOT_BUCKETS
#define MIN_LENGTH_BUCKET
static int pLength(poly a)
◆ MultiplyEPDestroy()
poly CPowerMultiplier::MultiplyEPDestroy |
( |
const CExponent |
expLeft, |
|
|
poly |
pPoly |
|
) |
| |
|
inline |
Definition at line 247 of file ncSAMult.h.
248 {
251
254
255 return sum;
256 }
static poly p_LmDeleteAndNext(poly p, const ring r)
◆ MultiplyME()
Implements CMultiplier< CPower >.
Definition at line 860 of file ncSAMult.cc.
861{
862 const int j = expRight.Var;
863 const int n = expRight.Power;
864
866
867#if OUTPUT
868 Print(
"CPowerMultiplier::MultiplyME(monom * var(%d)^{%d})!",
j, n);
871#endif
872
874
875 if( n == 0 )
877
878
881
882 while((
v >
j) && (e == 0))
884
885
887 {
891
893 }
894
897
898
899
901
903
905 {
907
908 if( e > 0 )
910
912 }
913
914#if OUTPUT
915 PrintS(
"CPowerMultiplier::MultiplyME() ===> ");
917#endif
918
920}
poly MultiplyEPDestroy(const CExponent expLeft, poly pPoly)
◆ MultiplyPE()
Definition at line 211 of file ncSAMult.h.
212 {
215
216 for( poly q = pPoly; q !=
NULL; q =
pNext(q) )
218
219 return sum;
220 }
poly MultiplyTE(const poly pTerm, const CPower expRight)
◆ MultiplyPEDestroy()
poly CPowerMultiplier::MultiplyPEDestroy |
( |
poly |
pPoly, |
|
|
const CExponent |
expRight |
|
) |
| |
|
inline |
Definition at line 235 of file ncSAMult.h.
236 {
239
242
243 return sum;
244 }
◆ m_specialpairs
The documentation for this class was generated from the following files: