27 #define PLURAL_INTERNAL_DECLARATIONS 54 Print(
"ncInitSpecialPowersMultiplication(ring), ring: \n");
63 if( r->GetNC()->GetFormulaPowerMultiplier() !=
NULL )
65 WarnS(
"Already defined!");
86 Print(
"AreCommutingVariables(ring, k: %d, i: %d)!", j, i);
101 if (reverse) {
int k =
j; j =
i; i =
k; }
138 Print(
"AnalyzePair(ring, i: %d, j: %d):", i, j);
193 }
else if ( exp == 2 && k!= i && k != j)
212 PrintS(
"====>>>>_ncSA_notImplemented\n");
222 Print(
"CFormulaPowerMultiplier::CFormulaPowerMultiplier(ring)!");
239 Print(
"CFormulaPowerMultiplier::~CFormulaPowerMultiplier()!");
265 Print(
"ncSA_1xy0x0y0(var(%d)^{%d}, var(%d)^{%d}, r)!", j, m, i, n);
283 Print(
"ncSA_{M = -1}xy0x0y0(var(%d)^{%d}, var(%d)^{%d}, r)!", j, m, i, n);
287 const int sign = 1 - ((n & (m & 1)) << 1);
300 static inline poly ncSA_Qxy0x0y0(
const int i,
const int j,
const int n,
const int m,
const number m_q,
const ring
r)
303 Print(
"ncSA_Qxy0x0y0(var(%d)^{%d}, var(%d)^{%d}, Q, r)!", j, m, i, n);
349 static inline poly ncSA_1xy0x0yG(
const int i,
const int j,
const int n,
const int m,
const number m_g,
const ring
r)
352 Print(
"ncSA_1xy0x0yG(var(%d)^{%d}, var(%d)^{%d}, G, r)!", j, m, i, n);
354 number t =
n_Copy(m_g, r);
381 number t =
n_Init(km + 1, r);
410 assume((km == 0) || (kn == 0) );
417 number t =
n_Init(km + 1, r);
424 number t =
n_Init(kn + 1, r);
452 Print(
"ncSA_1xy0x0yT2(var(%d)^{%d}, var(%d)^{%d}, t: var(%d), r)!", j, m, i, n, m_k);
480 number t =
n_Init(km + 1, r);
511 assume((km == 0) || (kn == 0) );
518 number t =
n_Init(km + 1, r);
525 number t =
n_Init(kn + 1, r);
582 number t =
n_Init(k + 1, r);
632 static inline poly ncSA_1xyAx0y0(
const int i,
const int j,
const int n,
const int m,
const number m_shiftCoef,
const ring
r)
635 Print(
"ncSA_1xyAx0y0(var(%d)^{%d}, var(%d)^{%d}, A, r)!", j, m, i, n);
637 number t =
n_Copy(m_shiftCoef, r);
645 static inline poly ncSA_1xy0xBy0(
const int i,
const int j,
const int n,
const int m,
const number m_shiftCoef,
const ring
r)
648 Print(
"ncSA_1xy0xBy0(var(%d)^{%d}, var(%d)^{%d}, B, r)!", j, m, i, n);
650 number t =
n_Copy(m_shiftCoef, r);
666 Print(
"ncSA_Multiply(type: %d, ring, (var(%d)^{%d} * var(%d)^{%d}, r)!", (
int)type, j, m, i, n);
671 assume( (n > 0) && (m > 0) );
static poly pLast(poly a, int &length)
returns the length of a polynomial (numbers of monomials) respect syzComp
static BOOLEAN p_LmIsConstantComp(const poly p, const ring r)
static int min(int a, int b)
static int si_min(const int a, const int b)
static FORCE_INLINE void n_InpMult(number &a, number b, const coeffs r)
multiplication of 'a' and 'b'; replacement of 'a' by the product a*b
static FORCE_INLINE BOOLEAN n_IsOne(number n, const coeffs r)
TRUE iff 'n' represents the one element.
poly p_NSet(number n, const ring r)
returns the poly representing the number n, destroys n
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
#define omFreeSize(addr, size)
static bool rIsPluralRing(const ring r)
we must always have this test!
const CanonicalForm CFMap CFMap & N
static long p_GetExp(const poly p, const unsigned long iBitmask, const int VarOffset)
get a single variable exponent : the integer VarOffset encodes:
static int max(int a, int b)
static FORCE_INLINE void n_Write(number &n, const coeffs r, const BOOLEAN bShortOut=TRUE)
static int p_LmCmp(poly p, poly q, const ring r)
void PrintS(const char *s)
void rWrite(ring r, BOOLEAN details)
static poly pReverse(poly p)
static unsigned long p_SetExp(poly p, const unsigned long e, const unsigned long iBitmask, const int VarOffset)
set a single variable exponent : VarOffset encodes the position in p->exp
int p_IsPurePower(const poly p, const ring r)
return i, if head depends only on var(i)
static FORCE_INLINE void n_Power(number a, int b, number *res, const coeffs r)
fill res with the power a^b
static FORCE_INLINE number n_Copy(number n, const coeffs r)
return a copy of 'n'
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...
static bool rIsSCA(const ring r)
static void p_Setm(poly p, const ring r)
static poly GetC(const ring r, int i, int j)
CanonicalForm reverse(const CanonicalForm &F, int d)
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete 'p'
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.
void p_Write(poly p, ring lmRing, ring tailRing)
poly p_ISet(long i, const ring r)
returns the poly representing the integer i
static poly GetD(const ring r, int i, int j)