Loading...
Searching...
No Matches
hutil.cc File Reference
`#include "kernel/mod2.h"`
`#include "polys/simpleideals.h"`
`#include "polys/monomials/p_polys.h"`
`#include "kernel/polys.h"`
`#include "kernel/combinatorics/hutil.h"`

Go to the source code of this file.

## Functions

scfmon | hInit (ideal S, ideal Q, int *Nexist)
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)
static void | hShrink (scfmon co, int a, int Nco)
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 rad, 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)

## Variables

VAR scfmon | hexist
VAR scfmon | hstc
VAR scfmon | hrad
VAR scfmon | hwork
VAR scmon | hpure
VAR scmon | hpur0
VAR varset | hvar
VAR varset | hsel
VAR int | hNexist
VAR int | hNstc
VAR int | hNrad
VAR int | hNvar
VAR int | hNpure
VAR int | hisModule
VAR monf | stcmem
VAR monf | radmem
STATIC_VAR scfmon | hsecure = NULL

## Function Documentation

## hComp()

void hComp | ( | scfmon | exist,
|  | int | Nexist,
|  | int | ak,
|  | scfmon | stc,
|  | int * | Nstc )

Definition at line 154 of file hutil.cc.

{
int k = 0;
scfmon ex = exist, co = stc;
int i;
for (i = Nexist; i>0; i--)
{
if (((**ex) == 0) || ((**ex) == ak))
{
*co = *ex;
co++;
k++;
}
ex++;
}
*Nstc = k;
}
i
int i
Definition cfEzgcd.cc:132
k
int k
Definition cfEzgcd.cc:99
scfmon
scmon * scfmon
Definition hutil.h:15

## hCreate()

monf hCreate | ( | int | Nvar | ) |

Definition at line 996 of file hutil.cc.

{
monf xmem;
int i;
xmem = (monf)omAlloc((Nvar + 1) * sizeof(monp));
for (i = Nvar; i>0; i--)
{
xmem[i] = (monp)omAlloc(LEN_MON);
xmem[i]->mo = NULL;
}
return xmem;
}
LEN_MON
#define LEN_MON
Definition hutil.h:35
monp
monh * monp
Definition hutil.h:19
monf
monp * monf
Definition hutil.h:20
omAlloc
#define omAlloc(size)
Definition omAllocDecl.h:210
NULL
#define NULL
Definition omList.c:12

## hDelete()

void hDelete | ( | scfmon | ev,
|  | int | ev_length )

Definition at line 140 of file hutil.cc.

{
int i;
if (ev_length>0)
{
for (i=ev_length-1;i>=0;i--)
omFreeSize(hsecure[i],((currRing->N)+1)*sizeof(int));
omFreeSize(hsecure, ev_length*sizeof(scmon));
omFreeSize(ev, ev_length*sizeof(scmon));
}
}
hsecure
STATIC_VAR scfmon hsecure
Definition hutil.cc:29
scmon
int * scmon
Definition hutil.h:14
omFreeSize
#define omFreeSize(addr, size)
Definition omAllocDecl.h:260
currRing
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition polys.cc:13

## hElimR()

void hElimR | ( | scfmon | rad,
|  | int * | e1,
|  | int | a2,
|  | int | e2,
|  | varset | var,
|  | int | Nvar )

Definition at line 742 of file hutil.cc.

{
int nc = *e1, z = 0, i, j, k, k1;
scmon n, o;
if (!nc || (a2 == e2))
return;
j = 0;
i = a2;
o = rad[i];
n = rad[0];
k = Nvar;
loop
{
k1 = var[k];
if (o[k1] && !n[k1])
{
k = Nvar;
i++;
if (i < e2)
o = rad[i];
else
{
j++;
if (j < nc)
{
i = a2;
o = rad[i];
n = rad[j];
}
else
{
if (z!=0)
{
*e1 -= z;
hShrink(rad, 0, nc);
}
return;
}
}
}
else
{
k--;
if (!k)
{
rad[j] = NULL;
z++;
j++;
if (j < nc)
{
i = a2;
o = rad[i];
n = rad[j];
k = Nvar;
}
else
{
if (z!=0)
{
*e1 -= z;
hShrink(rad, 0, nc);
}
return;
}
}
}
}
}
j
int j
Definition facHensel.cc:110
hShrink
static void hShrink(scfmon co, int a, int Nco)
Definition hutil.cc:297
loop
#define loop
Definition structs.h:71

