 |
My Project
debian-1:4.1.1-p2+ds-4build3
|
Go to the source code of this file.
|
poly | sca_pp_Mult_mm (const poly pPoly, const poly pMonom, const ring rRing, poly &) |
|
static poly | sca_mm_Mult_pp (const poly pMonom, const poly pPoly, const ring rRing) |
|
poly | sca_p_Mult_mm (poly pPoly, const poly pMonom, const ring rRing) |
|
static poly | sca_mm_Mult_p (const poly pMonom, poly pPoly, const ring rRing) |
|
poly | sca_SPoly (const poly p1, const poly p2, const ring r) |
|
poly | sca_ReduceSpoly (const poly p1, poly p2, const ring r) |
|
static int | sca_Sign_mm_Mult_mm (const poly pMonomM, const poly pMonomMM, const ring rRing) |
|
static poly | sca_m_Mult_mm (poly pMonomM, const poly pMonomMM, const ring rRing) |
|
static poly | sca_mm_Mult_m (const poly pMonomMM, poly pMonomM, const ring rRing) |
|
static poly | sca_mm_Mult_mm (poly pMonom1, const poly pMonom2, const ring rRing) |
|
static poly | sca_xi_Mult_mm (short i, const poly pMonom, const ring rRing) |
|
poly | sca_pp_Mult_mm (const poly pPoly, const poly pMonom, const ring rRing) |
|
static poly | sca_xi_Mult_pp (short i, const poly pPoly, const ring rRing) |
|
bool | sca_SetupQuotient (ring rGR, ring rG, bool bCopy) |
|
bool | sca_Force (ring rGR, int b, int e) |
|
poly | sca_pp_Mult_xi_pp (short i, const poly pPoly, const ring rRing) |
|
void | sca_p_ProcsSet (ring rGR, p_Procs_s *p_Procs) |
|
static void | m_GetBiDegree (const poly m, const intvec *wx, const intvec *wy, const intvec *wCx, const intvec *wCy, int &dx, int &dy, const ring r) |
|
bool | p_IsBiHomogeneous (const poly p, const intvec *wx, const intvec *wy, const intvec *wCx, const intvec *wCy, int &dx, int &dy, const ring r) |
|
bool | id_IsBiHomogeneous (const ideal id, const intvec *wx, const intvec *wy, const intvec *wCx, const intvec *wCy, const ring r) |
|
intvec * | ivGetSCAXVarWeights (const ring r) |
|
intvec * | ivGetSCAYVarWeights (const ring r) |
|
static poly | m_KillSquares (const poly m, const short iFirstAltVar, const short iLastAltVar, const ring r) |
|
poly | p_KillSquares (const poly p, const short iFirstAltVar, const short iLastAltVar, const ring r) |
|
ideal | id_KillSquares (const ideal id, const short iFirstAltVar, const short iLastAltVar, const ring r, const bool bSkipZeroes) |
|
◆ MYTEST
◆ OUTPUT
◆ PLURAL_INTERNAL_DECLARATIONS
#define PLURAL_INTERNAL_DECLARATIONS |
◆ id_IsBiHomogeneous()
Definition at line 1359 of file sca.cc.
1364 if (
id ==
NULL)
return true;
1366 const int iSize =
IDELEMS(
id);
1368 if (iSize == 0)
return true;
1373 for(
int i = iSize - 1; (
i >= 0 ) &&
b;
i--)
◆ id_KillSquares()
ideal id_KillSquares |
( |
const ideal |
id, |
|
|
const short |
iFirstAltVar, |
|
|
const short |
iLastAltVar, |
|
|
const ring |
r, |
|
|
const bool |
bSkipZeroes |
|
) |
| |
Definition at line 1520 of file sca.cc.
1524 if (
id ==
NULL)
return id;
1526 assume( (iFirstAltVar >= 1) && (iLastAltVar <=
rVar(r)) && (iFirstAltVar <= iLastAltVar) );
1528 const int iSize =
IDELEMS(
id);
1530 if (iSize == 0)
return id;
1532 ideal temp =
idInit(iSize, id->rank);
1535 PrintS(
"<id_KillSquares>\n");
1538 for (
unsigned int i = 0;
i <
IDELEMS(
id);
i++)
1540 Print(
"; id[%d] = ",
i+1);
1549 for (
int j = 0;
j < iSize;
j++)
1556 PrintS(
"<id_KillSquares>\n");
1558 PrintS(
"ideal temp: \n");
1561 Print(
"; temp[%d] = ",
i+1);
1567 PrintS(
"</id_KillSquares>\n");
◆ ivGetSCAXVarWeights()
Definition at line 1383 of file sca.cc.
1385 const unsigned int N = r->N;
1387 const int CommutativeVariable = 0;
1388 const int AntiCommutativeVariable = 0;
1392 if(AntiCommutativeVariable != CommutativeVariable)
1398 for (
unsigned int i = m_iFirstAltVar;
i<= m_iLastAltVar;
i++)
1400 (*w)[
i-1] = AntiCommutativeVariable;
◆ ivGetSCAYVarWeights()
Definition at line 1411 of file sca.cc.
1413 const unsigned int N = r->N;
1415 const int CommutativeVariable = 0;
1416 const int AntiCommutativeVariable = 1;
1420 if(AntiCommutativeVariable != CommutativeVariable)
1426 for (
unsigned int i = m_iFirstAltVar;
i<= m_iLastAltVar;
i++)
1428 (*w)[
i-1] = AntiCommutativeVariable;
◆ m_GetBiDegree()
Definition at line 1275 of file sca.cc.
1280 const unsigned int N = r->N;
1296 for(
int i =
N;
i > 0;
i--)
1299 x += d * (*wx)[
i-1];
1300 y += d * (*wy)[
i-1];
1303 if( (wCx !=
NULL) && (wCy !=
NULL) )
◆ m_KillSquares()
static poly m_KillSquares |
( |
const poly |
m, |
|
|
const short |
iFirstAltVar, |
|
|
const short |
iLastAltVar, |
|
|
const ring |
r |
|
) |
| |
|
inlinestatic |
Definition at line 1439 of file sca.cc.
1445 assume( (iFirstAltVar >= 1) && (iLastAltVar <=
rVar(r)) && (iFirstAltVar <= iLastAltVar) );
1448 PrintS(
"m_KillSquares, m = ");
1455 for(
short k = iFirstAltVar;
k <= iLastAltVar;
k++)
◆ p_IsBiHomogeneous()
Definition at line 1320 of file sca.cc.
1348 if ( (
x != ddx) || (
y != ddy) )
return false;
◆ p_KillSquares()
poly p_KillSquares |
( |
const poly |
p, |
|
|
const short |
iFirstAltVar, |
|
|
const short |
iLastAltVar, |
|
|
const ring |
r |
|
) |
| |
Definition at line 1465 of file sca.cc.
1472 assume( (iFirstAltVar >= 1) && (iLastAltVar <= r->
N) && (iFirstAltVar <= iLastAltVar) );
1475 PrintS(
"p_KillSquares, p = ");
1484 poly pResult =
NULL;
1485 poly* ppPrev = &pResult;
1507 PrintS(
"p_KillSquares => ");
◆ sca_Force()
bool sca_Force |
( |
ring |
rGR, |
|
|
int |
b, |
|
|
int |
e |
|
) |
| |
Definition at line 1161 of file sca.cc.
1167 const int N = rGR->N;
1173 const ideal idQuotient = rGR->qideal;
1175 ideal tempQ = idQuotient;
1177 if( b <= N && e >= 1 )
1185 rGR->GetNC()->SCAQuotient() =
NULL;
1187 rGR->GetNC()->SCAQuotient() = tempQ;
◆ sca_m_Mult_mm()
static poly sca_m_Mult_mm |
( |
poly |
pMonomM, |
|
|
const poly |
pMonomMM, |
|
|
const ring |
rRing |
|
) |
| |
|
inlinestatic |
Definition at line 132 of file sca.cc.
145 for(
REGISTER unsigned int j = iLastAltVar;
j >= iFirstAltVar;
j-- )
147 const unsigned int iExpM =
p_GetExp(pMonomM,
j, rRing);
148 const unsigned int iExpMM =
p_GetExp(pMonomMM,
j, rRing);
177 nCoeffM =
n_InpNeg(nCoeffM, rRing->cf);
179 const number nCoeffMM =
p_GetCoeff(pMonomMM, rRing);
181 number nCoeff =
n_Mult(nCoeffM, nCoeffMM, rRing->cf);
◆ sca_mm_Mult_m()
static poly sca_mm_Mult_m |
( |
const poly |
pMonomMM, |
|
|
poly |
pMonomM, |
|
|
const ring |
rRing |
|
) |
| |
|
inlinestatic |
Definition at line 196 of file sca.cc.
209 for(
REGISTER unsigned int j = iLastAltVar;
j >= iFirstAltVar;
j-- )
211 const unsigned int iExpMM =
p_GetExp(pMonomMM,
j, rRing);
212 const unsigned int iExpM =
p_GetExp(pMonomM,
j, rRing);
241 nCoeffM =
n_InpNeg(nCoeffM, rRing->cf);
243 const number nCoeffMM =
p_GetCoeff(pMonomMM, rRing);
245 number nCoeff =
n_Mult(nCoeffM, nCoeffMM, rRing->cf);
◆ sca_mm_Mult_mm()
static poly sca_mm_Mult_mm |
( |
poly |
pMonom1, |
|
|
const poly |
pMonom2, |
|
|
const ring |
rRing |
|
) |
| |
|
inlinestatic |
Definition at line 261 of file sca.cc.
274 for(
REGISTER unsigned int j = iLastAltVar;
j >= iFirstAltVar;
j-- )
276 const unsigned int iExp1 =
p_GetExp(pMonom1,
j, rRing);
277 const unsigned int iExp2 =
p_GetExp(pMonom2,
j, rRing);
306 const number nCoeff1 =
p_GetCoeff(pMonom1, rRing);
307 const number nCoeff2 =
p_GetCoeff(pMonom2, rRing);
309 number nCoeff =
n_Mult(nCoeff1, nCoeff2, rRing->cf);
312 nCoeff =
n_InpNeg(nCoeff, rRing->cf);
◆ sca_mm_Mult_p()
static poly sca_mm_Mult_p |
( |
const poly |
pMonom, |
|
|
poly |
pPoly, |
|
|
const ring |
rRing |
|
) |
| |
|
static |
Definition at line 635 of file sca.cc.
655 const int iComponentMonomM =
p_GetComp(pMonom, rRing);
657 poly
p = pPoly; poly* ppPrev = &pPoly;
671 if( iComponentMonomM!=0 )
676 Werror(
"sca_mm_Mult_p: exponent mismatch %d and %d\n", iComponent, iComponentMonomM);
685 dReportError(
"sca_mm_Mult_p: Multiplication in the left module from the right!");
718 if( !
p_Test(pPoly, rRing) )
720 PrintS(
"pPoly is wrong!");
◆ sca_mm_Mult_pp()
static poly sca_mm_Mult_pp |
( |
const poly |
pMonom, |
|
|
const poly |
pPoly, |
|
|
const ring |
rRing |
|
) |
| |
|
static |
Definition at line 567 of file sca.cc.
582 const int iComponentMonomM =
p_GetComp(pMonom, rRing);
585 poly* ppPrev = &pResult;
594 if( iComponentMonomM!=0 )
599 Werror(
"sca_mm_Mult_pp: exponent mismatch %d and %d\n", iComponent, iComponentMonomM);
608 dReportError(
"sca_mm_Mult_pp: Multiplication in the left module from the right!");
622 ppPrev = &
pNext(*ppPrev);
◆ sca_p_Mult_mm()
poly sca_p_Mult_mm |
( |
poly |
pPoly, |
|
|
const poly |
pMonom, |
|
|
const ring |
rRing |
|
) |
| |
Definition at line 371 of file sca.cc.
393 const int iComponentMonomM =
p_GetComp(pMonom, rRing);
395 poly
p = pPoly; poly* ppPrev = &pPoly;
406 if( iComponentMonomM!=0 )
409 Werror(
"sca_p_Mult_mm: exponent mismatch %d and %d\n", iComponent, iComponentMonomM);
416 if(iComponentMonomM==0 )
418 dReportError(
"sca_p_Mult_mm: Multiplication in the left module from the right");
◆ sca_p_ProcsSet()
void sca_p_ProcsSet |
( |
ring |
rGR, |
|
|
p_Procs_s * |
p_Procs |
|
) |
| |
◆ sca_pp_Mult_mm() [1/2]
poly sca_pp_Mult_mm |
( |
const poly |
pPoly, |
|
|
const poly |
pMonom, |
|
|
const ring |
rRing |
|
) |
| |
Definition at line 457 of file sca.cc.
471 const int iComponentMonomM =
p_GetComp(pMonom, rRing);
474 poly* ppPrev = &pResult;
485 if( iComponentMonomM!=0 )
488 Werror(
"sca_pp_Mult_mm: exponent mismatch %d and %d\n", iComponent, iComponentMonomM);
496 if(iComponentMonomM==0 )
498 dReportError(
"sca_pp_Mult_mm: Multiplication in the left module from the right");
◆ sca_pp_Mult_mm() [2/2]
poly sca_pp_Mult_mm |
( |
const poly |
pPoly, |
|
|
const poly |
pMonom, |
|
|
const ring |
rRing, |
|
|
poly & |
|
|
) |
| |
◆ sca_pp_Mult_xi_pp()
poly sca_pp_Mult_xi_pp |
( |
short |
i, |
|
|
const poly |
pPoly, |
|
|
const ring |
rRing |
|
) |
| |
◆ sca_ReduceSpoly()
poly sca_ReduceSpoly |
( |
const poly |
p1, |
|
|
poly |
p2, |
|
|
const ring |
r |
|
) |
| |
Definition at line 831 of file sca.cc.
840 if ((lCompP1!=lCompP2) && (lCompP1!=0) && (lCompP2!=0))
843 dReportError(
"sca_ReduceSpoly: different non-zero components!");
859 number C =
n_Gcd(C1, C2, r->cf);
863 C1 =
n_Div(C1, C, r->cf);
864 C2 =
n_Div(C2, C, r->cf);
◆ sca_SetupQuotient()
bool sca_SetupQuotient |
( |
ring |
rGR, |
|
|
ring |
rG, |
|
|
bool |
bCopy |
|
) |
| |
Definition at line 911 of file sca.cc.
924 #if ((defined(PDEBUG) && OUTPUT) || MYTEST)
925 PrintS(
"sca_SetupQuotient(rGR, rG, bCopy)");
937 if(
rIsSCA(rG) && (rG != rGR))
955 PrintS(
"sca_SetupQuotient: qring?\n");
958 if(rGR->qideal ==
NULL)
962 PrintS(
"sca_SetupQuotient: qideal!!!\n");
970 int iAltVarStart =
N+1;
973 const ring rBase = rG;
978 PrintS(
"sca_SetupQuotient: AltVars?!\n");
981 for(
int i = 1;
i <
N;
i++)
983 for(
int j =
i + 1;
j <=
N;
j++)
987 #if ((defined(PDEBUG) && OUTPUT) || MYTEST)
988 Print(
"Nonzero D[%d, %d]\n",
i,
j);
999 if(
i < iAltVarStart)
1008 #if ((defined(PDEBUG) && OUTPUT) || MYTEST)
1009 Print(
"Wrong Coeff at: [%d, %d]\n",
i,
j);
1017 #if ((defined(PDEBUG) && OUTPUT) || MYTEST)
1018 Print(
"AltVars?1: [%d, %d]\n", iAltVarStart, iAltVarEnd);
1022 if( (iAltVarEnd == -1) || (iAltVarStart == (
N+1)) )
1026 for(
int i = 1;
i <
N;
i++)
1028 for(
int j =
i + 1;
j <=
N;
j++)
1033 if( (iAltVarStart <=
i) && (
j <= iAltVarEnd) )
1037 #if ((defined(PDEBUG) && OUTPUT) || MYTEST)
1038 Print(
"Wrong Coeff at: [%d, %d]\n",
i,
j);
1047 #if ((defined(PDEBUG) && OUTPUT) || MYTEST)
1048 Print(
"Wrong Coeff at: [%d, %d]\n",
i,
j);
1056 #if ((defined(PDEBUG) && OUTPUT) || MYTEST)
1057 Print(
"AltVars!?: [%d, %d]\n", iAltVarStart, iAltVarEnd);
1060 assume( 1 <= iAltVarStart );
1061 assume( iAltVarStart < iAltVarEnd );
1072 const ideal idQuotient = rGR->qideal;
1075 #if ((defined(PDEBUG) && OUTPUT) || MYTEST)
1076 PrintS(
"Analyzing quotient ideal:\n");
1093 #if ((defined(PDEBUG) && OUTPUT) || MYTEST)
1094 Print(
"AltVars!?: [%d, %d]\n",
b, e);
1098 for (
int i = iAltVarStart; (
i <= iAltVarEnd);
i++ )
1099 if( (
i <
b) || (
i > e) )
1101 poly square =
p_One( rG);
1107 square =
nc_NF(idQuotient,
NULL, square, 0, 1, rG);
1109 if( square !=
NULL )
1116 #if ((defined(PDEBUG) && OUTPUT) || MYTEST)
1117 Print(
"ScaVars!: [%d, %d]\n", iAltVarStart, iAltVarEnd);
1124 ideal tempQ =
id_KillSquares(idQuotient, iAltVarStart, iAltVarEnd, rG);
1127 #if ((defined(PDEBUG) && OUTPUT) || MYTEST)
1130 PrintS(
"tempSCAQuotient: \n");
1142 rGR->GetNC()->SCAQuotient() =
NULL;
1144 rGR->GetNC()->SCAQuotient() =
idrMoveR(tempQ, rG, rGR);
1149 #if ((defined(PDEBUG) && OUTPUT) || MYTEST)
1150 PrintS(
"SCAQuotient: \n");
◆ sca_Sign_mm_Mult_mm()
static int sca_Sign_mm_Mult_mm |
( |
const poly |
pMonomM, |
|
|
const poly |
pMonomMM, |
|
|
const ring |
rRing |
|
) |
| |
|
inlinestatic |
Definition at line 81 of file sca.cc.
94 for(
REGISTER short j = iLastAltVar;
j >= iFirstAltVar;
j-- )
96 const unsigned int iExpM =
p_GetExp(pMonomM,
j, rRing);
97 const unsigned int iExpMM =
p_GetExp(pMonomMM,
j, rRing);
122 return(1 - (tpower << 1) );
◆ sca_SPoly()
Definition at line 744 of file sca.cc.
751 if ((lCompP1!=lCompP2) && (lCompP1!=0) && (lCompP2!=0))
754 dReportError(
"sca_SPoly: different non-zero components!\n");
759 poly pL =
p_Lcm(p1, p2, r);
785 number C =
n_Gcd(C1,C2,r->cf);
789 C1=
n_Div(C1, C, r->cf);
790 C2=
n_Div(C2, C, r->cf);
798 assume( (iSignSum*iSignSum == 0) || (iSignSum*iSignSum == 4) );
◆ sca_xi_Mult_mm()
static poly sca_xi_Mult_mm |
( |
short |
i, |
|
|
const poly |
pMonom, |
|
|
const ring |
rRing |
|
) |
| |
|
inlinestatic |
◆ sca_xi_Mult_pp()
static poly sca_xi_Mult_pp |
( |
short |
i, |
|
|
const poly |
pPoly, |
|
|
const ring |
rRing |
|
) |
| |
|
inlinestatic |
Definition at line 523 of file sca.cc.
538 poly* ppPrev = &pResult;
553 ppPrev = &
pNext(*ppPrev);
static poly sca_xi_Mult_mm(short i, const poly pMonom, const ring rRing)
static int si_min(const int a, const int b)
int dReportError(const char *fmt,...)
static poly p_LmDeleteAndNext(poly p, const ring r)
static long p_GetExp(const poly p, const unsigned long iBitmask, const int VarOffset)
get a single variable exponent @Note: the integer VarOffset encodes:
void * cast_A_to_vptr(A a)
static poly sca_mm_Mult_p(const poly pMonom, poly pPoly, const ring rRing)
#define p_SetCoeff0(p, n, r)
static void p_ExpVectorDiff(poly pr, poly p1, poly p2, const ring r)
#define MATELEM(mat, i, j)
const CanonicalForm int const CFList const Variable & y
poly sca_p_Mult_mm(poly pPoly, const poly pMonom, const ring rRing)
static poly p_Head(poly p, const ring r)
static nc_type & ncRingType(nc_struct *p)
static poly p_LmInit(poly p, const ring r)
static poly sca_m_Mult_mm(poly pMonomM, const poly pMonomMM, const ring rRing)
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete 'p'
const CanonicalForm CFMap CFMap & N
static FORCE_INLINE BOOLEAN n_IsOne(number n, const coeffs r)
TRUE iff 'n' represents the one element.
BOOLEAN idIs0(ideal h)
returns true if h is the zero ideal
void p_Lcm(const poly a, const poly b, poly m, const ring r)
void iiWriteMatrix(matrix im, const char *n, int dim, const ring r, int spaces)
set spaces to zero by default
poly p_KillSquares(const poly p, const short iFirstAltVar, const short iLastAltVar, const ring r)
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 BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
bool sca_Force(ring rGR, int b, int e)
static short rVar(const ring r)
#define rVar(r) (r->N)
static void p_ExpVectorAdd(poly p1, poly p2, const ring r)
BOOLEAN rHasLocalOrMixedOrdering(const ring r)
ideal idrMoveR(ideal &id, ring src_r, ring dest_r)
void PrintS(const char *s)
static poly sca_mm_Mult_mm(poly pMonom1, const poly pMonom2, const ring rRing)
static poly m_KillSquares(const poly m, const short iFirstAltVar, const short iLastAltVar, const ring r)
static short scaFirstAltVar(ring r)
void idSkipZeroes(ideal ide)
gives an ideal/module the minimal possible size
static int sca_Sign_mm_Mult_mm(const poly pMonomM, const poly pMonomMM, const ring rRing)
static poly pp_Mult_qq(poly p, poly q, const ring r)
void p_Write(poly p, ring lmRing, ring tailRing)
static poly sca_mm_Mult_pp(const poly pMonom, const poly pPoly, const ring rRing)
poly p_Cleardenom(poly p, const ring r)
static FORCE_INLINE number n_Mult(number a, number b, const coeffs r)
return the product of 'a' and 'b', i.e., a*b
static void p_ExpVectorSum(poly pr, poly p1, poly p2, const ring r)
static FORCE_INLINE number n_InpNeg(number n, const coeffs r)
in-place negation of n MUST BE USED: n = n_InpNeg(n) (no copy is returned)
void nc_p_ProcsSet(ring rGR, p_Procs_s *p_Procs)
bool p_IsBiHomogeneous(const poly p, const intvec *wx, const intvec *wy, const intvec *wCx, const intvec *wCy, int &dx, int &dy, const ring r)
static void p_Delete(poly *p, const ring r)
static poly p_Add_q(poly p, poly q, const ring r)
void rWrite(ring r, BOOLEAN details)
static int si_max(const int a, const int b)
poly sca_pp_Mult_mm(const poly pPoly, const poly pMonom, const ring rRing, poly &)
void Werror(const char *fmt,...)
static short scaLastAltVar(ring r)
ideal idInit(int idsize, int rank)
initialise an ideal / module
static number p_SetCoeff(poly p, number n, ring r)
static FORCE_INLINE BOOLEAN n_IsMOne(number n, const coeffs r)
TRUE iff 'n' represents the additive inverse of the one element, i.e. -1.
ideal id_KillSquares(const ideal id, const short iFirstAltVar, const short iLastAltVar, const ring r, const bool bSkipZeroes)
static FORCE_INLINE number n_Copy(number n, const coeffs r)
return a copy of 'n'
static FORCE_INLINE number n_Gcd(number a, number b, const coeffs r)
in Z: return the gcd of 'a' and 'b' in Z/nZ, Z/2^kZ: computed as in the case Z in Z/pZ,...
static void m_GetBiDegree(const poly m, const intvec *wx, const intvec *wy, const intvec *wCx, const intvec *wCy, int &dx, int &dy, const ring r)
static poly nc_mm_Mult_pp(const poly m, const poly p, const ring r)
static void p_Setm(poly p, const ring r)
static poly sca_mm_Mult_m(const poly pMonomMM, poly pMonomM, const ring rRing)
const Variable & v
< [in] a sqrfree bivariate poly
#define p_AllocBin(p, bin, r)
static FORCE_INLINE number n_Div(number a, number b, const coeffs r)
return the quotient of 'a' and 'b', i.e., a/b; raises an error if 'b' is not invertible in r exceptio...
poly p_ISet(long i, const ring r)
returns the poly representing the integer i
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy
static bool rIsSCA(const ring r)
static p_Procs_s * _p_procs
static poly p_Mult_nn(poly p, number n, const ring r)
static poly sca_xi_Mult_pp(short i, const poly pPoly, const ring rRing)