14 #include <factory/factory.h> 100 #define PLURAL_MASK 0 105 #define ZERODIVISOR_MASK 8 108 #define ZERODIVISOR_MASK 0 110 #define ALLOW_PLURAL 1 112 #define COMM_PLURAL 2 115 #define NO_ZERODIVISOR 8 116 #define ALLOW_ZERODIVISOR 0 118 #define ALLOW_ZZ (ALLOW_RING|NO_ZERODIVISOR) 124 #define NO_CONVERSION 32 182 short number_of_args;
211 extern int iiArithAddCmd(
const char *szName,
short nAlias,
short nTokval,
212 short nToktype,
short nPos=-1);
222 #define ii_div_by_0 "div. by 0" 231 if ((
long)i==
l)
return l;
243 if (sArithBase.
sCmds[
i].tokval==op)
244 return sArithBase.
sCmds[
i].toktype;
256 int bb = (int)(
long)(v->
Data());
261 case '+': cc=
bimAdd(aa,bb);
break;
262 case '-': cc=
bimSub(aa,bb);
break;
263 case '*': cc=
bimMult(aa,bb);
break;
265 res->
data=(
char *)cc;
275 number bb = (number)(v->
Data());
282 res->
data=(
char *)cc;
292 int bb = (int)(
long)(v->
Data());
296 case '+': (*aa) += bb;
break;
297 case '-': (*aa) -= bb;
break;
298 case '*': (*aa) *= bb;
break;
301 case '%': (*aa) %= bb;
break;
303 res->
data=(
char *)aa;
313 int bb = (int)(
long)(v->
Data());
317 case '+':
for (;i>0;i--)
IMATELEM(*aa,i,i) += bb;
319 case '-':
for (;i>0;i--)
IMATELEM(*aa,i,i) -= bb;
322 res->
data=(
char *)aa;
331 int l=(int)(
long)v->
Data();
334 int d=(int)(
long)u->
Data();
337 for(i=l-1;i>=0;i--) { (*vv)[
i]=d; }
338 res->
data=(
char *)vv;
356 res->
data = (
char *) (r<0);
359 res->
data = (
char *) (r>0);
362 res->
data = (
char *) (r<=0);
365 res->
data = (
char *) (r>=0);
369 res->
data = (
char *) (r==0);
373 if(r==-2) {
WerrorS(
"size incompatible");
return TRUE; }
384 res->
data = (
char *) (r<0);
387 res->
data = (
char *) (r>0);
390 res->
data = (
char *) (r<=0);
393 res->
data = (
char *) (r>=0);
397 res->
data = (
char *) (r==0);
401 if(r==-2) {
WerrorS(
"size incompatible");
return TRUE; }
407 int b = (int)(
long)(v->
Data());
412 res->
data = (
char *) (r<0);
415 res->
data = (
char *) (r>0);
418 res->
data = (
char *) (r<=0);
421 res->
data = (
char *) (r>=0);
425 res->
data = (
char *) (r==0);
440 res->
data = (
char *) (
long)(r < 0);
443 res->
data = (
char *) (
long)(r > 0);
446 res->
data = (
char *) (
long)(r <= 0);
449 res->
data = (
char *) (
long)(r >= 0);
453 res->
data = (
char *)(
long) (r == 0);
467 res->
data = (
char *) (r < 0);
470 res->
data = (
char *) (r > 0);
473 res->
data = (
char *) (r <= 0);
476 res->
data = (
char *) (r >= 0);
488 char*
a = (
char * )(u->
Data());
489 char*
b = (
char * )(v->
Data());
494 res->
data = (
char *) (result < 0);
497 res->
data = (
char *) (result > 0);
500 res->
data = (
char *) (result <= 0);
503 res->
data = (
char *) (result >= 0);
507 res->
data = (
char *) (result == 0);
531 int b=(int)(
long)u->
Data();
532 int e=(int)(
long)v->
Data();
541 else if ((e==0)||(b==1))
559 if(rc/b!=oldrc) overflow=
TRUE;
563 WarnS(
"int overflow(^), result may be wrong");
565 res->
data = (
char *)((
long)rc);
571 WerrorS(
"exponent must be non-negative");
577 int e=(int)(
long)v->
Data();
578 number n=(number)u->
Data();
585 WerrorS(
"exponent must be non-negative");
593 int e=(int)(
long)v->
Data();
594 number n=(number)u->
Data();
611 int v_i=(int)(
long)v->
Data();
614 WerrorS(
"exponent must be non-negative");
622 Werror(
"OVERFLOW in power(d=%ld, e=%d, max=%ld)",
706 if(isupper(u->
name[0]))
708 const char *c=u->
name+1;
709 while((*c!=
'\0')&&(islower(*c)||(isdigit(*c)))) c++;
714 Print(
"%s of type 'ANY'. Trying load.\n", u->
name);
730 package pa=(package)u->Data();
744 WerrorS(
"reserved name with ::");
749 memcpy(res, v,
sizeof(
sleftv));
750 memset(v, 0,
sizeof(
sleftv));
756 WerrorS(
"<package>::<id> expected");
763 unsigned int a=(
unsigned int)(
unsigned long)u->
Data();
764 unsigned int b=(
unsigned int)(
unsigned long)v->
Data();
766 res->
data = (
char *)((
long)c);
769 WarnS(
"int overflow(+), result may be wrong");
793 WerrorS(
"intmat size not compatible");
803 WerrorS(
"bigintmat/cmatrix not compatible");
814 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
837 char*
a = (
char * )(u->
Data());
838 char*
b = (
char * )(v->
Data());
839 char*
r = (
char * )
omAlloc(strlen(a) + strlen(b) + 1);
852 void *ap=u->
Data();
void *bp=v->
Data();
853 int aa=(int)(
long)ap;
854 int bb=(int)(
long)bp;
856 unsigned int a=(
unsigned int)(
unsigned long)ap;
857 unsigned int b=(
unsigned int)(
unsigned long)bp;
861 WarnS(
"int overflow(-), result may be wrong");
863 res->
data = (
char *)((
long)cc);
886 WerrorS(
"intmat size not compatible");
896 WerrorS(
"bigintmat/cmatrix not compatible");
907 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
916 int a=(int)(
long)u->
Data();
917 int b=(int)(
long)v->
Data();
919 if ((c>INT_MAX)||(c<INT_MIN))
920 WarnS(
"int overflow(*), result may be wrong");
921 res->
data = (
char *)((
long)((int)c));
936 number n=(number)res->
data;
956 Warn(
"possible OVERFLOW in mult(d=%ld, d=%ld, max=%ld)",
968 Warn(
"possible OVERFLOW in mult(d=%ld, d=%ld, max=%ld)",
1003 WerrorS(
"intmat size not compatible");
1015 WerrorS(
"bigintmat/cmatrix not compatible");
1029 res->
data = (
char *)I;
1043 res->
data = (
char *)I;
1053 res->
data = (
char *)I;
1084 Werror(
"matrix size not compatible(%dx%d, %dx%d) in *",
1102 res->
data = (
char *)(
long)((int)((
long)u->
Data()) >= (
int)((long)v->
Data()));
1120 res->
data = (
char *)(
long)((int)((
long)u->
Data()) > (
int)((long)v->
Data()));
1134 res->
data = (
char *)(
long)((int)((
long)u->
Data()) <= (
int)((long)v->
Data()));
1147 res->
data = (
char *)(
long)((int)((
long)u->
Data()) < (
int)((long)v->
Data()));
1157 int a= (int)(
long)u->
Data();
1158 int b= (int)(
long)v->
Data();
1172 r=((a-c) /b);
break;
1174 res->
data=(
void *)((
long)
r);
1179 number q=(number)v->
Data();
1187 res->
data = (
char *)q;
1192 number q=(number)v->
Data();
1200 res->
data = (
char *)q;
1239 I->m[
i]=
pAdd(I->m[i],p);
1245 for(i=comps-1;i>=0;i--)
1255 res->
data=(
void *)p;
1264 WerrorS(
"division only defined over coefficient domains");
1269 WerrorS(
"division over a coefficient domain only implemented for terms");
1305 res->
data=(
char *)mm;
1316 res->
data = (
char *)((
int)((long)u->
Data()) == (
int)((long)v->
Data()));
1361 res->
data = (
char *)((
long)u->
Data() && (long)v->
Data());
1366 res->
data = (
char *)((
long)u->
Data() || (long)v->
Data());
1379 while (sh->next !=
NULL) sh=sh->next;
1395 WerrorS(
"indexed object must have a name");
1402 memset(&t,0,
sizeof(t));
1404 for (i=0;i<iv->
length(); i++)
1406 t.
data=(
char *)((
long)(*iv)[
i]);
1430 int i=(int)(
long)v->
Data();
1451 for(i=iv->
length()-1;i>=0;i--)
1454 while ((p!=
NULL) && (sum>0))
1457 for(i=iv->
length()-1;i>=0;i--)
1470 res->
data=(
char *)r;
1478 int i=(int)(
long)v->
Data();
1483 if (r==p) r=
pNext(p);
1500 res->
data=(
char *)r;
1514 for(i=0;i<iv->
length();i++)
1534 res->
data=(
char *)r;
1542 char * nn = (
char *)
omAlloc(strlen(u->
name) + 14);
1543 sprintf(nn,
"%s(%d)",u->
name,(
int)(
long)v->
Data());
1557 long slen = strlen(u->
name) + 14;
1558 char *n = (
char*)
omAlloc(slen);
1560 for (i=0;i<iv->
length(); i++)
1571 sprintf(n,
"%s(%d)",u->
name,(*iv)[i]);
1583 memset(tmp,0,
sizeof(
sleftv));
1609 tmp_proc->
id=
"_auto";
1613 d=u->
data; u->
data=(
void *)tmp_proc;
1630 if (sl)
return TRUE;
1649 memcpy(res,sl,
sizeof(
sleftv));
1657 memset(v,0,
sizeof(
sleftv));
1667 number *
x=(number *)
omAlloc(rl*
sizeof(number));
1668 number *q=(number *)
omAlloc(rl*
sizeof(number));
1670 for(i=rl-1;i>=0;i--)
1677 for(i=rl-1;i>=0;i--)
1683 res->
data=(
char *)n;
1693 number *
x=(number *)
omAlloc(rl*
sizeof(number));
1694 number *q=(number *)
omAlloc(rl*
sizeof(number));
1696 for(i=rl-1;i>=0;i--)
1702 for(i=rl-1;i>=0;i--)
1706 Werror(
"poly expected at pos %d",i+1);
1707 for(i=rl-1;i>=0;i--)
1716 else if (
pLmCmp(r,h)==-1) r=h;
1719 for(i=rl-1;i>=0;i--)
1731 number n=n_ChineseRemainder(x,q,rl,
currRing->cf);
1732 for(i=rl-1;i>=0;i--)
1738 result=
pAdd(result,h);
1740 for(i=rl-1;i>=0;i--)
1745 res->
data=(
char *)result;
1752 int s=(int)(
long)v->
Data();
1761 ideal
M=(ideal)u->
CopyD();
1762 int s=(int)(
long)v->
Data();
1801 (ideal)(v->
Data()), p);
1813 ideal I=(ideal)u->
Data();
1818 res->
data = (
char *)((
long)d);
1829 res->
data = (
char *)(d);
1832 res->
data=(
char *)(
long)(-1);
1867 Warn(
"dim(%s,...) may be wrong because the mixed monomial ordering",v->
Name());
1872 ideal vid = (ideal)v->
Data();
1876 res->
data = (
char *)-1;
1882 if (i != -1)
pDelete(&vv->m[i]);
1885 res->
data = (
char *)d;
1902 ideal vi=(ideal)v->
Data();
1904 ideal ui=(ideal)u->
Data();
1938 res->
data=(
char *)L;
1975 number uu=(number)u->
Data();number vv=(number)v->
Data();
1984 res->
data=(
char *)L;
1989 int uu=(int)(
long)u->
Data();
int vv=(int)(
long)v->
Data();
1990 int p0=
ABS(uu),p1=
ABS(vv);
1991 int f0 = 1, f1 = 0, g0 = 0, g1 = 1, q,
r;
2013 res->
data=(
char *)L;
2020 if (ret)
return TRUE;
2023 res->
data=(
char *)L;
2024 L->
m[0].
data=(
void *)r;
2026 L->
m[1].
data=(
void *)pa;
2028 L->
m[2].
data=(
void *)pb;
2036 int sw=(int)(
long)dummy->
Data();
2038 if ((sw<0)||(sw>2)) fac_sw=1;
2039 singclap_factorize_retry=0;
2051 l->
m[0].
data=(
void *)f;
2053 l->
m[1].
data=(
void *)v;
2054 res->
data=(
void *)l;
2059 res->
data=(
void *)f;
2072 res->
data=(
void *)p;
2086 while (p!=NULL) { p=p->next;l++; }
2092 L->
m[
l].
data=(
char *)h->d;
2099 res->
data=(
void *)L;
2106 number uu=(number)u->
Data();
2107 number vv=(number)v->
Data();
2115 ideal uu=(ideal)u->
Data();
2116 number vv=(number)v->
Data();
2123 ring
r=(ring)u->
Data();
2132 int par_perm_size=0;
2145 par_perm_size=
rPar(r);
2154 perm=(
int *)
omAlloc0((r->N+1)*
sizeof(int));
2155 if (par_perm_size!=0)
2156 par_perm=(
int *)
omAlloc0(par_perm_size*
sizeof(
int));
2161 char ** r_par_names=
NULL;
2162 if (r->cf->extRing!=
NULL)
2164 r_par=r->cf->extRing->N;
2165 r_par_names=r->cf->extRing->names;
2168 char ** c_par_names=
NULL;
2172 c_par_names=
currRing->cf->extRing->names;
2174 maFindPerm(r->names, r->N, r_par_names, r_par,
2176 perm,par_perm,
currRing->cf->type);
2181 if (par_perm_size!=0)
2191 Print(
"// var nr %d: %s -> %s\n",i,r->names[i],
currRing->names[i]);
2195 Print(
"// par nr %d: %s -> %s\n",
2201 memset(&tmpW,0,
sizeof(
sleftv));
2205 perm,par_perm,par_perm_size,nMap)))
2223 Werror(
"no identity map from %s (%s -> %s)",u->
Fullname(),s1,s2);
2234 char *where=(
char *)u->
Data();
2235 char *what=(
char *)v->
Data();
2236 char *
found = strstr(where,what);
2239 res->
data=(
char *)((found-where)+1);
2252 int uu=(int)(
long)u->
Data();
int vv=(int)(
long)v->
Data();
2253 int p0=
ABS(uu),p1=
ABS(vv);
2261 res->
data=(
char *)(
long)p0;
2266 number n1 = (number) u->
Data();
2267 number n2 = (number) v->
Data();
2273 number
a=(number) u->
Data();
2274 number
b=(number) v->
Data();
2299 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
2300 PrintS(
"// performed for generic fibre, that is, over Q\n");
2306 switch((
int)(long)v->
Data())
2309 res->
data=(
void *)iv;
2334 WerrorS(
"variable must have weight 1");
2356 WerrorS(
"variable must have weight 1");
2363 ideal v_id=(ideal)v->
Data();
2372 currRing->pLexOrder=save_pLexOrder;
2376 if (w!=
NULL)
delete w;
2395 const int n = L->
nr;
assume (n >= 0);
2396 std::vector<ideal> V(n + 1);
2398 for(
int i = n;
i >= 0;
i--) V[
i] = (ideal)(L->
m[
i].
Data());
2449 memset(&h,0,
sizeof(
sleftv));
2480 char *
s=(
char *)u->
Data();
2481 if(strcmp(s,
"with")==0)
2483 if (strcmp(s,
"try")==0)
2485 WerrorS(
"invalid second argument");
2486 WerrorS(
"load(\"libname\" [,option]);");
2508 ideal u_id=(ideal)u->
Data();
2509 ideal v_id=(ideal)v->
Data();
2512 if ((*w_u).compare((w_v))!=0)
2514 WarnS(
"incompatible weights");
2515 delete w_u; w_u=
NULL;
2523 WarnS(
"wrong weights");
2524 delete w_u; w_u=
NULL;
2540 number q=(number)v->
Data();
2551 number q=(number)v->
Data();
2568 char *opt=(
char *)v->
Data();
2580 if(strcmp(l->m->type,
"ASCII")!=0)
2582 Werror(
"ASCII link required, not `%s`",l->m->type);
2587 if ( l->name[0]!=
'\0')
2591 if (v==
NULL) opt=(
const char*)
"i";
2592 else opt=(
const char *)v->
Data();
2599 monitor((FILE *)l->data,mode);
2627 if(err) {
pDelete(&p);
WerrorS(
"no negative exponent allowed"); }
2641 int i=(
int)(long)v->
Data();
2649 Werror(
"par number %d out of range 1..%d",
i,p);
2659 WerrorS(
"basering must NOT be a qring!");
2679 WerrorS(
"basering must NOT be a qring!");
2699 WerrorS(
"basering must NOT be a qring!");
2719 WerrorS(
"basering must NOT be a qring!");
2757 ring
r = (ring)a->
Data();
2766 Werror(
"%s is not an opposite ring to current ring",a->
Fullname());
2772 int argtype =
IDTYP(w);
2779 res->
rtyp = argtype;
2787 res->
rtyp = argtype;
2795 res->
rtyp = argtype;
2808 res->
rtyp = argtype;
2813 WerrorS(
"unsupported type in oppose");
2837 int i=(int)(
long)u->
Data();
2838 int j=(int)(
long)v->
Data();
2839 if (j-i <0) {
WerrorS(
"invalid range for random");
return TRUE;}
2840 res->
data =(
char *)(
long)((i >
j) ? i : (
siRand() % (j-i+1)) +
i);
2846 int isRowEchelon = (int)(
long)v->
Data();
2847 if (isRowEchelon != 1) isRowEchelon = 0;
2848 int rank =
luRank(m, isRowEchelon);
2849 res->
data =(
char *)(
long)rank;
2859 if ((l!=
NULL)&&(l->name!=
NULL)) s=l->name;
2861 Werror(
"cannot read from `%s`",s);
2864 memcpy(res,r,
sizeof(
sleftv));
2870 ideal vi=(ideal)v->
Data();
2878 ideal ui=(ideal)u->
Data();
2879 ideal vi=(ideal)v->
Data();
2888 int maxl=(int)(
long)v->
Data();
2891 WerrorS(
"length for res must not be negative");
2899 ideal u_id=(ideal)u->
Data();
2908 "full resolution in a qring may be infinite, setting max length to %d",
2922 int add_row_shift=0;
2926 add_row_shift = ww->
min_in();
2927 (*ww) -= add_row_shift;
2947 (
"`lres` not implemented for inhomogeneous input or qring");
2959 (
"`kres` not implemented for inhomogeneous input or qring");
2971 (
"`hres` not implemented for inhomogeneous input or qring");
2979 res->
data=(
void *)r;
2983 if (weights!=
NULL) (*w) += add_row_shift;
2999 if (ww!=
NULL) {
delete ww; ww=
NULL; }
3005 int maxl=(int)(
long)v->
Data();
3008 WerrorS(
"length for res must not be negative");
3014 ideal u_id=(ideal)u->
Data();
3023 "full resolution in a qring may be infinite, setting max length to %d",
3037 int add_row_shift=0;
3041 add_row_shift = ww->
min_in();
3042 (*ww) -= add_row_shift;
3058 (
"`lres` not implemented for inhomogeneous input or qring");
3062 WarnS(
"the current implementation of `lres` may not work in the case of a single variable");
3072 (
"`kres` not implemented for inhomogeneous input or qring");
3084 (
"`hres` not implemented for inhomogeneous input or qring");
3087 ideal u_id_copy=
idCopy(u_id);
3089 r=
syHilb(u_id_copy,&dummy);
3095 res->
data=(
void *)r;
3096 if ((weights!=
NULL) && (ww!=
NULL)) {
delete ww; ww=
NULL; }
3100 if (weights!=
NULL) (*ww) += add_row_shift;
3130 n1 = (number)u->
CopyD();
3134 i = (int)(
long)u->
Data();
3142 i = (int)(
long)v->
Data();
3146 res->
data = (
char*)l;
3153 res->
data = (
char *)r;
3156 #define SIMPL_LMDIV 32 3157 #define SIMPL_LMEQ 16 3158 #define SIMPL_MULT 8 3160 #define SIMPL_NULL 2 3161 #define SIMPL_NORM 1 3164 int sw = (int)(
long)v->
Data();
3191 res->
data = (
char * )
id;
3198 int sw=(int)(
long)dummy->
Data();
3201 singclap_factorize_retry=0;
3213 l->
m[0].
data=(
void *)f;
3215 l->
m[1].
data=(
void *)v;
3216 res->
data=(
void *)l;
3221 res->
data=(
void *)f;
3234 res->
data=(
void *)p;
3255 int sw = (int)(
long)v->
Data();
3262 res->
data = (
char * )p;
3270 ideal u_id=(ideal)(u->
Data());
3286 res->
data = (
char *)result;
3295 ideal i1=(ideal)(u->
Data());
3333 res->
data = (
char *)result;
3337 i0=(ideal)v->
CopyD();
3376 res->
data = (
char *)result;
3384 int i=(
int)(long)v->
Data();
3405 int t = (int)(
long)v->
Data();
3415 res->
data = (
void*)(
long)
i;
3430 int timeout = 1000*(int)(
long)v->
Data();
3438 for(
unsigned nfinished = 0; nfinished < ((unsigned)Lforks->
nr)+1; nfinished++)
3463 res->
data = (
void*)(
long)ret;
3471 #define jjWRONG2 (proc2)jjWRONG 3472 #define jjWRONG3 (proc3)jjWRONG 3517 res->
data = (
char *)n;
3522 res->
data = (
char *)(-(
long)u->
Data());
3529 res->
data = (
char *)n;
3547 res->
data = (
char *)iv;
3554 res->
data = (
char *)bim;
3572 l->m[0].data=(
void *)m;
3573 l->m[1].data=(
void *)iv;
3574 res->
data = (
char *)l;
3594 number n=(number)u->
CopyD();
3618 number n=(number) tmp.
data;
3656 res->
data = (
char *)p;
3688 ring
r=(ring)v->
Data();
3694 extern int ipower (
int b,
int n );
3695 elems=
ipower(r->cf->ch,r->cf->extRing->pFDeg(r->cf->extRing->qideal->m[0],r->cf->extRing));
3697 res->
data = (
char *)(
long)elems;
3705 else res->
data=(
char *)-1;
3710 ideal I=(ideal)u->
Data();
3716 res->
data = (
char *)(
long)d;
3725 PrintS(
"// NOTE: computation of degree is being performed for\n");
3726 PrintS(
"// generic fibre, that is, over Q\n");
3745 else if (v->
rtyp!=0) res->
data=(
void *)(-1);
3753 number n =
reinterpret_cast<number
>(v->
Data());
3762 number n =
reinterpret_cast<number
>(v->
Data());
3779 res ->
data = (
char *)p;
3791 Werror(
"det of %d x %d bigintmat",i,j);
3800 number2
r=(number2)
omAlloc0(
sizeof(*r));
3811 Werror(
"det of %d x %d cmatrix",i,j);
3827 Werror(
"det of %d x %d intmat",i,j);
3834 ideal I=(ideal)v->
Data();
3845 res->
data = (
char *)p;
3853 Warn(
"dim(%s) may be wrong because the mixed monomial ordering",v->
Name());
3858 ideal vid = (ideal)v->
Data();
3862 res->
data = (
char *)-1L;
3884 for(
unsigned ii=0;ii<(unsigned)
IDELEMS(vv);ii++)
3893 for(
unsigned jj = 0;jj<(unsigned)
IDELEMS(vc)-1;jj++)
3895 if((vc->m[jj]!=
NULL)
3903 if (j != -1)
pDelete(&vc->m[j]);
3916 res->
data = (
char *)d;
3930 if ((l!=
NULL)&&(l->name!=
NULL)) s=l->name;
3932 Werror(
"cannot dump to `%s`",s);
3941 int co=(int)(
long)v->
Data();
3947 else WerrorS(
"argument of gen must be positive");
3952 char * d = (
char *)v->
Data();
3953 char *
s = (
char *)
omAlloc(strlen(d) + 13);
3954 strcpy( s, (
char *)d);
3955 strcat( s,
"\n;RETURN();\n");
3976 while (p!=
NULL) { p=p->next;l++; }
3981 L->
m[
l].
data=(
char *)h->d;
3992 WarnS(
"no factorization implemented");
3996 res->
data=(
void *)L;
4002 singclap_factorize_retry=0;
4009 l->
m[0].
data=(
void *)f;
4011 l->
m[1].
data=(
void *)v;
4012 res->
data=(
void *)l;
4021 if ((l!=
NULL)&&(l->name!=
NULL)) s=l->name;
4023 Werror(
"cannot get dump from `%s`",s);
4032 ideal I=(ideal)v->
Data();
4041 ideal I=(ideal)v->
Data();
4055 WerrorS(
"module must be zero-dimensional");
4056 if (delete_w)
delete w;
4079 if (delete_w)
delete w;
4080 res->
data=(
void *)po;
4088 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
4089 PrintS(
"// performed for generic fibre, that is, over Q\n");
4103 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
4104 PrintS(
"// performed for generic fibre, that is, over Q\n");
4113 ideal v_id=(ideal)v->
Data();
4121 char *s_isHomog=
omStrDup(
"isHomog");
4127 else if (w!=
NULL)
delete w;
4164 res->
data=(
char *)mat;
4174 res->
data=(
char *)I;
4181 ring q=(ring)v->
Data();
4184 if (q->qideal==
NULL)
4191 WerrorS(
"can only get ideal from identical qring");
4217 WarnS(
"interred: this command is experimental over the integers");
4236 res->
data = (
char *)0;
4246 i->m[k-1]=
pDiff(p,k);
4248 res->
data = (
char *)i;
4255 WerrorS(
"differentiation not defined in the coefficient ring");
4258 number n = (number) u->
Data();
4259 number
k = (number) v->
Data();
4272 ideal
id = (ideal)a->
Data();
4277 poly *
p = result->m;
4279 for(
int v = 1; v <=
currRing->N; v++ )
4282 for(
int i = 0;
i < W;
i++, p++, q++ )
4283 *p =
pDiff( *q, v );
4287 res->
data = (
char *)result;
4334 res->
data=(
char *)iv;
4348 res->
data = (
char*) lm;
4360 res->
data=(
char *)r;
4368 memset(&tmp, 0,
sizeof(tmp));
4384 WerrorS(
"matrix must be constant");
4398 res->
data=(
char*)ll;
4409 switch(((
int)(
long)v->
Data()))
4424 res->
data = (
char *)0;
4428 res->
data = (
char *)0;
4443 l->m[0].data=(
char *)r;
4446 l->m[1].data=(
char *)m;
4447 res->
data=(
char *)l;
4463 res->
data=(
char *)tmp;
4472 number n,
i; i=(number)v->
Data();
4477 res->
data=(
void *)n;
4501 res->
data=(
char*)(
long)((long)v->
Data()==0 ? 1 : 0);
4506 res->
data = (
char *)(
long)(((ring)(v->
Data()))->N);
4523 int i=(int)(
long)v->
Data();
4526 if ((0<i) && (i<=p))
4532 Werror(
"par number %d out of range 1..%d",i,p);
4539 number nn=(number)v->
Data();
4550 int i=(int)(
long)v->
Data();
4556 Werror(
"par number %d out of range 1..%d",i,p);
4567 WerrorS(
"poly must be constant");
4576 res->
data=(
void *)n;
4587 WerrorS(
"poly must be constant");
4602 res->
data = (
char *)(
long)(i > 1 ?
i : 2);
4608 ideal v_id=(ideal)v->
Data();
4613 WarnS(
"wrong weights");
4642 res->
data = (
char *)n;
4647 char *
s= (
char *)v->
Data();
4651 if (strcmp(s, sArithBase.
sCmds[
i].name) == 0)
4653 res->
data = (
char *)1;
4664 res->
data =(
char *)(
long)rank;
4683 ring
r=(ring)v->
Data();
4697 ring
r=(ring)v->
Data();
4704 ideal
i = (ideal)v->
Data();
4705 res->
data = (
char *)i->rank;
4728 const bool bIsSCA =
false;
4733 WerrorS(
"qring not supported by slimgb at the moment");
4738 WerrorS(
"ordering must be global for slimgb");
4743 ideal u_id=(ideal)u->
Data();
4748 WarnS(
"wrong weights");
4770 ideal v_id=(ideal)v->
Data();
4777 WarnS(
"wrong weights");
4788 res->
data = (
char *)result;
4796 ideal v_id=(ideal)v->
Data();
4803 WarnS(
"wrong weights");
4814 res->
data = (
char *)result;
4822 ideal v_id=(ideal)v->
Data();
4829 WarnS(
"wrong weights");
4840 res->
data = (
char *)result;
4848 ideal v_id=(ideal)v->
Data();
4855 WarnS(
"wrong weights");
4866 res->
data = (
char *)result;
4878 singclap_factorize_retry=0;
4886 l->
m[0].
data=(
void *)f;
4888 l->
m[1].
data=(
void *)v;
4889 res->
data=(
void *)l;
4897 if (w!=
NULL)
delete w;
4906 ideal v_id=(ideal)v->
Data();
4908 int add_row_shift=0;
4912 add_row_shift=w->
min_in();
4913 (*w)-=add_row_shift;
4949 ring
r = (ring)a->
Data();
4957 WarnS(
"opposite only for global orderings");
4964 ring
r = (ring)a->
Data();
4985 int t=(int)(
long)v->
data;
5033 int i=(int)(
long)v->
Data();
5034 if ((0<i) && (i<=currRing->
N))
5039 res->
data=(
char *)p;
5055 int i=(int)(
long)v->
Data();
5056 if ((0<i) && (i<=currRing->
N))
5083 res->
data = (
void*)(
long)
i;
5096 for(
int nfinished = 0; nfinished < Lforks->
nr+1; nfinished++)
5112 res->
data = (
void*)(
long)
j;
5122 #ifdef HAVE_DYNAMIC_LOADING 5129 Werror(
"%s: unknown type", s);
5132 Werror(
"cannot open %s", s);
5147 Werror(
"can not create package `%s`",plib);
5151 package savepack=currPack;
5154 char libnamebuf[1024];
5167 #ifdef HAVE_DYNAMIC_LOADING 5170 WerrorS(
"Dynamic modules are not supported by this version of Singular");
5179 WerrorS_dummy_cnt++;
5185 WerrorS_dummy_cnt=0;
5188 Print(
"loading of >%s< failed\n",s);
5196 res->
data = (
char *)strlen((
char *)v->
Data());
5294 number n=(number)u->
CopyD();
5301 number n=(number)u->
Data();
5310 char *s= (
char *)u->
Data();
5311 int r = (int)(
long)v->
Data();
5312 int c = (int)(
long)w->
Data();
5315 if ( (r<1) || (r>l) || (c<0) )
5321 sprintf((
char *)res->
data,
"%-*.*s",c,c,s+r-1);
5327 int r = (int)(
long)v->
Data();
5328 int c = (int)(
long)w->
Data();
5329 if ((r<1)||(r>iv->
rows())||(c<1)||(c>iv->
cols()))
5331 Werror(
"wrong range[%d,%d] in intmat %s(%d x %d)",
5340 if (u->
e==
NULL) res->
e=e;
5344 while (h->next!=
NULL) h=h->next;
5354 int r = (int)(
long)v->
Data();
5355 int c = (int)(
long)w->
Data();
5356 if ((r<1)||(r>bim->
rows())||(c<1)||(c>bim->
cols()))
5358 Werror(
"wrong range[%d,%d] in bigintmat %s(%d x %d)",
5372 while (h->next!=
NULL) h=h->next;
5382 int r = (int)(
long)v->
Data();
5383 int c = (int)(
long)w->
Data();
5387 Werror(
"wrong range[%d,%d] in matrix %s(%d x %d)",r,c,u->
Fullname(),
5401 while (h->next!=
NULL) h=h->next;
5419 WerrorS(
"cannot build expression lists from unnamed objects");
5422 memcpy(&ut,u,
sizeof(ut));
5423 memset(&t,0,
sizeof(t));
5425 for (l=0;l< iv->
length(); l++)
5427 t.
data=(
char *)(
long)((*iv)[
l]);
5437 memcpy(u,&ut,
sizeof(ut));
5469 WerrorS(
"cannot build expression lists from unnamed objects");
5472 memcpy(&ut,u,
sizeof(ut));
5473 memset(&t,0,
sizeof(t));
5475 for (l=0;l< iv->
length(); l++)
5477 t.
data=(
char *)(
long)((*iv)[
l]);
5487 memcpy(u,&ut,
sizeof(ut));
5520 WerrorS(
"cannot build expression lists from unnamed objects");
5523 memcpy(&ut,u,
sizeof(ut));
5524 memset(&t1,0,
sizeof(
sleftv));
5525 memset(&t2,0,
sizeof(
sleftv));
5528 for (vl=0;vl< vv->
length(); vl++)
5530 t1.
data=(
char *)(
long)((*vv)[vl]);
5531 for (wl=0;wl< wv->
length(); wl++)
5533 t2.
data=(
char *)(
long)((*wv)[wl]);
5543 memcpy(u,&ut,
sizeof(ut));
5563 memset(w,0,
sizeof(
sleftv));
5570 memset(v,0,
sizeof(
sleftv));
5573 memset(w,0,
sizeof(
sleftv));
5583 int k=(int)(
long)w->
Data();
5590 l->
m[0].
data=(
void *)m;
5591 l->
m[1].
data=(
void *)iv;
5598 l->
m[0].
data=(
void *)m;
5600 res->
data = (
char *)l;
5607 WerrorS(
"3rd argument must be a name of a matrix");
5610 ideal
i=(ideal)u->
Data();
5611 int rank=(int)i->rank;
5627 WerrorS(
"3rd argument must be a name of a matrix");
5635 memset(&t,0,
sizeof(t));
5665 int n=(int)(
long)w->
Data();
5666 char *where=(
char *)u->
Data();
5667 char *what=(
char *)v->
Data();
5669 if ((1>n)||(n>(
int)strlen(where)))
5671 Werror(
"start position %d out of range",n);
5674 found = strchr(where+n-1,*what);
5675 if (*(what+1)!=
'\0')
5677 while((found !=
NULL) && (strncmp(found+1,what+1,strlen(what+1))!=0))
5679 found=strchr(found+1,*what);
5684 res->
data=(
char *)((found-where)+1);
5690 if ((
int)(
long)w->
Data()==0)
5702 Werror(
"weight vector must have size %d, not %d",
5709 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
5710 PrintS(
"// performed for generic fibre, that is, over Q\n");
5716 switch((
int)(long)v->
Data())
5719 res->
data=(
void *)iv;
5745 WerrorS(
"variable must have weight 1");
5763 WerrorS(
"variable must have weight 1");
5774 (*im)[
i] = (*arg)[
i];
5777 res->
data = (
char *)im;
5791 WerrorS(
"2nd argument must be a unit");
5807 WerrorS(
"2nd argument must be a diagonal matrix of units");
5870 const int mk = (
const int)(
long)u->
Data();
5871 bool noIdeal =
true;
bool noK =
true;
bool noAlgorithm =
true;
5872 bool noCacheMinors =
true;
bool noCacheMonomials =
true;
5873 ideal IasSB;
int k;
char* algorithm;
int cacheMinors;
int cacheMonomials;
5889 noAlgorithm =
false;
5894 noCacheMinors =
false;
5900 noCacheMonomials =
false;
5914 noAlgorithm =
false;
5919 noCacheMinors =
false;
5924 noCacheMonomials =
false;
5931 algorithm = (
char*)u->
next->
Data();
5932 noAlgorithm =
false;
5936 noCacheMinors =
false;
5941 noCacheMonomials =
false;
5949 if (strcmp(algorithm,
"bareiss") == 0)
5950 algorithm = (
char*)
"Bareiss";
5951 if (strcmp(algorithm,
"laplace") == 0)
5952 algorithm = (
char*)
"Laplace";
5953 if (strcmp(algorithm,
"cache") == 0)
5954 algorithm = (
char*)
"Cache";
5963 if ((!noK) && (k == 0))
5965 WerrorS(
"Provided number of minors to be computed is zero.");
5968 if ((!noAlgorithm) && (strcmp(algorithm,
"Bareiss") != 0)
5969 && (strcmp(algorithm,
"Laplace") != 0)
5970 && (strcmp(algorithm,
"Cache") != 0))
5972 WerrorS(
"Expected as algorithm one of 'B/bareiss', 'L/laplace', or 'C/cache'.");
5975 if ((!noAlgorithm) && (strcmp(algorithm,
"Bareiss") == 0)
5978 Werror(
"Bareiss algorithm not defined over coefficient rings %s",
5979 "with zero divisors.");
5983 if ((mk < 1) || (mk > m->
rows()) || (mk > m->
cols()))
5992 if ((!noAlgorithm) && (strcmp(algorithm,
"Cache") == 0)
5993 && (noCacheMinors || noCacheMonomials))
5996 cacheMonomials = 100000;
6002 (noIdeal ? 0 : IasSB),
false);
6003 else if (strcmp(algorithm,
"Cache") == 0)
6005 (noIdeal ? 0 : IasSB), 3, cacheMinors,
6006 cacheMonomials,
false);
6009 (noIdeal ? 0 : IasSB),
false);
6019 (
const char *)w->
Data());
6033 WerrorS(
"2nd/3rd arguments must have names");
6037 const char *ring_name=u->
Name();
6044 if ((preim_ring==
NULL)
6047 Werror(
"preimage ring `%s` is not the basering",mapping->preimage);
6063 Werror(
"`%s` is not defined in `%s`",v->
name,ring_name);
6067 if (kernel_cmd) image=
idInit(1,1);
6084 Werror(
"`%s` is not defined in `%s`",w->
name,ring_name);
6091 WarnS(
"preimage in local qring may be wrong: use Ring::preimageLoc instead");
6100 int i=(int)(
long)u->
Data();
6101 int r=(int)(
long)v->
Data();
6102 int c=(int)(
long)w->
Data();
6103 if ((r<=0) || (c<=0))
return TRUE;
6114 for (k=0; k<iv->
length(); k++)
6116 (*iv)[
k] = ((
siRand() % di) - i);
6119 res->
data = (
char *)iv;
6127 if ((cf==
NULL) ||(cf->cfRandom==
NULL))
6129 Werror(
"no random function defined for coeff %d",cf->type);
6135 number2 nn=(number2)
omAlloc(
sizeof(*nn));
6145 int &ringvar,
poly &monomexpr)
6152 Werror(
"`%s` substitutes a ringvar only by a term",
6157 if ((ringvar=
pVar(p))==0)
6166 WerrorS(
"ringvar/par expected");
6177 if (nok)
return TRUE;
6203 if (nok)
return TRUE;
6204 ideal
id=(ideal)u->
Data();
6208 if (monomexpr!=
NULL)
6223 Warn(
"possible OVERFLOW in subst, max exponent is %ld",
currRing->bitmask/2);
6253 memset(&tmp,0,
sizeof(tmp));
6262 int mi=(int)(
long)v->
Data();
6263 int ni=(int)(
long)w->
Data();
6266 Werror(
"converting ideal to matrix: dimensions must be positive(%dx%d)",mi,ni);
6277 memcpy(m->
m,I->m,i*
sizeof(
poly));
6278 memset(I->m,0,i*
sizeof(
poly));
6280 res->
data = (
char *)m;
6285 int mi=(int)(
long)v->
Data();
6286 int ni=(int)(
long)w->
Data();
6289 Werror(
"converting module to matrix: dimensions must be positive(%dx%d)",mi,ni);
6298 int mi=(int)(
long)v->
Data();
6299 int ni=(int)(
long)w->
Data();
6302 Werror(
"converting matrix to matrix: dimensions must be positive(%dx%d)",mi,ni);
6319 res->
data = (
char *)m;
6343 &(hw->data.uideal));
6352 Werror(
"`%s` must be 0-dimensional",v->
Name());
6364 Werror(
"`%s` must be 0-dimensional",v->
Name());
6375 0,(int)(
long)w->
Data());
6382 0,(int)(
long)w->
Data());
6388 int maxl=(int)v->
Data();
6389 ideal u_id=(ideal)u->
Data();
6405 WarnS(
"wrong weights");
6433 yes = (strcmp((
char *) res->
data, (
char *) w->
Data()) == 0);
6435 res->
data = (
void *)(
long)yes;
6449 ideal u_id=(ideal)(u->
Data());
6454 WarnS(
"wrong weights");
6471 res->
data = (
char *)result;
6557 WarnS(
"<module>,<module>,<int>[,<intvec>] expected!");
6564 ideal
P=(ideal)w1.
Data();
6565 ideal
Q=(ideal)w2.
Data();
6567 int n=(int)(
long)v3->
Data();
6574 while( (i > 0) && ((*w0) > 0) )
6580 WarnS(
"not all weights are positive!");
6594 L->
m[1].
rtyp=v1->Typ();
6599 L->
m[1].
data=(
void *)R->m[0];
6608 L->
m[1].
data=(
void *)R;
6611 L->
m[0].
data=(
char *)T;
6677 number
b=(number)h->
Data();
6733 res->
data=(
char *)
id;
6738 ring
r=(ring)u->
Data();
6746 WerrorS(
"fetch(<ring>,<name>[,<intvec>[,<intvec>])");
6751 if (perm_par_l!=
NULL)
6760 int par_perm_size=0;
6773 par_perm_size=
rPar(r);
6781 par_perm_size=
rPar(r);
6783 if (par_perm_size!=0)
6784 par_perm=(
int *)
omAlloc0(par_perm_size*
sizeof(
int));
6786 if (perm_par_l==
NULL)
6788 if (par_perm_size!=0)
6793 if (par_perm_size==0)
WarnS(
"source ring has no parameters");
6796 for(i=
rPar(r)-1;i>=0;i--)
6798 if (i<perm_par_v->length()) par_perm[
i]=(*perm_par_v)[
i];
6802 Warn(
"invalid entry for par %d: %d\n",i,par_perm[i]);
6808 for(i=
rVar(r)-1;i>=0;i--)
6810 if (i<perm_var_v->length()) perm[i+1]=(*perm_var_v)[
i];
6814 Warn(
"invalid entry for var %d: %d\n",i,perm[i]);
6823 Print(
"// var nr %d: %s -> var %s\n",i,r->names[i-1],
currRing->names[perm[i]-1]);
6829 if (par_perm[i-1]<0)
6830 Print(
"// par nr %d: %s -> par %s\n",
6832 else if (par_perm[i-1]>0)
6833 Print(
"// par nr %d: %s -> var %s\n",
6839 memset(&tmpW,0,
sizeof(
sleftv));
6843 perm,par_perm,par_perm_size,nMap)))
6861 Werror(
"no identity map from %s (%s -> %s)",u->
Fullname(),s1,s2);
6899 WerrorS(
"cannot convert to ideal or module");
6910 r[
i]=(ideal)h->
Data();
6922 r[
i]=(ideal)tmp.
Data();
6954 matrix iMat;
int invertible;
6960 int rr = aMat->
rows();
6961 int cc = aMat->
cols();
6964 Werror(
"given matrix (%d x %d) is not quadratic, hence not invertible", rr, cc);
6969 WerrorS(
"matrix must be constant");
6979 int rr = uMat->
rows();
6980 int cc = uMat->
cols();
6983 Werror(
"third matrix (%d x %d) is not quadratic, hence not invertible",
6992 WerrorS(
"matricesx must be constant");
6999 Werror(
"expected either one or three matrices");
7017 res->
data=(
char*)ll;
7041 WerrorS(
"expected exactly three matrices and one vector as input");
7051 Werror(
"first matrix (%d x %d) is not quadratic",
7057 Werror(
"second matrix (%d x %d) is not quadratic",
7063 Werror(
"second matrix (%d x %d) and third matrix (%d x %d) do not fit",
7069 Werror(
"third matrix (%d x %d) and vector (%d x 1) do not fit",
7078 WerrorS(
"matrices must be constant");
7098 res->
data=(
char*)ll;
7112 (*iv)[
i]=(int)(
long)h->
Data();
7131 res->
data=(
char *)iv;
7148 WerrorS(
"2nd argument must be a unit");
7161 WerrorS(
"2nd argument must be a diagonal matrix of units");
7166 (
int)(long)u3->
Data(),
7175 Werror(
"%s(`poly`,`poly`,`int`,`intvec`) exppected",
7211 memset(res,0,
sizeof(
sleftv));
7220 && ((strcmp(u->
Name(),
"real")==0) || (strcmp(u->
Name(),
"complex")==0)))
7222 memcpy(res,u,
sizeof(
sleftv));
7223 memset(u,0,
sizeof(
sleftv));
7241 Werror(
"`int` expected while building `%s(`",u->
name);
7246 sprintf(nn,
"%s(%d",u->
name,(
int)(
long)v->
Data());
7250 while (*s!=
'\0') s++;
7254 Werror(
"`int` expected while building `%s`",nn);
7258 sprintf(s,
",%d",(
int)(
long)v->
Data());
7260 while (*s!=
'\0') s++;
7276 int add_row_shift = 0;
7278 if (weights!=
NULL) add_row_shift=weights->
min_in();
7311 ((ring)L->
m[i].
data)->ref++;
7317 res->
data=(
char *)L;
7364 WerrorS(
"2nd argument must be a diagonal matrix of units");
7372 (
int)(long)u4->
Data()
7383 WerrorS(
"2nd argument must be a unit");
7412 WerrorS(
"2nd argument must be a diagonal matrix of units");
7420 (
int)(long)u4->
Data(),
7432 WerrorS(
"2nd argument must be a unit");
7443 Werror(
"%s(`ideal`,`ideal`,`matrix`,`int`,`intvec`) exppected",
7451 unsigned nCount = (sArithBase.
nCmdUsed-1)/3;
7452 if((3*nCount)<sArithBase.
nCmdUsed) nCount++;
7455 for(i=0; i<nCount; i++)
7459 Print(
"%-20s",sArithBase.
sCmds[i+1+nCount].name);
7460 if(i+1+2*nCount<sArithBase.
nCmdUsed)
7461 Print(
"%-20s",sArithBase.
sCmds[i+1+2*nCount].name);
7483 char** slist = (
char**)
omAlloc(n*
sizeof(
char*));
7486 for (i=0, j=0; i<n; i++, v = v ->
next)
7488 slist[
i] = v->String();
7490 j+=strlen(slist[i]);
7492 char* s = (
char*)
omAlloc((j+1)*
sizeof(char));
7496 strcat(s, slist[i]);
7516 #if defined(__alpha) && !defined(linux) 7519 void usleep(
unsigned long usec);
7548 leftv u =
v;
int factorsGiven = 0;
7551 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
7558 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
7561 else d = (int)(
long)u->
Data();
7567 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
7582 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
7587 xIndex = (int)(
long)u->
Data();
7588 yIndex = (int)(
long)u->
next->
Data();
7594 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
7601 WerrorS(
"expected non-constant polynomial argument(s)");
7605 if ((xIndex < 1) || (n < xIndex))
7607 Werror(
"index for variable x (%d) out of range [1..%d]", xIndex, n);
7610 if ((yIndex < 1) || (n < yIndex))
7612 Werror(
"index for variable y (%d) out of range [1..%d]", yIndex, n);
7615 if (xIndex == yIndex)
7617 WerrorS(
"expected distinct indices for variables x and y");
7622 if (factorsGiven == 0)
7636 WerrorS(
"expected h(0,y) to have exactly two distinct monic factors");
7651 res->
data = (
char*)L;
7662 #if defined(HAVE_USLEEP) 7663 if (((
long) res->
data) == 0L)
7672 #elif defined(HAVE_SLEEP) 7673 if (((
int) res->
data) == 0)
7678 si_sleep((is - 1)/1000000 + 1);
7697 if ((rest!=
NULL) && (!b))
7702 memset(&tmp_res,0,
sizeof(tmp_res));
7704 memcpy(res,&tmp_res,
sizeof(tmp_res));
7719 WerrorS(
"expected (matrix, number, number, number) as arguments");
7724 (number)(v->
Data()),
7725 (number)(w->
Data()),
7726 (number)(x->
Data()));
7736 ideal i1=(ideal)(u->
Data());
7742 WerrorS(
"expected `std(`ideal/module`,`poly/vector`,`intvec`,`intvec`)");
7762 i0=(ideal)v->
Data();
7766 WerrorS(
"expected `std(`ideal/module`,`poly/vector`,`intvec`,`intvec`)");
7783 WarnS(
"wrong weights");
7806 res->
data = (
char *)result;
7817 WerrorS(
"expected `cring` [ `id` ... ]");
7823 char **n=(
char**)
omAlloc0(N*
sizeof(
char*));
7824 for(
int i=0;
i<
N;
i++,names=names->
next)
7826 n[
i]=(
char *)names->Name();
7838 r->start =(int)(
long)e->
Data();
7842 #define NULL_VAL NULL 7846 #include "iparith.inc" 7858 memset(res,0,
sizeof(
sleftv));
7865 while (dA2[i].
cmd==op)
7867 if ((at==dA2[i].arg1)
7868 && (bt==dA2[i].arg2))
7885 if ((call_failed=dA2[i].
p(res,a,b)))
7905 while (dA2[i].
cmd==op)
7930 failed= ((
iiConvert(at,dA2[i].arg1,ai,a,an))
7932 || (call_failed=dA2[i].
p(res,an,bn)));
7971 Werror(
"`%s` is not defined",s);
7978 Werror(
"%s(`%s`,`%s`) failed" 7983 Werror(
"`%s` %s `%s` failed" 7988 while (dA2[i].
cmd==op)
7990 if(((at==dA2[i].arg1)||(bt==dA2[i].arg2))
7995 Werror(
"expected %s(`%s`,`%s`)" 7998 Werror(
"expected `%s` %s `%s`" 8027 memset(res,0,
sizeof(
sleftv));
8036 memcpy(&d->arg1,a,
sizeof(
sleftv));
8038 memcpy(&d->arg2,b,
sizeof(
sleftv));
8042 res->
data=(
char *)d;
8055 if (!bb->blackbox_Op2(op,res,a,b))
return FALSE;
8061 else if ((bt>
MAX_TOK)&&(op!=
'('))
8066 if(!bb->blackbox_Op2(op,res,a,b))
return FALSE;
8086 memset(res,0,
sizeof(
sleftv));
8094 while (dA1[i].
cmd==op)
8113 if ((call_failed=dA1[i].
p(res,a)))
8133 while (dA1[i].
cmd==op)
8156 failed= ((
iiConvert(at,dA1[i].arg,ai,a,an,dConvertTypes))
8157 || (call_failed=dA1[i].
p(res,an)));
8199 while (dA1[i].
cmd==op)
8203 Werror(
"expected %s(`%s`)" 8217 memset(res,0,
sizeof(
sleftv));
8226 memcpy(&d->arg1,a,
sizeof(
sleftv));
8230 res->
data=(
char *)d;
8243 res->
data=bb->blackbox_Init(bb);
8244 if(!bb->blackbox_Assign(res,a))
return FALSE;
8254 if(!bb->blackbox_Op1(op,res,a))
return FALSE;
8274 const struct sValCmd3* dA3,
int at,
int bt,
int ct,
8277 memset(res,0,
sizeof(
sleftv));
8286 while (dA3[i].
cmd==op)
8288 if ((at==dA3[i].arg1)
8289 && (bt==dA3[i].arg2)
8290 && (ct==dA3[i].arg3))
8298 Print(
"call %s(%s,%s,%s)\n",
8300 if ((call_failed=dA3[i].
p(res,a,b,c)))
8321 while (dA3[i].
cmd==op)
8337 Print(
"call %s(%s,%s,%s)\n",
8340 failed= ((
iiConvert(at,dA3[i].arg1,ai,a,an,dConvertTypes))
8341 || (
iiConvert(bt,dA3[i].arg2,bi,b,bn,dConvertTypes))
8342 || (
iiConvert(ct,dA3[i].arg3,ci,c,cn,dConvertTypes))
8343 || (call_failed=dA3[i].
p(res,an,bn,cn)));
8395 Werror(
"`%s` is not defined",s);
8401 Werror(
"%s(`%s`,`%s`,`%s`) failed" 8405 while (dA3[i].
cmd==op)
8407 if(((at==dA3[i].arg1)
8409 ||(ct==dA3[i].arg3))
8412 Werror(
"expected %s(`%s`,`%s`,`%s`)" 8432 memset(res,0,
sizeof(
sleftv));
8441 memcpy(&d->arg1,a,
sizeof(
sleftv));
8443 memcpy(&d->arg2,b,
sizeof(
sleftv));
8445 memcpy(&d->arg3,c,
sizeof(
sleftv));
8449 res->
data=(
char *)d;
8461 if(!bb->blackbox_Op3(op,res,a,b,c))
return FALSE;
8510 if(v==
NULL)
return failed;
8522 memset(res,0,
sizeof(
sleftv));
8532 res->
data=(
char *)d;
8537 memcpy(&d->arg1,a,
sizeof(
sleftv));
8572 if(!bb->blackbox_OpM(op,res,a))
return FALSE;
8586 if ((args==
dArithM[i].number_of_args)
8587 || (
dArithM[i].number_of_args==-1)
8588 || ((
dArithM[i].number_of_args==-2)&&(args>0)))
8617 Werror(
"%s(...) failed",s);
8639 if (strcmp(n, sArithBase.
sCmds[an].name) == 0)
8644 else if ((an!=en) && (strcmp(n, sArithBase.
sCmds[en].name) == 0))
8657 if (*n < *(sArithBase.
sCmds[i].name))
8661 else if (*n > *(sArithBase.
sCmds[i].name))
8667 int v=strcmp(n,sArithBase.
sCmds[i].name);
8683 tok=sArithBase.
sCmds[
i].tokval;
8684 if(sArithBase.
sCmds[i].alias==2)
8686 Warn(
"outdated identifier `%s` used - please change your code",
8687 sArithBase.
sCmds[i].name);
8688 sArithBase.
sCmds[
i].alias=1;
8725 return sArithBase.
sCmds[
i].toktype;
8737 if (op==dArithTab[p].
cmd)
return dArithTab[
p].start;
8738 if (op<dArithTab[p].cmd) e=p-1;
8754 return sArithBase.
sCmds[0].name;
8756 if (tok==
ANY_TYPE)
return "any_type";
8757 if (tok==
COMMAND)
return "command";
8758 if (tok==
NONE)
return "nothing";
8765 if (tok==
IDHDL)
return "identifier";
8768 for(i=0; i<sArithBase.
nCmdUsed; i++)
8771 if ((sArithBase.
sCmds[i].tokval == tok)&&
8772 (sArithBase.
sCmds[i].alias==0))
8774 return sArithBase.
sCmds[
i].name;
8778 for(i=0; i<sArithBase.
nCmdUsed; i++)
8780 if (sArithBase.
sCmds[i].tokval == tok)
8782 return sArithBase.
sCmds[
i].name;
8785 return sArithBase.
sCmds[0].name;
8801 cmdnames *pCmdL = (cmdnames*)a;
8802 cmdnames *pCmdR = (cmdnames*)b;
8807 if(pCmdL->name==
NULL)
return 1;
8808 if(pCmdR->name==
NULL)
return -1;
8811 if(strcmp(pCmdL->name,
"$INVALID$")==0)
return -1;
8812 if(strcmp(pCmdR->name,
"$INVALID$")==0)
return 1;
8815 if (pCmdL->tokval==-1)
8817 if (pCmdR->tokval==-1)
8818 return strcmp(pCmdL->name, pCmdR->name);
8823 if(pCmdR->tokval==-1)
return -1;
8825 return strcmp(pCmdL->name, pCmdR->name);
8839 memset(&sArithBase, 0,
sizeof(sArithBase));
8882 if (strcmp(szName, sArithBase.
sCmds[an].name) == 0)
8887 else if (strcmp(szName, sArithBase.
sCmds[en].name) == 0)
8899 if (*szName < *(sArithBase.
sCmds[i].name))
8903 else if (*szName > *(sArithBase.
sCmds[i].name))
8909 v=strcmp(szName,sArithBase.
sCmds[i].name);
8933 if(nPos<0)
return NULL;
8935 return sArithBase.
sCmds[nPos].name;
8942 if(szName==
NULL)
return -1;
8945 if(nIndex<0 || nIndex>=(
int)sArithBase.
nCmdUsed)
8947 Print(
"'%s' not found (%d)\n", szName, nIndex);
8952 qsort(sArithBase.
sCmds, sArithBase.
nCmdUsed,
sizeof(cmdnames),
8982 sArithBase.
sCmds[nPos].alias = nAlias;
8983 sArithBase.
sCmds[nPos].tokval = nTokval;
8984 sArithBase.
sCmds[nPos].toktype = nToktype;
8990 if(szName==
NULL)
return -1;
8994 Print(
"'%s' already exists at %d\n", szName, nIndex);
9013 qsort(sArithBase.
sCmds, sArithBase.
nCmdUsed,
sizeof(cmdnames),
9032 WerrorS(
"not implemented for non-commutative rings");
9035 else if ((p & PLURAL_MASK)==2 )
9048 WerrorS(
"not implemented for rings with rings as coeffients");
9055 WerrorS(
"domain required as coeffients");
9061 WarnS(
"considering the image in Q[...]");
9073 int return_type=c->
m[0].
Typ();
9089 for (
unsigned i=0;
i<=(unsigned)c->
nr;
i++)
9094 if (bo) {
Werror(
"chinrem failed for list entry %d",
i+1);
break;}
9104 WerrorS(
"poly/ideal/module/matrix/list expected");
9121 ideal *
x=(ideal *)
omAlloc(rl*
sizeof(ideal));
9127 for(i=rl-1;i>=0;i--)
9129 if (c->
m[i].
Typ()!=return_type)
9154 xx=(number *)
omAlloc(rl*
sizeof(number));
9155 for(i=rl-1;i>=0;i--)
9167 Werror(
"bigint expected at pos %d",i+1);
9174 number *q=(number *)
omAlloc(rl*
sizeof(number));
9177 for(i=rl-1;i>=0;i--)
9184 for(i=rl-1;i>=0;i--)
9196 Werror(
"bigint expected at pos %d",i+1);
9212 res->
data=(
char *)n;
9220 res->
data=(
char *)result->m[0];
9225 res->
data=(
char *)result;
9227 for(i=rl-1;i>=0;i--)
9232 res->
rtyp=return_type;
9233 return result==
NULL;
9242 for (
unsigned i=0;
i<=(unsigned)c->
nr;
i++)
9247 if (bo) {
Werror(
"farey failed for list entry %d",
i+1);
break;}
9260 if (at < bt)
return -1;
9261 if (at > bt)
return 1;
9262 int tab_pos=
iiTabIndex(dArithTab2,JJTAB2LEN,
'<');
9264 memset(&tmp,0,
sizeof(
sleftv));
9270 unsigned long ad=(
unsigned long)a->
Data();
9271 unsigned long bd=(
unsigned long)b->
Data();
9272 if (ad<bd)
return -1;
9273 else if (ad==bd)
return 0;
9284 unsigned long ad=(
unsigned long)a->
Data();
9285 unsigned long bd=(
unsigned long)b->
Data();
9286 if (ad<bd)
return -1;
9287 else if (ad==bd)
return 0;
9318 for(j=i; j<len;j++) l->
m[j]=l->
m[j+1];
9319 memset(&(l->
m[len]),0,
sizeof(
sleftv));
BOOLEAN rHasLocalOrMixedOrdering(const ring r)
static BOOLEAN jjINTMAT3(leftv res, leftv u, leftv v, leftv w)
#define idPosConstant(I)
index of generator with leading term in ground ring (if any); otherwise -1
int compare(const intvec *o) const
static FORCE_INLINE number n_Sub(number a, number b, const coeffs r)
return the difference of 'a' and 'b', i.e., a-b
int iiInitArithmetic()
initialisation of arithmetic structured data
matrix idDiff(matrix i, int k)
static BOOLEAN jjBREAK0(leftv, leftv)
static BOOLEAN jjPLUS_I(leftv res, leftv u, leftv v)
static BOOLEAN jjE(leftv res, leftv v)
static BOOLEAN jjPAR1(leftv res, leftv v)
static BOOLEAN jjRANK2(leftv res, leftv u, leftv v)
static BOOLEAN jjIDEAL_PL(leftv res, leftv v)
poly pOppose(ring Rop_src, poly p, const ring Rop_dst)
opposes a vector p from Rop to currRing (dst!)
ideal singclap_sqrfree(poly f, intvec **v, int with_exps, const ring r)
static void jjEQUAL_REST(leftv res, leftv u, leftv v)
CanonicalForm map(const CanonicalForm &primElem, const Variable &alpha, const CanonicalForm &F, const Variable &beta)
map from to such that is mapped onto
static BOOLEAN jjDET_S(leftv res, leftv v)
BOOLEAN yyInRingConstruction
ideal scKBase(int deg, ideal s, ideal Q, intvec *mv)
static BOOLEAN jjPLUSMINUS_Gen(leftv res, leftv u, leftv v)
ideal getMinorIdeal(const matrix mat, const int minorSize, const int k, const char *algorithm, const ideal iSB, const bool allDifferent)
Returns the specified set of minors (= subdeterminantes) of the given matrix.
static BOOLEAN jjTIMES_ID(leftv res, leftv u, leftv v)
static FORCE_INLINE number n_IntMod(number a, number b, const coeffs r)
for r a field, return n_Init(0,r) always: n_Div(a,b,r)*b+n_IntMod(a,b,r)==a n_IntMod(a,b,r) >=0
matrix mp_CoeffProc(poly f, poly vars, const ring R)
static FORCE_INLINE number n_GetNumerator(number &n, const coeffs r)
return the numerator of n (if elements of r are by nature not fractional, result is n) ...
static BOOLEAN jjBI2IM(leftv res, leftv u)
static BOOLEAN jjOP_BI_BIM(leftv res, leftv u, leftv v)
void id_Normalize(ideal I, const ring r)
normialize all polys in id
static FORCE_INLINE number n_Gcd(number a, number b, const coeffs r)
in Z: return the gcd of 'a' and 'b' in Z/nZ, Z/2^kZ: computed as in the case Z in Z/pZ...
static BOOLEAN jjFAC_P(leftv res, leftv u)
#define idMaxIdeal(D)
initialise the maximal ideal (at 0)
const CanonicalForm int s
void id_DelDiv(ideal id, const ring r)
delete id[j], if LT(j) == coeff*mon*LT(i) and vice versa, i.e., delete id[i], if LT(i) == coeff*mon*L...
This file provides miscellaneous functionality.
static BOOLEAN jjCALL2ARG(leftv res, leftv u)
resolvente syResolvente(ideal arg, int maxlength, int *length, intvec ***weights, BOOLEAN minim)
static BOOLEAN iiExprArith3TabIntern(leftv res, int op, leftv a, leftv b, leftv c, const struct sValCmd3 *dA3, int at, int bt, int ct, const struct sConvertTypes *dConvertTypes)
syStrategy syKosz(ideal arg, int *length)
int iiTestConvert(int inputType, int outputType)
static BOOLEAN jjREPART(leftv res, leftv v)
ideal id_FreeModule(int i, const ring r)
the free module of rank i
static BOOLEAN jjRING3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjRSUM(leftv res, leftv u, leftv v)
ideal id_Transp(ideal a, const ring rRing)
transpose a module
static BOOLEAN jjVAR1(leftv res, leftv v)
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...
poly nc_p_Bracket_qq(poly p, const poly q, const ring r)
returns [p,q], destroys p
poly pSubstPoly(poly p, int var, poly image)
void atSet(idhdl root, const char *name, void *data, int typ)
Class used for (list of) interpreter objects.
static BOOLEAN jjTEST(leftv, leftv v)
poly kNF(ideal F, ideal Q, poly p, int syzComp, int lazyReduce)
ideal id_Homogen(ideal h, int varnum, const ring r)
static int _gentable_sort_cmds(const void *a, const void *b)
compares to entry of cmdsname-list
static FORCE_INLINE BOOLEAN n_IsUnit(number n, const coeffs r)
TRUE iff n has a multiplicative inverse in the given coeff field/ring r.
static BOOLEAN jjPARDEG(leftv res, leftv v)
static BOOLEAN jjRING_2(leftv res, leftv u, leftv v, leftv w)
number ntDiff(number a, number d, const coeffs cf)
static BOOLEAN jjTIMES_I(leftv res, leftv u, leftv v)
static BOOLEAN jjLOAD_E(leftv, leftv v, leftv u)
static BOOLEAN jjJET_ID_M(leftv res, leftv u, leftv v, leftv w)
BOOLEAN rIsLikeOpposite(ring rBase, ring rCandidate)
checks whether rings rBase and rCandidate could be opposite to each other returns TRUE if it is so ...
static BOOLEAN jjCOMPARE_S(leftv res, leftv u, leftv v)
static BOOLEAN jjnInt(leftv res, leftv u)
static BOOLEAN jjLIFT(leftv res, leftv u, leftv v)
BOOLEAN jjSORTLIST(leftv, leftv arg)
void omPrintInfo(FILE *fd)
bigintmat * bimSub(bigintmat *a, bigintmat *b)
static BOOLEAN jjPLUS_MA(leftv res, leftv u, leftv v)
#define TEST_OPT_DEGBOUND
static BOOLEAN jjKERNEL(leftv res, leftv u, leftv v)
static BOOLEAN jjCOMPARE_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjPLUS_BIM(leftv res, leftv u, leftv v)
static BOOLEAN jjSQR_FREE(leftv res, leftv u)
static BOOLEAN jjPFAC1(leftv res, leftv v)
number det()
det (via LaPlace in general, hnf for euc. rings)
static BOOLEAN jjTIMES_MA_BI2(leftv res, leftv u, leftv v)
static BOOLEAN jjKBASE2(leftv res, leftv u, leftv v)
static BOOLEAN jjHILBERT2(leftv res, leftv u, leftv v)
static BOOLEAN jjJET_P_IV(leftv res, leftv u, leftv v, leftv w)
ideal id_Subst(ideal id, int n, poly e, const ring r)
ideal idSubstPar(ideal id, int n, poly e)
static BOOLEAN jjMULT(leftv res, leftv v)
static BOOLEAN jjSUBST_Id_I(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjPlural_mat_mat(leftv res, leftv a, leftv b)
static BOOLEAN jjPOWER_ID(leftv res, leftv u, leftv v)
#define idDelete(H)
delete an ideal
static BOOLEAN rField_is_Zp_a(const ring r)
static BOOLEAN jjFACSTD(leftv res, leftv v)
static BOOLEAN jjTRANSP_IV(leftv res, leftv v)
static BOOLEAN jjCALL3ARG(leftv res, leftv u)
static BOOLEAN jjN2BI(leftv res, leftv v)
static BOOLEAN jjCOUNT_N(leftv res, leftv v)
static BOOLEAN jjGETDUMP(leftv, leftv v)
static BOOLEAN jjINTVEC_PL(leftv res, leftv v)
static BOOLEAN jjP2BI(leftv res, leftv v)
ideal_list kStdfac(ideal F, ideal Q, tHomog h, intvec **w, ideal D)
static BOOLEAN jjTIMES_MA_P2(leftv res, leftv u, leftv v)
void idLiftW(ideal P, ideal Q, int n, matrix &T, ideal &R, short *w)
ideal interpolation(const std::vector< ideal > &L, intvec *v)
intvec * scIndIntvec(ideal S, ideal Q)
void henselFactors(const int xIndex, const int yIndex, const poly h, const poly f0, const poly g0, const int d, poly &f, poly &g)
Computes a factorization of a polynomial h(x, y) in K[[x]][y] up to a certain degree in x...
BOOLEAN mpKoszul(leftv res, leftv c, leftv b, leftv id)
const struct sConvertTypes dConvertTypes[]
static BOOLEAN jjCOUNT_M(leftv res, leftv v)
BOOLEAN iiExprArith1(leftv res, leftv a, int op)
static int WerrorS_dummy_cnt
static int si_min(const int a, const int b)
static BOOLEAN jjRANDOM(leftv res, leftv u, leftv v)
static BOOLEAN jjOP_REST(leftv res, leftv u, leftv v)
unsigned nCmdAllocated
number of commands-slots allocated
static BOOLEAN jjFAREY_BI(leftv res, leftv u, leftv v)
matrix mp_InitP(int r, int c, poly p, const ring R)
make it a p * unit matrix
ideal t_rep_gb(ring r, ideal arg_I, int syz_comp, BOOLEAN F4_mode)
Compatiblity layer for legacy polynomial operations (over currRing)
static BOOLEAN jjDIVMOD_I(leftv res, leftv u, leftv v)
BOOLEAN iiConvert(int inputType, int outputType, int index, leftv input, leftv output, const struct sConvertTypes *dConvertTypes)
static BOOLEAN jjBRACK_Ma_I_IV(leftv res, leftv u, leftv v, leftv w)
ideal kSba(ideal F, ideal Q, tHomog h, intvec **w, int sbaOrder, int arri, intvec *hilb, int syzComp, int newIdeal, intvec *vw)
poly p_Homogen(poly p, int varnum, const ring r)
static BOOLEAN jjL2R(leftv res, leftv v)
static BOOLEAN jjOpenClose(leftv, leftv v)
static BOOLEAN jjMEMORY(leftv res, leftv v)
BOOLEAN jjWAIT1ST1(leftv res, leftv u)
int exprlist_length(leftv v)
ideal id_Copy(ideal h1, const ring r)
copy an ideal
short * iv2array(intvec *iv, const ring R)
static int rPar(const ring r)
(r->cf->P)
static BOOLEAN jjCOEFFS_Id(leftv res, leftv u, leftv v)
BOOLEAN iiExprArith3(leftv res, int op, leftv a, leftv b, leftv c)
static BOOLEAN jjCOLS(leftv res, leftv v)
matrix mp_Coeffs(ideal I, int var, const ring R)
corresponds to Maple's coeffs: var has to be the number of a variable
#define nPower(a, b, res)
#define pLmCmp(p, q)
returns 0|1|-1 if p=q|p>q|p<q w.r.t monomial ordering
static BOOLEAN jjKLAMMER_rest(leftv res, leftv u, leftv v)
lists syConvRes(syStrategy syzstr, BOOLEAN toDel, int add_row_shift)
static BOOLEAN jjALIGN_M(leftv res, leftv u, leftv v)
static BOOLEAN jjHOMOG1(leftv res, leftv v)
static BOOLEAN jjCHINREM_BI(leftv res, leftv u, leftv v)
void omPrintBinStats(FILE *fd)
static BOOLEAN jjPLUS_MA_P(leftv res, leftv u, leftv v)
poly sm_CallDet(ideal I, const ring R)
BOOLEAN idTestHomModule(ideal m, ideal Q, intvec *w)
static BOOLEAN jjGCD_N(leftv res, leftv u, leftv v)
static BOOLEAN jjrVarStr(leftv res, leftv v)
static BOOLEAN jjPRIME(leftv res, leftv v)
static BOOLEAN jjMODULO(leftv res, leftv u, leftv v)
ideal id_ChineseRemainder(ideal *xx, number *q, int rl, const ring r)
static BOOLEAN jjROWS(leftv res, leftv v)
static BOOLEAN jjDET_BI(leftv res, leftv v)
static BOOLEAN jjDUMP(leftv, leftv v)
static BOOLEAN jjPLUS_S(leftv res, leftv u, leftv v)
BOOLEAN iiTryLoadLib(leftv v, const char *id)
leftv slRead(si_link l, leftv a)
static BOOLEAN jjBRACK_Bim(leftv res, leftv u, leftv v, leftv w)
poly mp_Trace(matrix a, const ring R)
static BOOLEAN jjCOEF(leftv res, leftv u, leftv v)
static BOOLEAN jjREDUCE3_ID(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjTIMES_MA_I2(leftv res, leftv u, leftv v)
static BOOLEAN jjJACOB_M(leftv res, leftv a)
static BOOLEAN jjnlInt(leftv res, leftv u)
static BOOLEAN jjIS_RINGVAR0(leftv res, leftv)
static BOOLEAN jjINTERRED(leftv res, leftv v)
static BOOLEAN jjMINUS_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjSTD_1(leftv res, leftv u, leftv v)
static BOOLEAN jjDOTDOT(leftv res, leftv u, leftv v)
void id_Norm(ideal id, const ring r)
ideal id = (id[i]), result is leadcoeff(id[i]) = 1
static BOOLEAN jjNULL(leftv, leftv)
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
#define pIsUnit(p)
return true if the Lm is a constant <>0
static BOOLEAN jjCONTENT(leftv res, leftv v)
static BOOLEAN jjFAC_P2(leftv res, leftv u, leftv dummy)
#define omFreeSize(addr, size)
static BOOLEAN jjREAD2(leftv res, leftv u, leftv v)
static BOOLEAN jjKLAMMER_IV(leftv res, leftv u, leftv v)
#define idSimpleAdd(A, B)
matrix idDiffOp(ideal I, ideal J, BOOLEAN multiply)
int singclap_det_i(intvec *m, const ring)
static BOOLEAN jjpHead(leftv res, leftv v)
static BOOLEAN jjCOLON(leftv res, leftv u, leftv v)
static BOOLEAN jjPARSTR2(leftv res, leftv u, leftv v)
static BOOLEAN jjBI2N(leftv res, leftv u)
static BOOLEAN jjUMINUS_MA(leftv res, leftv u)
static BOOLEAN jjSUBST_Id_N(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjDIV_P(leftv res, leftv u, leftv v)
static short rVar(const ring r)
#define rVar(r) (r->N)
BOOLEAN jjPROC(leftv res, leftv u, leftv v)
poly singclap_gcd(poly f, poly g, const ring r)
destroys f and g
void id_Delete(ideal *h, ring r)
deletes an ideal/module/matrix
intvec * ivCopy(const intvec *o)
struct sValCmd1 * psValCmd1
static BOOLEAN jjDEGREE(leftv res, leftv v)
bigintmat * bimAdd(bigintmat *a, bigintmat *b)
Matrix-Add/-Sub/-Mult so oder mit operator+/-/* ? : NULL as a result means an error (non-compatible m...
static BOOLEAN jjINTERSECT_PL(leftv res, leftv v)
static BOOLEAN jjBREAK1(leftv, leftv v)
static BOOLEAN jjEXTGCD_I(leftv res, leftv u, leftv v)
ideal getMinorIdealCache(const matrix mat, const int minorSize, const int k, const ideal iSB, const int cacheStrategy, const int cacheN, const int cacheW, const bool allDifferent)
Returns the specified set of minors (= subdeterminantes) of the given matrix.
static BOOLEAN jjPlural_mat_poly(leftv res, leftv a, leftv b)
static BOOLEAN jjNEWSTRUCT3(leftv, leftv u, leftv v, leftv w)
static BOOLEAN jjTRACE_IV(leftv res, leftv v)
#define pLmDelete(p)
assume p != NULL, deletes Lm(p)->coef and Lm(p)
const struct sValCmd2 dArith2[]
static BOOLEAN jjGT_I(leftv res, leftv u, leftv v)
static BOOLEAN jjidFreeModule(leftv res, leftv v)
static BOOLEAN rField_is_Q_a(const ring r)
static BOOLEAN jjINTERPOLATION(leftv res, leftv l, leftv v)
lists qrDoubleShift(const matrix A, const number tol1, const number tol2, const number tol3, const ring r=currRing)
Computes all eigenvalues of a given real quadratic matrix with multiplicites.
lib_types type_of_LIB(const char *newlib, char *libnamebuf)
static BOOLEAN jjMINUS_I(leftv res, leftv u, leftv v)
static BOOLEAN jjDUMMY(leftv res, leftv u)
ideal kStd(ideal F, ideal Q, tHomog h, intvec **w, intvec *hilb, int syzComp, int newIdeal, intvec *vw, s_poly_proc_t sp)
syStrategy syResolution(ideal arg, int maxlength, intvec *w, BOOLEAN minim)
BOOLEAN maApplyFetch(int what, map theMap, leftv res, leftv w, ring preimage_r, int *perm, int *par_perm, int P, nMapFunc nMap)
ideal idMultSect(resolvente arg, int length)
static BOOLEAN jjHILBERT_IV(leftv res, leftv v)
static long p_Totaldegree(poly p, const ring r)
intvec * ivSub(intvec *a, intvec *b)
int syDim(syStrategy syzstr)
static BOOLEAN rField_is_Domain(const ring r)
static BOOLEAN jjEQUAL_BI(leftv res, leftv u, leftv v)
static FORCE_INLINE void n_Normalize(number &n, const coeffs r)
inplace-normalization of n; produces some canonical representation of n;
poly iiHighCorner(ideal I, int ak)
static BOOLEAN jjTIMES_MA_BI1(leftv res, leftv u, leftv v)
static BOOLEAN jjWEDGE(leftv res, leftv u, leftv v)
BOOLEAN iiExprArithM(leftv res, leftv a, int op)
poly singclap_det(const matrix m, const ring s)
static BOOLEAN jjPROC1(leftv res, leftv u)
intvec * ivTranp(intvec *o)
static BOOLEAN jjDEG_M(leftv res, leftv u)
static BOOLEAN jjDIM_R(leftv res, leftv v)
void WerrorS(const char *s)
static BOOLEAN jjPROC3(leftv res, leftv u, leftv v, leftv w)
void omPrintStats(FILE *fd)
static BOOLEAN jjJanetBasis2(leftv res, leftv u, leftv v)
static BOOLEAN jjOP_BIM_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjBRACK_Im(leftv res, leftv u, leftv v, leftv w)
ideal idModulo(ideal h2, ideal h1, tHomog hom, intvec **w)
static BOOLEAN jjDIV_Ma(leftv res, leftv u, leftv v)
static intvec * idSort(ideal id, BOOLEAN nolex=TRUE)
static BOOLEAN jjNAMES0(leftv res, leftv)
static BOOLEAN rField_is_GF(const ring r)
static char const ** rParameter(const ring r)
(r->cf->parameter)
static BOOLEAN jjTIMES_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjSTD(leftv res, leftv v)
static BOOLEAN jjJACOB_P(leftv res, leftv v)
static BOOLEAN jjpLength(leftv res, leftv v)
const char * slStatus(si_link l, const char *request)
#define pLmFreeAndNext(p)
assumes p != NULL, deletes p, returns pNext(p)
const struct sValCmdM dArithM[]
BOOLEAN iiExprArith2Tab(leftv res, leftv a, int op, const struct sValCmd2 *dA2, int at, const struct sConvertTypes *dConvertTypes)
apply an operation 'op' to arguments a and a->next return TRUE on failure
static BOOLEAN jjJET_P(leftv res, leftv u, leftv v)
syStrategy syConvList(lists li)
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy ...
static BOOLEAN jjGE_BI(leftv res, leftv u, leftv v)
#define pEqualPolys(p1, p2)
static FORCE_INLINE int n_ParDeg(number n, const coeffs r)
BOOLEAN jjLOAD(const char *s, BOOLEAN autoexport)
load lib/module given in v
static BOOLEAN jjP2N(leftv res, leftv v)
ideal idMinEmbedding(ideal arg, BOOLEAN inPlace, intvec **w)
static BOOLEAN jjGCD_I(leftv res, leftv u, leftv v)
poly singclap_pdivide(poly f, poly g, const ring r)
static BOOLEAN jjFAREY_LI(leftv res, leftv u, leftv v)
static BOOLEAN jjOPPOSE(leftv res, leftv a, leftv b)
static BOOLEAN jjSUBST_Id(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjPRUNE(leftv res, leftv v)
static BOOLEAN jjOP_I_BIM(leftv res, leftv u, leftv v)
ideal idQuot(ideal h1, ideal h2, BOOLEAN h1IsStb, BOOLEAN resultIsIdeal)
BOOLEAN slOpen(si_link l, short flag, leftv h)
static BOOLEAN iiExprArith2TabIntern(leftv res, leftv a, int op, leftv b, BOOLEAN proccall, const struct sValCmd2 *dA2, int at, int bt, const struct sConvertTypes *dConvertTypes)
long(* pLDegProc)(poly p, int *length, ring r)
static BOOLEAN jjINDEX_P_IV(leftv res, leftv u, leftv v)
#define pGetComp(p)
Component.
static BOOLEAN jjPARSTR1(leftv res, leftv v)
static BOOLEAN jjHOMOG1_W(leftv res, leftv v, leftv u)
static BOOLEAN jjGE_I(leftv res, leftv u, leftv v)
static int iiTabIndex(const jjValCmdTab dArithTab, const int len, const int op)
#define SI_LINK_SET_CLOSE_P(l)
BOOLEAN iiExport(leftv v, int toLev)
newstruct_desc newstructFromString(const char *s)
static BOOLEAN jjWAIT1ST2(leftv res, leftv u, leftv v)
ideal idOppose(ring Rop_src, ideal I, const ring Rop_dst)
opposes a module I from Rop to currRing(dst)
poly redNF(poly h, int &max_ind, int nonorm, kStrategy strat)
static BOOLEAN jjMAP(leftv res, leftv u, leftv v)
static BOOLEAN jjKoszul_Id(leftv res, leftv u, leftv v)
static BOOLEAN jjMINUS_N(leftv res, leftv u, leftv v)
static BOOLEAN idIsZeroDim(ideal i)
static BOOLEAN jjCOMPARE_MA(leftv res, leftv u, leftv v)
idhdl get(const char *s, int lev)
ideal idMinBase(ideal h1)
void monitor(void *F, int mode)
matrix idCoeffOfKBase(ideal arg, ideal kbase, poly how)
static BOOLEAN jjTIMES_MA_I1(leftv res, leftv u, leftv v)
static BOOLEAN jjP2I(leftv res, leftv v)
ideal id_JetW(ideal i, int d, intvec *iv, const ring R)
static BOOLEAN jjMINOR_M(leftv res, leftv v)
static BOOLEAN jjEXPORTTO(leftv, leftv u, leftv v)
char * String(void *d=NULL, BOOLEAN typed=FALSE, int dim=1)
Called for conversion to string (used by string(..), write(..),..)
int iiRegularity(lists L)
static FORCE_INLINE number n_Random(siRandProc p, number p1, number p2, const coeffs cf)
static BOOLEAN jjUMINUS_BI(leftv res, leftv u)
static BOOLEAN jjTIMES_BIM(leftv res, leftv u, leftv v)
static BOOLEAN jjCOUNT_RES(leftv res, leftv v)
static BOOLEAN jjJanetBasis(leftv res, leftv v)
void printBlackboxTypes()
list all defined type (for debugging)
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..n_NumberOfParameters(...)
static BOOLEAN jjVARSTR2(leftv res, leftv u, leftv v)
static BOOLEAN jjLE_N(leftv res, leftv u, leftv v)
static BOOLEAN jjROWS_IV(leftv res, leftv v)
int rSum(ring r1, ring r2, ring &sum)
static BOOLEAN jjEQUAL_Ma(leftv res, leftv u, leftv v)
static BOOLEAN jjBAREISS(leftv res, leftv v)
matrix mp_Transp(matrix a, const ring R)
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 BOOLEAN jjWAITALL2(leftv res, leftv u, leftv v)
static int jjCOMPARE_ALL(const void *aa, const void *bb)
int scMultInt(ideal S, ideal Q)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
#define pGetExp(p, i)
Exponent.
static BOOLEAN jjBRACK_Ma_IV_IV(leftv res, leftv u, leftv v, leftv w)
static void WerrorS_dummy(const char *)
static BOOLEAN jjCOUNT_IV(leftv res, leftv v)
static BOOLEAN jjRES3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjTIMES_MA_N1(leftv res, leftv u, leftv v)
static BOOLEAN jjRINGLIST_C(leftv res, leftv v)
static BOOLEAN jjSTATUS2L(leftv res, leftv u, leftv v)
const struct sValCmd3 dArith3[]
static BOOLEAN check_valid(const int p, const int op)
static BOOLEAN jjPLUS_P(leftv res, leftv u, leftv v)
char * iiArithGetCmd(int nPos)
idhdl enterid(const char *s, int lev, int t, idhdl *root, BOOLEAN init, BOOLEAN search)
static BOOLEAN jjrCharStr(leftv res, leftv v)
static BOOLEAN jjKoszul(leftv res, leftv u, leftv v)
static BOOLEAN jjBRACKET(leftv res, leftv a, leftv b)
const char * Tok2Cmdname(int tok)
BOOLEAN iiMake_proc(idhdl pn, package pack, sleftv *sl)
static BOOLEAN jjINDEX_P(leftv res, leftv u, leftv v)
void luDecomp(const matrix aMat, matrix &pMat, matrix &lMat, matrix &uMat, const ring R)
LU-decomposition of a given (m x n)-matrix.
void id_Shift(ideal M, int s, const ring r)
long p_DegW(poly p, const short *w, const ring R)
static BOOLEAN jjOP_BIM_I(leftv res, leftv u, leftv v)
int r_IsRingVar(const char *n, char **names, int N)
ideal idSect(ideal h1, ideal h2)
static BOOLEAN jjREDUCE3_CID(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjIDEAL_Map(leftv res, leftv v)
static BOOLEAN jjSUBST_Test(leftv v, leftv w, int &ringvar, poly &monomexpr)
static BOOLEAN jjIm2Iv(leftv res, leftv v)
static BOOLEAN jjSUBST_M(leftv res, leftv u)
static BOOLEAN jjLU_INVERSE(leftv res, leftv v)
static BOOLEAN jjHIGHCORNER_M(leftv res, leftv v)
static BOOLEAN jjINDEPSET2(leftv res, leftv u, leftv v)
intvec * bim2iv(bigintmat *b)
Coefficient rings, fields and other domains suitable for Singular polynomials.
static BOOLEAN jjLT_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjIMPART(leftv res, leftv v)
static BOOLEAN jjLOAD1(leftv, leftv v)
ideal idSeries(int n, ideal M, matrix U, intvec *w)
ideal idElimination(ideal h1, poly delVar, intvec *hilb)
static BOOLEAN jjSUBST_Id_X(leftv res, leftv u, leftv v, leftv w, int input_type)
static BOOLEAN jjREDUCE_ID(leftv res, leftv u, leftv v)
BOOLEAN jjWAITALL1(leftv res, leftv u)
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 ...
long id_RankFreeModule(ideal s, ring lmRing, ring tailRing)
return the maximal component number found in any polynomial in s
void id_DelLmEquals(ideal id, const ring r)
Delete id[j], if Lm(j) == Lm(i) and both LC(j), LC(i) are units and j > i.
static FORCE_INLINE long n_Int(number &n, const coeffs r)
conversion of n to an int; 0 if not possible in Z/pZ: the representing int lying in (-p/2 ...
const char * iiTwoOps(int t)
const CanonicalForm CFMap CFMap & N
static BOOLEAN jjUMINUS_I(leftv res, leftv u)
matrix mp_Wedge(matrix a, int ar, const ring R)
static BOOLEAN jjWRONG(leftv, leftv)
static BOOLEAN jjMATRIX_Ma(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjMSTD(leftv res, leftv v)
BOOLEAN jjANY2LIST(leftv res, leftv v, int cnt)
int iiArithRemoveCmd(char *szName)
static BOOLEAN jjUMINUS_P(leftv res, leftv u)
static BOOLEAN jjCOEFFS2_KB(leftv res, leftv u, leftv v)
static BOOLEAN jjmpTrace(leftv res, leftv v)
lists ipNameListLev(idhdl root, int lev)
static BOOLEAN jjALIGN_V(leftv res, leftv u, leftv v)
bigintmat * bimMult(bigintmat *a, bigintmat *b)
void pSetDegProcs(ring r, pFDegProc new_FDeg, pLDegProc new_lDeg)
static BOOLEAN jjEQUAL_R(leftv res, leftv u, leftv v)
static BOOLEAN jjKLAMMER(leftv res, leftv u, leftv v)
static long pTotaldegree(poly p)
static BOOLEAN jjHOMOG_P_W(leftv res, leftv u, leftv v, leftv)
BOOLEAN setOption(leftv res, leftv v)
static BOOLEAN jjDIFF_ID(leftv res, leftv u, leftv v)
int scMult0Int(ideal S, ideal Q, const ring tailRing)
static BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
poly pSubstPar(poly p, int par, poly image)
The main handler for Singular numbers which are suitable for Singular polynomials.
static FORCE_INLINE number n_Add(number a, number b, const coeffs r)
return the sum of 'a' and 'b', i.e., a+b
static BOOLEAN jjRPAR(leftv res, leftv v)
static BOOLEAN jjERROR(leftv, leftv u)
static BOOLEAN jjVDIM(leftv res, leftv v)
static BOOLEAN jjEQUAL_N(leftv res, leftv u, leftv v)
static BOOLEAN jjJET4(leftv res, leftv u)
void scDegree(ideal S, intvec *modulweight, ideal Q)
static BOOLEAN jjOP_IM_I(leftv res, leftv u, leftv v)
static BOOLEAN jjLEADEXP(leftv res, leftv v)
int scDimInt(ideal S, ideal Q)
BOOLEAN slPrepClose(si_link l)
static BOOLEAN jjSLIM_GB(leftv res, leftv u)
matrix mp_MultI(matrix a, int f, const ring R)
c = f*a
#define pLmInit(p)
like pInit, except that expvector is initialized to that of p, p must be != NULL
static BOOLEAN jjDIVISION4(leftv res, leftv v)
static BOOLEAN jjKBASE(leftv res, leftv v)
number(* nMapFunc)(number a, const coeffs src, const coeffs dst)
maps "a", which lives in src, into dst
static FORCE_INLINE BOOLEAN n_DivBy(number a, number b, const coeffs r)
test whether 'a' is divisible 'b'; for r encoding a field: TRUE iff 'b' does not represent zero in Z:...
static FORCE_INLINE number n_ChineseRemainderSym(number *a, number *b, int rl, BOOLEAN sym, CFArray &inv_cache, const coeffs r)
static BOOLEAN jjVARSTR1(leftv res, leftv v)
static BOOLEAN jjREDUCE5(leftv res, leftv u)
static BOOLEAN jjELIMIN(leftv res, leftv u, leftv v)
static BOOLEAN jjSTD_HILB_W(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjLIFT3(leftv res, leftv u, leftv v, leftv w)
BOOLEAN sm_CheckDet(ideal I, int d, BOOLEAN sw, const ring r)
static BOOLEAN jjMONOM(leftv res, leftv v)
const char feNotImplemented[]
void id_DelEquals(ideal id, const ring r)
ideal id = (id[i]) if id[i] = id[j] then id[j] is deleted for j > i
static BOOLEAN jjTIMES_N(leftv res, leftv u, leftv v)
BOOLEAN jjUNIQLIST(leftv, leftv arg)
static BOOLEAN jjMOD_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjBRACK_Ma_IV_I(leftv res, leftv u, leftv v, leftv w)
long kHomModDeg(poly p, ring r)
static FORCE_INLINE char * nCoeffName(const coeffs cf)
static BOOLEAN jjPREIMAGE(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjKLAMMER_PL(leftv res, leftv u)
ideal kInterRed(ideal F, ideal Q)
ideal id_Power(ideal given, int exp, const ring r)
BOOLEAN(* proc3)(leftv, leftv, leftv, leftv)
static BOOLEAN jjSTATUS_M(leftv res, leftv v)
static BOOLEAN jjDEG_M_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjDET(leftv res, leftv v)
BOOLEAN jjLOAD_TRY(const char *s)
static BOOLEAN jjSUBST_P(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjLIFTSTD(leftv res, leftv u, leftv v)
static BOOLEAN jjRES(leftv res, leftv u, leftv v)
static BOOLEAN jjINDEX_V_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjSTRING_PL(leftv res, leftv v)
static BOOLEAN jjRANK1(leftv res, leftv v)
static BOOLEAN jjHOMOG_P(leftv res, leftv u, leftv v)
static BOOLEAN jjDIV_N(leftv res, leftv u, leftv v)
BOOLEAN idInsertPoly(ideal h1, poly h2)
insert h2 into h1 (if h2 is not the zero polynomial) return TRUE iff h2 was indeed inserted ...
static BOOLEAN jjEXTGCD_P(leftv res, leftv u, leftv v)
static BOOLEAN jjLEADCOEF(leftv res, leftv v)
static BOOLEAN jjSBA_2(leftv res, leftv v, leftv u, leftv t)
struct sValCmd2 * psValCmd2
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...
static FORCE_INLINE number n_InpNeg(number n, const coeffs r)
in-place negation of n MUST BE USED: n = n_InpNeg(n) (no copy is returned)
#define pIsConstant(p)
like above, except that Comp might be != 0
static BOOLEAN jjSBA(leftv res, leftv v)
void hnf()
transforms INPLACE to HNF
static BOOLEAN jjREGULARITY(leftv res, leftv v)
BOOLEAN jjStdJanetBasis(leftv res, leftv v, int flag)
flag: 0: JB, 1: SB
matrix pMultMp(poly p, matrix a, const ring R)
static BOOLEAN jjDEFINED(leftv res, leftv v)
static BOOLEAN jjidVec2Ideal(leftv res, leftv v)
struct sValCmdM * psValCmdM
static int si_max(const int a, const int b)
static BOOLEAN jjGE_N(leftv res, leftv u, leftv v)
static FORCE_INLINE BOOLEAN nCoeff_is_transExt(const coeffs r)
TRUE iff r represents a transcendental extension field.
static BOOLEAN jjREDUCE_P(leftv res, leftv u, leftv v)
FILE * feFopen(const char *path, const char *mode, char *where, short useWerror, short path_only)
static BOOLEAN jjMINUS_P(leftv res, leftv u, leftv v)
int p_Compare(const poly a, const poly b, const ring R)
BOOLEAN assumeStdFlag(leftv h)
static BOOLEAN jjOP_I_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjFAREY_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjRESERVED0(leftv, leftv)
ring rInit(leftv pn, leftv rv, leftv ord)
static BOOLEAN jjENVELOPE(leftv res, leftv a)
static BOOLEAN jjPFAC2(leftv res, leftv u, leftv v)
void PrintS(const char *s)
static BOOLEAN jjDEG_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjRINGLIST(leftv res, leftv v)
lists ipNameList(idhdl root)
static BOOLEAN rField_is_Q(const ring r)
static BOOLEAN jjCALL1ARG(leftv res, leftv v)
static BOOLEAN jjLOAD2(leftv, leftv, leftv v)
static BOOLEAN jjidTransp(leftv res, leftv v)
int iiArithAddCmd(const char *szName, short nAlias, short nTokval, short nToktype, short nPos=-1)
lists rDecompose(const ring r)
static long p_MinComp(poly p, ring lmRing, ring tailRing)
BOOLEAN load_builtin(const char *newlib, BOOLEAN autoexport, SModulFunc_t init)
static BOOLEAN jjSTD_HILB(leftv res, leftv u, leftv v)
static BOOLEAN jjidMinBase(leftv res, leftv v)
syStrategy sySchreyer(ideal arg, int maxlength)
BOOLEAN sdb_set_breakpoint(const char *pp, int given_lineno)
static BOOLEAN jjBI2P(leftv res, leftv u)
matrix id_Module2Matrix(ideal mod, const ring R)
resolvente sySchreyerResolvente(ideal arg, int maxlength, int *length, BOOLEAN isMonomial=FALSE, BOOLEAN notReplace=FALSE)
static BOOLEAN jjDIM2(leftv res, leftv v, leftv w)
static BOOLEAN jjPOWER_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjUMINUS_N(leftv res, leftv u)
ring rDefault(const coeffs cf, int N, char **n, int ord_size, rRingOrder_t *ord, int *block0, int *block1, int **wvhdl)
int sySize(syStrategy syzstr)
static BOOLEAN jjDIVISION(leftv res, leftv u, leftv v)
static BOOLEAN jjFWALK(leftv res, leftv u, leftv v)
static BOOLEAN jjREDUCE3_CP(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjINTERSECT(leftv res, leftv u, leftv v)
static unsigned pLength(poly a)
static BOOLEAN jjREDUCE3_P(leftv res, leftv u, leftv v, leftv w)
#define pHead(p)
returns newly allocated copy of Lm(p), coef is copied, next=NULL, p might be NULL ...
static BOOLEAN jjmpTransp(leftv res, leftv v)
static BOOLEAN jjTYPEOF(leftv res, leftv v)
static BOOLEAN jjINDEX_I(leftv res, leftv u, leftv v)
static FORCE_INLINE BOOLEAN n_IsZero(number n, const coeffs r)
TRUE iff 'n' represents the zero element.
static BOOLEAN jjFactModD_M(leftv res, leftv v)
static FORCE_INLINE nMapFunc n_SetMap(const coeffs src, const coeffs dst)
set the mapping function pointers for translating numbers from src to dst
lists scIndIndset(ideal S, BOOLEAN all, ideal Q)
void(* WerrorS_callback)(const char *s)
void idSkipZeroes(ideal ide)
gives an ideal/module the minimal possible size
void iiMakeResolv(resolvente r, int length, int rlen, char *name, int typ0, intvec **weights)
static BOOLEAN jjPLUS_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjLISTRING(leftv res, leftv v)
static BOOLEAN jjOPTION_PL(leftv res, leftv v)
BOOLEAN rHasMixedOrdering(const ring r)
poly p_Series(int n, poly p, poly u, intvec *w, const ring R)
static BOOLEAN jjDENOMINATOR(leftv res, leftv v)
Return the denominator of the input number NOTE: the input number is normalized as a side effect...
static BOOLEAN jjIS_RINGVAR_P(leftv res, leftv v)
static BOOLEAN jjrOrdStr(leftv res, leftv v)
static BOOLEAN jjNAMES(leftv res, leftv v)
bool luInverse(const matrix aMat, matrix &iMat, const ring R)
This code first computes the LU-decomposition of aMat, and then calls the method for inverting a matr...
static BOOLEAN jjGCD_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjBRACK_S(leftv res, leftv u, leftv v, leftv w)
void pRestoreDegProcs(ring r, pFDegProc old_FDeg, pLDegProc old_lDeg)
#define rHasLocalOrMixedOrdering_currRing()
static FORCE_INLINE number n_ImPart(number i, const coeffs cf)
void rChangeCurrRing(ring r)
static BOOLEAN jjFIND2(leftv res, leftv u, leftv v)
static BOOLEAN jjFETCH_M(leftv res, leftv u)
static BOOLEAN jjMOD_N(leftv res, leftv u, leftv v)
static BOOLEAN rField_is_Zp(const ring r)
static FORCE_INLINE number n_Farey(number a, number b, const coeffs r)
intvec * ivMult(intvec *a, intvec *b)
ideal idSubstPoly(ideal id, int n, poly e)
static BOOLEAN jjBAREISS3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjSIMPL_P(leftv res, leftv u, leftv v)
void p_Shift(poly *p, int i, const ring r)
shifts components of the vector p by i
static BOOLEAN jjDIM(leftv res, leftv v)
INLINE_THIS void Init(int l=0)
static BOOLEAN jjCOEFFS3_KB(leftv res, leftv u, leftv v, leftv w)
BOOLEAN(* proc2)(leftv, leftv, leftv)
matrix mpNew(int r, int c)
create a r x c zero-matrix
#define TEST_OPT_RETURN_SB
static void p_Delete(poly *p, const ring r)
ideal idMult(ideal h1, ideal h2)
hh := h1 * h2
matrix mp_MultP(matrix a, poly p, const ring R)
multiply a matrix 'a' by a poly 'p', destroy the args
static BOOLEAN jjOP_IV_I(leftv res, leftv u, leftv v)
static BOOLEAN jjTIMES_MA_P1(leftv res, leftv u, leftv v)
static BOOLEAN jjINDEX_V(leftv res, leftv u, leftv v)
static FORCE_INLINE number n_ExtGcd(number a, number b, number *s, number *t, const coeffs r)
beware that ExtGCD is only relevant for a few chosen coeff. domains and may perform something unexpec...
static BOOLEAN jjNEWSTRUCT2(leftv, leftv u, leftv v)
#define SI_RESTORE_OPT2(A)
static BOOLEAN jjCOMPARE_P(leftv res, leftv u, leftv v)
static BOOLEAN jjSQR_FREE2(leftv res, leftv u, leftv dummy)
ideal idInit(int idsize, int rank)
initialise an ideal / module
static BOOLEAN jjGCD_P(leftv res, leftv u, leftv v)
BOOLEAN nc_CallPlural(matrix cc, matrix dd, poly cn, poly dn, ring r, bool bSetupQuotient, bool bCopyInput, bool bBeQuiet, ring curr, bool dummy_ring=false)
returns TRUE if there were errors analyze inputs, check them for consistency detects nc_type...
const Variable & v
< [in] a sqrfree bivariate poly
static BOOLEAN jjEXECUTE(leftv, leftv v)
#define pSeries(n, p, u, w)
static BOOLEAN jjidMaxIdeal(leftv res, leftv v)
unsigned nLastIdentifier
valid indentifieres are slot 1..nLastIdentifier
matrix mp_Mult(matrix a, matrix b, const ring R)
int singclap_factorize_retry
static BOOLEAN jjMINRES_R(leftv res, leftv v)
static BOOLEAN jjPlural_num_mat(leftv res, leftv a, leftv b)
static BOOLEAN jjCOEFFS3_P(leftv res, leftv u, leftv v, leftv w)
void * atGet(idhdl root, const char *name, int t, void *defaultReturnValue)
void mp_Coef2(poly v, poly mon, matrix *c, matrix *m, const ring R)
corresponds to Macauley's coef: the exponent vector of vars has to contain the variables, eg 'xy'; then the poly f is searched for monomials in x and y, these monimials are written to the first row of the matrix co. the second row of co contains the respective factors in f. Thus f = sum co[1,i]*co[2,i], i = 1..cols, rows equals 2.
static BOOLEAN jjRING_LIST(leftv res, leftv v)
ideal getMinorIdealHeuristic(const matrix mat, const int minorSize, const int k, const ideal iSB, const bool allDifferent)
Returns the specified set of minors (= subdeterminantes) of the given matrix.
void maFindPerm(char const *const *const preim_names, int preim_n, char const *const *const preim_par, int preim_p, char const *const *const names, int n, char const *const *const par, int nop, int *perm, int *par_perm, n_coeffType ch)
static FORCE_INLINE void n_Power(number a, int b, number *res, const coeffs r)
fill res with the power a^b
static BOOLEAN jjPLUS_N(leftv res, leftv u, leftv v)
ideal id_Jet(ideal i, int d, const ring R)
static BOOLEAN jjJET_ID_IV(leftv res, leftv u, leftv v, leftv w)
BOOLEAN jjLIST_PL(leftv res, leftv v)
BOOLEAN iiExprArith3Tab(leftv res, leftv a, int op, const struct sValCmd3 *dA3, int at, const struct sConvertTypes *dConvertTypes)
apply an operation 'op' to arguments a, a->next and a->next->next return TRUE on failure ...
static BOOLEAN jjTIMES_MA(leftv res, leftv u, leftv v)
void mp_Monomials(matrix c, int r, int var, matrix m, const ring R)
static BOOLEAN rField_is_Ring(const ring r)
matrix mp_Add(matrix a, matrix b, const ring R)
BOOLEAN idHomIdeal(ideal id, ideal Q=NULL)
static BOOLEAN jjJET_ID(leftv res, leftv u, leftv v)
int ipower(int b, int m)
int ipower ( int b, int m )
int slStatusSsiL(lists L, int timeout)
matrix id_Module2formatedMatrix(ideal mod, int rows, int cols, const ring R)
ring rCompose(const lists L, const BOOLEAN check_comp=TRUE)
static BOOLEAN jjHILBERT(leftv, leftv v)
ideal id_Farey(ideal x, number N, const ring r)
static BOOLEAN jjIS_RINGVAR_S(leftv res, leftv v)
static BOOLEAN jjGT_N(leftv res, leftv u, leftv v)
lists primeFactorisation(const number n, const int pBound)
Factorises a given bigint number n into its prime factors less than or equal to a given bound...
static BOOLEAN jjLT_I(leftv res, leftv u, leftv v)
static BOOLEAN jjPOWER_P(leftv res, leftv u, leftv v)
SModulFunc_t iiGetBuiltinModInit(const char *libname)
static BOOLEAN jjQUOT(leftv res, leftv u, leftv v)
ideal sm_CallSolv(ideal I, const ring R)
used for all algebraic extensions, i.e., the top-most extension in an extension tower is algebraic ...
static BOOLEAN jjCOEF_M(leftv, leftv v)
ideal walkProc(leftv first, leftv second)
LINLINE void nlDelete(number *a, const coeffs r)
static FORCE_INLINE number n_Div(number a, number b, const coeffs r)
return the quotient of 'a' and 'b', i.e., a/b; raises an error if 'b' is not invertible in r exceptio...
long(* pFDegProc)(poly p, ring r)
intvec * hSecondSeries(intvec *hseries1)
ideal kMin_std(ideal F, ideal Q, tHomog h, intvec **w, ideal &M, intvec *hilb, int syzComp, int reduced)
BOOLEAN iiCheckTypes(leftv args, const short *type_list, int report)
check a list of arguemys against a given field of types return TRUE if the types match return FALSE (...
int luRank(const matrix aMat, const bool isRowEchelon, const ring R)
Computes the rank of a given (m x n)-matrix.
static BOOLEAN jjPLUS_P_MA(leftv res, leftv u, leftv v)
bool luInverseFromLUDecomp(const matrix pMat, const matrix lMat, const matrix uMat, matrix &iMat, const ring R)
This code computes the inverse by inverting lMat and uMat, and then performing two matrix multiplicat...
coeffs basecoeffs() const
static BOOLEAN rField_is_Ring_Z(const ring r)
static BOOLEAN jjCOUNT_RG(leftv res, leftv v)
static BOOLEAN jjUMINUS_IV(leftv res, leftv u)
void pNorm(poly p, const ring R=currRing)
static BOOLEAN jjTIMES_IV(leftv res, leftv u, leftv v)
ideal idLiftStd(ideal h1, matrix *ma, tHomog hi, ideal *syz)
unsigned nCmdUsed
number of commands used
static BOOLEAN jjMONITOR1(leftv res, leftv v)
static BOOLEAN jjMINUS_BIM(leftv res, leftv u, leftv v)
static BOOLEAN jjQRDS(leftv res, leftv INPUT)
void show(int mat=0, int spaces=0) const
ideal fractalWalkProc(leftv first, leftv second)
#define pInit()
allocates a new monomial and initializes everything to 0
static BOOLEAN jjPREIMAGE_R(leftv res, leftv v)
int blackboxIsCmd(const char *n, int &tok)
used by scanner: returns ROOT_DECL for known types (and the type number in tok)
static BOOLEAN jjPLUS_BI(leftv res, leftv u, leftv v)
ideal id_Head(ideal h, const ring r)
returns the ideals of initial terms
static BOOLEAN jjTIMES_MA_N2(leftv res, leftv u, leftv v)
static BOOLEAN jjNAMES_I(leftv res, leftv v)
static BOOLEAN jjEQUAL_P(leftv res, leftv u, leftv v)
number singclap_det_bi(bigintmat *m, const coeffs cf)
static BOOLEAN jjEXTGCD_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjNAMEOF(leftv res, leftv v)
static BOOLEAN jjGT_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjNVARS(leftv res, leftv v)
static BOOLEAN jjCOLCOL(leftv res, leftv u, leftv v)
BOOLEAN singclap_extgcd(poly f, poly g, poly &res, poly &pa, poly &pb, const ring r)
BOOLEAN mp_IsDiagUnit(matrix U, const ring R)
static BOOLEAN jjRING_PL(leftv res, leftv a)
static SArithBase sArithBase
Base entry for arithmetic.
int iiArithFindCmd(const char *szName)
static FORCE_INLINE number n_GetDenom(number &n, const coeffs r)
return the denominator of n (if elements of r are by nature not fractional, result is 1) ...
static bool rIsSCA(const ring r)
static BOOLEAN jjHOMOG_ID_W(leftv res, leftv u, leftv v, leftv)
static BOOLEAN jjUMINUS_BIM(leftv res, leftv u)
void CleanUp(ring r=currRing)
static FORCE_INLINE number n_RePart(number i, const coeffs cf)
int(* SModulFunc_t)(SModulFunctions *)
static BOOLEAN jjMONITOR2(leftv res, leftv u, leftv v)
static Subexpr jjMakeSub(leftv e)
void Clean(ring r=currRing)
static BOOLEAN jjLU_DECOMP(leftv res, leftv v)
static BOOLEAN jjFWALK3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjCOUNT_BI(leftv res, leftv v)
static BOOLEAN jjrParStr(leftv res, leftv v)
static BOOLEAN jjCOLS_BIM(leftv res, leftv v)
static FORCE_INLINE BOOLEAN n_Equal(number a, number b, const coeffs r)
TRUE iff 'a' and 'b' represent the same number; they may have different representations.
static BOOLEAN jjLE_I(leftv res, leftv u, leftv v)
static BOOLEAN jjSYZYGY(leftv res, leftv v)
lists rDecompose_list_cf(const ring r)
static BOOLEAN jjLIFTSTD3(leftv res, leftv u, leftv v, leftv w)
ideal idLift(ideal mod, ideal submod, ideal *rest, BOOLEAN goodShape, BOOLEAN isSB, BOOLEAN divide, matrix *unit)
static BOOLEAN jjCHINREM_ID(leftv res, leftv u, leftv v)
BOOLEAN slDump(si_link l)
BOOLEAN mp_Equal(matrix a, matrix b, const ring R)
static BOOLEAN jjDIFF_ID_ID(leftv res, leftv u, leftv v)
matrix mp_Copy(matrix a, const ring r)
copies matrix a (from ring r to r)
static BOOLEAN jjDIFF_P(leftv res, leftv u, leftv v)
static BOOLEAN jjELIMIN_IV(leftv res, leftv u, leftv v)
void newBuffer(char *s, feBufferTypes t, procinfo *pi, int lineno)
void sm_CallBareiss(ideal I, int x, int y, ideal &M, intvec **iv, const ring R)
static FORCE_INLINE number n_SubringGcd(number a, number b, const coeffs r)
static BOOLEAN jjBAREISS_BIM(leftv res, leftv v)
static BOOLEAN jjRING_1(leftv res, leftv u, leftv v)
static BOOLEAN jjCALL1MANY(leftv res, leftv u)
static BOOLEAN jjTIMES_P(leftv res, leftv u, leftv v)
static BOOLEAN jjROWS_BIM(leftv res, leftv v)
static BOOLEAN jjLE_BI(leftv res, leftv u, leftv v)
ideal maGetPreimage(ring theImageRing, map theMap, ideal id, const ring dst_r)
static BOOLEAN jjINDEX_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjSBA_1(leftv res, leftv v, leftv u)
static BOOLEAN jjMINUS_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjPOWER_N(leftv res, leftv u, leftv v)
cmdnames * sCmds
array of existing commands
int idElem(const ideal F)
count non-zero elements
static FORCE_INLINE BOOLEAN nCoeff_is_Extension(const coeffs r)
static BOOLEAN jjMATRIX_Mo(leftv res, leftv u, leftv v, leftv w)
LINLINE number nlInit(long i, const coeffs r)
static BOOLEAN jjidHead(leftv res, leftv v)
void newstruct_setup(const char *n, newstruct_desc d)
static BOOLEAN jjOP_I_IM(leftv res, leftv u, leftv v)
static BOOLEAN jjSort_Id(leftv res, leftv v)
int mp_Compare(matrix a, matrix b, const ring R)
static BOOLEAN jjJET_P_P(leftv res, leftv u, leftv v, leftv w)
newstruct_desc newstructChildFromString(const char *parent, const char *s)
leftv iiMap(map theMap, const char *what)
int n_IsParam(const number m, const ring r)
TODO: rewrite somehow...
static BOOLEAN jjPOWER_I(leftv res, leftv u, leftv v)
static BOOLEAN jjCOMPARE_IV_I(leftv res, leftv u, leftv v)
static BOOLEAN jjPLUSPLUS(leftv, leftv u)
BOOLEAN iiLoadLIB(FILE *fp, const char *libnamebuf, const char *newlib, idhdl pl, BOOLEAN autoexport, BOOLEAN tellerror)
const struct sValCmd1 dArith1[]
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete 'p'
char * rCharStr(const ring r)
TODO: make it a virtual method of coeffs, together with: Decompose & Compose, rParameter & rPar...
static BOOLEAN jjFACSTD2(leftv res, leftv v, leftv w)
static FORCE_INLINE BOOLEAN n_GreaterZero(number n, const coeffs r)
ordered fields: TRUE iff 'n' is positive; in Z/pZ: TRUE iff 0 < m <= roundedBelow(p/2), where m is the long representing n in C: TRUE iff (Im(n) != 0 and Im(n) >= 0) or (Im(n) == 0 and Re(n) >= 0) in K(a)/<p(a)>: TRUE iff (n != 0 and (LC(n) > 0 or deg(n) > 0)) in K(t_1, ..., t_n): TRUE iff (LC(numerator(n) is a constant and > 0) or (LC(numerator(n) is not a constant) in Z/2^kZ: TRUE iff 0 < n <= 2^(k-1) in Z/mZ: TRUE iff the internal mpz is greater than zero in Z: TRUE iff n > 0
const char * getBlackboxName(const int t)
return the name to the type given by t (r/o)
ideal singclap_factorize(poly f, intvec **v, int with_exps, const ring r)
ideal idAdd(ideal h1, ideal h2)
h1 + h2
static BOOLEAN jjREDUCE4(leftv res, leftv u)
static BOOLEAN jjUNIVARIATE(leftv res, leftv v)
static BOOLEAN jjIDEAL_Ma(leftv res, leftv v)
static BOOLEAN jjSTATUS3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjIDEAL_R(leftv res, leftv v)
intvec * hFirstSeries(ideal S, intvec *modulweight, ideal Q, intvec *wdegree, ring tailRing)
ideal id_Vec2Ideal(poly vec, const ring R)
matrix mp_Sub(matrix a, matrix b, const ring R)
static BOOLEAN jjDEG(leftv res, leftv v)
static FORCE_INLINE char * nCoeffString(const coeffs cf)
TODO: make it a virtual method of coeffs, together with: Decompose & Compose, rParameter & rPar...
BOOLEAN slClose(si_link l)
void hLookSeries(ideal S, intvec *modulweight, ideal Q, intvec *wdegree, ring tailRing)
static BOOLEAN jjCOUNT_L(leftv res, leftv v)
static BOOLEAN jjMATRIX_Id(leftv res, leftv u, leftv v, leftv w)
BOOLEAN slGetDump(si_link l)
static int iin_Int(number &n, coeffs cf)
static BOOLEAN jjOR_I(leftv res, leftv u, leftv v)
static BOOLEAN jjMINUS_MA(leftv res, leftv u, leftv v)
#define omFreeBin(addr, bin)
static BOOLEAN jjLU_SOLVE(leftv res, leftv v)
BOOLEAN rDecompose_CF(leftv res, const coeffs C)
BOOLEAN(* proc1)(leftv, leftv)
static BOOLEAN jjpMaxComp(leftv res, leftv v)
char * iiConvName(const char *libname)
syStrategy syHilb(ideal arg, int *length)
static BOOLEAN jjBRACK_Ma(leftv res, leftv u, leftv v, leftv w)
int compare(const bigintmat *op) const
static BOOLEAN jjPlural_num_poly(leftv res, leftv a, leftv b)
static BOOLEAN jjNUMERATOR(leftv res, leftv v)
Return the numerator of the input number NOTE: the input number is normalized as a side effect...
ideal idSyzygies(ideal h1, tHomog h, intvec **w, BOOLEAN setSyzComp, BOOLEAN setRegularity, int *deg)
static BOOLEAN jjNOT(leftv res, leftv v)
#define IMATELEM(M, I, J)
BOOLEAN iiExprArith2(leftv res, leftv a, int op, leftv b, BOOLEAN proccall)
static BOOLEAN jjHOMOG_ID(leftv res, leftv u, leftv v)
#define omRealloc(addr, size)
poly p_Cleardenom(poly p, const ring r)
#define pSetCoeff(p, n)
deletes old coeff before setting the new one
void syMake(leftv v, const char *id, package pa)
static BOOLEAN jjRESERVEDNAME(leftv res, leftv v)
#define SI_RESTORE_OPT1(A)
static BOOLEAN jjINDEPSET(leftv res, leftv v)
BOOLEAN load_modules(const char *newlib, char *fullname, BOOLEAN autoexport)
static FORCE_INLINE int n_Size(number n, const coeffs r)
return a non-negative measure for the complexity of n; return 0 only when n represents zero; (used fo...
static BOOLEAN jjDET_I(leftv res, leftv v)
ideal id_Matrix2Module(matrix mat, const ring R)
static BOOLEAN jjTRANSP_BIM(leftv res, leftv v)
static BOOLEAN jjOPPOSITE(leftv res, leftv a)
static BOOLEAN jjCONTRACT(leftv res, leftv u, leftv v)
static BOOLEAN jjHIGHCORNER(leftv res, leftv v)
struct sValCmd3 * psValCmd3
BOOLEAN idHomModule(ideal m, ideal Q, intvec **w)
void Werror(const char *fmt,...)
static BOOLEAN jjAND_I(leftv res, leftv u, leftv v)
BOOLEAN iiExprArith1Tab(leftv res, leftv a, int op, const struct sValCmd1 *dA1, int at, const struct sConvertTypes *dConvertTypes)
apply an operation 'op' to an argument a return TRUE on failure
syStrategy syLaScala3(ideal arg, int *length)
static BOOLEAN jjREAD(leftv res, leftv v)
static BOOLEAN jjCHAR(leftv res, leftv v)
const char * lastreserved
static BOOLEAN jjEQUAL_I(leftv res, leftv u, leftv v)
static BOOLEAN jjLEADMONOM(leftv res, leftv v)
static BOOLEAN jjPLUS_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjSIMPL_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjELIMIN_HILB(leftv res, leftv u, leftv v, leftv w)
intvec * ivAdd(intvec *a, intvec *b)
static BOOLEAN jjstrlen(leftv res, leftv v)
static BOOLEAN jjFETCH(leftv res, leftv u, leftv v)
ideal syMinBase(ideal arg)
static BOOLEAN jjTWOSTD(leftv res, leftv a)
static BOOLEAN jjSTD_HILB_WP(leftv res, leftv INPUT)
static BOOLEAN jjDIFF_COEF(leftv res, leftv u, leftv v)
static BOOLEAN jjSTATUS2(leftv res, leftv u, leftv v)
static BOOLEAN jjORD(leftv res, leftv v)
static BOOLEAN jjFIND3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjDIV_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjCOLS_IV(leftv res, leftv v)
syStrategy syMinimize(syStrategy syzstr)
#define pCopy(p)
return a copy of the poly
#define MATELEM(mat, i, j)
blackbox * getBlackboxStuff(const int t)
return the structure to the type given by t
static BOOLEAN jjCOMPARE_BIM(leftv res, leftv u, leftv v)
int IsCmd(const char *n, int &tok)
static BOOLEAN jjHILBERT3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjRANDOM_Im(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjLT_N(leftv res, leftv u, leftv v)
static BOOLEAN jjidElem(leftv res, leftv v)
static BOOLEAN jjCOEFFS3_Id(leftv res, leftv u, leftv v, leftv w)
ideal twostd(ideal I)
Compute two-sided GB: