 |
My Project
UNKNOWN_GIT_VERSION
|
Go to the source code of this file.
|
#define | idDelete(H) id_Delete((H),currRing) |
| delete an ideal More...
|
|
#define | idMaxIdeal(D) id_MaxIdeal(D,currRing) |
| initialise the maximal ideal (at 0) More...
|
|
#define | idPosConstant(I) id_PosConstant(I,currRing) |
| index of generator with leading term in ground ring (if any); otherwise -1 More...
|
|
#define | idIsConstant(I) id_IsConstant(I,currRing) |
|
#define | idSimpleAdd(A, B) id_SimpleAdd(A,B,currRing) |
|
#define | idPrint(id) id_Print(id, currRing, currRing) |
|
#define | idTest(id) id_Test(id, currRing) |
|
|
static ideal | idCopyFirstK (const ideal ide, const int k) |
|
void | idKeepFirstK (ideal ide, const int k) |
| keeps the first k (>= 1) entries of the given ideal (Note that the kept polynomials may be zero.) More...
|
|
void | idDelEquals (ideal id) |
|
ideal | id_Copy (ideal h1, const ring r) |
| copy an ideal More...
|
|
ideal | idCopy (ideal A) |
|
ideal | idAdd (ideal h1, ideal h2) |
| h1 + h2 More...
|
|
BOOLEAN | idInsertPoly (ideal h1, poly h2) |
| insert h2 into h1 (if h2 is not the zero polynomial) return TRUE iff h2 was indeed inserted More...
|
|
BOOLEAN | idInsertPolyOnPos (ideal I, poly p, int pos) |
| insert p into I on position pos More...
|
|
BOOLEAN | idInsertPolyWithTests (ideal h1, const int validEntries, const poly h2, const bool zeroOk, const bool duplicateOk) |
|
static ideal | idMult (ideal h1, ideal h2) |
| hh := h1 * h2 More...
|
|
BOOLEAN | idIs0 (ideal h) |
| returns true if h is the zero ideal More...
|
|
static BOOLEAN | idHomIdeal (ideal id, ideal Q=NULL) |
|
static BOOLEAN | idHomModule (ideal m, ideal Q, intvec **w) |
|
BOOLEAN | idTestHomModule (ideal m, ideal Q, intvec *w) |
|
ideal | idMinBase (ideal h1) |
|
void | idInitChoise (int r, int beg, int end, BOOLEAN *endch, int *choise) |
|
void | idGetNextChoise (int r, int end, BOOLEAN *endch, int *choise) |
|
int | idGetNumberOfChoise (int t, int d, int begin, int end, int *choise) |
|
int | binom (int n, int r) |
|
ideal | idFreeModule (int i) |
|
ideal | idSect (ideal h1, ideal h2, GbVariant a=GbDefault) |
|
ideal | idMultSect (resolvente arg, int length, GbVariant a=GbDefault) |
|
ideal | idSyzygies (ideal h1, tHomog h, intvec **w, BOOLEAN setSyzComp=TRUE, BOOLEAN setRegularity=FALSE, int *deg=NULL, GbVariant a=GbDefault) |
|
ideal | idLiftStd (ideal h1, matrix *m, tHomog h=testHomog, ideal *syz=NULL, GbVariant a=GbDefault) |
|
ideal | idLift (ideal mod, ideal sumod, ideal *rest=NULL, BOOLEAN goodShape=FALSE, BOOLEAN isSB=TRUE, BOOLEAN divide=FALSE, matrix *unit=NULL, GbVariant a=GbDefault) |
|
void | idLiftW (ideal P, ideal Q, int n, matrix &T, ideal &R, short *w=NULL) |
|
intvec * | idMWLift (ideal mod, intvec *weights) |
|
ideal | idQuot (ideal h1, ideal h2, BOOLEAN h1IsStb=FALSE, BOOLEAN resultIsIdeal=FALSE) |
|
ideal | idElimination (ideal h1, poly delVar, intvec *hilb=NULL, GbVariant a=GbDefault) |
|
ideal | idMinors (matrix a, int ar, ideal R=NULL) |
| compute all ar-minors of the matrix a the caller of mpRecMin the elements of the result are not in R (if R!=NULL) More...
|
|
ideal | idMinEmbedding (ideal arg, BOOLEAN inPlace=FALSE, intvec **w=NULL) |
|
ideal | idHead (ideal h) |
|
BOOLEAN | idIsSubModule (ideal id1, ideal id2) |
|
static ideal | idVec2Ideal (poly vec) |
|
ideal | idSeries (int n, ideal M, matrix U=NULL, intvec *w=NULL) |
|
static BOOLEAN | idIsZeroDim (ideal i) |
|
matrix | idDiff (matrix i, int k) |
|
matrix | idDiffOp (ideal I, ideal J, BOOLEAN multiply=TRUE) |
|
static intvec * | idSort (ideal id, BOOLEAN nolex=TRUE) |
|
ideal | idModulo (ideal h1, ideal h2, tHomog h=testHomog, intvec **w=NULL) |
|
matrix | idCoeffOfKBase (ideal arg, ideal kbase, poly how) |
|
ideal | idXXX (ideal h1, int k) |
|
poly | id_GCD (poly f, poly g, const ring r) |
|
ideal | id_Farey (ideal x, number N, const ring r) |
|
ideal | id_TensorModuleMult (const int m, const ideal M, const ring rRing) |
|
ideal | id_Satstd (const ideal I, ideal J, const ring r) |
|
GbVariant | syGetAlgorithm (char *n, const ring r, const ideal M) |
|
◆ idDelete
delete an ideal
Definition at line 29 of file ideals.h.
◆ idIsConstant
◆ idMaxIdeal
initialise the maximal ideal (at 0)
Definition at line 33 of file ideals.h.
◆ idPosConstant
index of generator with leading term in ground ring (if any); otherwise -1
Definition at line 37 of file ideals.h.
◆ idPrint
◆ idSimpleAdd
◆ idTest
◆ resolvente
◆ GbVariant
Enumerator |
---|
GbDefault | |
GbStd | |
GbSlimgb | |
GbSba | |
GbGroebner | |
GbModstd | |
GbFfmod | |
GbNfmod | |
GbStdSat | |
GbSingmatic | |
Definition at line 118 of file ideals.h.
◆ binom()
int binom |
( |
int |
n, |
|
|
int |
r |
|
) |
| |
◆ id_Copy()
ideal id_Copy |
( |
ideal |
h1, |
|
|
const ring |
r |
|
) |
| |
◆ id_Farey()
ideal id_Farey |
( |
ideal |
x, |
|
|
number |
N, |
|
|
const ring |
r |
|
) |
| |
◆ id_GCD()
poly id_GCD |
( |
poly |
f, |
|
|
poly |
g, |
|
|
const ring |
r |
|
) |
| |
◆ id_Satstd()
ideal id_Satstd |
( |
const ideal |
I, |
|
|
ideal |
J, |
|
|
const ring |
r |
|
) |
| |
Definition at line 2984 of file ideals.cc.
2993 for (
int i=0;
i<
k;
i++)
3002 WerrorS(
"ideal generators must be variables");
3010 for (
int i=1;
i<=r->N;
i++)
3018 Werror(
"exponent(x(%d)^%d) must be 0 or 1",
i,li);
◆ id_TensorModuleMult()
Definition at line 1717 of file simpleideals.cc.
1725 const int n = rRing->N;
1733 for(
int i = 0;
i <
k;
i++ )
1735 poly pTempSum =
NULL;
1760 if( cc == 0) cc =
m;
1761 int vv = 1 + (gen - cc) /
m;
1773 assume( (cc + (vv-1)*
m) == gen );
1780 pTempSum =
p_Add_q(pTempSum,
h, rRing);
1785 idTemp->m[
i] = pTempSum;
1790 ideal idResult =
id_Transp(idTemp, rRing);
◆ idAdd()
ideal idAdd |
( |
ideal |
h1, |
|
|
ideal |
h2 |
|
) |
| |
|
inline |
◆ idCoeffOfKBase()
matrix idCoeffOfKBase |
( |
ideal |
arg, |
|
|
ideal |
kbase, |
|
|
poly |
how |
|
) |
| |
Definition at line 2499 of file ideals.cc.
2507 while ((
i>0) && (kbase->m[
i-1]==
NULL))
i--;
2510 while ((
j>0) && (arg->m[
j-1]==
NULL))
j--;
2514 while ((
j>0) && (arg->m[
j-1]==
NULL))
j--;
◆ idCopy()
◆ idCopyFirstK()
static ideal idCopyFirstK |
( |
const ideal |
ide, |
|
|
const int |
k |
|
) |
| |
|
inlinestatic |
◆ idDelEquals()
void idDelEquals |
( |
ideal |
id | ) |
|
Definition at line 2834 of file ideals.cc.
2838 for (
int i = 0;
i < idsize;
i++)
2840 id_sort[
i].
p =
id->m[
i];
2844 int index, index_i, index_j;
2846 for (
int j = 1;
j < idsize;
j++)
2850 index_i = id_sort[
i].
index;
2851 index_j = id_sort[
j].
index;
2852 if (index_j > index_i)
◆ idDiff()
◆ idDiffOp()
◆ idElimination()
Definition at line 1574 of file ideals.cc.
1579 int *block0,*block1;
1593 WerrorS(
"cannot eliminate in a qring");
1606 WerrorS(
"no elimination is possible: subalgebra is not admissible");
1616 if (origR->order[
k]!=0) ordersize++;
1623 for (
k=0;
k<ordersize-1;
k++)
1625 block0[
k+1] = origR->block0[
k];
1626 block1[
k+1] = origR->block1[
k];
1627 ord[
k+1] = origR->order[
k];
1628 if (origR->wvhdl[
k]!=
NULL) wv[
k+1] = (
int*)
omMemDup(origR->wvhdl[
k]);
1638 double wNsqr = (double)2.0 / (
double)(
currRing->N);
1642 wCall(h1->m, sl,
x, wNsqr);
1643 for (sl = (
currRing->N); sl!=0; sl--)
1644 wv[1][sl-1] =
x[sl + (
currRing->N) + 1];
1660 block0=(
int*)
omAlloc0(4*
sizeof(
int));
1661 block1=(
int*)
omAlloc0(4*
sizeof(
int));
1662 wv=(
int**)
omAlloc0(4*
sizeof(
int**));
1663 block0[0] = block0[1] = 1;
1664 block1[0] = block1[1] =
rVar(origR);
1687 block0=(
int*)
omAlloc0(4*
sizeof(
int));
1688 block1=(
int*)
omAlloc0(4*
sizeof(
int));
1689 wv=(
int**)
omAlloc0(4*
sizeof(
int**));
1690 block0[0] = block0[1] = 1;
1691 block1[0] = block1[1] =
rVar(origR);
1709 block0=(
int*)
omAlloc0(ordersize*
sizeof(
int));
1710 block1=(
int*)
omAlloc0(ordersize*
sizeof(
int));
1711 wv=(
int**)
omAlloc0(ordersize*
sizeof(
int**));
1712 for (
k=0;
k<ordersize-1;
k++)
1714 block0[
k+1] = origR->block0[
k];
1715 block1[
k+1] = origR->block1[
k];
1716 ord[
k+1] = origR->order[
k];
1717 if (origR->wvhdl[
k]!=
NULL) wv[
k+1] = (
int*)
omMemDup(origR->wvhdl[
k]);
1720 block1[0] =
rVar(origR);
1733 tmpR->block0 = block0;
1734 tmpR->block1 = block1;
1744 WerrorS(
"no elimination is possible: ordering condition is violated");
1761 if (origR->qideal!=
NULL)
1763 WarnS(
"eliminate in q-ring: experimental");
1797 Werror(
"error %d in >>groebner<<",err);
1810 Werror(
"error %d in >>modStd<<",err);
1814 else if (alg==
GbSba)
1822 Werror(
"wrong algorithm %d for SB",(
int)alg);
1833 while ((
i >= 0) && (hh->m[
i] ==
NULL))
i--;
1836 for (
k=0;
k<=
i;
k++)
1848 h3->m[
j] =
prMoveR( hh->m[
k], tmpR,origR);
◆ idFreeModule()
ideal idFreeModule |
( |
int |
i | ) |
|
|
inline |
◆ idGetNextChoise()
void idGetNextChoise |
( |
int |
r, |
|
|
int |
end, |
|
|
BOOLEAN * |
endch, |
|
|
int * |
choise |
|
) |
| |
Definition at line 855 of file simpleideals.cc.
858 while ((
i >= 0) && (choise[
i] == end))
868 for (
j=
i+1;
j<r;
j++)
870 choise[
j] = choise[
i]+
j-
i;
◆ idGetNumberOfChoise()
int idGetNumberOfChoise |
( |
int |
t, |
|
|
int |
d, |
|
|
int |
begin, |
|
|
int |
end, |
|
|
int * |
choise |
|
) |
| |
Definition at line 881 of file simpleideals.cc.
887 localchoise=(
int*)
omAlloc((d-1)*
sizeof(int));
893 while ((
i<t) && (localchoise[
i]==choise[
i]))
i++;
897 while ((
i<d) && (localchoise[
i-1]==choise[
i]))
i++;
◆ idHead()
◆ idHomIdeal()
◆ idHomModule()
◆ idInitChoise()
void idInitChoise |
( |
int |
r, |
|
|
int |
beg, |
|
|
int |
end, |
|
|
BOOLEAN * |
endch, |
|
|
int * |
choise |
|
) |
| |
◆ idInsertPoly()
BOOLEAN idInsertPoly |
( |
ideal |
h1, |
|
|
poly |
h2 |
|
) |
| |
insert h2 into h1 (if h2 is not the zero polynomial) return TRUE iff h2 was indeed inserted
Definition at line 640 of file simpleideals.cc.
647 while ((
j >= 0) && (h1->m[
j] ==
NULL))
j--;
◆ idInsertPolyOnPos()
BOOLEAN idInsertPolyOnPos |
( |
ideal |
I, |
|
|
poly |
p, |
|
|
int |
pos |
|
) |
| |
insert p into I on position pos
Definition at line 659 of file simpleideals.cc.
666 while ((
j >= 0) && (I->m[
j] ==
NULL))
j--;
◆ idInsertPolyWithTests()
◆ idIs0()
◆ idIsSubModule()
BOOLEAN idIsSubModule |
( |
ideal |
id1, |
|
|
ideal |
id2 |
|
) |
| |
◆ idIsZeroDim()
static BOOLEAN idIsZeroDim |
( |
ideal |
i | ) |
|
|
inlinestatic |
◆ idKeepFirstK()
void idKeepFirstK |
( |
ideal |
ide, |
|
|
const int |
k |
|
) |
| |
keeps the first k (>= 1) entries of the given ideal (Note that the kept polynomials may be zero.)
Definition at line 2802 of file ideals.cc.
◆ idLift()
Definition at line 1113 of file ideals.cc.
1135 WerrorS(
"2nd module does not lie in the first");
1140 comps_to_add =
IDELEMS(submod);
1141 while ((comps_to_add>0) && (submod->m[comps_to_add-1]==
NULL))
1145 if ((
k!=0) && (lsmod==0)) lsmod=1;
1147 if (k<submod->rank) {
WarnS(
"rk(submod) > rk(mod) ?");
k=submod->rank; }
1154 ideal s_mod, s_temp;
1155 if (orig_ring != syz_ring)
1190 for(
j = 0;
j<comps_to_add;
j++)
1203 s_temp->rank += (
k+comps_to_add);
1206 s_result->rank = s_h3->rank;
1213 if (s_result->m[
j]!=
NULL)
1221 WarnS(
"first module not a standardbasis\n"
1222 "// ** or second not a proper submodule");
1225 WerrorS(
"2nd module does not lie in the first");
1233 p = s_rest->m[
j] = s_result->m[
j];
1240 pNeg(s_result->m[
j]);
1243 if ((lsmod==0) && (s_rest!=
NULL))
1247 if (s_rest->m[
j-1]!=
NULL)
1250 s_rest->m[
j-1] = s_rest->m[
j-1];
1254 if(syz_ring!=orig_ring)
1269 *unit=
mpNew(comps_to_add,comps_to_add);
1273 poly
p=s_result->m[
i];
1291 else p=s_result->m[
i];
◆ idLiftStd()
Definition at line 925 of file ideals.cc.
942 return idInit(1,h1->rank);
959 if (orig_ring != syz_ring)
978 if (s_h3->m[
j] !=
NULL)
1005 (*syz)->m[
j]=s_h3->m[
j];
1027 if (syz_ring!=orig_ring)
1038 if (s_h2->m[
j] !=
NULL)
1040 q =
prMoveR( s_h2->m[
j], syz_ring,orig_ring);
1074 if (syz_ring!=orig_ring)
rDelete(syz_ring);
◆ idLiftW()
void idLiftW |
( |
ideal |
P, |
|
|
ideal |
Q, |
|
|
int |
n, |
|
|
matrix & |
T, |
|
|
ideal & |
R, |
|
|
short * |
w = NULL |
|
) |
| |
◆ idMinBase()
ideal idMinBase |
( |
ideal |
h1 | ) |
|
Definition at line 49 of file ideals.cc.
58 WarnS(
"minbase applies only to the local or homogeneous case over coefficient fields");
67 WarnS(
"minbase applies only to the local or homogeneous case over coefficient fields");
91 while ((
k > 0) && (h3->m[
k-1] ==
NULL))
k--;
94 while ((
l > 0) && (h2->m[
l-1] ==
NULL))
l--;
95 for (
i=
l-1;
i>=0;
i--)
100 while ((ll <
k) && ((h3->m[ll] ==
NULL)
◆ idMinEmbedding()
Definition at line 2565 of file ideals.cc.
2568 int i,next_gen,next_comp;
2572 int *red_comp=(
int*)
omAlloc((
res->rank+1)*
sizeof(int));
2573 for (
i=
res->rank;
i>=0;
i--) red_comp[
i]=
i;
2579 if (next_gen<0)
break;
2582 for(
i=next_comp+1;
i<=arg->rank;
i++) red_comp[
i]--;
2585 for(
i=next_comp;
i<(*w)->length();
i++) (**
w)[
i-1]=(**w)[
i];
2595 int nl=
si_max((*w)->length()-del,1);
2597 for(
i=0;
i<
res->rank;
i++) (*wtmp)[
i]=(**w)[
i];
◆ idMinors()
ideal idMinors |
( |
matrix |
a, |
|
|
int |
ar, |
|
|
ideal |
R = NULL |
|
) |
| |
compute all ar-minors of the matrix a the caller of mpRecMin the elements of the result are not in R (if R!=NULL)
Definition at line 2010 of file ideals.cc.
2016 const int r = a->
nrows;
2017 const int c = a->
ncols;
2019 if((ar<=0) || (ar>r) || (ar>c))
2021 Werror(
"%d-th minor, matrix is %dx%d",ar,r,c);
2033 for (
int i=r*c-1;
i>=0;
i--)
◆ idModulo()
Definition at line 2254 of file ideals.cc.
2258 int i,
k,rk,flength=0,slength,
length;
2279 ((*wtmp)[
i])=(**w)[
i];
2300 if(temp->m[
i]!=
NULL)
2339 if (syz_ring != orig_ring)
2359 if (wtmp!=
NULL)
delete wtmp;
2363 if ((s_temp1->m[
i]!=
NULL)
2376 if (syz_ring!=orig_ring)
◆ idMult()
static ideal idMult |
( |
ideal |
h1, |
|
|
ideal |
h2 |
|
) |
| |
|
inlinestatic |
hh := h1 * h2
Definition at line 84 of file ideals.h.
◆ idMultSect()
Definition at line 421 of file ideals.cc.
423 int i,
j=0,
k=0,
l,maxrk=-1,realrki;
425 ideal bigmat,tempstd,
result;
438 if (realrki>maxrk) maxrk = realrki;
464 for (
i=0;
i<maxrk;
i++)
471 bigmat->m[
i] =
pAdd(bigmat->m[
i],
p);
485 if (syz_ring==orig_ring)
518 Werror(
"error %d in >>groebner<<",err);
542 Werror(
"wrong algorithm %d for SB",(
int)alg);
545 if(syz_ring!=orig_ring)
555 if (syz_ring==orig_ring)
565 if(syz_ring!=orig_ring)
568 if(syz_ring!=orig_ring)
◆ idMWLift()
◆ idQuot()
Definition at line 1479 of file ideals.cc.
1507 if (orig_ring!=syz_ring)
1509 s_h4 =
idrMoveR(s_h4,orig_ring, syz_ring);
1535 m=idModule2Matrix(
idCopy(s_h3));
1536 Print(
"result, kmax=%d:\n",kmax);
1541 if (weights1!=
NULL)
delete weights1;
1559 s_h3->rank = h1->rank;
1560 if(syz_ring!=orig_ring)
◆ idSect()
Definition at line 201 of file ideals.cc.
207 int rank=
si_max(h1->rank,h2->rank);
210 ideal first,second,temp,temp1,
result;
222 int t=flength; flength=slength; slength=t;
242 while ((
j>0) && (first->m[
j-1]==
NULL))
j--;
247 if (first->m[
i]!=
NULL)
249 if (syz_ring==orig_ring)
250 temp->m[
k] =
pCopy(first->m[
i]);
252 temp->m[
k] =
prCopyR(first->m[
i], orig_ring, syz_ring);
265 if (second->m[
i]!=
NULL)
267 if (syz_ring==orig_ring)
268 temp->m[
k] =
pCopy(second->m[
i]);
297 Werror(
"error %d in >>groebner<<",err);
305 void *args[]={temp,(
void*)1,
NULL};
310 Werror(
"error %d in >>modStd<<",err);
347 void *args[]={temp,
v,
NULL};
353 Werror(
"error %d in >>satstd<<",err);
358 if(syz_ring!=orig_ring)
365 if ((temp1->m[
i]!=
NULL)
368 if(syz_ring==orig_ring)
374 p =
prMoveR(temp1->m[
i], syz_ring,orig_ring);
391 if(syz_ring!=orig_ring)
◆ idSeries()
◆ idSort()
◆ idSyzygies()
Definition at line 730 of file ideals.cc.
736 int ii, idElemens_h1;
742 for(ii=0;ii<idElemens_h1 ;ii++)
pTest(h1->m[ii]);
757 if (orig_ring != syz_ring)
773 if (orig_ring != syz_ring)
781 if (orig_ring != syz_ring)
786 if (s_h3->m[
j] !=
NULL)
814 if (s_h3->m[
j] !=
NULL)
818 e->m[
j] = s_h3->m[
j];
819 isMonomial=isMonomial && (
pNext(s_h3->m[
j])==
NULL);
838 assume(orig_ring==syz_ring);
840 if (dp_C_ring != syz_ring)
855 if (dp_C_ring != orig_ring)
◆ idTestHomModule()
Definition at line 2100 of file ideals.cc.
2116 if (
w->length()+1 < cmax)
◆ idVec2Ideal()
static ideal idVec2Ideal |
( |
poly |
vec | ) |
|
|
inlinestatic |
◆ idXXX()
ideal idXXX |
( |
ideal |
h1, |
|
|
int |
k |
|
) |
| |
Definition at line 878 of file ideals.cc.
889 if (orig_ring != syz_ring)
905 if (orig_ring != syz_ring)
◆ syGetAlgorithm()
Definition at line 3030 of file ideals.cc.
3033 if (strcmp(n,
"slimgb")==0) alg=
GbSlimgb;
3034 else if (strcmp(n,
"std")==0) alg=
GbStd;
3035 else if (strcmp(n,
"sba")==0) alg=
GbSba;
3036 else if (strcmp(n,
"singmatic")==0) alg=
GbSingmatic;
3037 else if (strcmp(n,
"groebner")==0) alg=
GbGroebner;
3038 else if (strcmp(n,
"modstd")==0) alg=
GbModstd;
3039 else if (strcmp(n,
"ffmod")==0) alg=
GbFfmod;
3040 else if (strcmp(n,
"nfmod")==0) alg=
GbNfmod;
3041 else if (strcmp(n,
"std:sat")==0) alg=
GbStdSat;
3042 else Warn(
">>%s<< is an unknown algorithm",n);
3054 WarnS(
"requires: coef:field, commutative, global ordering, not qring");
3056 else if (alg==
GbSba)
3065 WarnS(
"requires: coef:domain, commutative, global ordering");
3075 WarnS(
">>modStd<< not found");
3084 WarnS(
"requires: coef:QQ, commutative, global ordering");
3090 WarnS(
">>satstd<< not found");
ideal id_FreeModule(int i, const ring r)
the free module of rank i
BOOLEAN rHasGlobalOrdering(const ring r)
#define pDivisibleBy(a, b)
returns TRUE, if leading monom of a divides leading monom of b i.e., if there exists a expvector c > ...
BOOLEAN id_HomModule(ideal m, ideal Q, intvec **w, const ring R)
double wFunctionalBuch(int *degw, int *lpol, int npol, double *rel, double wx, double wNsqr)
long p_DegW(poly p, const short *w, const ring R)
ideal kGroebner(ideal F, ideal Q)
ring rAssure_SyzComp(const ring r, BOOLEAN complete)
#define pGetComp(p)
Component.
#define TEST_OPT_NOTREGULARITY
static long p_GetExp(const poly p, const unsigned long iBitmask, const int VarOffset)
get a single variable exponent @Note: the integer VarOffset encodes:
ideal id_Matrix2Module(matrix mat, const ring R)
converts mat to module, destroys mat
#define idDelete(H)
delete an ideal
ideal idrCopyR_NoSort(ideal id, ring src_r, ring dest_r)
#define MATELEM(mat, i, j)
static BOOLEAN rField_is_Domain(const ring r)
void rChangeCurrRing(ring r)
ideal kMin_std(ideal F, ideal Q, tHomog h, intvec **w, ideal &M, intvec *hilb, int syzComp, int reduced)
static BOOLEAN idHomIdeal(ideal id, ideal Q=NULL)
#define pGetExp(p, i)
Exponent.
ideal idrMoveR_NoSort(ideal &id, ring src_r, ring dest_r)
void pEnlargeSet(poly **p, int l, int increment)
int p_Var(poly m, const ring r)
static poly p_Head(poly p, const ring r)
static nc_type & ncRingType(nc_struct *p)
BOOLEAN id_InsertPolyWithTests(ideal h1, const int validEntries, const poly h2, const bool zeroOk, const bool duplicateOk, const ring r)
insert h2 into h1 depending on the two boolean parameters:
static ideal idPrepare(ideal h1, tHomog hom, int syzcomp, intvec **w, GbVariant alg)
intvec * syBetti(resolvente res, int length, int *regularity, intvec *weights, BOOLEAN tomin, int *row_shift)
static BOOLEAN length(leftv result, leftv arg)
poly singclap_pdivide(poly f, poly g, const ring r)
#define __p_GetComp(p, r)
void mp_RecMin(int ar, ideal result, int &elems, matrix a, int lr, int lc, poly barDiv, ideal R, const ring r)
produces recursively the ideal of all arxar-minors of a
BOOLEAN nc_rComplete(const ring src, ring dest, bool bSetupQuotient)
const CanonicalForm CFMap CFMap & N
void * iiCallLibProcM(const char *n, void **args, int *arg_types, BOOLEAN &err)
args: NULL terminated arry of arguments arg_types: 0 terminated array of corresponding types
void id_Shift(ideal M, int s, const ring r)
ring sm_RingChange(const ring origR, long bound)
BOOLEAN idIs0(ideal h)
returns true if h is the zero ideal
BOOLEAN id_HomIdeal(ideal id, ideal Q, const ring r)
ring rCopy0(const ring r, BOOLEAN copy_qideal, BOOLEAN copy_ordering)
poly prMoveR(poly &p, ring src_r, ring dest_r)
static BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
#define TEST_V_INTERSECT_ELIM
void mp_MinorToResult(ideal result, int &elems, matrix a, int r, int c, ideal R, const ring)
entries of a are minors and go to result (only if not in R)
ring rAssure_SyzOrder(const ring r, BOOLEAN complete)
static poly p_Copy(poly p, const ring r)
returns a copy of p
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
intvec * id_Sort(const ideal id, const BOOLEAN nolex, const ring r)
sorts the ideal w.r.t. the actual ringordering uses lex-ordering when nolex = FALSE
static short rVar(const ring r)
#define rVar(r) (r->N)
static long p_MinComp(poly p, ring lmRing, ring tailRing)
void id_Delete(ideal *h, ring r)
deletes an ideal/module/matrix
ideal idrMoveR(ideal &id, ring src_r, ring dest_r)
long id_RankFreeModule(ideal s, ring lmRing, ring tailRing)
return the maximal component number found in any polynomial in s
void PrintS(const char *s)
#define omFreeSize(addr, size)
ring rAssure_dp_C(const ring r)
ideal t_rep_gb(const ring r, ideal arg_I, int syz_comp, BOOLEAN F4_mode)
void idSkipZeroes(ideal ide)
gives an ideal/module the minimal possible size
static BOOLEAN rField_is_Ring(const ring r)
poly p_DivideM(poly a, poly b, const ring r)
void id_DelMultiples(ideal id, const ring r)
ideal id = (id[i]), c any unit if id[i] = c*id[j] then id[j] is deleted for j > i
poly p_Farey(poly p, number N, const ring r)
static ideal idInitializeQuot(ideal h1, ideal h2, BOOLEAN h1IsStb, BOOLEAN *addOnlyOne, int *kkmax)
double(* wFunctional)(int *degw, int *lpol, int npol, double *rel, double wx, double wNsqr)
void idGetNextChoise(int r, int end, BOOLEAN *endch, int *choise)
void sm_KillModifiedRing(ring r)
void syGaussForOne(ideal syz, int elnum, int ModComp, int from, int till)
static BOOLEAN id_sat_vars_sp(kStrategy strat)
void wCall(poly *s, int sl, int *x, double wNsqr, const ring R)
poly kNF(ideal F, ideal Q, poly p, int syzComp, int lazyReduce)
#define TEST_OPT_RETURN_SB
ideal idSectWithElim(ideal h1, ideal h2)
matrix mpNew(int r, int c)
create a r x c zero-matrix
void p_Shift(poly *p, int i, const ring r)
shifts components of the vector p by i
static void idDeleteComps(ideal arg, int *red_comp, int del)
void idSort_qsort(poly_sort *id_sort, int idsize)
void rDelete(ring r)
unconditionally deletes fields in r
long p_Deg(poly a, const ring r)
static void p_Delete(poly *p, const ring r)
static poly p_Add_q(poly p, poly q, const ring r)
CanonicalForm divide(const CanonicalForm &ff, const CanonicalForm &f, const CFList &as)
static int si_max(const int a, const int b)
static CanonicalForm bound(const CFMatrix &M)
#define pSetmComp(p)
TODO:
void idInitChoise(int r, int beg, int end, BOOLEAN *endch, int *choise)
void ipPrint_MA0(matrix m, const char *name)
ideal idCreateSpecialKbase(ideal kBase, intvec **convert)
#define SI_RESTORE_OPT2(A)
ideal id_Vec2Ideal(poly vec, const ring R)
void rSetSyzComp(int k, const ring r)
void Werror(const char *fmt,...)
ideal idFreeModule(int i)
ideal idInit(int idsize, int rank)
initialise an ideal / module
static BOOLEAN idHomModule(ideal m, ideal Q, intvec **w)
char name(const Variable &v)
void WerrorS(const char *s)
#define pEqualPolys(p1, p2)
ideal kSba(ideal F, ideal Q, tHomog h, intvec **w, int sbaOrder, int arri, intvec *hilb, int syzComp, int newIdeal, intvec *vw)
void p_TakeOutComp(poly *p, long comp, poly *q, int *lq, const ring r)
void p_SetModDeg(intvec *w, ring r)
ideal idSyzygies(ideal h1, tHomog h, intvec **w, BOOLEAN setSyzComp, BOOLEAN setRegularity, int *deg, GbVariant alg)
static unsigned long p_SetComp(poly p, unsigned long c, ring r)
int id_ReadOutPivot(ideal arg, int *comp, const ring r)
poly prMoveR_NoSort(poly &p, ring src_r, ring dest_r)
ideal id_CopyFirstK(const ideal ide, const int k, const ring r)
copies the first k (>= 1) entries of the given ideal/module and returns these as a new ideal/module (...
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 ideal idMult(ideal h1, ideal h2)
hh := h1 * h2
void * iiCallLibProc1(const char *n, void *arg, int arg_type, BOOLEAN &err)
static void p_Setm(poly p, const ring r)
const Variable & v
< [in] a sqrfree bivariate poly
static int * id_satstdSaturatingVariables
static long p_IncrExp(poly p, int v, ring r)
#define idSimpleAdd(A, B)
#define pSeries(n, p, u, w)
@ ringorder_aa
for idElimination, like a, except pFDeg, pWeigths ignore it
idhdl ggetid(const char *n)
const CanonicalForm int s
#define pCopy(p)
return a copy of the poly
#define SI_RESTORE_OPT1(A)
long sm_ExpBound(ideal m, int di, int ra, int t, const ring currRing)
ideal kStd(ideal F, ideal Q, tHomog h, intvec **w, intvec *hilb, int syzComp, int newIdeal, intvec *vw, s_poly_proc_t sp)
ideal id_Copy(ideal h1, const ring r)
copy an ideal
resolvente sySchreyerResolvente(ideal arg, int maxlength, int *length, BOOLEAN isMonomial=FALSE, BOOLEAN notReplace=FALSE)
#define pHead(p)
returns newly allocated copy of Lm(p), coef is copied, next=NULL, p might be NULL
ideal id_Add(ideal h1, ideal h2, const ring r)
h1 + h2
ideal id_Transp(ideal a, const ring rRing)
transpose a module
BOOLEAN nc_CheckSubalgebra(poly PolyVar, ring r)
matrix mp_Copy(matrix a, const ring r)
copies matrix a (from ring r to r)
#define TEST_V_INTERSECT_SYZ
static int index(p_Length length, p_Ord ord)
static poly pReverse(poly p)
poly idDecompose(poly monom, poly how, ideal kbase, int *pos)
poly prCopyR(poly p, ring src_r, ring dest_r)
static void idPrepareStd(ideal s_temp, int k)
ideal idrCopyR(ideal id, ring src_r, ring dest_r)
BOOLEAN id_IsZeroDim(ideal I, const ring r)
static BOOLEAN rField_is_Q(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 p_Weight(int i, const ring r)
#define idMaxIdeal(D)
initialise the maximal ideal (at 0)