1 #ifndef SHIFTOP_H 2 #define SHIFTOP_H 3 4 #include "misc/auxiliary.h" 5 #ifdef HAVE_SHIFTBBA 6 #include "monomials/ring.h" 7 8 poly shift_pp_Mult_mm(poly p, const poly m, const ring r); 9 poly shift_p_Mult_mm(poly p, const poly m, const ring r); 10 poly shift_pp_mm_Mult(poly p, const poly m, const ring r); 11 poly shift_p_mm_Mult(poly p, const poly m, const ring r); 12 poly shift_p_Minus_mm_Mult_qq(poly p, poly m, poly q, int& Shorter, const poly spNoether, const ring r); 13 poly shift_pp_Mult_mm_Noether_STUB(poly p, const poly m, const poly spNoether, int &ll, const ring ri); 14 poly shift_pp_Mult_Coeff_mm_DivSelectMult_STUB(poly p,const poly m, const poly a, const poly b, int &shorter,const ring r); 15 poly shift_pp_Mult_Coeff_mm_DivSelect_STUB(poly p, const poly m, int &shorter, const ring r); 16 17 void p_mLPunshift(poly m, const ring ri); 18 void p_LPunshift(poly p, const ring ri); 19 void p_mLPshift(poly p, int sh, const ring r); 20 void p_LPshift(poly p, int sh, const ring r); 21 #define pLPunshift(p, sh) p_LPunshift(p, currRing) 22 #define pmLPunshift(p, sh) p_mLPunshift(p, currRing) 23 #define pLPshift(p, sh) p_LPshift(p, sh, currRing) 24 #define pmLPshift(p, sh) p_mLPshift(p, sh, currRing) 25 26 int p_LastVblock(poly p, const ring r); 27 int p_mLastVblock(poly p, const ring r); 28 int p_mLastVblock(poly p, int *expV, const ring r); 29 int p_FirstVblock(poly p, const ring r); 30 int p_mFirstVblock(poly p, const ring r); 31 int p_mFirstVblock(poly p, int *expV, const ring r); 32 #define pLastVblock(p) p_LastVblock(p,currRing) 33 #define pmLastVblock(p) p_mLastVblock(p,currRing) 34 #define pFirstVblock(p) p_FirstVblock(p,currRing) 35 #define pmFirstVblock(p) p_mFirstVblock(p,currRing) 36 37 void p_LPExpVappend(int *m1ExpV, int *m2ExpV, int m1Length, int m2Length, const ring ri); 38 void p_LPExpVprepend(int *m1ExpV, int *m2ExpV, int m1Length, int m2Length, const ring ri); 39 40 void WriteLPExpV(int *expV, ring ri); 41 char* LPExpVString(int *expV, ring ri); 42 43 void k_SplitFrame(poly &m1, poly &m2, int at, const ring r); 44 #define kSplitFrame(m1, m2, at) k_SplitFrame(m1, m2, at, currRing) 45 46 int id_IsInV(ideal I, const ring r); 47 int p_IsInV(poly p, const ring r); 48 int p_mIsInV(poly p, const ring r); 49 #define idIsInV(I) id_IsInV(I, currRing) 50 #define pIsInV(p) p_IsInV(p, currRing) 51 #define pmIsInV(p) p_mIsInV(p, currRing) 52 53 BOOLEAN p_LPDivisibleBy(poly a, poly b, const ring r); 54 BOOLEAN p_LPLmDivisibleBy(poly a, poly b, const ring r); 55 BOOLEAN _p_LPLmDivisibleByNoComp(poly a, poly b, const ring r); 56 BOOLEAN p_LPDivisibleBy(ideal I, poly p, ring r); 57 #define pLPDivisibleBy(a, b) p_LPLmDivisibleBy(a, b, currRing) 58 #define pLPLmDivisibleBy(a, b) p_LPLmDivisibleBy(a, b, currRing) 59 60 BOOLEAN _p_mLPNCGenValid(poly p, const ring r); 61 BOOLEAN _p_mLPNCGenValid(int *mExpV, const ring r); 62 63 poly p_LPVarAt(poly p, int pos, const ring r); 64 65 #define pGetNCGen(p) p_GetNCGen(p, currRing) 66 int p_GetNCGen(poly p, const ring r); 67 68 #define pLPSubst(p, n, e) p_LPSubst(p, n, e, r) 69 #define pmLPSubst(m, n, e) p_LPSubst(m, n, e, r) 70 poly p_LPSubst(poly p, int n, poly e, const ring r); 71 poly p_mLPSubst(poly m, int n, poly e, const ring r); 72 73 /// create the letterplace ring corresponding to r up to degree d 74 ring freeAlgebra(ring r, int d, int LPncGenCount = 0); 75 #endif 76 #endif 77