100#define ringorder_rp ringorder_ip
101#define ringorder_rs ringorder_is
249typedef poly (*
NF_Proc)(ideal, ideal, poly, int, int,
const ring _currRing);
393unsigned long rGetExpSize(
unsigned long bitmask,
int & bits,
int N);
411 return ((n=r->GetNC()) !=
NULL) ;
421 return (r->isLPring!=0);
439 && (r->real_var_start>1);
461int rSum(ring r1, ring r2, ring &sum);
491#define rField_is_Ring(R) nCoeff_is_Ring((R)->cf)
499#define rField_is_Ring(A) (0)
500#define rField_is_Ring_2toM(A) (0)
501#define rField_is_Ring_PtoM(A) (0)
502#define rField_is_Domain(A) (1)
503#define rField_has_Units(A) (1)
583 while (r->order[
i]!=0)
i++;
603static inline short rVar(
const ring r)
610static inline int rPar(
const ring r)
663static inline number
n_Param(
const short iParameter,
const ring r)
722 assume((!((C->extRing)->qideal==
NULL)) && (!
idIs0((C->extRing)->qideal)));
799#define rTest(r) rDBTest(r, __FILE__, __LINE__)
802#define rTest(r) (TRUE)
807 unsigned long exp_limit);
833poly
rGetVar(
const int varIndex,
const ring r);
849ring
rPlusVar(
const ring r,
char *
v,
int left);
int sgn(const Rational &a)
const CanonicalForm CFMap CFMap & N
CanonicalForm map(const CanonicalForm &primElem, const Variable &alpha, const CanonicalForm &F, const Variable &beta)
map from to such that is mapped onto
Coefficient rings, fields and other domains suitable for Singular polynomials.
static FORCE_INLINE BOOLEAN nCoeff_has_Units(const coeffs r)
returns TRUE, if r is not a field and r has non-trivial units
static FORCE_INLINE BOOLEAN nCoeff_is_GF(const coeffs r)
static FORCE_INLINE BOOLEAN nCoeff_is_long_R(const coeffs r)
static FORCE_INLINE BOOLEAN nCoeff_is_Ring_PtoM(const coeffs r)
static FORCE_INLINE BOOLEAN nCoeff_is_numeric(const coeffs r)
static FORCE_INLINE BOOLEAN nCoeff_is_Domain(const coeffs r)
returns TRUE, if r is a field or r has no zero divisors (i.e is a domain)
static FORCE_INLINE BOOLEAN nCoeff_is_Zp_a(const coeffs r)
static FORCE_INLINE BOOLEAN nCoeff_has_simple_inverse(const coeffs r)
TRUE, if the computation of the inverse is fast, i.e. prefer leading coeff. 1 over content.
static FORCE_INLINE char const ** n_ParameterNames(const coeffs r)
Returns a (const!) pointer to (const char*) names of parameters.
static FORCE_INLINE BOOLEAN nCoeff_is_Q(const coeffs r)
static FORCE_INLINE BOOLEAN nCoeff_has_simple_Alloc(const coeffs r)
TRUE if n_Delete is empty operation.
static FORCE_INLINE BOOLEAN nCoeff_is_Zn(const coeffs r)
static FORCE_INLINE int n_NumberOfParameters(const coeffs r)
Returns the number of parameters.
static FORCE_INLINE BOOLEAN nCoeff_is_Q_a(const coeffs r)
static FORCE_INLINE BOOLEAN nCoeff_is_Ring_2toM(const coeffs r)
static FORCE_INLINE BOOLEAN nCoeff_is_algExt(const coeffs r)
TRUE iff r represents an algebraic extension field.
static FORCE_INLINE BOOLEAN nCoeff_is_R(const coeffs r)
static FORCE_INLINE BOOLEAN nCoeff_is_long_C(const coeffs r)
static FORCE_INLINE BOOLEAN nCoeff_is_Zp_long(const coeffs r)
const Variable & v
< [in] a sqrfree bivariate poly
BOOLEAN idIs0(ideal h)
returns true if h is the zero ideal
The main handler for Singular numbers which are suitable for Singular polynomials.
BOOLEAN rOrd_SetCompRequiresSetm(const ring r)
return TRUE if p_SetComp requires p_Setm
int rSum(ring r1, ring r2, ring &sum)
ring rAssure_TDeg(ring r, int &pos)
void rWrite(ring r, BOOLEAN details)
ring rAssure_InducedSchreyerOrdering(const ring r, BOOLEAN complete, int sgn)
void rGetSComps(int **currComponents, long **currShiftedComponents, int *length, ring r)
BOOLEAN rRing_ord_pure_Dp(const ring r)
ring rModifyRing_Wp(ring r, int *weights)
construct Wp, C ring
void rSetWeightVec(ring r, int64 *wv)
BOOLEAN rHasBlockOrder(const ring r)
BOOLEAN rComplete(ring r, int force)
this needs to be called whenever a new ring is created: new fields in ring are created (like VarOffse...
int r_IsRingVar(const char *n, char **names, int N)
int rGetISPos(const int p, const ring r)
Finds p^th IS ordering, and returns its position in r->typ[] returns -1 if something went wrong!...
BOOLEAN rHasSimpleLexOrder(const ring r)
returns TRUE, if simple lp or ls ordering
void p_SetGlobals(const ring r, BOOLEAN complete)
set all properties of a new ring - also called by rComplete
ring rAssure_SyzComp(const ring r, BOOLEAN complete)
void p_DebugPrint(poly p, const ring r)
void rKillModifiedRing(ring r)
BOOLEAN rRing_ord_pure_dp(const ring r)
const char * rSimpleOrdStr(int ord)
ring rAssure_Wp_C(const ring r, intvec *w)
ring rAssure_c_dp(const ring r)
rOrderType_t rGetOrderType(ring r)
int rTypeOfMatrixOrder(const intvec *order)
void rKillModified_Wp_Ring(ring r)
ring rMinusVar(const ring r, char *v)
undo rPlusVar
BOOLEAN rRing_has_CompLastBlock(const ring r)
ring rAssure_Dp_C(const ring r)
ring rCopy0AndAddA(const ring r, int64vec *wv64, BOOLEAN copy_qideal, BOOLEAN copy_ordering)
BOOLEAN rOrd_is_Totaldegree_Ordering(const ring r)
ring rModifyRing(ring r, BOOLEAN omit_degree, BOOLEAN try_omit_comp, unsigned long exp_limit)
ring rAssure_SyzOrder(const ring r, BOOLEAN complete)
ring rAssure_C_dp(const ring r)
BOOLEAN rHasSimpleOrder(const ring r)
int rGetMaxSyzComp(int i, const ring r)
return the max-comonent wchich has syzIndex i Assume: i<= syzIndex_limit
BOOLEAN rSetISReference(const ring r, const ideal F, const int i, const int p)
Changes r by setting induced ordering parameters: limit and reference leading terms F belong to r,...
ring rAssure_HasComp(const ring r)
BOOLEAN rOrd_is_Ds(const ring r)
ring rCopy0(const ring r, BOOLEAN copy_qideal, BOOLEAN copy_ordering)
BOOLEAN rHas_c_Ordering(const ring r)
static unsigned long rGetExpSize(unsigned long bitmask, int &bits)
void rDebugPrint(const ring r)
BOOLEAN rRing_ord_pure_lp(const ring r)
poly rGetVar(const int varIndex, const ring r)
BOOLEAN rOrd_is_dp(const ring r)
ring rModifyRing_Simple(ring r, BOOLEAN ommit_degree, BOOLEAN ommit_comp, unsigned long exp_limit, BOOLEAN &simple)
void rChangeSComps(int *currComponents, long *currShiftedComponents, int length, ring r)
BOOLEAN rSamePolyRep(ring r1, ring r2)
returns TRUE, if r1 and r2 represents the monomials in the same way FALSE, otherwise this is an analo...
ring rAssure_SyzComp_CompLastBlock(const ring r)
makes sure that c/C ordering is last ordering and SyzIndex is first
char * rCharStr(const ring r)
TODO: make it a virtual method of coeffs, together with: Decompose & Compose, rParameter & rPar.
BOOLEAN rCheckIV(const intvec *iv)
rRingOrder_t rOrderName(char *ordername)
void rDelete(ring r)
unconditionally deletes fields in r
ring rDefault(const coeffs cf, int N, char **n, int ord_size, rRingOrder_t *ord, int *block0, int *block1, int **wvhdl, unsigned long bitmask)
ring rPlusVar(const ring r, char *v, int left)
K[x],"y" -> K[x,y] resp. K[y,x].
ring rAssure_CompLastBlock(ring r, BOOLEAN complete)
makes sure that c/C ordering is last ordering
ring rAssure_dp_S(const ring r)
BOOLEAN rOrd_is_ds(const ring r)
BOOLEAN rEqual(ring r1, ring r2, BOOLEAN qr)
returns TRUE, if r1 equals r2 FALSE, otherwise Equality is determined componentwise,...
int rSumInternal(ring r1, ring r2, ring &sum, BOOLEAN vartest, BOOLEAN dp_dp)
returns -1 for not compatible, 1 for compatible (and sum) dp_dp:0: block ordering,...
void rSetSyzComp(int k, const ring r)
int n_IsParam(const number m, const ring r)
TODO: rewrite somehow...
int64 * rGetWeightVec(const ring r)
ring rAssure_dp_C(const ring r)
BOOLEAN rDBTest(ring r, const char *fn, const int l)
static BOOLEAN rField_is_R(const ring r)
static BOOLEAN rField_is_Zp_a(const ring r)
static BOOLEAN rField_is_Z(const ring r)
static BOOLEAN rField_is_Zp(const ring r)
static BOOLEAN rHasLocalOrMixedOrdering(const ring r)
static BOOLEAN rHasGlobalOrdering(const ring r)
struct p_Procs_s p_Procs_s
static BOOLEAN rField_is_Ring_PtoM(const ring r)
static n_coeffType rFieldType(const ring r)
the type of the coefficient filed of r (n_Zp, n_Q, etc)
static BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
static BOOLEAN rField_is_long_C(const ring r)
static BOOLEAN rOrd_is_Comp_dp(const ring r)
static int rBlocks(const ring r)
poly(*) pShallowCopyDeleteProc(poly s_p, ring source_r, ring dest_r, omBin dest_bin)
returns a poly from dest_r which is a ShallowCopy of s_p from source_r assumes that source_r->N == de...
static int rGetCurrSyzLimit(const ring r)
static ring rIncRefCnt(ring r)
static BOOLEAN rField_is_Domain(const ring r)
long(*) pLDegProc(poly p, int *length, ring r)
static BOOLEAN rIsRatGRing(const ring r)
static BOOLEAN rField_is_Zn(const ring r)
static int rPar(const ring r)
(r->cf->P)
static int rInternalChar(const ring r)
static BOOLEAN rIsLPRing(const ring r)
@ ringorder_a64
for int64 weights
@ ringorder_aa
for idElimination, like a, except pFDeg, pWeigths ignore it
@ ringorder_is
opposite of ls
@ ringorder_IS
Induced (Schreyer) ordering.
static BOOLEAN rField_is_Q_a(const ring r)
ideal(*) BBA_Proc(const ideal, const ideal, const intvec *, const bigintmat *, kStrategy strat, const ring)
static char * rRingVar(short i, const ring r)
long(*) pFDegProc(poly p, ring r)
static BOOLEAN rField_is_Q(const ring r)
union sro_ord::@006200034235045362245112336324125006204215012002 data
static BOOLEAN rField_has_Units(const ring r)
static BOOLEAN rShortOut(const ring r)
@ rOrderType_Syz
syzygy ordering
@ rOrderType_Syz2dpc
syzcomp2dpc
@ rOrderType_CompExp
simple ordering, component has priority
@ rOrderType_Exp
simple ordering, exponent vector has priority component is compatible with exp-vector order
@ rOrderType_General
non-simple ordering as specified by currRing
@ rOrderType_Schreyer
Schreyer ordering.
@ rOrderType_ExpNoComp
simple ordering, differences in component are not considered
@ rOrderType_ExpComp
simple ordering, exponent vector has priority component not compatible with exp-vector order
static BOOLEAN rField_has_simple_Alloc(const ring r)
Z/p, GF(p,n), R: nCopy, nNew, nDelete are dummies.
static BOOLEAN rIsNCRing(const ring r)
static void rDecRefCnt(ring r)
static char const ** rParameter(const ring r)
(r->cf->parameter)
static BOOLEAN rField_is_long_R(const ring r)
static BOOLEAN rField_is_numeric(const ring r)
static BOOLEAN rCanShortOut(const ring r)
static BOOLEAN rIsSyzIndexRing(const ring r)
static BOOLEAN rMinpolyIsNULL(const ring r)
Tests whether '(r->cf->minpoly) == NULL'.
static BOOLEAN rField_is_Ring_2toM(const ring r)
static number n_Param(const short iParameter, const ring r)
return the specified parameter as a (new!) number in the given polynomial ring, or NULL if invalid pa...
static BOOLEAN rField_is_GF(const ring r)
static short rVar(const ring r)
define rVar(r) (r->N)
void(*) p_SetmProc(poly p, const ring r)
static BOOLEAN rHasMixedOrdering(const ring r)
poly(*) NF_Proc(ideal, ideal, poly, int, int, const ring _currRing)
static BOOLEAN rField_is_Zp_long(const ring r)
static BOOLEAN rField_has_simple_inverse(const ring r)
The following sip_sideal structure has many different uses throughout Singular. Basic use-cases for i...
const nc_struct * GetNC() const
unsigned long wanted_maxExp
ideal qideal
extension to the ring structure: qring, rInit, OR for Q_a/Zp_a, rInit (replaces minideal!...
EXTERN_VAR long * currShiftedComponents