## hElimS()

void hElimS | ( | scfmon | stc,
|  | int * | e1,
|  | int | a2,
|  | int | e2,
|  | varset | var,
|  | int | Nvar )

Definition at line 672 of file hutil.cc.

{
int nc = *e1, z = 0, i, j, k, k1;
scmon n, o;
if (!nc || (a2 == e2))
return;
j = 0;
i = a2;
o = stc[i];
n = stc[0];
k = Nvar;
loop
{
k1 = var[k];
if (o[k1] > n[k1])
{
k = Nvar;
i++;
if (i < e2)
o = stc[i];
else
{
j++;
if (j < nc)
{
i = a2;
o = stc[i];
n = stc[j];
}
else
{
if (z!=0)
{
*e1 -= z;
hShrink(stc, 0, nc);
}
return;
}
}
}
else
{
k--;
if (k==0)
{
stc[j] = NULL;
z++;
j++;
if (j < nc)
{
i = a2;
o = stc[i];
n = stc[j];
k = Nvar;
}
else
{
if (z!=0)
{
*e1 -= z;
hShrink(stc, 0, nc);
}
return;
}
}
}
}
}

## hGetmem()

scfmon hGetmem | ( | int | lm,
|  | scfmon | old,
|  | monp | monmem )

Definition at line 1023 of file hutil.cc.

{
scfmon x = monmem->mo;
int lx = monmem->a;
if ((x==NULL) || (lm > lx))
{
/* according to http://www.singular.uni-kl.de:8002/trac/ticket/463#comment:4
* we need to work around a compiler bug:
* if ((x!=NULL)&&(lx>0)) omFreeSize((ADDRESS)x, lx * sizeof(scmon));
*/
if (x!=NULL) if (lx>0) omFreeSize((ADDRESS)x, lx * sizeof(scmon));
monmem->mo = x = (scfmon)omAlloc(lm * sizeof(scmon));
monmem->a = lm;
}
memcpy(x, old, lm * sizeof(scmon));
return x;
}
ADDRESS
void * ADDRESS
Definition auxiliary.h:120
x
Variable x
Definition cfModGcd.cc:4090

## hGetpure()

scmon hGetpure | ( | scmon | p | ) |

Definition at line 1052 of file hutil.cc.

{
scmon p1 = p;
scmon pn;
p1++;
pn = p1;
pn += (currRing->N);
memcpy(pn, p1, (currRing->N) * sizeof(int));
return pn - 1;
}
p
int p
Definition cfModGcd.cc:4086

## hInit()

scfmon hInit | ( | ideal | S,
|  | ideal | Q,
|  | int * | Nexist )

Definition at line 31 of file hutil.cc.

