44 #define UPMATELEM(i,j,nVar) ( (nVar * ((i)-1) - ((i) * ((i)-1))/2 + (j)-1)-(i) ) 114 short iFirstAltVar, iLastAltVar;
147 {
return (m_Multiplier); };
150 {
return (m_Multiplier); };
154 {
return (m_PowerMultiplier); };
157 {
return (m_PowerMultiplier); };
229 const poly,
const ring
r);
234 const int,
const ring
r);
244 return r->GetNC()->p_Procs.mm_Mult_pp(m, p, r);
254 return r->GetNC()->p_Procs.mm_Mult_p(m, p, r);
262 return r->GetNC()->p_Procs.SPoly(p1, p2, r);
274 assume(r->GetNC()->p_Procs.ReduceSPoly!=
NULL);
278 return r->GetNC()->p_Procs.ReduceSPoly(p1, p2, r);
299 assume(r->GetNC()->p_Procs.BucketPolyRed!=
NULL);
300 return r->GetNC()->p_Procs.BucketPolyRed(b, p, c);
310 assume(r->GetNC()->p_Procs.BucketPolyRed_Z!=
NULL);
311 return r->GetNC()->p_Procs.BucketPolyRed_Z(b, p, c);
325 bool dummy_ring =
false 335 bool nc_rCopy(ring
res,
const ring
r,
bool bSetupQuotient);
338 ideal
idOppose(ring Rop_src, ideal I,
const ring Rop_dst);
344 static const bool bNoPluralMultiplication =
false;
346 static const bool bNoFormula =
true;
347 static const bool bNoCache =
false;
372 #ifdef PLURAL_INTERNAL_DECLARATIONS 389 assume( (i > 0) && (i < j) && (j <= ncols) );
390 return ( C->
m[ncols * ((i)-1) + (j)-1] );
400 assume( (i > 0) && (i < j) && (j <= ncols) );
401 return ( D->
m[ncols * ((i)-1) + (j)-1] );
404 #endif // PLURAL_INTERNAL_DECLARATIONS poly pOppose(ring Rop_src, poly p, const ring Rop_dst)
opposes a vector p from Rop to currRing (dst!)
CGlobalMultiplier * m_Multiplier
mm_Mult_p_Proc_Ptr mm_Mult_p
poly nc_p_Bracket_qq(poly p, const poly q, const ring r)
returns [p,q], destroys p
mm_Mult_pp_Proc_Ptr mm_Mult_pp
poly _nc_pp_Mult_qq(const poly p, const poly q, const ring r)
general NC-multiplication without destruction
static void nc_kBucketPolyRed(kBucket_pt b, poly p, number *c)
BOOLEAN rIsLikeOpposite(ring rBase, ring rCandidate)
checks whether rings rBase and rCandidate could be opposite to each other returns TRUE if it is so ...
void nc_PolyPolyRed(poly &b, poly p, number *c, const ring r)
nc_type ncRingType() const
struct p_Procs_s p_Procs_s
static nc_struct *& GetNC(ring r)
void(* bucket_Proc_Ptr)(kBucket_pt b, poly p, number *c)
bucket_Proc_Ptr BucketPolyRed
bool nc_SetupQuotient(ring rGR, const ring rG=NULL, bool bCopy=false)
int setNCExtensions(int iMask)
void nc_rKill(ring r)
complete destructor
CFormulaPowerMultiplier *& GetFormulaPowerMultiplier()
SPolyReduce_Proc_Ptr ReduceSPoly
void nc_p_ProcsSet(ring rGR, p_Procs_s *p_Procs)
poly nc_CreateShortSpoly(poly p1, poly p2, const ring r)
short FirstAltVar() const
ideal idOppose(ring Rop_src, ideal I, const ring Rop_dst)
opposes a module I from Rop to currRing(dst)
bucket_Proc_Ptr BucketPolyRed_Z
poly nc_p_Plus_mm_Mult_qq(poly p, const poly m, const poly q, int &lp, const int, const ring r)
poly nc_p_Minus_mm_Mult_qq(poly p, const poly m, const poly q, int &lp, const poly, const ring r)
for p_Minus_mm_Mult_qq in pInline2.h
static poly nc_mm_Mult_p(const poly m, poly p, const ring r)
matrix nc_PrintMat(int a, int b, ring r, int metric)
returns matrix with the info on noncomm multiplication
static BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
poly _nc_p_Mult_q(poly p, poly q, const ring r)
general NC-multiplication with destruction
bool ncExtensions(int iMask)
poly(* SPolyReduce_Proc_Ptr)(const poly p1, poly p2, const ring r)
CGlobalMultiplier * GetGlobalMultiplier() const
static poly nc_ReduceSpoly(const poly p1, poly p2, const ring r)
BOOLEAN nc_rComplete(const ring src, ring dest, bool bSetupQuotient=true)
poly(* mm_Mult_p_Proc_Ptr)(const poly m, poly p, const ring r)
poly(* SPoly_Proc_Ptr)(const poly p1, const poly p2, const ring r)
BOOLEAN nc_CallPlural(matrix cc, matrix dd, poly cn, poly dn, ring r, bool bSetupQuotient, bool bCopyInput, bool bBeQuiet, ring curr, bool dummy_ring=false)
returns TRUE if there were errors analyze inputs, check them for consistency detects nc_type...
bool nc_rCopy(ring res, const ring r, bool bSetupQuotient)
static bool rIsSCA(const ring r)
void * GB
From "gb_hack.h".
CFormulaPowerMultiplier * GetFormulaPowerMultiplier() const
static nc_type & ncRingType(nc_struct *p)
static poly GetC(const ring r, int i, int j)
static poly nc_mm_Mult_pp(const poly m, const poly p, const ring r)
static poly nc_CreateSpoly(const poly p1, const poly p2, const ring r)
poly nc_pSubst(poly p, int n, poly e, const ring r)
substitute the n-th variable by e in p destroy p e is not a constant
CFormulaPowerMultiplier * m_PowerMultiplier
BOOLEAN nc_CheckSubalgebra(poly PolyVar, ring r)
poly(* mm_Mult_pp_Proc_Ptr)(const poly m, const poly p, const ring r)
CGlobalMultiplier *& GetGlobalMultiplier()
static void nc_BucketPolyRed_Z(kBucket_pt b, poly p, number *c)
static poly GetD(const ring r, int i, int j)