 |
My Project
debian-1:4.1.2-p1+ds-2
|
Go to the source code of this file.
|
void | hDelete (scfmon ev, int ev_length) |
|
void | hComp (scfmon exist, int Nexist, int ak, scfmon stc, int *Nstc) |
|
void | hSupp (scfmon stc, int Nstc, varset var, int *Nvar) |
|
void | hOrdSupp (scfmon stc, int Nstc, varset var, int Nvar) |
|
void | hStaircase (scfmon stc, int *Nstc, varset var, int Nvar) |
|
void | hRadical (scfmon rad, int *Nrad, int Nvar) |
|
void | hLexS (scfmon stc, int Nstc, varset var, int Nvar) |
|
void | hLexR (scfmon rad, int Nrad, varset var, int Nvar) |
|
void | hPure (scfmon stc, int a, int *Nstc, varset var, int Nvar, scmon pure, int *Npure) |
|
void | hElimS (scfmon stc, int *e1, int a2, int e2, varset var, int Nvar) |
|
void | hElimR (scfmon rad, int *e1, int a2, int e2, varset var, int Nvar) |
|
void | hLex2S (scfmon stc, int e1, int a2, int e2, varset var, int Nvar, scfmon w) |
|
void | hLex2R (scfmon rad, int e1, int a2, int e2, varset var, int Nvar, scfmon w) |
|
void | hStepS (scfmon stc, int Nstc, varset var, int Nvar, int *a, int *x) |
|
void | hStepR (scfmon rad, int Nrad, varset var, int Nvar, int *a) |
|
monf | hCreate (int Nvar) |
|
void | hKill (monf xmem, int Nvar) |
|
scfmon | hGetmem (int lm, scfmon old, monp monmem) |
|
scmon | hGetpure (scmon p) |
|
void | hDimSolve (scmon pure, int Npure, scfmon rad, int Nrad, varset var, int Nvar) |
|
void | hIndMult (scmon pure, int Npure, scfmon rad, int Nrad, varset var, int Nvar) |
|
void | hIndAllMult (scmon pure, int Npure, scfmon rad, int Nrad, varset var, int Nvar) |
|
void | hDegreeSeries (intvec *s1, intvec *s2, int *co, int *mu) |
|
scfmon | hInit (ideal S, ideal Q, int *Nexist, ring tailRing) |
|
void | slicehilb (ideal I) |
|
void | HilbertSeries_OrbitData (ideal S, int lV, bool ig, bool mgrad, bool odp, int trunDegHs) |
|
ideal | RightColonOperation (ideal i, poly w, int lV) |
|
◆ monrec
◆ sindlist
◆ LEN_MON
#define LEN_MON (sizeof(scfmon) + sizeof(int)) |
◆ indset
◆ monf
◆ monp
◆ scfmon
◆ scmon
◆ varset
◆ hComp()
void hComp |
( |
scfmon |
exist, |
|
|
int |
Nexist, |
|
|
int |
ak, |
|
|
scfmon |
stc, |
|
|
int * |
Nstc |
|
) |
| |
Definition at line 156 of file hutil.cc.
160 scfmon ex = exist, co = stc;
163 for (
i = Nexist;
i>0;
i--)
165 if (((**ex) == 0) || ((**ex) == ak))
◆ hCreate()
Definition at line 998 of file hutil.cc.
1004 for (
i = Nvar;
i>0;
i--)
◆ hDegreeSeries()
void hDegreeSeries |
( |
intvec * |
s1, |
|
|
intvec * |
s2, |
|
|
int * |
co, |
|
|
int * |
mu |
|
) |
| |
◆ hDelete()
void hDelete |
( |
scfmon |
ev, |
|
|
int |
ev_length |
|
) |
| |
Definition at line 142 of file hutil.cc.
149 for (
i=ev_length-1;
i>=0;
i--)
◆ hDimSolve()
Definition at line 28 of file hdegree.cc.
31 int dn, iv, rad0,
b, c,
x;
44 while(pure[var[iv]]) iv--;
45 hStepR(rad, Nrad, var, iv, &rad0);
53 hDimSolve(pn, Npure + 1, rn, rad0, var, iv);
56 hElimR(rn, &rad0,
b, c, var, iv);
57 hPure(rn,
b, &c, var, iv, pn, &
x);
64 hDimSolve(pure, Npure, rad, Nrad, var, iv);
◆ hElimR()
void hElimR |
( |
scfmon |
rad, |
|
|
int * |
e1, |
|
|
int |
a2, |
|
|
int |
e2, |
|
|
varset |
var, |
|
|
int |
Nvar |
|
) |
| |
Definition at line 744 of file hutil.cc.
747 int nc = *e1, z = 0,
i,
j,
k, k1;
749 if (!nc || (a2 == e2))
◆ hElimS()
void hElimS |
( |
scfmon |
stc, |
|
|
int * |
e1, |
|
|
int |
a2, |
|
|
int |
e2, |
|
|
varset |
var, |
|
|
int |
Nvar |
|
) |
| |
Definition at line 674 of file hutil.cc.
677 int nc = *e1, z = 0,
i,
j,
k, k1;
679 if (!nc || (a2 == e2))
◆ hGetmem()
Definition at line 1025 of file hutil.cc.
1030 if ((
x==
NULL) || (lm > lx))
1040 memcpy(
x, old, lm *
sizeof(
scmon));
◆ hGetpure()
◆ HilbertSeries_OrbitData()
void HilbertSeries_OrbitData |
( |
ideal |
S, |
|
|
int |
lV, |
|
|
bool |
ig, |
|
|
bool |
mgrad, |
|
|
bool |
odp, |
|
|
int |
trunDegHs |
|
) |
| |
Definition at line 1967 of file hilb.cc.
1984 PrintS(
"Hilbert Series:\n 0\n");
1987 int (*POS)(ideal, poly, std::vector<ideal>, std::vector<poly>, int, int);
1990 Print(
"\nTruncation degree = %d\n",trunDegHs);
1999 WerrorS(
"wrong input: it is not an infinitely gen. case");
2008 std::vector<ideal > idorb;
2009 std::vector< poly > polist;
2011 ideal orb_init =
idInit(1, 1);
2012 idorb.push_back(orb_init);
2016 std::vector< std::vector<int> > posMat;
2017 std::vector<int> posRow(lV,0);
2026 while(lpcnt < idorb.size())
2030 if(lpcnt >= 1 &&
idIs0(idorb[lpcnt]) ==
FALSE)
2047 for(is = 1; is <= lV; is++)
2068 ps = (*POS)(Jwi, wi, idorb, polist, trInd, trunDegHs);
2072 posRow[is-1] = idorb.size();
2074 idorb.push_back(Jwi);
2075 polist.push_back(wi);
2084 posMat.push_back(posRow);
2085 posRow.resize(lV,0);
2090 Print(
"\nlength of the Orbit = %d", lO);
2095 Print(
"words description of the Orbit: \n");
2096 for(is = 0; is < lO; is++)
2102 PrintS(
"\nmaximal degree, #(sum_j R(w,w_j))");
2104 for(is = 0; is < lO; is++)
2106 if(
idIs0(idorb[is]))
2117 for(is = idorb.size()-1; is >= 0; is--)
2121 for(is = polist.size()-1; is >= 0; is--)
2129 int adjMatrix[lO][lO];
2130 memset(adjMatrix, 0, lO*lO*
sizeof(
int));
2131 int rowCount, colCount;
2135 for(rowCount = 0; rowCount < lO; rowCount++)
2137 for(colCount = 0; colCount < lV; colCount++)
2139 tm = posMat[rowCount][colCount];
2140 adjMatrix[rowCount][tm] = adjMatrix[rowCount][tm] + 1;
2151 tt=(
char**)
omAlloc(
sizeof(
char*));
2157 tt=(
char**)
omalloc(lV*
sizeof(
char*));
2158 for(is = 0; is < lV; is++)
2160 tt[is] = (
char*)
omAlloc(7*
sizeof(
char));
2161 sprintf (tt[is],
"t%d", is+1);
2168 char** xx = (
char**)
omAlloc(
sizeof(
char*));
2181 for(rowCount = 0; rowCount < lO; rowCount++)
2183 for(colCount = 0; colCount < lO; colCount++)
2185 if(adjMatrix[rowCount][colCount] != 0)
2187 MATELEM(mR, rowCount + 1, colCount + 1) =
p_ISet(adjMatrix[rowCount][colCount],
R);
2195 for(rowCount = 0; rowCount < lO; rowCount++)
2197 for(colCount = 0; colCount < lV; colCount++)
2202 MATELEM(mR, rowCount +1, posMat[rowCount][colCount]+1)=
p_Add_q(rc,
MATELEM(mR, rowCount +1, posMat[rowCount][colCount]+1),
R);
2207 for(rowCount = 0; rowCount < lO; rowCount++)
2209 if(C[rowCount] != 0)
2223 PrintS(
"\nlinear system:\n");
2226 for(rowCount = 0; rowCount < lO; rowCount++)
2228 Print(
"H(%d) = ", rowCount+1);
2229 for(colCount = 0; colCount < lV; colCount++)
2234 Print(
"H(%d) + ", posMat[rowCount][colCount] + 1);
2236 Print(
" %d\n", C[rowCount] );
2238 PrintS(
"where H(1) represents the series corresp. to input ideal\n");
2239 PrintS(
"and i^th summand in the rhs of an eqn. is according\n");
2240 PrintS(
"to the right colon map corresp. to the i^th variable\n");
2244 for(rowCount = 0; rowCount < lO; rowCount++)
2246 Print(
"H(%d) = ", rowCount+1);
2247 for(colCount = 0; colCount < lV; colCount++)
2252 Print(
"H(%d) + ", posMat[rowCount][colCount] + 1);
2254 Print(
" %d\n", C[rowCount] );
2256 PrintS(
"where H(1) represents the series corresp. to input ideal\n");
2288 Print(
"Hilbert series:");
2297 for(is = lV-1; is >= 0; is--)
◆ hIndAllMult()
void hIndAllMult |
( |
scmon |
pure, |
|
|
int |
Npure, |
|
|
scfmon |
rad, |
|
|
int |
Nrad, |
|
|
varset |
var, |
|
|
int |
Nvar |
|
) |
| |
Definition at line 495 of file hdegree.cc.
498 int dn, iv, rad0,
b, c,
x;
511 for (iv = Nvar; iv; iv--)
526 while(pure[var[iv]]) iv--;
527 hStepR(rad, Nrad, var, iv, &rad0);
538 hElimR(rn, &rad0,
b, c, var, iv);
539 hPure(rn,
b, &c, var, iv, pn, &
x);
◆ hIndMult()
Definition at line 312 of file hdegree.cc.
315 int dn, iv, rad0,
b, c,
x;
328 for (iv = Nvar; iv!=0; iv--)
364 while(pure[var[iv]]) iv--;
365 hStepR(rad, Nrad, var, iv, &rad0);
372 hIndMult(pn, Npure + 1, rn, rad0, var, iv);
376 hElimR(rn, &rad0,
b, c, var, iv);
377 hPure(rn,
b, &c, var, iv, pn, &
x);
380 hIndMult(pn, Npure +
x, rn, rad0, var, iv);
384 hIndMult(pure, Npure, rad, Nrad, var, iv);
◆ hInit()
scfmon hInit |
( |
ideal |
S, |
|
|
ideal |
Q, |
|
|
int * |
Nexist, |
|
|
ring |
tailRing |
|
) |
| |
Definition at line 30 of file hutil.cc.
74 for (
i = sl;
i>0;
i--)
81 for (
i = ql;
i>0;
i--)
92 for (
i = sl;
i>0;
i--)
102 for (
i = ql;
i>0;
i--)
◆ hKill()
void hKill |
( |
monf |
xmem, |
|
|
int |
Nvar |
|
) |
| |
Definition at line 1012 of file hutil.cc.
1016 for (
i = Nvar;
i!=0;
i--)
1018 if (xmem[
i]->mo!=
NULL)
◆ hLex2R()
Definition at line 882 of file hutil.cc.
886 int j0 = 0,
j = 0,
i = a2,
k, k1;
891 rad[
i - a2] = rad[
i];
921 memcpy(rad,
w, (e1 + e2 - a2) *
sizeof(
scmon));
925 else if (o[k1] && !n[k1])
942 memcpy(rad,
w, (e1 + e2 - a2) *
sizeof(
scmon));
◆ hLex2S()
Definition at line 814 of file hutil.cc.
818 int j0 = 0,
j = 0,
i = a2,
k, k1;
823 rad[
i - a2] = rad[
i];
852 memcpy(rad,
w, (e1 + e2 - a2) *
sizeof(
scmon));
856 else if (o[k1] > n[k1])
873 memcpy(rad,
w, (e1 + e2 - a2) *
sizeof(
scmon));
◆ hLexR()
Definition at line 567 of file hutil.cc.
570 int j = 1,
i = 0,
k, k1;
602 else if (o[k1] && !n[k1])
604 for (
k =
j;
k >
i;
k--)
◆ hLexS()
Definition at line 508 of file hutil.cc.
542 else if (o[k1] > n[k1])
545 for (tmp_k =
j; tmp_k >
i; tmp_k--)
546 stc[tmp_k] = stc[tmp_k - 1];
◆ hOrdSupp()
void hOrdSupp |
( |
scfmon |
stc, |
|
|
int |
Nstc, |
|
|
varset |
var, |
|
|
int |
Nvar |
|
) |
| |
Definition at line 204 of file hutil.cc.
207 int i, i1,
j, jj,
k,
l;
212 v1 = (
float *)
omAlloc(Nvar *
sizeof(
float));
213 temp = (
int *)
omAlloc(Nstc *
sizeof(
int));
215 for (
i = 1;
i <= Nvar;
i++)
221 for (
j = 1;
j < Nstc;
j++)
238 else if (
x < temp[
k])
240 for (
l = jj;
l >
k;
l--)
258 o = (float)Nstc/(
float)jj;
259 for(
j = 0;
j < jj;
j++)
269 v1[
i-1] =
h * (float)jj;
273 for (
i = 1;
i < Nvar;
i++)
282 for (
l =
i;
l >
j;
l--)
◆ hPure()
void hPure |
( |
scfmon |
stc, |
|
|
int |
a, |
|
|
int * |
Nstc, |
|
|
varset |
var, |
|
|
int |
Nvar, |
|
|
scmon |
pure, |
|
|
int * |
Npure |
|
) |
| |
Definition at line 623 of file hutil.cc.
627 int nc = *Nstc, np = 0, nq = 0,
j,
i, i1, c,
l;
629 for (
j = a;
j < nc;
j++)
660 else if (
x[
l] < pure[
l])
◆ hRadical()
void hRadical |
( |
scfmon |
rad, |
|
|
int * |
Nrad, |
|
|
int |
Nvar |
|
) |
| |
Definition at line 413 of file hutil.cc.
416 int nc = *Nrad, z = 0,
i,
j,
k;
427 if ((o[
k]!=0) && (n[
k]==0))
440 if ((o[
k]==0) && (n[
k]!=0))
446 else if (!o[
k] && n[
k])
◆ hStaircase()
void hStaircase |
( |
scfmon |
stc, |
|
|
int * |
Nstc, |
|
|
varset |
var, |
|
|
int |
Nvar |
|
) |
| |
Definition at line 315 of file hutil.cc.
350 else if (o[k1] < n[k1])
403 else if (stc[
i]!=
NULL)
◆ hStepR()
void hStepR |
( |
scfmon |
rad, |
|
|
int |
Nrad, |
|
|
varset |
var, |
|
|
int |
Nvar, |
|
|
int * |
a |
|
) |
| |
◆ hStepS()
void hStepS |
( |
scfmon |
stc, |
|
|
int |
Nstc, |
|
|
varset |
var, |
|
|
int |
Nvar, |
|
|
int * |
a, |
|
|
int * |
x |
|
) |
| |
◆ hSupp()
Definition at line 176 of file hutil.cc.
179 int nv, i0, i1,
i,
j;
182 for (
i = 1;
i <= nv;
i++)
◆ RightColonOperation()
ideal RightColonOperation |
( |
ideal |
i, |
|
|
poly |
w, |
|
|
int |
lV |
|
) |
| |
◆ slicehilb()
void slicehilb |
( |
ideal |
I | ) |
|
Definition at line 1130 of file hilb.cc.
1134 int steps = 0,
prune = 0, moreprune = 0;
1135 mpz_ptr hilbertcoef;
1151 rouneslice(I,S,q,X->m[0],
prune, moreprune, steps, NNN, hilbertcoef, hilbpower);
1157 printf(
"\n// %8d t^0",1);
1158 for(
i = 0;
i<NNN;
i++)
1160 if(mpz_sgn(&hilbertcoef[
i])!=0)
1162 gmp_printf(
"\n// %8Zd t^%d",&hilbertcoef[
i],hilbpower[
i]);
1166 omFreeSize(hilbertcoef, (NNN)*
sizeof(mpz_t));
◆ hCo
◆ hexist
◆ hisModule
◆ hMu
◆ hMu2
◆ hNexist
◆ hNpure
◆ hNrad
◆ hNstc
◆ hNvar
◆ hpur0
◆ hpure
◆ hrad
◆ hsel
◆ hstc
◆ hvar
◆ hwork
◆ indlist_bin
◆ ISet
◆ JSet
◆ radmem
◆ stcmem
static void hShrink(scfmon co, int a, int Nco)
void hIndMult(scmon pure, int Npure, scfmon rad, int Nrad, varset var, int Nvar)
struct for passing initialization parameters to naInitChar
static BOOLEAN hNotZero(scfmon rad, int Nrad, varset var, int Nvar)
#define idDelete(H)
delete an ideal
#define MATELEM(mat, i, j)
1-based access to matrix
const CanonicalForm int const CFList const Variable & y
static ideal minimalMonomialGenSet(ideal I)
void rChangeCurrRing(ring r)
bool unitMatrix(const int n, matrix &unitMat, const ring R)
Creates a new matrix which is the (nxn) unit matrix, and returns true in case of success.
static int positionInOrbit_FG_Case(ideal I, poly, std::vector< ideal > idorb, std::vector< poly >, int, int)
bool luSolveViaLUDecomp(const matrix pMat, const matrix lMat, const matrix uMat, const matrix bVec, matrix &xVec, matrix &H)
Solves the linear system A * x = b, where A is an (m x n)-matrix which is given by its LU-decompositi...
coeffs nInitChar(n_coeffType t, void *parameter)
one-time initialisations for new coeffs in case of an error return NULL
scfmon hGetmem(int lm, scfmon old, monp monmem)
void hDimSolve(scmon pure, int Npure, scfmon rad, int Nrad, varset var, int Nvar)
static FORCE_INLINE number n_Param(const int iParameter, const coeffs r)
return the (iParameter^th) parameter as a NEW number NOTE: parameter numbering: 1....
BOOLEAN idIs0(ideal h)
returns true if h is the zero ideal
static unsigned long p_SetExp(poly p, const unsigned long e, const unsigned long iBitmask, const int VarOffset)
set a single variable exponent @Note: VarOffset encodes the position in p->exp
void mu(int **points, int sizePoints)
ring rDefault(const coeffs cf, int N, char **n, int ord_size, rRingOrder_t *ord, int *block0, int *block1, int **wvhdl, unsigned long bitmask)
void id_Delete(ideal *h, ring r)
deletes an ideal/module/matrix
long id_RankFreeModule(ideal s, ring lmRing, ring tailRing)
return the maximal component number found in any polynomial in s
static ideal colonIdeal(ideal S, poly w, int lV, ideal Jwi, int trunDegHs)
void PrintS(const char *s)
#define omFreeSize(addr, size)
static void hCheckIndep(scmon pure)
STATIC_VAR scfmon hsecure
void hStepR(scfmon rad, int Nrad, varset var, int Nvar, int *a)
void prune(Variable &alpha)
static int positionInOrbitTruncationCase(ideal I, poly w, std::vector< ideal > idorb, std::vector< poly > polist, int, int trunDegHs)
static ideal SortByDeg(ideal I)
static FORCE_INLINE number n_Mult(number a, number b, const coeffs r)
return the product of 'a' and 'b', i.e., a*b
static void p_GetExpV(poly p, int *ev, const ring r)
void rouneslice(ideal I, ideal S, poly q, poly x, int &prune, int &moreprune, int &steps, int &NNN, mpz_ptr &hilbertcoef, int *&hilbpower)
void mp_Delete(matrix *a, const ring r)
void hIndAllMult(scmon pure, int Npure, scfmon rad, int Nrad, varset var, int Nvar)
void hLex2R(scfmon rad, int e1, int a2, int e2, varset var, int Nvar, scfmon w)
matrix mpNew(int r, int c)
create a r x c zero-matrix
used for all transcendental extensions, i.e., the top-most extension in an extension tower is transce...
void hPure(scfmon stc, int a, int *Nstc, varset var, int Nvar, scmon pure, int *Npure)
static void p_Delete(poly *p, const ring r)
static poly p_Add_q(poly p, poly q, const ring r)
void StringSetS(const char *st)
ideal idInit(int idsize, int rank)
initialise an ideal / module
static number p_SetCoeff(poly p, number n, ring r)
#define id_TestTail(A, lR, tR)
void WerrorS(const char *s)
ideal id_Mult(ideal h1, ideal h2, const ring R)
h1 * h2 one h_i must be an ideal (with at least one column) the other h_i may be a module (with no co...
static void p_Setm(poly p, const ring r)
static int positionInOrbit_IG_Case(ideal I, poly w, std::vector< ideal > idorb, std::vector< poly > polist, int trInd, int trunDegHs)
void hElimR(scfmon rad, int *e1, int a2, int e2, varset var, int Nvar)
static long p_Totaldegree(poly p, const ring r)
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
const CanonicalForm int s
int status int void size_t count
#define pCopy(p)
return a copy of the poly
poly p_ISet(long i, const ring r)
returns the poly representing the integer i
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy
matrix mp_Sub(matrix a, matrix b, const ring R)
void luDecomp(const matrix aMat, matrix &pMat, matrix &lMat, matrix &uMat, const ring R)
LU-decomposition of a given (m x n)-matrix.
static void hIndep(scmon pure)