{
id_LmTest(S, currRing);
if (Q!=NULL) id_LmTest(Q, currRing);
hisModule = id_RankFreeModule(S, currRing);
if (hisModule < 0)
hisModule = 0;
int sl, ql, i, k = 0;
polyset si, qi, ss;
scfmon ex, ek;
if (S!=NULL)
{
si = S->m;
sl = IDELEMS(S);
}
else
{
si = NULL;
sl = 0;
}
if (Q!=NULL)
{
qi = Q->m;
ql = IDELEMS(Q);
}
else
{
qi = NULL;
ql = 0;
}
if ((sl + ql) == 0)
{
*Nexist = 0;
return NULL;
}
ss = si;
for (i = sl; i>0; i--)
{
if (*ss!=0)
k++;
ss++;
}
ss = qi;
for (i = ql; i>0; i--)
{
if (*ss!=0)
k++;
ss++;
}
*Nexist = k;
if (k==0)
return NULL;
ek = ex = (scfmon)omAlloc0(k * sizeof(scmon));
hsecure = (scfmon) omAlloc0(k * sizeof(scmon));
for (i = sl; i>0; i--)
{
if (*si!=NULL)
{
*ek = (scmon) omAlloc(((currRing->N)+1)*sizeof(int));
p_GetExpV(*si, *ek, currRing);
ek++;
}
si++;
}
for (i = ql; i>0; i--)
{
if (*qi!=NULL)
{
*ek = (scmon) omAlloc(((currRing->N)+1)*sizeof(int));
p_GetExpV(*qi, *ek, currRing);
ek++;
}
qi++;
}
memcpy(hsecure, ex, k * sizeof(scmon));
return ex;
}
hisModule
VAR int hisModule
Definition hutil.cc:20
omAlloc0
#define omAlloc0(size)
Definition omAllocDecl.h:211
p_GetExpV
static void p_GetExpV(poly p, int *ev, const ring r)
Definition p_polys.h:1541
polyset
poly * polyset
Definition polys.h:260
id_RankFreeModule
long id_RankFreeModule(ideal s, ring lmRing, ring tailRing)
return the maximal component number found in any polynomial in s
Definition simpleideals.cc:992
IDELEMS
#define IDELEMS(i)
Definition simpleideals.h:23
id_LmTest
#define id_LmTest(A, lR)
Definition simpleideals.h:90
Q
#define Q
Definition sirandom.c:26

## hKill()

void hKill | ( | monf | xmem,
|  | int | Nvar )

Definition at line 1010 of file hutil.cc.

{
int i;
for (i = Nvar; i!=0; i--)
{
if (xmem[i]->mo!=NULL)
omFreeSize((ADDRESS)xmem[i]->mo, xmem[i]->a * sizeof(scmon));
omFreeSize((ADDRESS)xmem[i], LEN_MON);
}
omFreeSize((ADDRESS)xmem, (Nvar + 1) * sizeof(monp));
}

## hLex2R()

void hLex2R | ( | scfmon | rad,
|  | int | e1,
|  | int | a2,
|  | int | e2,
|  | varset | var,
|  | int | Nvar,
|  | scfmon | w )

Definition at line 880 of file hutil.cc.

{
int j0 = 0, j = 0, i = a2, k, k1;
scmon n, o;
if (!e1)
{
for (; i < e2; i++)
rad[i - a2] = rad[i];
return;
}
else if (i == e2)
return;
n = rad[j];
o = rad[i];
loop
{
k = Nvar;
loop
{
k1 = var[k];
if (!o[k1] && n[k1])
{
w[j0] = o;
j0++;
i++;
if (i < e2)
{
o = rad[i];
break;
}
else
{
for (; j < e1; j++)
{
w[j0] = rad[j];
j0++;
}
memcpy(rad, w, (e1 + e2 - a2) * sizeof(scmon));
return;
}
}
else if (o[k1] && !n[k1])
{
w[j0] = n;
j0++;
j++;
if (j < e1)
{
n = rad[j];
break;
}
else
{
for (; i < e2; i++)
{
w[j0] = rad[i];
j0++;
}
memcpy(rad, w, (e1 + e2 - a2) * sizeof(scmon));
return;
}
}
k--;
}
}
}
w
const CanonicalForm & w
Definition facAbsFact.cc:51

## hLex2S()

void hLex2S | ( | scfmon | rad,
|  | int | e1,
|  | int | a2,
|  | int | e2,
|  | varset | var,
|  | int | Nvar,
|  | scfmon | w )

Definition at line 812 of file hutil.cc.

