 |
My Project
debian-1:4.1.1-p2+ds-4
|
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 159 of file hutil.cc.
163 scfmon ex = exist, co = stc;
166 for (
i = Nexist;
i>0;
i--)
168 if (((**ex) == 0) || ((**ex) == ak))
◆ hCreate()
◆ hDegreeSeries()
void hDegreeSeries |
( |
intvec * |
s1, |
|
|
intvec * |
s2, |
|
|
int * |
co, |
|
|
int * |
mu |
|
) |
| |
◆ hDelete()
void hDelete |
( |
scfmon |
ev, |
|
|
int |
ev_length |
|
) |
| |
Definition at line 145 of file hutil.cc.
152 for (
i=ev_length-1;
i>=0;
i--)
◆ hDimSolve()
Definition at line 29 of file hdegree.cc.
32 int dn, iv, rad0,
b, c,
x;
45 while(pure[var[iv]]) iv--;
46 hStepR(rad, Nrad, var, iv, &rad0);
54 hDimSolve(pn, Npure + 1, rn, rad0, var, iv);
57 hElimR(rn, &rad0,
b, c, var, iv);
58 hPure(rn,
b, &c, var, iv, pn, &
x);
65 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 747 of file hutil.cc.
750 int nc = *e1, z = 0,
i,
j,
k, k1;
752 if (!nc || (a2 == e2))
◆ hElimS()
void hElimS |
( |
scfmon |
stc, |
|
|
int * |
e1, |
|
|
int |
a2, |
|
|
int |
e2, |
|
|
varset |
var, |
|
|
int |
Nvar |
|
) |
| |
Definition at line 677 of file hutil.cc.
680 int nc = *e1, z = 0,
i,
j,
k, k1;
682 if (!nc || (a2 == e2))
◆ hGetmem()
Definition at line 1028 of file hutil.cc.
1033 if ((
x==
NULL) || (lm > lx))
1043 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 1968 of file hilb.cc.
1985 PrintS(
"Hilbert Series:\n 0\n");
1988 int (*POS)(ideal, poly, std::vector<ideal>, std::vector<poly>, int, int);
1991 Print(
"\nTruncation degree = %d\n",trunDegHs);
2000 WerrorS(
"wrong input: it is not an infinitely gen. case");
2009 std::vector<ideal > idorb;
2010 std::vector< poly > polist;
2012 ideal orb_init =
idInit(1, 1);
2013 idorb.push_back(orb_init);
2017 std::vector< std::vector<int> > posMat;
2018 std::vector<int> posRow(lV,0);
2027 while(lpcnt < idorb.size())
2031 if(lpcnt >= 1 &&
idIs0(idorb[lpcnt]) ==
FALSE)
2048 for(is = 1; is <= lV; is++)
2069 ps = (*POS)(Jwi, wi, idorb, polist, trInd, trunDegHs);
2073 posRow[is-1] = idorb.size();
2075 idorb.push_back(Jwi);
2076 polist.push_back(wi);
2085 posMat.push_back(posRow);
2086 posRow.resize(lV,0);
2091 Print(
"\nlength of the Orbit = %d", lO);
2096 Print(
"words description of the Orbit: \n");
2097 for(is = 0; is < lO; is++)
2103 PrintS(
"\nmaximal degree, #(sum_j R(w,w_j))");
2105 for(is = 0; is < lO; is++)
2107 if(
idIs0(idorb[is]))
2118 for(is = idorb.size()-1; is >= 0; is--)
2122 for(is = polist.size()-1; is >= 0; is--)
2130 int adjMatrix[lO][lO];
2131 memset(adjMatrix, 0, lO*lO*
sizeof(
int));
2132 int rowCount, colCount;
2136 for(rowCount = 0; rowCount < lO; rowCount++)
2138 for(colCount = 0; colCount < lV; colCount++)
2140 tm = posMat[rowCount][colCount];
2141 adjMatrix[rowCount][tm] = adjMatrix[rowCount][tm] + 1;
2152 tt=(
char**)
omAlloc(
sizeof(
char*));
2158 tt=(
char**)
omalloc(lV*
sizeof(
char*));
2159 for(is = 0; is < lV; is++)
2161 tt[is] = (
char*)
omAlloc(7*
sizeof(
char));
2162 sprintf (tt[is],
"t%d", is+1);
2169 char** xx = (
char**)
omAlloc(
sizeof(
char*));
2182 for(rowCount = 0; rowCount < lO; rowCount++)
2184 for(colCount = 0; colCount < lO; colCount++)
2186 if(adjMatrix[rowCount][colCount] != 0)
2188 MATELEM(mR, rowCount + 1, colCount + 1) =
p_ISet(adjMatrix[rowCount][colCount],
R);
2196 for(rowCount = 0; rowCount < lO; rowCount++)
2198 for(colCount = 0; colCount < lV; colCount++)
2203 MATELEM(mR, rowCount +1, posMat[rowCount][colCount]+1)=
p_Add_q(rc,
MATELEM(mR, rowCount +1, posMat[rowCount][colCount]+1),
R);
2208 for(rowCount = 0; rowCount < lO; rowCount++)
2210 if(C[rowCount] != 0)
2224 PrintS(
"\nlinear system:\n");
2227 for(rowCount = 0; rowCount < lO; rowCount++)
2229 Print(
"H(%d) = ", rowCount+1);
2230 for(colCount = 0; colCount < lV; colCount++)
2235 Print(
"H(%d) + ", posMat[rowCount][colCount] + 1);
2237 Print(
" %d\n", C[rowCount] );
2239 PrintS(
"where H(1) represents the series corresp. to input ideal\n");
2240 PrintS(
"and i^th summand in the rhs of an eqn. is according\n");
2241 PrintS(
"to the right colon map corresp. to the i^th variable\n");
2245 for(rowCount = 0; rowCount < lO; rowCount++)
2247 Print(
"H(%d) = ", rowCount+1);
2248 for(colCount = 0; colCount < lV; colCount++)
2253 Print(
"H(%d) + ", posMat[rowCount][colCount] + 1);
2255 Print(
" %d\n", C[rowCount] );
2257 PrintS(
"where H(1) represents the series corresp. to input ideal\n");
2289 Print(
"Hilbert series:");
2298 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 496 of file hdegree.cc.
499 int dn, iv, rad0,
b, c,
x;
512 for (iv = Nvar; iv; iv--)
527 while(pure[var[iv]]) iv--;
528 hStepR(rad, Nrad, var, iv, &rad0);
539 hElimR(rn, &rad0,
b, c, var, iv);
540 hPure(rn,
b, &c, var, iv, pn, &
x);
◆ hIndMult()
Definition at line 313 of file hdegree.cc.
316 int dn, iv, rad0,
b, c,
x;
329 for (iv = Nvar; iv!=0; iv--)
365 while(pure[var[iv]]) iv--;
366 hStepR(rad, Nrad, var, iv, &rad0);
373 hIndMult(pn, Npure + 1, rn, rad0, var, iv);
377 hElimR(rn, &rad0,
b, c, var, iv);
378 hPure(rn,
b, &c, var, iv, pn, &
x);
381 hIndMult(pn, Npure +
x, rn, rad0, var, iv);
385 hIndMult(pure, Npure, rad, Nrad, var, iv);
◆ hInit()
scfmon hInit |
( |
ideal |
S, |
|
|
ideal |
Q, |
|
|
int * |
Nexist, |
|
|
ring |
tailRing |
|
) |
| |
Definition at line 33 of file hutil.cc.
77 for (
i = sl;
i>0;
i--)
84 for (
i = ql;
i>0;
i--)
95 for (
i = sl;
i>0;
i--)
105 for (
i = ql;
i>0;
i--)
◆ hKill()
void hKill |
( |
monf |
xmem, |
|
|
int |
Nvar |
|
) |
| |
Definition at line 1015 of file hutil.cc.
1019 for (
i = Nvar;
i!=0;
i--)
1021 if (xmem[
i]->mo!=
NULL)
◆ hLex2R()
Definition at line 885 of file hutil.cc.
889 int j0 = 0,
j = 0,
i = a2,
k, k1;
894 rad[
i - a2] = rad[
i];
924 memcpy(rad,
w, (e1 + e2 - a2) *
sizeof(
scmon));
928 else if (o[k1] && !n[k1])
945 memcpy(rad,
w, (e1 + e2 - a2) *
sizeof(
scmon));
◆ hLex2S()
Definition at line 817 of file hutil.cc.
821 int j0 = 0,
j = 0,
i = a2,
k, k1;
826 rad[
i - a2] = rad[
i];
855 memcpy(rad,
w, (e1 + e2 - a2) *
sizeof(
scmon));
859 else if (o[k1] > n[k1])
876 memcpy(rad,
w, (e1 + e2 - a2) *
sizeof(
scmon));
◆ hLexR()
Definition at line 570 of file hutil.cc.
573 int j = 1,
i = 0,
k, k1;
605 else if (o[k1] && !n[k1])
607 for (
k =
j;
k >
i;
k--)
◆ hLexS()
Definition at line 511 of file hutil.cc.
545 else if (o[k1] > n[k1])
548 for (tmp_k =
j; tmp_k >
i; tmp_k--)
549 stc[tmp_k] = stc[tmp_k - 1];
◆ hOrdSupp()
void hOrdSupp |
( |
scfmon |
stc, |
|
|
int |
Nstc, |
|
|
varset |
var, |
|
|
int |
Nvar |
|
) |
| |
Definition at line 207 of file hutil.cc.
210 int i, i1,
j, jj,
k,
l;
215 v1 = (
float *)
omAlloc(Nvar *
sizeof(
float));
216 temp = (
int *)
omAlloc(Nstc *
sizeof(
int));
218 for (
i = 1;
i <= Nvar;
i++)
224 for (
j = 1;
j < Nstc;
j++)
241 else if (
x < temp[
k])
243 for (
l = jj;
l >
k;
l--)
261 o = (float)Nstc/(
float)jj;
262 for(
j = 0;
j < jj;
j++)
272 v1[
i-1] =
h * (float)jj;
276 for (
i = 1;
i < Nvar;
i++)
285 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 626 of file hutil.cc.
630 int nc = *Nstc, np = 0, nq = 0,
j,
i, i1, c,
l;
632 for (
j = a;
j < nc;
j++)
663 else if (
x[
l] < pure[
l])
◆ hRadical()
void hRadical |
( |
scfmon |
rad, |
|
|
int * |
Nrad, |
|
|
int |
Nvar |
|
) |
| |
Definition at line 416 of file hutil.cc.
419 int nc = *Nrad, z = 0,
i,
j,
k;
430 if ((o[
k]!=0) && (n[
k]==0))
443 if ((o[
k]==0) && (n[
k]!=0))
449 else if (!o[
k] && n[
k])
◆ hStaircase()
void hStaircase |
( |
scfmon |
stc, |
|
|
int * |
Nstc, |
|
|
varset |
var, |
|
|
int |
Nvar |
|
) |
| |
Definition at line 318 of file hutil.cc.
353 else if (o[k1] < n[k1])
406 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 179 of file hutil.cc.
182 int nv, i0, i1,
i,
j;
185 for (
i = 1;
i <= nv;
i++)
◆ RightColonOperation()
ideal RightColonOperation |
( |
ideal |
i, |
|
|
poly |
w, |
|
|
int |
lV |
|
) |
| |
◆ slicehilb()
void slicehilb |
( |
ideal |
I | ) |
|
Definition at line 1131 of file hilb.cc.
1135 int steps = 0,
prune = 0, moreprune = 0;
1136 mpz_ptr hilbertcoef;
1152 rouneslice(I,S,q,X->m[0],
prune, moreprune, steps, NNN, hilbertcoef, hilbpower);
1158 printf(
"\n// %8d t^0",1);
1159 for(
i = 0;
i<NNN;
i++)
1161 if(mpz_sgn(&hilbertcoef[
i])!=0)
1163 gmp_printf(
"\n// %8Zd t^%d",&hilbertcoef[
i],hilbpower[
i]);
1167 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)
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)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
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)
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)
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)