36#define UPMATELEM(i,j,nVar) ( (nVar * ((i)-1) - ((i) * ((i)-1))/2 + (j)-1)-(i) ) 
   98        short iFirstAltVar, iLastAltVar; 
 
  162  return (
p->ncRingType());
 
  213                                    const poly, 
const ring r);
 
  218                              const int, 
const ring r);
 
  228  return r->p_Procs->pp_mm_Mult(
p, 
m, r);
 
  237  return r->p_Procs->p_mm_Mult(
p, 
m, r);
 
  245  return r->GetNC()->p_Procs.SPoly(p1, p2, r);
 
  257  assume(r->GetNC()->p_Procs.ReduceSPoly!=
NULL);
 
  261  return r->GetNC()->p_Procs.ReduceSPoly(p1, p2, r);
 
  277  const ring r = 
b->bucket_ring;
 
  280  assume(r->GetNC()->p_Procs.BucketPolyRed_NF!=
NULL);
 
  281  return r->GetNC()->p_Procs.BucketPolyRed_NF(
b, 
p, c, 
reduce);
 
  286  const ring r = 
b->bucket_ring;
 
  289  assume(r->GetNC()->p_Procs.BucketPolyRed_Z!=
NULL);
 
  290  return r->GetNC()->p_Procs.BucketPolyRed_Z(
b, 
p, c, 
reduce);
 
  295poly 
nc_pSubst(poly 
p, 
int n, poly e, 
const ring r);
 
  304                      bool dummy_ring = 
false 
  314bool nc_rCopy(ring 
res, 
const ring r, 
bool bSetupQuotient);
 
  316poly 
pOppose(ring Rop_src, poly 
p, 
const ring Rop_dst);
 
  317ideal 
idOppose(ring Rop_src, ideal I, 
const ring Rop_dst);
 
  323static const bool bNoPluralMultiplication = 
false;  
 
  325static const bool bNoFormula = 
true;  
 
  326static const bool bNoCache   = 
false; 
 
  351#ifdef PLURAL_INTERNAL_DECLARATIONS 
  362static inline poly 
GetC( 
const ring r, 
int i, 
int j )
 
  369  return ( C->
m[
ncols * ((
i)-1) + (
j)-1] );
 
  373static inline poly 
GetD( 
const ring r, 
int i, 
int j )
 
  378  const int ncols = 
D->ncols;
 
  380  return ( 
D->m[
ncols * ((
i)-1) + (
j)-1] );
 
static nc_struct *& GetNC(ring r)
 
static void nc_kBucketPolyRed_Z(kBucket_pt b, poly p, number *c, BOOLEAN reduce)
 
static poly nc_mm_Mult_pp(const poly m, const poly p, const ring r)
 
static bool rIsSCA(const ring r)
 
static poly nc_CreateSpoly(const poly p1, const poly p2, const ring r)
 
ideal idOppose(ring Rop_src, ideal I, const ring Rop_dst)
opposes a module I from Rop to currRing(dst)
 
void nc_p_ProcsSet(ring rGR, p_Procs_s *p_Procs)
 
poly pOppose(ring Rop_src, poly p, const ring Rop_dst)
opposes a vector p from Rop to currRing (dst!)
 
static poly GetD(const ring r, int i, int j)
 
void * GB
From "gb_hack.h".
 
void nc_PolyPolyRed(poly &b, poly p, number *c, 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
 
poly(* SPoly_Proc_Ptr)(const poly p1, const poly p2, const ring r)
 
poly nc_CreateShortSpoly(poly p1, poly p2, const ring r)
 
static void nc_kBucketPolyRed_NF(kBucket_pt b, poly p, number *c, BOOLEAN reduce)
 
bool nc_rCopy(ring res, const ring r, bool bSetupQuotient)
 
bucket_Proc_Ptr BucketPolyRed_NF
 
bool ncExtensions(int iMask)
 
BOOLEAN nc_rComplete(const ring src, ring dest, bool bSetupQuotient=true)
 
bool nc_SetupQuotient(ring rGR, const ring rG=NULL, bool bCopy=false)
 
poly(* SPolyReduce_Proc_Ptr)(const poly p1, poly p2, const ring r)
 
static poly nc_mm_Mult_p(const poly m, poly p, const ring r)
 
SPolyReduce_Proc_Ptr ReduceSPoly
 
static poly GetC(const ring r, int i, int j)
 
static nc_type & ncRingType(nc_struct *p)
 
void(* bucket_Proc_Ptr)(kBucket_pt b, poly p, number *c, BOOLEAN reduce)
 
int setNCExtensions(int iMask)
 
BOOLEAN rIsLikeOpposite(ring rBase, ring rCandidate)
checks whether rings rBase and rCandidate could be opposite to each other returns TRUE if it is so
 
poly nc_p_Plus_mm_Mult_qq(poly p, const poly m, const poly q, int &lp, const int, const ring r)
 
static poly nc_ReduceSpoly(const poly p1, poly p2, const ring r)
 
BOOLEAN nc_CheckSubalgebra(poly PolyVar, 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,...
 
poly nc_p_Bracket_qq(poly p, const poly q, const ring r)
returns [p,q], destroys p
 
poly _nc_pp_Mult_qq(const poly p, const poly q, const ring r)
general NC-multiplication without destruction
 
poly _nc_p_Mult_q(poly p, poly q, const ring r)
general NC-multiplication with destruction
 
void nc_rKill(ring r)
complete destructor
 
bucket_Proc_Ptr BucketPolyRed_Z
 
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
 
matrix nc_PrintMat(int a, int b, ring r, int metric)
returns matrix with the info on noncomm multiplication
 
struct p_Procs_s p_Procs_s
 
static BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
 
static BOOLEAN rIsNCRing(const ring r)
 
CGlobalMultiplier * GetGlobalMultiplier() const
 
CFormulaPowerMultiplier * GetFormulaPowerMultiplier() const
 
CGlobalMultiplier *& GetGlobalMultiplier()
 
nc_type ncRingType() const
 
CFormulaPowerMultiplier *& GetFormulaPowerMultiplier()
 
CFormulaPowerMultiplier * m_PowerMultiplier
 
short FirstAltVar() const
 
CGlobalMultiplier * m_Multiplier