{
int j0 = 0, j = 0, i = a2, k, k1;
scmon n, o;
if (!e1)
{
for (; i < e2; i++)
rad[i - a2] = rad[i];
return;
} else if (i == e2)
return;
n = rad[j];
o = rad[i];
loop
{
k = Nvar;
loop
{
k1 = var[k];
if (o[k1] < n[k1])
{
w[j0] = o;
j0++;
i++;
if (i < e2)
{
o = rad[i];
break;
}
else
{
for (; j < e1; j++)
{
w[j0] = rad[j];
j0++;
}
memcpy(rad, w, (e1 + e2 - a2) * sizeof(scmon));
return;
}
}
else if (o[k1] > n[k1])
{
w[j0] = n;
j0++;
j++;
if (j < e1)
{
n = rad[j];
break;
}
else
{
for (; i < e2; i++)
{
w[j0] = rad[i];
j0++;
}
memcpy(rad, w, (e1 + e2 - a2) * sizeof(scmon));
return;
}
}
k--;
}
}
}

## hLexR()

void hLexR | ( | scfmon | rad,
|  | int | Nrad,
|  | varset | var,
|  | int | Nvar )

Definition at line 565 of file hutil.cc.

{
int j = 1, i = 0, k, k1;
scmon n, o;
if (Nrad < 2)
return;
n = rad[j];
o = rad[0];
k = Nvar;
loop
{
k1 = var[k];
if (!o[k1] && n[k1])
{
i++;
if (i < j)
{
o = rad[i];
k = Nvar;
}
else
{
j++;
if (j < Nrad)
{
i = 0;
o = rad[0];
n = rad[j];
k = Nvar;
}
else
return;
}
}
else if (o[k1] && !n[k1])
{
for (k = j; k > i; k--)
rad[k] = rad[k - 1];
rad[i] = n;
j++;
if (j < Nrad)
{
i = 0;
o = rad[0];
n = rad[j];
k = Nvar;
}
else
return;
}
else
k--;
}
}

## hLexS()

void hLexS | ( | scfmon | stc,
|  | int | Nstc,
|  | varset | var,
|  | int | Nvar )

Definition at line 506 of file hutil.cc.

{
if (Nstc < 2)
return;
int j = 1, i = 0;
scmon n = stc[j];
scmon o = stc[0];
int k = Nvar;
loop
{
int k1 = var[k];
if (o[k1] < n[k1])
{
i++;
if (i < j)
{
o = stc[i];
k = Nvar;
}
else
{
j++;
if (j < Nstc)
{
i = 0;
o = stc[0];
n = stc[j];
k = Nvar;
}
else
return;
}
}
else if (o[k1] > n[k1])
{
int tmp_k;
for (tmp_k = j; tmp_k > i; tmp_k--)
stc[tmp_k] = stc[tmp_k - 1];
stc[i] = n;
j++;
if (j < Nstc)
{
i = 0;
o = stc[0];
n = stc[j];
k = Nvar;
}
else
return;
}
else
{
k--;
if (k<=0) return;
}
}
}

## hOrdSupp()

void hOrdSupp | ( | scfmon | stc,
|  | int | Nstc,
|  | varset | var,
|  | int | Nvar )

Definition at line 202 of file hutil.cc.

{
int i, i1, j, jj, k, l;
int x;
scmon temp, count;
float o, h, g, *v1;
v1 = (float *)omAlloc(Nvar * sizeof(float));
temp = (int *)omAlloc(Nstc * sizeof(int));
count = (int *)omAlloc(Nstc * sizeof(int));
for (i = 1; i <= Nvar; i++)
{
i1 = var[i];
*temp = stc[0][i1];
*count = 1;
jj = 1;
for (j = 1; j < Nstc; j++)
{
x = stc[j][i1];
k = 0;
loop
{
if (x > temp[k])
{
k++;
if (k == jj)
{
temp[k] = x;
count[k] = 1;
jj++;
break;
}
}
else if (x < temp[k])
{
for (l = jj; l > k; l--)
{
temp[l] = temp[l-1];
count[l] = count[l-1];
}
temp[k] = x;
count[k] = 1;
jj++;
break;
}
else
{
count[k]++;
break;
}
}
}
h = 0.0;
o = (float)Nstc/(float)jj;
for(j = 0; j < jj; j++)
{
g = (float)count[j];
if (g > o)
g -= o;
else
g = o - g;
if (g > h)
h = g;
}
v1[i-1] = h * (float)jj;
}
omFreeSize((ADDRESS)count, Nstc * sizeof(int));
omFreeSize((ADDRESS)temp, Nstc * sizeof(int));
for (i = 1; i < Nvar; i++)
{
i1 = var[i+1];
h = v1[i];
j = 0;
loop
{
if (h > v1[j])
{
for (l = i; l > j; l--)
{
v1[l] = v1[l-1];
var[l+1] = var[l];
}
v1[j] = h;
var[j+1] = i1;
break;
}
j++;
if (j == i)
break;
}
}
omFreeSize((ADDRESS)v1, Nvar * sizeof(float));
}
l
int l
Definition cfEzgcd.cc:100
g
g
Definition cfModGcd.cc:4098
h
STATIC_VAR Poly * h
Definition janet.cc:971
count
int status int void size_t count
Definition si_signals.h:69

## hPure()

void hPure | ( | scfmon | stc,
|  | int | a,
|  | int * | Nstc,
|  | varset | var,
|  | int | Nvar,
|  | scmon | pure,
|  | int * | Npure )

Definition at line 621 of file hutil.cc.

{
int nc = *Nstc, np = 0, nq = 0, j, i, i1, c, l;
scmon x;
for (j = a; j < nc; j++)
{
x = stc[j];
i = Nvar;
c = 2;
l = 0;
loop
{
i1 = var[i];
if (x[i1])
{
c--;
if (!c)
{
l = 0;
break;
}
else if (c == 1)
l = i1;
}
i--;
if (!i)
break;
}
if (l)
{
if (!pure[l])
{
np++;
pure[l] = x[l];
}
else if (x[l] < pure[l])
pure[l] = x[l];
stc[j] = NULL;
nq++;
}
}
*Npure = np;
if (nq!=0)
{
*Nstc -= nq;
hShrink(stc, a, nc);
}
}

## hRadical()

void hRadical | ( | scfmon | rad,
|  | int * | Nrad,
|  | int | Nvar )

Definition at line 411 of file hutil.cc.

{
int nc = *Nrad, z = 0, i, j, k;
scmon n, o;
if (nc < 2)
return;
i = 0;
j = 1;
n = rad[j];
o = rad[0];
k = Nvar;
loop
{
if ((o[k]!=0) && (n[k]==0))
{
loop
{
k--;
if (k==0)
{
rad[i] = NULL;
z++;
break;
}
else
{
if ((o[k]==0) && (n[k]!=0))
break;
}
}
k = Nvar;
}
else if (!o[k] && n[k])
{
loop
{
k--;
if (!k)
{
rad[j] = NULL;
z++;
break;
}
else
{
if (o[k] && !n[k])
break;
}
}
k = Nvar;
}
else
{
k--;
if (!k)
{
rad[j] = NULL;
z++;
k = Nvar;
}
}
if (k == Nvar)
{
if (!rad[j])
i = j - 1;
loop
{
i++;
if (i == j)
{
i = -1;
j++;
if (j < nc)
n = rad[j];
else
{
if (z)
{
*Nrad -= z;
hShrink(rad, 0, nc);
}
return;
}
}
else if (rad[i])
{
o = rad[i];
break;
}
}
}
}
}

## hShrink()

void hShrink | ( | scfmon | co,
|  | int | a,
|  | int | Nco )

static

Definition at line 297 of file hutil.cc.

{
while ((co[a]!=NULL) && (a<Nco)) a++;
int i = a;
int j;
for (j = a; j < Nco; j++)
{
if (co[j]!=NULL)
{
co[i] = co[j];
i++;
}
}
}

## hStaircase()

void hStaircase | ( | scfmon | stc,
|  | int * | Nstc,
|  | varset | var,
|  | int | Nvar )

Definition at line 313 of file hutil.cc.

{
int nc = *Nstc;
if (nc < 2)
return;
int z = 0;
int i = 0;
int j = 1;
scmon n = stc[1 /*j*/];
scmon o = stc[0];
int k = Nvar;
loop
{
int k1 = var[k];
if (o[k1] > n[k1])
{
loop
{
k--;
if (k==0)
{
stc[i] = NULL;
z++;
break;
}
else
{
k1 = var[k];
if (o[k1] < n[k1])
break;
}
}
k = Nvar;
}
else if (o[k1] < n[k1])
{
loop
{
k--;
if (k==0)
{
stc[j] = NULL;
z++;
break;
}
else
{
k1 = var[k];
if (o[k1] > n[k1])
break;
}
}
k = Nvar;
}
else
{
k--;
if (k==0)
{
stc[j] = NULL;
z++;
k = Nvar;
}
}
if (k == Nvar)
{
if (stc[j]==NULL)
i = j - 1;
loop
{
i++;
if (i == j)
{
i = -1;
j++;
if (j < nc)
n = stc[j];
else
{
if (z!=0)
{
*Nstc -= z;
hShrink(stc, 0, nc);
}
return;
}
}
else if (stc[i]!=NULL)
{
o = stc[i];
break;
}
}
}
}
}

## hStepR()

void hStepR | ( | scfmon | rad,
|  | int | Nrad,
|  | varset | var,
|  | int | Nvar,
|  | int * | a )

Definition at line 974 of file hutil.cc.

{
int k1, i;
k1 = var[Nvar];
i = 0;
loop
{
if (rad[i][k1])
{
*a = i;
return;
}
i++;
if (i == Nrad)
{
*a = i;
return;
}
}
}

## hStepS()

void hStepS | ( | scfmon | stc,
|  | int | Nstc,
|  | varset | var,
|  | int | Nvar,
|  | int * | a,
|  | int * | x )

Definition at line 949 of file hutil.cc.

{
int k1, i;
int y;
k1 = var[Nvar];
y = *x;
i = *a;
loop
{
if (y < stc[i][k1])
{
*a = i;
*x = stc[i][k1];
return;
}
i++;
if (i == Nstc)
{
*a = i;
return;
}
}
}
y
const CanonicalForm int const CFList const Variable & y
Definition facAbsFact.cc:53

## hSupp()

void hSupp | ( | scfmon | stc,
|  | int | Nstc,
|  | varset | var,
|  | int * | Nvar )

Definition at line 174 of file hutil.cc.

{
int nv, i0, i1, i, j;
nv = i0 = *Nvar;
i1 = 0;
for (i = 1; i <= nv; i++)
{
j = 0;
loop
{
if (stc[j][i]>0)
{
i1++;
var[i1] = i;
break;
}
j++;
if (j == Nstc)
{
var[i0] = i;
i0--;
break;
}
}
}
*Nvar = i1;
}

## Variable Documentation

## hexist

VAR scfmon hexist

Definition at line 16 of file hutil.cc.

## hisModule

VAR int hisModule

Definition at line 20 of file hutil.cc.

## hNexist

VAR int hNexist

Definition at line 19 of file hutil.cc.

## hNpure

VAR int hNpure

Definition at line 19 of file hutil.cc.

## hNrad

VAR int hNrad

Definition at line 19 of file hutil.cc.

## hNstc

VAR int hNstc

Definition at line 19 of file hutil.cc.

## hNvar

VAR int hNvar

Definition at line 19 of file hutil.cc.

## hpur0

VAR scmon hpur0

Definition at line 17 of file hutil.cc.

## hpure

VAR scmon hpure

Definition at line 17 of file hutil.cc.

## hrad

VAR scfmon hrad

Definition at line 16 of file hutil.cc.

## hsecure

STATIC_VAR scfmon hsecure = NULL

Definition at line 29 of file hutil.cc.

## hsel

VAR varset hsel

Definition at line 18 of file hutil.cc.

## hstc

VAR scfmon hstc

Definition at line 16 of file hutil.cc.

## hvar

VAR varset hvar

Definition at line 18 of file hutil.cc.

## hwork

VAR scfmon hwork

Definition at line 16 of file hutil.cc.

## radmem

EXTERN_VAR monf radmem

Definition at line 21 of file hutil.cc.

## stcmem

EXTERN_VAR monf stcmem

Definition at line 21 of file hutil.cc.