13 #include "factory/factory.h" 88 #define NC_MASK (3+64) 95 #define ZERODIVISOR_MASK 8 98 #define ZERODIVISOR_MASK 0 100 #define ALLOW_PLURAL 1 102 #define COMM_PLURAL 2 105 #define NO_ZERODIVISOR 8 106 #define ALLOW_ZERODIVISOR 0 108 #define ALLOW_NC ALLOW_LP|ALLOW_PLURAL 110 #define ALLOW_ZZ (ALLOW_RING|NO_ZERODIVISOR) 116 #define NO_CONVERSION 32 174 short number_of_args;
203 extern int iiArithAddCmd(
const char *szName,
short nAlias,
short nTokval,
204 short nToktype,
short nPos=-1);
214 #define ii_div_by_0 "div. by 0" 223 if ((
long)i==
l)
return l;
235 if (sArithBase.
sCmds[
i].tokval==op)
236 return sArithBase.
sCmds[
i].toktype;
248 int bb = (int)(
long)(v->
Data());
253 case '+': cc=
bimAdd(aa,bb);
break;
254 case '-': cc=
bimSub(aa,bb);
break;
255 case '*': cc=
bimMult(aa,bb);
break;
257 res->
data=(
char *)cc;
267 number bb = (number)(v->
Data());
274 res->
data=(
char *)cc;
284 int bb = (int)(
long)(v->
Data());
288 case '+': (*aa) += bb;
break;
289 case '-': (*aa) -= bb;
break;
290 case '*': (*aa) *= bb;
break;
293 case '%': (*aa) %= bb;
break;
295 res->
data=(
char *)aa;
305 int bb = (int)(
long)(v->
Data());
309 case '+':
for (;i>0;i--)
IMATELEM(*aa,i,i) += bb;
311 case '-':
for (;i>0;i--)
IMATELEM(*aa,i,i) -= bb;
314 res->
data=(
char *)aa;
323 int l=(int)(
long)v->
Data();
326 int d=(int)(
long)u->
Data();
329 for(i=l-1;i>=0;i--) { (*vv)[
i]=d; }
330 res->
data=(
char *)vv;
348 res->
data = (
char *) (r<0);
351 res->
data = (
char *) (r>0);
354 res->
data = (
char *) (r<=0);
357 res->
data = (
char *) (r>=0);
361 res->
data = (
char *) (r==0);
365 if(r==-2) {
WerrorS(
"size incompatible");
return TRUE; }
376 res->
data = (
char *) (r<0);
379 res->
data = (
char *) (r>0);
382 res->
data = (
char *) (r<=0);
385 res->
data = (
char *) (r>=0);
389 res->
data = (
char *) (r==0);
393 if(r==-2) {
WerrorS(
"size incompatible");
return TRUE; }
399 int b = (int)(
long)(v->
Data());
404 res->
data = (
char *) (r<0);
407 res->
data = (
char *) (r>0);
410 res->
data = (
char *) (r<=0);
413 res->
data = (
char *) (r>=0);
417 res->
data = (
char *) (r==0);
432 res->
data = (
char *) (
long)(r < 0);
435 res->
data = (
char *) (
long)(r > 0);
438 res->
data = (
char *) (
long)(r <= 0);
441 res->
data = (
char *) (
long)(r >= 0);
445 res->
data = (
char *)(
long) (r == 0);
453 poly
p=(poly)u->
Data();
454 poly q=(poly)v->
Data();
459 res->
data = (
char *) (r < 0);
462 res->
data = (
char *) (r > 0);
465 res->
data = (
char *) (r <= 0);
468 res->
data = (
char *) (r >= 0);
480 char* a = (
char * )(u->
Data());
481 char*
b = (
char * )(v->
Data());
486 res->
data = (
char *) (result < 0);
489 res->
data = (
char *) (result > 0);
492 res->
data = (
char *) (result <= 0);
495 res->
data = (
char *) (result >= 0);
499 res->
data = (
char *) (result == 0);
523 int b=(int)(
long)u->
Data();
524 int e=(int)(
long)v->
Data();
533 else if ((e==0)||(b==1))
551 if(rc/b!=oldrc) overflow=
TRUE;
555 WarnS(
"int overflow(^), result may be wrong");
557 res->
data = (
char *)((
long)rc);
563 WerrorS(
"exponent must be non-negative");
569 int e=(int)(
long)v->
Data();
570 number n=(number)u->
Data();
577 WerrorS(
"exponent must be non-negative");
585 int e=(int)(
long)v->
Data();
586 number n=(number)u->
Data();
603 int v_i=(int)(
long)v->
Data();
606 WerrorS(
"exponent must be non-negative");
617 Werror(
"OVERFLOW in power(d=%ld, e=%d, max=%ld)",
701 if(isupper(u->
name[0]))
703 const char *c=u->
name+1;
704 while((*c!=
'\0')&&(islower(*c)||(isdigit(*c))||(*c==
'_'))) c++;
709 Print(
"%s of type 'ANY'. Trying load.\n", u->
name);
725 package pa=(package)u->Data();
739 WerrorS(
"reserved name with ::");
744 memcpy(res, v,
sizeof(
sleftv));
745 memset(v, 0,
sizeof(
sleftv));
751 WerrorS(
"<package>::<id> expected");
758 unsigned int a=(
unsigned int)(
unsigned long)u->
Data();
759 unsigned int b=(
unsigned int)(
unsigned long)v->
Data();
761 res->
data = (
char *)((
long)c);
764 WarnS(
"int overflow(+), result may be wrong");
810 WerrorS(
"intmat size not compatible");
820 WerrorS(
"bigintmat/cmatrix not compatible");
831 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
839 ideal
A=(ideal)u->
Data(); ideal
B=(ideal)v->
Data();
843 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
866 char* a = (
char * )(u->
Data());
867 char*
b = (
char * )(v->
Data());
868 char* r = (
char * )
omAlloc(strlen(a) + strlen(b) + 1);
882 int aa=(int)(
long)ap;
883 int bb=(int)(
long)bp;
885 unsigned int a=(
unsigned int)(
unsigned long)ap;
886 unsigned int b=(
unsigned int)(
unsigned long)bp;
890 WarnS(
"int overflow(-), result may be wrong");
892 res->
data = (
char *)((
long)cc);
938 WerrorS(
"intmat size not compatible");
948 WerrorS(
"bigintmat/cmatrix not compatible");
959 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
968 ideal
A=(ideal)u->
Data(); ideal
B=(ideal)v->
Data();
972 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
981 int a=(int)(
long)u->
Data();
982 int b=(int)(
long)v->
Data();
984 if ((c>INT_MAX)||(c<INT_MIN))
985 WarnS(
"int overflow(*), result may be wrong");
986 res->
data = (
char *)((
long)((int)c));
1001 number n=(number)res->
data;
1003 res->
data=(
char *)n;
1021 Warn(
"possible OVERFLOW in mult(d=%ld, d=%ld, max=%ld)",
1033 Warn(
"possible OVERFLOW in mult(d=%ld, d=%ld, max=%ld)",
1068 WerrorS(
"intmat size not compatible");
1080 WerrorS(
"bigintmat/cmatrix not compatible");
1094 res->
data = (
char *)I;
1108 res->
data = (
char *)I;
1118 res->
data = (
char *)I;
1149 Werror(
"matrix size not compatible(%dx%d, %dx%d) in *",
1160 ideal
A=(ideal)u->
Data(); ideal
B=(ideal)v->
Data();
1164 Werror(
"matrix size not compatible(%dx%d, %dx%d) in *",
1182 res->
data = (
char *)(
long)((int)((
long)u->
Data()) >= (
int)((long)v->
Data()));
1200 res->
data = (
char *)(
long)((int)((
long)u->
Data()) > (
int)((long)v->
Data()));
1214 res->
data = (
char *)(
long)((int)((
long)u->
Data()) <= (
int)((long)v->
Data()));
1227 res->
data = (
char *)(
long)((int)((
long)u->
Data()) < (
int)((long)v->
Data()));
1237 int a= (int)(
long)u->
Data();
1238 int b= (int)(
long)v->
Data();
1252 r=((a-c) /b);
break;
1254 res->
data=(
void *)((
long)r);
1259 number q=(number)v->
Data();
1267 res->
data = (
char *)q;
1272 number q=(number)v->
Data();
1280 res->
data = (
char *)q;
1285 poly q=(poly)v->
CopyD();
1286 poly
p=(poly)(u->
CopyD());
1294 poly q=(poly)v->
Data();
1319 res->
data=(
char *)mm;
1330 res->
data = (
char *)((
int)((long)u->
Data()) == (
int)((long)v->
Data()));
1360 poly
p=(poly)u->
Data();
1361 poly q=(poly)v->
Data();
1381 res->
data = (
char *)((
long)u->
Data() && (long)v->
Data());
1386 res->
data = (
char *)((
long)u->
Data() || (long)v->
Data());
1399 while (sh->next !=
NULL) sh=sh->next;
1415 WerrorS(
"indexed object must have a name");
1422 memset(&t,0,
sizeof(t));
1424 for (i=0;i<iv->
length(); i++)
1426 t.
data=(
char *)((
long)(*iv)[
i]);
1449 poly
p=(poly)u->
Data();
1450 int i=(int)(
long)v->
Data();
1470 int i=(int)(
long)v->
Data();
1489 poly
p=(poly)u->
Data();
1494 for(i=iv->
length()-1;i>=0;i--)
1497 while ((p!=
NULL) && (sum>0))
1500 for(i=iv->
length()-1;i>=0;i--)
1513 res->
data=(
char *)r;
1518 poly
p=(poly)u->
Data();
1519 int i=(int)(
long)v->
Data();
1534 for(i=0;i<iv->
length();i++)
1554 res->
data=(
char *)r;
1562 char * nn = (
char *)
omAlloc(strlen(u->
name) + 14);
1563 sprintf(nn,
"%s(%d)",u->
name,(
int)(
long)v->
Data());
1577 long slen = strlen(u->
name) + 14;
1578 char *n = (
char*)
omAlloc(slen);
1580 for (i=0;i<iv->
length(); i++)
1591 sprintf(n,
"%s(%d)",u->
name,(*iv)[i]);
1603 memset(tmp,0,
sizeof(
sleftv));
1629 tmp_proc->
id=
"_auto";
1633 d=u->
data; u->
data=(
void *)tmp_proc;
1650 if (sl)
return TRUE;
1669 memcpy(res,sl,
sizeof(
sleftv));
1677 memset(v,0,
sizeof(
sleftv));
1687 number *
x=(number *)
omAlloc(rl*
sizeof(number));
1688 number *q=(number *)
omAlloc(rl*
sizeof(number));
1690 for(i=rl-1;i>=0;i--)
1697 for(i=rl-1;i>=0;i--)
1703 res->
data=(
char *)n;
1713 number *
x=(number *)
omAlloc(rl*
sizeof(number));
1714 number *q=(number *)
omAlloc(rl*
sizeof(number));
1716 for(i=rl-1;i>=0;i--)
1722 for(i=rl-1;i>=0;i--)
1726 Werror(
"poly expected at pos %d",i+1);
1727 for(i=rl-1;i>=0;i--)
1734 h=((poly)c->
m[i].
Data());
1736 else if (
pLmCmp(r,h)==-1) r=h;
1739 for(i=rl-1;i>=0;i--)
1741 h=((poly)c->
m[i].
Data());
1751 number n=n_ChineseRemainder(x,q,rl,
currRing->cf);
1752 for(i=rl-1;i>=0;i--)
1758 result=
pAdd(result,h);
1760 for(i=rl-1;i>=0;i--)
1765 res->
data=(
char *)result;
1772 int s=(int)(
long)v->
Data();
1781 ideal
M=(ideal)u->
CopyD();
1782 int s=(int)(
long)v->
Data();
1795 poly
p=(poly)v->
Data();
1802 poly
p=(poly)v->
Data();
1828 (ideal)(v->
Data()), p);
1840 ideal I=(ideal)u->
Data();
1845 res->
data = (
char *)((
long)d);
1850 poly
p=(poly)u->
Data();
1856 res->
data = (
char *)(d);
1859 res->
data=(
char *)(
long)(-1);
1864 int pos=(int)(
long)v->
Data();
1871 int pos=(int)(
long)v->
Data();
1872 ideal I=(ideal)u->
Data();
1886 ideal
m=(ideal)u->
Data();
1922 Warn(
"dim(%s,...) may be wrong because the mixed monomial ordering",v->
Name());
1927 ideal vid = (ideal)v->
Data();
1931 res->
data = (
char *)-1;
1937 if (i != -1)
pDelete(&vv->m[i]);
1940 res->
data = (
char *)d;
1957 ideal vi=(ideal)v->
Data();
1959 ideal ui=(ideal)u->
Data();
1993 res->
data=(
char *)L;
2030 number uu=(number)u->
Data();number vv=(number)v->
Data();
2039 res->
data=(
char *)L;
2044 int uu=(int)(
long)u->
Data();
int vv=(int)(
long)v->
Data();
2045 int p0=
ABS(uu),p1=
ABS(vv);
2046 int f0 = 1, f1 = 0, g0 = 0, g1 = 1, q, r;
2068 res->
data=(
char *)L;
2075 if (ret)
return TRUE;
2078 res->
data=(
char *)L;
2079 L->
m[0].
data=(
void *)r;
2081 L->
m[1].
data=(
void *)pa;
2083 L->
m[2].
data=(
void *)pb;
2091 int sw=(int)(
long)dummy->
Data();
2093 if ((sw<0)||(sw>2)) fac_sw=1;
2094 singclap_factorize_retry=0;
2106 l->
m[0].
data=(
void *)f;
2108 l->
m[1].
data=(
void *)v;
2109 res->
data=(
void *)l;
2114 res->
data=(
void *)f;
2127 res->
data=(
void *)p;
2141 while (p!=NULL) { p=p->next;l++; }
2147 L->
m[
l].
data=(
char *)h->d;
2154 res->
data=(
void *)L;
2161 number uu=(number)u->
Data();
2162 number vv=(number)v->
Data();
2170 ideal uu=(ideal)u->
Data();
2171 number vv=(number)v->
Data();
2185 ring r=(ring)u->
Data();
2194 int par_perm_size=0;
2203 par_perm_size=
rPar(r);
2212 perm=(
int *)
omAlloc0((r->N+1)*
sizeof(int));
2213 if (par_perm_size!=0)
2214 par_perm=(
int *)
omAlloc0(par_perm_size*
sizeof(
int));
2219 char ** r_par_names=
NULL;
2220 if (r->cf->extRing!=
NULL)
2222 r_par=r->cf->extRing->N;
2223 r_par_names=r->cf->extRing->names;
2226 char ** c_par_names=
NULL;
2230 c_par_names=
currRing->cf->extRing->names;
2234 maFindPerm(r->names, r->N, r_par_names, r_par,
2236 perm,par_perm,
currRing->cf->type);
2238 #ifdef HAVE_SHIFTBBA 2243 perm,par_perm,
currRing->cf->type,r->isLPring);
2250 if (par_perm_size!=0)
2260 Print(
"// var nr %d: %s -> %s\n",i,r->names[i],
currRing->names[i]);
2264 Print(
"// par nr %d: %s -> %s\n",
2270 memset(&tmpW,0,
sizeof(
sleftv));
2274 perm,par_perm,par_perm_size,nMap)))
2292 Werror(
"no identity map from %s (%s -> %s)",u->
Fullname(),s1,s2);
2303 char *where=(
char *)u->
Data();
2304 char *what=(
char *)v->
Data();
2305 char *
found = strstr(where,what);
2308 res->
data=(
char *)((found-where)+1);
2317 ideal
id = (ideal)u->
Data();
2318 int max_length = (int)(
long)v->
Data();
2319 if (max_length < 0) {
2320 WerrorS(
"length for fres must not be negative");
2323 if (max_length == 0) {
2326 Warn(
"full resolution in a qring may be infinite, " 2327 "setting max length to %d", max_length);
2330 char *method = (
char *)w->
Data();
2334 if (strcmp(method,
"complete") != 0
2335 && strcmp(method,
"frame") != 0
2336 && strcmp(method,
"extended frame") != 0
2337 && strcmp(method,
"single module") != 0) {
2338 WerrorS(
"wrong optional argument for fres");
2342 res->
data = (
void *)r;
2350 w->
data = (
char *)
"complete";
2364 int uu=(int)(
long)u->
Data();
int vv=(int)(
long)v->
Data();
2365 int p0=
ABS(uu),p1=
ABS(vv);
2373 res->
data=(
char *)(
long)p0;
2378 number n1 = (number) u->
Data();
2379 number n2 = (number) v->
Data();
2385 number a=(number) u->
Data();
2386 number
b=(number) v->
Data();
2411 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
2412 PrintS(
"// performed for generic fibre, that is, over Q\n");
2420 switch((
int)(long)v->
Data())
2423 res->
data=(
void *)iv;
2448 WerrorS(
"variable must have weight 1");
2470 WerrorS(
"variable must have weight 1");
2477 ideal v_id=(ideal)v->
Data();
2486 currRing->pLexOrder=save_pLexOrder;
2490 if (w!=
NULL)
delete w;
2509 const int n = L->
nr;
assume (n >= 0);
2510 std::vector<ideal> V(n + 1);
2512 for(
int i = n;
i >= 0;
i--) V[
i] = (ideal)(L->
m[
i].
Data());
2563 memset(&h,0,
sizeof(
sleftv));
2594 char *
s=(
char *)u->
Data();
2595 if(strcmp(s,
"with")==0)
2597 if (strcmp(s,
"try")==0)
2599 WerrorS(
"invalid second argument");
2600 WerrorS(
"load(\"libname\" [,option]);");
2622 ideal u_id=(ideal)u->
Data();
2623 ideal v_id=(ideal)v->
Data();
2626 if ((*w_u).compare((w_v))!=0)
2628 WarnS(
"incompatible weights");
2629 delete w_u; w_u=
NULL;
2637 WarnS(
"wrong weights");
2638 delete w_u; w_u=
NULL;
2654 number q=(number)v->
Data();
2665 number q=(number)v->
Data();
2676 poly q=(poly)v->
Data();
2682 poly
p=(poly)(u->
Data());
2700 char *opt=(
char *)v->
Data();
2712 if(strcmp(l->m->type,
"ASCII")!=0)
2714 Werror(
"ASCII link required, not `%s`",l->m->type);
2719 if ( l->name[0]!=
'\0')
2723 if (v==
NULL) opt=(
const char*)
"i";
2724 else opt=(
const char *)v->
Data();
2731 monitor((FILE *)l->data,mode);
2759 if(err) {
pDelete(&p);
WerrorS(
"no negative exponent allowed"); }
2766 const char *
s=(
const char *)u->
Data();
2767 newstruct_desc d=
NULL;
2773 else WerrorS(
"name of newstruct must be longer than 1 character");
2779 int i=(
int)(long)v->
Data();
2787 Werror(
"par number %d out of range 1..%d",
i,p);
2797 WerrorS(
"basering must NOT be a qring!");
2817 WerrorS(
"basering must NOT be a qring!");
2837 WerrorS(
"basering must NOT be a qring!");
2857 WerrorS(
"basering must NOT be a qring!");
2879 const poly q = (poly)b->
Data();
2895 ring r = (ring)a->
Data();
2904 Werror(
"%s is not an opposite ring to current ring",a->
Fullname());
2910 int argtype =
IDTYP(w);
2917 res->
rtyp = argtype;
2923 poly q = (poly)
IDDATA(w);
2925 res->
rtyp = argtype;
2933 res->
rtyp = argtype;
2946 res->
rtyp = argtype;
2951 WerrorS(
"unsupported type in oppose");
2975 int i=(int)(
long)u->
Data();
2976 int j=(int)(
long)v->
Data();
2977 if (j-i <0) {
WerrorS(
"invalid range for random");
return TRUE;}
2978 res->
data =(
char *)(
long)((i >
j) ? i : (
siRand() % (j-i+1)) +
i);
2984 int isRowEchelon = (int)(
long)v->
Data();
2985 if (isRowEchelon != 1) isRowEchelon = 0;
2986 int rank =
luRank(m, isRowEchelon);
2987 res->
data =(
char *)(
long)rank;
2997 if ((l!=
NULL)&&(l->name!=
NULL)) s=l->name;
2999 Werror(
"cannot read from `%s`",s);
3002 memcpy(res,r,
sizeof(
sleftv));
3008 ideal vi=(ideal)v->
Data();
3016 ideal ui=(ideal)u->
Data();
3017 ideal vi=(ideal)v->
Data();
3025 int maxl=(int)(
long)v->
Data();
3028 WerrorS(
"length for res must not be negative");
3034 ideal u_id=(ideal)u->
Data();
3043 "full resolution in a qring may be infinite, setting max length to %d",
3057 int add_row_shift=0;
3061 add_row_shift = ww->
min_in();
3062 (*ww) -= add_row_shift;
3078 (
"`lres` not implemented for inhomogeneous input or qring");
3082 WarnS(
"the current implementation of `lres` may not work in the case of a single variable");
3092 (
"`kres` not implemented for inhomogeneous input or qring");
3104 (
"`hres` not implemented for inhomogeneous input or qring");
3107 ideal u_id_copy=
idCopy(u_id);
3109 r=
syHilb(u_id_copy,&dummy);
3122 res->
data=(
void *)r;
3123 if ((weights!=
NULL) && (ww!=
NULL)) {
delete ww; ww=
NULL; }
3127 if (weights!=
NULL) (*ww) += add_row_shift;
3156 n1 = (number)u->
CopyD();
3160 i = (int)(
long)u->
Data();
3168 i = (int)(
long)v->
Data();
3172 res->
data = (
char*)l;
3178 res->
data = (
char *)r;
3191 res->
data = (
char *)r;
3198 res->
data = (
char *)r;
3201 #define SIMPL_NORMALIZE 64 3202 #define SIMPL_LMDIV 32 3203 #define SIMPL_LMEQ 16 3204 #define SIMPL_MULT 8 3206 #define SIMPL_NULL 2 3207 #define SIMPL_NORM 1 3210 int sw = (int)(
long)v->
Data();
3241 res->
data = (
char * )
id;
3248 int sw=(int)(
long)dummy->
Data();
3251 singclap_factorize_retry=0;
3263 l->
m[0].
data=(
void *)f;
3265 l->
m[1].
data=(
void *)v;
3266 res->
data=(
void *)l;
3271 res->
data=(
void *)f;
3284 res->
data=(
void *)p;
3305 int sw = (int)(
long)v->
Data();
3316 res->
data = (
char * )p;
3324 ideal u_id=(ideal)(u->
Data());
3340 res->
data = (
char *)result;
3349 ideal i1=(ideal)(u->
Data());
3355 poly
p=(poly)v->
Data();
3359 memset(i0->m,0,
sizeof(poly)*
IDELEMS(i0));
3388 res->
data = (
char *)result;
3392 i0=(ideal)v->
CopyD();
3394 memset(i0->m,0,
sizeof(poly)*
IDELEMS(i0));
3424 res->
data = (
char *)result;
3433 ideal I=(ideal)u->
Data();
3436 if (w!=
NULL)
delete w;
3442 ideal
A=(ideal)u->
Data();
3443 ideal
B=(ideal)v->
Data();
3449 sleftv tmp_u,tmp_v,tmp_res;
3469 int i=(
int)(long)v->
Data();
3490 int t = (int)(
long)v->
Data();
3500 res->
data = (
void*)(
long)
i;
3515 int timeout = 1000*(int)(
long)v->
Data();
3523 for(
unsigned nfinished = 0; nfinished < ((unsigned)Lforks->
nr)+1; nfinished++)
3548 res->
data = (
void*)(
long)ret;
3556 #define jjWRONG2 (proc2)jjWRONG 3557 #define jjWRONG3 (proc3)jjWRONG 3602 res->
data = (
char *)n;
3607 res->
data = (
char *)(-(
long)u->
Data());
3614 res->
data = (
char *)n;
3632 res->
data = (
char *)iv;
3639 res->
data = (
char *)bim;
3648 ring r=(ring)u->
Data();
3652 char name_buffer[100];
3653 static int ending=1000000;
3655 sprintf(name_buffer,
"PYTHON_RING_VAR%d",ending);
3679 l->m[0].data=(
void *)m;
3680 l->m[1].data=(
void *)iv;
3681 res->
data = (
char *)l;
3701 number n=(number)u->
CopyD();
3725 number n=(number) tmp.
data;
3763 res->
data = (
char *)p;
3801 ring r=(ring)v->
Data();
3807 extern int ipower (
int b,
int n );
3808 elems=
ipower(r->cf->ch,r->cf->extRing->pFDeg(r->cf->extRing->qideal->m[0],r->cf->extRing));
3810 res->
data = (
char *)(
long)elems;
3816 poly
p=(poly)v->
Data();
3818 else res->
data=(
char *)-1;
3823 ideal I=(ideal)u->
Data();
3829 res->
data = (
char *)(
long)d;
3838 PrintS(
"// NOTE: computation of degree is being performed for\n");
3839 PrintS(
"// generic fibre, that is, over Q\n");
3858 else if (v->
rtyp!=0) res->
data=(
void *)(-1);
3866 number n =
reinterpret_cast<number
>(v->
Data());
3875 number n =
reinterpret_cast<number
>(v->
Data());
3895 Werror(
"det of %d x %d bigintmat",i,j);
3904 number2 r=(number2)
omAlloc0(
sizeof(*r));
3915 Werror(
"det of %d x %d cmatrix",i,j);
3931 Werror(
"det of %d x %d intmat",i,j);
3938 ideal I=(ideal)v->
Data();
3947 Warn(
"dim(%s) may be wrong because the mixed monomial ordering",v->
Name());
3952 ideal vid = (ideal)v->
Data();
3956 res->
data = (
char *)-1L;
3978 for(
unsigned ii=0;ii<(unsigned)
IDELEMS(vv);ii++)
3987 for(
unsigned jj = 0;jj<(unsigned)
IDELEMS(vc)-1;jj++)
3989 if((vc->m[jj]!=
NULL)
3997 if (j != -1)
pDelete(&vc->m[j]);
4010 res->
data = (
char *)d;
4024 if ((l!=
NULL)&&(l->name!=
NULL)) s=l->name;
4026 Werror(
"cannot dump to `%s`",s);
4035 int co=(int)(
long)v->
Data();
4041 else WerrorS(
"argument of gen must be positive");
4046 char * d = (
char *)v->
Data();
4047 char *
s = (
char *)
omAlloc(strlen(d) + 13);
4048 strcpy( s, (
char *)d);
4049 strcat( s,
"\n;RETURN();\n");
4070 while (p!=
NULL) { p=p->next;l++; }
4075 L->
m[
l].
data=(
char *)h->d;
4086 WarnS(
"no factorization implemented");
4090 res->
data=(
void *)L;
4096 singclap_factorize_retry=0;
4103 l->
m[0].
data=(
void *)f;
4105 l->
m[1].
data=(
void *)v;
4106 res->
data=(
void *)l;
4115 if ((l!=
NULL)&&(l->name!=
NULL)) s=l->name;
4117 Werror(
"cannot get dump from `%s`",s);
4126 ideal I=(ideal)v->
Data();
4135 ideal I=(ideal)v->
Data();
4149 WerrorS(
"module must be zero-dimensional");
4150 if (delete_w)
delete w;
4173 if (delete_w)
delete w;
4174 res->
data=(
void *)po;
4182 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
4183 PrintS(
"// performed for generic fibre, that is, over Q\n");
4197 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
4198 PrintS(
"// performed for generic fibre, that is, over Q\n");
4207 ideal v_id=(ideal)v->
Data();
4215 char *s_isHomog=
omStrDup(
"isHomog");
4221 else if (w!=
NULL)
delete w;
4239 #ifdef HAVE_SHIFTBBA 4242 int deg = (int)(
long)v->
Data();
4244 WerrorS(
"deg of letterplace ring to small");
4268 res->
data=(
char *)mat;
4278 res->
data=(
char *)I;
4285 ring q=(ring)v->
Data();
4288 if (q->qideal==
NULL)
4295 WerrorS(
"can only get ideal from identical qring");
4321 WarnS(
"interred: this command is experimental over the integers");
4340 res->
data = (
char *)0;
4347 poly
p=(poly)(v->
Data());
4350 i->m[k-1]=
pDiff(p,k);
4352 res->
data = (
char *)i;
4359 WerrorS(
"differentiation not defined in the coefficient ring");
4362 number n = (number) u->
Data();
4363 number
k = (number) v->
Data();
4376 ideal
id = (ideal)a->
Data();
4381 poly *
p = result->m;
4383 for(
int v = 1; v <=
currRing->N; v++ )
4386 for(
int i = 0;
i < W;
i++, p++, q++ )
4387 *p =
pDiff( *q, v );
4391 res->
data = (
char *)result;
4412 poly
p=(poly)v->
Data();
4425 poly
p=(poly)v->
Data();
4438 res->
data=(
char *)iv;
4443 poly
p=(poly)v->
Data();
4452 res->
data = (
char*) lm;
4464 if (mm==0) mm=0x7fff;
4465 int isLetterplace=(int)(
long)
atGet(v,
"isLetterplaceRing",
INT_CMD);
4467 res->
data=(
char *)r;
4475 memset(&tmp, 0,
sizeof(tmp));
4491 WerrorS(
"matrix must be constant");
4505 res->
data=(
char*)ll;
4516 switch(((
int)(
long)v->
Data()))
4531 res->
data = (
char *)0;
4535 res->
data = (
char *)0;
4550 l->m[0].data=(
char *)r;
4553 l->m[1].data=(
char *)m;
4554 res->
data=(
char *)l;
4570 res->
data=(
char *)tmp;
4579 number n,
i; i=(number)v->
Data();
4584 res->
data=(
void *)n;
4614 res->
data=(
char*)(
long)((long)v->
Data()==0 ? 1 : 0);
4619 res->
data = (
char *)(
long)(((ring)(v->
Data()))->N);
4630 poly
p=(poly)v->
Data();
4636 int i=(int)(
long)v->
Data();
4639 if ((0<i) && (i<=p))
4645 Werror(
"par number %d out of range 1..%d",i,p);
4652 number nn=(number)v->
Data();
4663 int i=(int)(
long)v->
Data();
4669 Werror(
"par number %d out of range 1..%d",i,p);
4676 poly
p=(poly)v->
Data();
4680 WerrorS(
"poly must be constant");
4689 res->
data=(
void *)n;
4696 poly
p=(poly)v->
Data();
4700 WerrorS(
"poly must be constant");
4715 res->
data = (
char *)(
long)(i > 1 ?
i : 2);
4721 ideal v_id=(ideal)v->
Data();
4726 WarnS(
"wrong weights");
4755 res->
data = (
char *)n;
4760 char *
s= (
char *)v->
Data();
4765 if (strcmp(s, sArithBase.
sCmds[
i].name) == 0)
4767 res->
data = (
char *)1;
4776 res->
data = (
char *)1;
4784 res->
data =(
char *)(
long)rank;
4803 ring r=(ring)v->
Data();
4809 long mm=r->bitmask/2;
4826 ring r=(ring)v->
Data();
4833 ideal
i = (ideal)v->
Data();
4834 res->
data = (
char *)i->rank;
4858 WerrorS(
"qring not supported by slimgb at the moment");
4863 WerrorS(
"ordering must be global for slimgb");
4867 WarnS(
"groebner base computations with inexact coefficients can not be trusted due to rounding errors");
4870 ideal u_id=(ideal)u->
Data();
4875 WarnS(
"wrong weights");
4897 ideal v_id=(ideal)v->
Data();
4904 WarnS(
"wrong weights");
4915 res->
data = (
char *)result;
4923 ideal v_id=(ideal)v->
Data();
4930 WarnS(
"wrong weights");
4941 res->
data = (
char *)result;
4949 ideal v_id=(ideal)v->
Data();
4956 WarnS(
"wrong weights");
4967 res->
data = (
char *)result;
4975 WarnS(
"groebner base computations with inexact coefficients can not be trusted due to rounding errors");
4977 ideal v_id=(ideal)v->
Data();
4984 WarnS(
"wrong weights");
4995 res->
data = (
char *)result;
5007 singclap_factorize_retry=0;
5015 l->
m[0].
data=(
void *)f;
5017 l->
m[1].
data=(
void *)v;
5018 res->
data=(
void *)l;
5026 if (w!=
NULL)
delete w;
5035 ideal v_id=(ideal)v->
Data();
5037 int add_row_shift=0;
5041 add_row_shift=w->
min_in();
5042 (*w)-=add_row_shift;
5078 ring r = (ring)a->
Data();
5086 WarnS(
"opposite only for global orderings");
5093 ring r = (ring)a->
Data();
5105 ideal v_id=(ideal)a->
Data();
5107 result=(ideal)
twostd(v_id);
5110 return jjSTD(res,a);
5112 res->
data = (
char *)result;
5121 int t=(int)(
long)v->
data;
5171 int i=(int)(
long)v->
Data();
5172 if ((0<i) && (i<=currRing->
N))
5177 res->
data=(
char *)p;
5193 int i=(int)(
long)v->
Data();
5194 if ((0<i) && (i<=currRing->
N))
5221 res->
data = (
void*)(
long)
i;
5234 for(
int nfinished = 0; nfinished < Lforks->
nr+1; nfinished++)
5250 res->
data = (
void*)(
long)
j;
5260 #ifdef HAVE_DYNAMIC_LOADING 5267 Werror(
"%s: unknown type", s);
5270 Werror(
"cannot open %s", s);
5285 Werror(
"can not create package `%s`",plib);
5291 package pa=IDPACKAGE(pl);
5295 Werror(
"can not create package `%s` - binaries exists",plib);
5301 package savepack=currPack;
5304 char libnamebuf[1024];
5317 #ifdef HAVE_DYNAMIC_LOADING 5320 WerrorS(
"Dynamic modules are not supported by this version of Singular");
5329 WerrorS_dummy_cnt++;
5335 WerrorS_dummy_cnt=0;
5338 Print(
"loading of >%s< failed\n",s);
5346 res->
data = (
char *)strlen((
char *)v->
Data());
5444 number n=(number)u->
CopyD();
5451 number n=(number)u->
Data();
5460 char *s= (
char *)u->
Data();
5461 int r = (int)(
long)v->
Data();
5462 int c = (int)(
long)w->
Data();
5465 if ( (r<1) || (r>l) || (c<0) )
5471 sprintf((
char *)res->
data,
"%-*.*s",c,c,s+r-1);
5477 int r = (int)(
long)v->
Data();
5478 int c = (int)(
long)w->
Data();
5479 if ((r<1)||(r>iv->
rows())||(c<1)||(c>iv->
cols()))
5481 Werror(
"wrong range[%d,%d] in intmat %s(%d x %d)",
5490 if (u->
e==
NULL) res->
e=e;
5494 while (h->next!=
NULL) h=h->next;
5504 int r = (int)(
long)v->
Data();
5505 int c = (int)(
long)w->
Data();
5506 if ((r<1)||(r>bim->
rows())||(c<1)||(c>bim->
cols()))
5508 Werror(
"wrong range[%d,%d] in bigintmat %s(%d x %d)",
5522 while (h->next!=
NULL) h=h->next;
5532 int r = (int)(
long)v->
Data();
5533 int c = (int)(
long)w->
Data();
5537 Werror(
"wrong range[%d,%d] in matrix %s(%d x %d)",r,c,u->
Fullname(),
5551 while (h->next!=
NULL) h=h->next;
5560 ideal
m= (ideal)u->
Data();
5561 int r = (int)(
long)v->
Data();
5562 int c = (int)(
long)w->
Data();
5564 if ((r<1)||(r>m->rank)||(c<1)||(c>
IDELEMS(m)))
5566 Werror(
"wrong range[%d,%d] in matrix %s(%d x %d)",r,c,u->
Fullname(),
5580 while (h->next!=
NULL) h=h->next;
5598 WerrorS(
"cannot build expression lists from unnamed objects");
5601 memcpy(&ut,u,
sizeof(ut));
5602 memset(&t,0,
sizeof(t));
5604 for (l=0;l< iv->
length(); l++)
5606 t.
data=(
char *)(
long)((*iv)[
l]);
5616 memcpy(u,&ut,
sizeof(ut));
5648 WerrorS(
"cannot build expression lists from unnamed objects");
5651 memcpy(&ut,u,
sizeof(ut));
5652 memset(&t,0,
sizeof(t));
5654 for (l=0;l< iv->
length(); l++)
5656 t.
data=(
char *)(
long)((*iv)[
l]);
5666 memcpy(u,&ut,
sizeof(ut));
5699 WerrorS(
"cannot build expression lists from unnamed objects");
5702 memcpy(&ut,u,
sizeof(ut));
5703 memset(&t1,0,
sizeof(
sleftv));
5704 memset(&t2,0,
sizeof(
sleftv));
5707 for (vl=0;vl< vv->
length(); vl++)
5709 t1.
data=(
char *)(
long)((*vv)[vl]);
5710 for (wl=0;wl< wv->
length(); wl++)
5712 t2.
data=(
char *)(
long)((*wv)[wl]);
5722 memcpy(u,&ut,
sizeof(ut));
5742 memset(w,0,
sizeof(
sleftv));
5749 memset(v,0,
sizeof(
sleftv));
5752 memset(w,0,
sizeof(
sleftv));
5762 int k=(int)(
long)w->
Data();
5769 l->
m[0].
data=(
void *)m;
5770 l->
m[1].
data=(
void *)iv;
5777 l->
m[0].
data=(
void *)m;
5779 res->
data = (
char *)l;
5786 WerrorS(
"3rd argument must be a name of a matrix");
5789 ideal
i=(ideal)u->
Data();
5790 int rank=(int)i->rank;
5799 (ideal)(v->
Data()),(poly)(w->
Data()));
5806 WerrorS(
"3rd argument must be a name of a matrix");
5814 memset(&t,0,
sizeof(t));
5831 ideal I=(ideal)u->
Data();
5852 int n=(int)(
long)w->
Data();
5853 char *where=(
char *)u->
Data();
5854 char *what=(
char *)v->
Data();
5856 if ((1>n)||(n>(
int)strlen(where)))
5858 Werror(
"start position %d out of range",n);
5861 found = strchr(where+n-1,*what);
5862 if (*(what+1)!=
'\0')
5864 while((found !=
NULL) && (strncmp(found+1,what+1,strlen(what+1))!=0))
5866 found=strchr(found+1,*what);
5871 res->
data=(
char *)((found-where)+1);
5877 if ((
int)(
long)w->
Data()==0)
5889 Werror(
"weight vector must have size %d, not %d",
5896 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
5897 PrintS(
"// performed for generic fibre, that is, over Q\n");
5905 switch((
int)(long)v->
Data())
5908 res->
data=(
void *)iv;
5934 WerrorS(
"variable must have weight 1");
5952 WerrorS(
"variable must have weight 1");
5963 (*im)[
i] = (*arg)[
i];
5966 res->
data = (
char *)im;
5971 ideal I1=(ideal)u->
Data();
5972 ideal I2=(ideal)v->
Data();
5973 ideal I3=(ideal)w->
Data();
5984 ideal I=(ideal)u->
Data();
6001 WerrorS(
"2nd argument must be a unit");
6017 WerrorS(
"2nd argument must be a diagonal matrix of units");
6080 const int mk = (
const int)(
long)u->
Data();
6081 bool noIdeal =
true;
bool noK =
true;
bool noAlgorithm =
true;
6082 bool noCacheMinors =
true;
bool noCacheMonomials =
true;
6083 ideal IasSB;
int k;
char* algorithm;
int cacheMinors;
int cacheMonomials;
6099 noAlgorithm =
false;
6104 noCacheMinors =
false;
6110 noCacheMonomials =
false;
6124 noAlgorithm =
false;
6129 noCacheMinors =
false;
6134 noCacheMonomials =
false;
6141 algorithm = (
char*)u->
next->
Data();
6142 noAlgorithm =
false;
6146 noCacheMinors =
false;
6151 noCacheMonomials =
false;
6159 if (strcmp(algorithm,
"bareiss") == 0)
6160 algorithm = (
char*)
"Bareiss";
6161 if (strcmp(algorithm,
"laplace") == 0)
6162 algorithm = (
char*)
"Laplace";
6163 if (strcmp(algorithm,
"cache") == 0)
6164 algorithm = (
char*)
"Cache";
6173 if ((!noK) && (k == 0))
6175 WerrorS(
"Provided number of minors to be computed is zero.");
6178 if ((!noAlgorithm) && (strcmp(algorithm,
"Bareiss") != 0)
6179 && (strcmp(algorithm,
"Laplace") != 0)
6180 && (strcmp(algorithm,
"Cache") != 0))
6182 WerrorS(
"Expected as algorithm one of 'B/bareiss', 'L/laplace', or 'C/cache'.");
6185 if ((!noAlgorithm) && (strcmp(algorithm,
"Bareiss") == 0)
6188 Werror(
"Bareiss algorithm not defined over coefficient rings %s",
6189 "with zero divisors.");
6193 if ((mk < 1) || (mk > m->
rows()) || (mk > m->
cols()))
6202 if ((!noAlgorithm) && (strcmp(algorithm,
"Cache") == 0)
6203 && (noCacheMinors || noCacheMonomials))
6206 cacheMonomials = 100000;
6212 (noIdeal ? 0 : IasSB),
false);
6213 else if (strcmp(algorithm,
"Cache") == 0)
6215 (noIdeal ? 0 : IasSB), 3, cacheMinors,
6216 cacheMonomials,
false);
6219 (noIdeal ? 0 : IasSB),
false);
6229 (
const char *)w->
Data());
6243 WerrorS(
"2nd/3rd arguments must have names");
6247 const char *ring_name=u->
Name();
6254 if ((preim_ring==
NULL)
6257 Werror(
"preimage ring `%s` is not the basering",mapping->preimage);
6273 Werror(
"`%s` is not defined in `%s`",v->
name,ring_name);
6277 if (kernel_cmd) image=
idInit(1,1);
6294 Werror(
"`%s` is not defined in `%s`",w->
name,ring_name);
6301 WarnS(
"preimage in local qring may be wrong: use Ring::preimageLoc instead");
6310 int i=(int)(
long)u->
Data();
6311 int r=(int)(
long)v->
Data();
6312 int c=(int)(
long)w->
Data();
6313 if ((r<=0) || (c<=0))
return TRUE;
6324 for (k=0; k<iv->
length(); k++)
6326 (*iv)[
k] = ((
siRand() % di) - i);
6329 res->
data = (
char *)iv;
6337 if ((cf==
NULL) ||(cf->cfRandom==
NULL))
6339 Werror(
"no random function defined for coeff %d",cf->type);
6345 number2 nn=(number2)
omAlloc(
sizeof(*nn));
6355 int &ringvar, poly &monomexpr)
6357 monomexpr=(poly)w->
Data();
6358 poly
p=(poly)v->
Data();
6362 Werror(
"`%s` substitutes a ringvar only by a term",
6367 if ((ringvar=
pVar(p))==0)
6376 WerrorS(
"ringvar/par expected");
6400 if (nok)
return TRUE;
6401 poly
p=(poly)u->
Data();
6426 if (nok)
return TRUE;
6427 ideal
id=(ideal)u->
Data();
6431 if (monomexpr!=
NULL)
6446 Warn(
"possible OVERFLOW in subst, max exponent is %ld",
currRing->bitmask/2);
6476 memset(&tmp,0,
sizeof(tmp));
6485 int mi=(int)(
long)v->
Data();
6486 int ni=(int)(
long)w->
Data();
6489 Werror(
"converting ideal to matrix: dimensions must be positive(%dx%d)",mi,ni);
6500 memcpy(m->
m,I->m,i*
sizeof(poly));
6501 memset(I->m,0,i*
sizeof(poly));
6503 res->
data = (
char *)m;
6508 int mi=(int)(
long)v->
Data();
6509 int ni=(int)(
long)w->
Data();
6512 Werror(
"converting module to matrix: dimensions must be positive(%dx%d)",mi,ni);
6521 int mi=(int)(
long)v->
Data();
6522 int ni=(int)(
long)w->
Data();
6525 Werror(
"converting matrix to matrix: dimensions must be positive(%dx%d)",mi,ni);
6542 res->
data = (
char *)m;
6547 int mi=(int)(
long)v->
Data();
6548 int ni=(int)(
long)w->
Data();
6551 Werror(
"converting to smatrix: dimensions must be positive(%dx%d)",mi,ni);
6579 &(hw->data.uideal));
6588 Werror(
"`%s` must be 0-dimensional",v->
Name());
6600 Werror(
"`%s` must be 0-dimensional",v->
Name());
6611 0,(int)(
long)w->
Data());
6618 0,(int)(
long)w->
Data());
6624 int maxl=(int)v->
Data();
6625 ideal u_id=(ideal)u->
Data();
6641 WarnS(
"wrong weights");
6669 yes = (strcmp((
char *) res->
data, (
char *) w->
Data()) == 0);
6671 res->
data = (
void *)(
long)yes;
6685 ideal u_id=(ideal)(u->
Data());
6690 WarnS(
"wrong weights");
6707 res->
data = (
char *)result;
6795 WarnS(
"<module>,<module>,<int>[,<intvec>] expected!");
6802 ideal P=(ideal)w1.
Data();
6803 ideal
Q=(ideal)w2.
Data();
6805 int n=(int)(
long)v3->
Data();
6812 while( (i > 0) && ((*w0) > 0) )
6818 WarnS(
"not all weights are positive!");
6832 L->
m[1].
rtyp=v1->Typ();
6837 L->
m[1].
data=(
void *)R->m[0];
6846 L->
m[1].
data=(
void *)R;
6849 L->
m[0].
data=(
char *)T;
6922 res->
data=(
char *)
id;
6927 ring r=(ring)u->
Data();
6935 WerrorS(
"fetch(<ring>,<name>[,<intvec>[,<intvec>])");
6940 if (perm_par_l!=
NULL)
6949 int par_perm_size=0;
6958 par_perm_size=
rPar(r);
6966 par_perm_size=
rPar(r);
6968 if (par_perm_size!=0)
6969 par_perm=(
int *)
omAlloc0(par_perm_size*
sizeof(
int));
6971 if (perm_par_l==
NULL)
6973 if (par_perm_size!=0)
6978 if (par_perm_size==0)
WarnS(
"source ring has no parameters");
6981 for(i=
rPar(r)-1;i>=0;i--)
6983 if (i<perm_par_v->
length()) par_perm[
i]=(*perm_par_v)[
i];
6987 Warn(
"invalid entry for par %d: %d\n",i,par_perm[i]);
6993 for(i=
rVar(r)-1;i>=0;i--)
6995 if (i<perm_var_v->
length()) perm[i+1]=(*perm_var_v)[
i];
6999 Warn(
"invalid entry for var %d: %d\n",i,perm[i]);
7008 Print(
"// var nr %d: %s -> var %s\n",i,r->names[i-1],
currRing->names[perm[i]-1]);
7014 if (par_perm[i-1]<0)
7015 Print(
"// par nr %d: %s -> par %s\n",
7017 else if (par_perm[i-1]>0)
7018 Print(
"// par nr %d: %s -> var %s\n",
7024 memset(&tmpW,0,
sizeof(
sleftv));
7028 perm,par_perm,par_perm_size,nMap)))
7046 Werror(
"no identity map from %s (%s -> %s)",u->
Fullname(),s1,s2);
7084 WerrorS(
"cannot convert to ideal or module");
7095 r[
i]=(ideal)h->
Data();
7107 r[
i]=(ideal)tmp.
Data();
7139 matrix iMat;
int invertible;
7145 int rr = aMat->
rows();
7146 int cc = aMat->
cols();
7149 Werror(
"given matrix (%d x %d) is not quadratic, hence not invertible", rr, cc);
7154 WerrorS(
"matrix must be constant");
7164 int rr = uMat->
rows();
7165 int cc = uMat->
cols();
7168 Werror(
"third matrix (%d x %d) is not quadratic, hence not invertible",
7177 WerrorS(
"matricesx must be constant");
7184 Werror(
"expected either one or three matrices");
7202 res->
data=(
char*)ll;
7226 WerrorS(
"expected exactly three matrices and one vector as input");
7236 Werror(
"first matrix (%d x %d) is not quadratic",
7242 Werror(
"second matrix (%d x %d) is not quadratic",
7248 Werror(
"second matrix (%d x %d) and third matrix (%d x %d) do not fit",
7254 Werror(
"third matrix (%d x %d) and vector (%d x 1) do not fit",
7263 WerrorS(
"matrices must be constant");
7283 res->
data=(
char*)ll;
7297 (*iv)[
i]=(int)(
long)h->
Data();
7316 res->
data=(
char *)iv;
7333 WerrorS(
"2nd argument must be a unit");
7346 WerrorS(
"2nd argument must be a diagonal matrix of units");
7351 (
int)(long)u3->
Data(),
7360 Werror(
"%s(`poly`,`poly`,`int`,`intvec`) exppected",
7396 memset(res,0,
sizeof(
sleftv));
7405 && ((strcmp(u->
Name(),
"real")==0) || (strcmp(u->
Name(),
"complex")==0)))
7407 memcpy(res,u,
sizeof(
sleftv));
7408 memset(u,0,
sizeof(
sleftv));
7426 Werror(
"`int` expected while building `%s(`",u->
name);
7431 sprintf(nn,
"%s(%d",u->
name,(
int)(
long)v->
Data());
7435 while (*s!=
'\0') s++;
7439 Werror(
"`int` expected while building `%s`",nn);
7443 sprintf(s,
",%d",(
int)(
long)v->
Data());
7445 while (*s!=
'\0') s++;
7466 ideal I=(ideal)u->
Data();
7479 Werror(
"%s(`ideal`,`ideal`,`matrix`,`string`)\n" 7480 "or (`module`,`module`,`matrix`,`string`)expected",
7498 ideal I=(ideal)u->
Data();
7505 &(hw->data.uideal),alg);
7511 Werror(
"%s(`ideal`,`ideal`,`matrix`,`string`)\n" 7512 "or (`module`,`module`,`matrix`,`string`)expected",
7524 int add_row_shift = 0;
7526 if (weights!=
NULL) add_row_shift=weights->
min_in();
7559 ((ring)L->
m[i].
data)->ref++;
7565 res->
data=(
char *)L;
7614 WerrorS(
"2nd argument must be a diagonal matrix of units");
7622 (
int)(long)u4->
Data()
7632 else u1p=(poly)u1->
Data();
7635 else u2p=(poly)u2->
Data();
7639 WerrorS(
"2nd argument must be a unit");
7668 WerrorS(
"2nd argument must be a diagonal matrix of units");
7676 (
int)(long)u4->
Data(),
7688 WerrorS(
"2nd argument must be a unit");
7699 Werror(
"%s(`ideal`,`ideal`,`matrix`,`int`,`intvec`) exppected",
7707 unsigned nCount = (sArithBase.
nCmdUsed-1)/3;
7708 if((3*nCount)<sArithBase.
nCmdUsed) nCount++;
7711 for(i=0; i<nCount; i++)
7715 Print(
"%-20s",sArithBase.
sCmds[i+1+nCount].name);
7716 if(i+1+2*nCount<sArithBase.
nCmdUsed)
7717 Print(
"%-20s",sArithBase.
sCmds[i+1+2*nCount].name);
7739 char** slist = (
char**)
omAlloc(n*
sizeof(
char*));
7742 for (i=0, j=0; i<n; i++, v = v ->
next)
7744 slist[
i] = v->String();
7746 j+=strlen(slist[i]);
7748 char* s = (
char*)
omAlloc((j+1)*
sizeof(char));
7752 strcat(s, slist[i]);
7772 #if defined(__alpha) && !defined(linux) 7775 void usleep(
unsigned long usec);
7804 leftv u =
v;
int factorsGiven = 0;
7807 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
7810 else h = (poly)u->
Data();
7814 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
7817 else d = (int)(
long)u->
Data();
7823 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
7828 f0 = (poly)u->
Data();
7838 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
7843 xIndex = (int)(
long)u->
Data();
7844 yIndex = (int)(
long)u->
next->
Data();
7850 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
7857 WerrorS(
"expected non-constant polynomial argument(s)");
7861 if ((xIndex < 1) || (n < xIndex))
7863 Werror(
"index for variable x (%d) out of range [1..%d]", xIndex, n);
7866 if ((yIndex < 1) || (n < yIndex))
7868 Werror(
"index for variable y (%d) out of range [1..%d]", yIndex, n);
7871 if (xIndex == yIndex)
7873 WerrorS(
"expected distinct indices for variables x and y");
7878 if (factorsGiven == 0)
7892 WerrorS(
"expected h(0,y) to have exactly two distinct monic factors");
7907 res->
data = (
char*)L;
7918 #if defined(HAVE_USLEEP) 7919 if (((
long) res->
data) == 0L)
7928 #elif defined(HAVE_SLEEP) 7929 if (((
int) res->
data) == 0)
7934 si_sleep((is - 1)/1000000 + 1);
7953 if ((rest!=
NULL) && (!b))
7958 memset(&tmp_res,0,
sizeof(tmp_res));
7960 memcpy(res,&tmp_res,
sizeof(tmp_res));
7975 WerrorS(
"expected (matrix, number, number, number) as arguments");
7980 (number)(v->
Data()),
7981 (number)(w->
Data()),
7982 (number)(x->
Data()));
7992 ideal i1=(ideal)(u->
Data());
7998 WerrorS(
"expected `std(`ideal/module`,`poly/vector`,`intvec`,`intvec`)");
8013 i0->m[0]=(poly)v->
Data();
8018 i0=(ideal)v->
Data();
8022 WerrorS(
"expected `std(`ideal/module`,`poly/vector`,`intvec`,`intvec`)");
8029 memset(i0->m,0,
sizeof(poly)*
IDELEMS(i0));
8039 WarnS(
"wrong weights");
8062 res->
data = (
char *)result;
8073 WerrorS(
"expected `cring` [ `id` ... ]");
8079 char **n=(
char**)
omAlloc0(N*
sizeof(
char*));
8080 for(
int i=0;
i<
N;
i++,names=names->
next)
8082 n[
i]=(
char *)names->Name();
8094 r->start =(int)(
long)e->
Data();
8099 int c=(int)(
long)u->
Data();
8103 PrintS(
"delete all variables\n");
8108 default:
WerrorS(
"not implemented");
8113 #define NULL_VAL NULL 8117 #include "iparith.inc" 8129 memset(res,0,
sizeof(
sleftv));
8136 while (dA2[i].
cmd==op)
8138 if ((at==dA2[i].arg1)
8139 && (bt==dA2[i].arg2))
8156 if ((call_failed=dA2[i].
p(res,a,b)))
8176 while (dA2[i].
cmd==op)
8201 failed= ((
iiConvert(at,dA2[i].arg1,ai,a,an))
8203 || (call_failed=dA2[i].
p(res,an,bn)));
8242 Werror(
"`%s` is not defined",s);
8249 Werror(
"%s(`%s`,`%s`) failed" 8254 Werror(
"`%s` %s `%s` failed" 8259 while (dA2[i].
cmd==op)
8261 if(((at==dA2[i].arg1)||(bt==dA2[i].arg2))
8266 Werror(
"expected %s(`%s`,`%s`)" 8269 Werror(
"expected `%s` %s `%s`" 8298 memset(res,0,
sizeof(
sleftv));
8307 memcpy(&d->arg1,a,
sizeof(
sleftv));
8309 memcpy(&d->arg2,b,
sizeof(
sleftv));
8313 res->
data=(
char *)d;
8326 if (!bb->blackbox_Op2(op,res,a,b))
return FALSE;
8332 else if ((bt>
MAX_TOK)&&(op!=
'('))
8337 if(!bb->blackbox_Op2(op,res,a,b))
return FALSE;
8357 memset(res,0,
sizeof(
sleftv));
8365 while (dA1[i].
cmd==op)
8384 if ((call_failed=dA1[i].
p(res,a)))
8404 while (dA1[i].
cmd==op)
8427 failed= ((
iiConvert(at,dA1[i].arg,ai,a,an,dConvertTypes))
8428 || (call_failed=dA1[i].
p(res,an)));
8469 while (dA1[i].
cmd==op)
8473 Werror(
"expected %s(`%s`)" 8487 memset(res,0,
sizeof(
sleftv));
8496 memcpy(&d->arg1,a,
sizeof(
sleftv));
8500 res->
data=(
char *)d;
8513 res->
data=bb->blackbox_Init(bb);
8514 if(!bb->blackbox_Assign(res,a))
return FALSE;
8524 if(!bb->blackbox_Op1(op,res,a))
return FALSE;
8545 const struct sValCmd3* dA3,
int at,
int bt,
int ct,
8548 memset(res,0,
sizeof(
sleftv));
8557 while (dA3[i].
cmd==op)
8559 if ((at==dA3[i].arg1)
8560 && (bt==dA3[i].arg2)
8561 && (ct==dA3[i].arg3))
8569 Print(
"call %s(%s,%s,%s)\n",
8571 if ((call_failed=dA3[i].
p(res,a,b,c)))
8592 while (dA3[i].
cmd==op)
8608 Print(
"call %s(%s,%s,%s)\n",
8611 failed= ((
iiConvert(at,dA3[i].arg1,ai,a,an,dConvertTypes))
8612 || (
iiConvert(bt,dA3[i].arg2,bi,b,bn,dConvertTypes))
8613 || (
iiConvert(ct,dA3[i].arg3,ci,c,cn,dConvertTypes))
8614 || (call_failed=dA3[i].
p(res,an,bn,cn)));
8663 Werror(
"`%s` is not defined",s);
8669 Werror(
"%s(`%s`,`%s`,`%s`) failed" 8673 while (dA3[i].
cmd==op)
8675 if(((at==dA3[i].arg1)
8677 ||(ct==dA3[i].arg3))
8680 Werror(
"expected %s(`%s`,`%s`,`%s`)" 8700 memset(res,0,
sizeof(
sleftv));
8709 memcpy(&d->arg1,a,
sizeof(
sleftv));
8711 memcpy(&d->arg2,b,
sizeof(
sleftv));
8713 memcpy(&d->arg3,c,
sizeof(
sleftv));
8717 res->
data=(
char *)d;
8729 if(!bb->blackbox_Op3(op,res,a,b,c))
return FALSE;
8778 if(v==
NULL)
return failed;
8790 memset(res,0,
sizeof(
sleftv));
8800 res->
data=(
char *)d;
8805 memcpy(&d->arg1,a,
sizeof(
sleftv));
8840 if(!bb->blackbox_OpM(op,res,a))
return FALSE;
8855 if ((args==
dArithM[i].number_of_args)
8856 || (
dArithM[i].number_of_args==-1)
8857 || ((
dArithM[i].number_of_args==-2)&&(args>0)))
8886 Werror(
"%s(...) failed",s);
8908 if (strcmp(n, sArithBase.
sCmds[an].name) == 0)
8913 else if ((an!=en) && (strcmp(n, sArithBase.
sCmds[en].name) == 0))
8926 if (*n < *(sArithBase.
sCmds[i].name))
8930 else if (*n > *(sArithBase.
sCmds[i].name))
8936 int v=strcmp(n,sArithBase.
sCmds[i].name);
8952 tok=sArithBase.
sCmds[
i].tokval;
8953 if(sArithBase.
sCmds[i].alias==2)
8955 Warn(
"outdated identifier `%s` used - please change your code",
8956 sArithBase.
sCmds[i].name);
8957 sArithBase.
sCmds[
i].alias=1;
8994 return sArithBase.
sCmds[
i].toktype;
9006 if (op==dArithTab[p].
cmd)
return dArithTab[
p].start;
9007 if (op<dArithTab[p].cmd) e=p-1;
9025 return sArithBase.
sCmds[0].name;
9027 if (tok==
ANY_TYPE)
return "any_type";
9028 if (tok==
COMMAND)
return "command";
9029 if (tok==
NONE)
return "nothing";
9032 Tok2Cmdname_buf[1]=(char)tok;
9041 if (tok==
IDHDL)
return "identifier";
9044 for(i=0; i<sArithBase.
nCmdUsed; i++)
9047 if ((sArithBase.
sCmds[i].tokval == tok)&&
9048 (sArithBase.
sCmds[i].alias==0))
9050 return sArithBase.
sCmds[
i].name;
9054 for(i=0; i<sArithBase.
nCmdUsed; i++)
9056 if (sArithBase.
sCmds[i].tokval == tok)
9058 return sArithBase.
sCmds[
i].name;
9061 return sArithBase.
sCmds[0].name;
9077 cmdnames *pCmdL = (cmdnames*)a;
9078 cmdnames *pCmdR = (cmdnames*)b;
9083 if(pCmdL->name==
NULL)
return 1;
9084 if(pCmdR->name==
NULL)
return -1;
9087 if(strcmp(pCmdL->name,
"$INVALID$")==0)
return -1;
9088 if(strcmp(pCmdR->name,
"$INVALID$")==0)
return 1;
9091 if (pCmdL->tokval==-1)
9093 if (pCmdR->tokval==-1)
9094 return strcmp(pCmdL->name, pCmdR->name);
9099 if(pCmdR->tokval==-1)
return -1;
9101 return strcmp(pCmdL->name, pCmdR->name);
9115 memset(&sArithBase, 0,
sizeof(sArithBase));
9158 if (strcmp(szName, sArithBase.
sCmds[an].name) == 0)
9163 else if (strcmp(szName, sArithBase.
sCmds[en].name) == 0)
9175 if (*szName < *(sArithBase.
sCmds[i].name))
9179 else if (*szName > *(sArithBase.
sCmds[i].name))
9185 v=strcmp(szName,sArithBase.
sCmds[i].name);
9209 if(nPos<0)
return NULL;
9211 return sArithBase.
sCmds[nPos].name;
9218 if(szName==
NULL)
return -1;
9221 if(nIndex<0 || nIndex>=(
int)sArithBase.
nCmdUsed)
9223 Print(
"'%s' not found (%d)\n", szName, nIndex);
9228 qsort(sArithBase.
sCmds, sArithBase.
nCmdUsed,
sizeof(cmdnames),
9258 sArithBase.
sCmds[nPos].alias = nAlias;
9259 sArithBase.
sCmds[nPos].tokval = nTokval;
9260 sArithBase.
sCmds[nPos].toktype = nToktype;
9266 if(szName==
NULL)
return -1;
9270 Print(
"'%s' already exists at %d\n", szName, nIndex);
9289 qsort(sArithBase.
sCmds, sArithBase.
nCmdUsed,
sizeof(cmdnames),
9308 WerrorS(
"not implemented for non-commutative rings");
9318 #ifdef HAVE_SHIFTBBA 9334 WerrorS(
"not implemented for rings with rings as coeffients");
9341 WerrorS(
"domain required as coeffients");
9347 WarnS(
"considering the image in Q[...]");
9360 WerrorS(
"not implemented for rings with rings as coeffients (except ZZ)");
9366 int return_type=c->
m[0].
Typ();
9382 for (
unsigned i=0;
i<=(unsigned)c->
nr;
i++)
9387 if (bo) {
Werror(
"chinrem failed for list entry %d",
i+1);
break;}
9397 WerrorS(
"poly/ideal/module/matrix/list expected");
9414 ideal *
x=(ideal *)
omAlloc(rl*
sizeof(ideal));
9420 for(i=rl-1;i>=0;i--)
9422 if (c->
m[i].
Typ()!=return_type)
9431 x[
i]->m[0]=(poly)c->
m[i].
CopyD();
9447 xx=(number *)
omAlloc(rl*
sizeof(number));
9448 for(i=rl-1;i>=0;i--)
9460 Werror(
"bigint expected at pos %d",i+1);
9467 number *q=(number *)
omAlloc(rl*
sizeof(number));
9470 for(i=rl-1;i>=0;i--)
9477 for(i=rl-1;i>=0;i--)
9489 Werror(
"bigint expected at pos %d",i+1);
9505 res->
data=(
char *)n;
9513 res->
data=(
char *)result->m[0];
9518 res->
data=(
char *)result;
9520 for(i=rl-1;i>=0;i--)
9525 res->
rtyp=return_type;
9526 return result==
NULL;
9535 for (
unsigned i=0;
i<=(unsigned)c->
nr;
i++)
9540 if (bo) {
Werror(
"farey failed for list entry %d",
i+1);
break;}
9553 if (at < bt)
return -1;
9554 if (at > bt)
return 1;
9555 int tab_pos=
iiTabIndex(dArithTab2,JJTAB2LEN,
'<');
9557 memset(&tmp,0,
sizeof(
sleftv));
9563 unsigned long ad=(
unsigned long)a->
Data();
9564 unsigned long bd=(
unsigned long)b->
Data();
9565 if (ad<bd)
return -1;
9566 else if (ad==bd)
return 0;
9577 unsigned long ad=(
unsigned long)a->
Data();
9578 unsigned long bd=(
unsigned long)b->
Data();
9579 if (ad<bd)
return -1;
9580 else if (ad==bd)
return 0;
9611 for(j=i; j<len;j++) l->
m[j]=l->
m[j+1];
9612 memset(&(l->
m[len]),0,
sizeof(
sleftv));
BOOLEAN rHasLocalOrMixedOrdering(const ring r)
const struct sConvertTypes dConvertTypes[]
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 jjTENSOR_Ma(leftv res, leftv u, leftv v)
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 jjMINUS_B(leftv res, leftv u, leftv v)
static BOOLEAN jjDET2_S(leftv res, leftv u, leftv v)
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)
static BOOLEAN jjREPART(leftv res, leftv v)
int iiTestConvert(int inputType, int outputType)
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)
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)
ideal idMultSect(resolvente arg, int length, GbVariant alg)
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)
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 idHomIdeal(ideal id, ideal Q=NULL)
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 jjDelete_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjINTERSEC3S(leftv res, leftv u, leftv v, leftv w)
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)
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
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)
static BOOLEAN jjPLUS_MA_P(leftv res, leftv u, leftv v)
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 jjMINUS_SM(leftv res, leftv u, leftv v)
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 jjSYZ_2(leftv res, leftv u, 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)
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...
void sBucketDestroyAdd(sBucket_pt bucket, poly *p, int *length)
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)
void maFindPermLP(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, int lV)
const struct sValCmd2 dArith2[]
static BOOLEAN jjGT_I(leftv res, leftv u, leftv v)
static BOOLEAN jjidFreeModule(leftv res, leftv v)
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)
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;
void sBucket_Add_p(sBucket_pt bucket, poly p, int length)
adds poly p to bucket destroys p!
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)
static BOOLEAN jjPROC1(leftv res, leftv u)
ideal sm_Sub(ideal a, ideal b, const ring R)
intvec * ivTranp(intvec *o)
static BOOLEAN jjEQUAL_SM(leftv res, leftv u, leftv v)
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)
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 rField_is_Z(const ring r)
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)
static BOOLEAN jjSUBST_Bu(leftv res, leftv u, leftv v, leftv w)
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 rIsLPRing(const ring r)
syStrategy syFrank(const ideal arg, const int length, const char *method, const bool use_cache=true, const bool use_tensor_trick=false)
static BOOLEAN jjP2N(leftv res, leftv v)
ideal idMinEmbedding(ideal arg, BOOLEAN inPlace, intvec **w)
static BOOLEAN jjMINUS_B_P(leftv res, leftv u, leftv v)
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 jjDET2(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)
static BOOLEAN jjMOD_P(leftv res, leftv u, leftv v)
#define pGetComp(p)
Component.
static BOOLEAN jjMINUS_V(leftv res, leftv u, leftv v)
static BOOLEAN jjBRACK_SM(leftv res, leftv u, leftv v, leftv w)
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)
static BOOLEAN jjFRES3(leftv res, leftv u, leftv v, leftv w)
newstruct_desc newstructFromString(const char *s)
static BOOLEAN jjWAIT1ST2(leftv res, leftv u, leftv v)
BOOLEAN pb(leftv res, leftv args)
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)
static BOOLEAN jjTENSOR(leftv res, leftv u, leftv v)
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(..),..)
CanonicalForm ndConvSingNFactoryN(number, BOOLEAN, const coeffs)
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)
static BOOLEAN jjRPLUS(leftv res, leftv u, 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)
static BOOLEAN idHomModule(ideal m, ideal Q, intvec **w)
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)
static BOOLEAN jjSetRing(leftv, leftv u)
#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)
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)
static BOOLEAN jjPLUS_SM(leftv res, leftv u, leftv v)
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)
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 jjINDEX_PBu(leftv res, leftv u, leftv v)
static BOOLEAN jjLOAD1(leftv, leftv v)
ideal idSeries(int n, ideal M, matrix U, intvec *w)
static BOOLEAN jjSMATRIX_Mo(leftv res, leftv u, leftv v, leftv w)
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)
poly p_Divide(poly p, poly q, const ring r)
polynomial division, ignoring the rest via singclap_pdivide resp. idLift destroyes a...
static BOOLEAN jjLIFT_4(leftv res, leftv U)
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 jjCOEF_Id(leftv res, leftv u, leftv v)
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)
static BOOLEAN jjRMINUS(leftv res, leftv u, leftv v)
int scMult0Int(ideal S, ideal Q, const ring tailRing)
ring rMinusVar(const ring r, char *v)
undo rPlusVar
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 jjRESTART(leftv, leftv u)
static BOOLEAN jjSLIM_GB(leftv res, leftv u)
matrix mp_MultI(matrix a, int f, const ring R)
c = f*a
poly mp_Det(matrix a, const ring r, DetVariant d)
#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 jjINTERSECT3(leftv res, leftv u, leftv v, leftv w)
BOOLEAN sm_Equal(ideal a, ideal b, const ring R)
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
ideal sm_Tensor(ideal A, ideal B, const ring r)
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)
sBucket_pt sBucketCreate(const ring r)
static BOOLEAN jjLIFTSTD_4(leftv res, leftv U)
static BOOLEAN jjSTD_HILB_W(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjLIFT3(leftv res, leftv u, leftv v, leftv w)
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)
ideal t_rep_gb(const ring r, ideal arg_I, int syz_comp, BOOLEAN F4_mode)
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)
poly singclap_gcd(poly f, poly g, const ring r)
polynomial gcd via singclap_gcd_r resp. idSyzygies destroys f and g
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 jjTIMES_SM(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)
void atSet(idhdl root, char *name, void *data, int typ)
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 must 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)
ideal id_Jet(const ideal i, int d, const ring R)
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)
ideal id_JetW(const ideal i, int d, intvec *iv, const ring R)
FILE * feFopen(const char *path, const char *mode, char *where, short useWerror, short path_only)
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)
idhdl rFindHdl(ring r, idhdl n)
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)
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
static BOOLEAN jjELIMIN_ALG(leftv res, leftv u, leftv v, leftv w)
void iiMakeResolv(resolvente r, int length, int rlen, char *name, int typ0, intvec **weights)
static BOOLEAN jjPLUS_IV(leftv res, leftv u, leftv v)
matrix mp_CoeffProcId(ideal I, poly vars, const ring R)
ring rDefault(const coeffs cf, int N, char **n, int ord_size, rRingOrder_t *ord, int *block0, int *block1, int **wvhdl, unsigned long bitmask)
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)
ideal idLiftStd(ideal h1, matrix *ma, tHomog hi, ideal *syz, GbVariant alg)
static BOOLEAN jjBRACK_S(leftv res, leftv u, leftv v, leftv w)
static int index(p_Length length, p_Ord ord)
void pRestoreDegProcs(ring r, pFDegProc old_FDeg, pLDegProc old_lDeg)
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)
ideal idSyzygies(ideal h1, tHomog h, intvec **w, BOOLEAN setSyzComp, BOOLEAN setRegularity, int *deg, GbVariant alg)
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
void p_Normalize(poly p, const ring r)
static void p_Delete(poly *p, const ring r)
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)
void sBucketCanonicalize(sBucket_pt bucket)
#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)
BOOLEAN iiMake_proc(idhdl pn, package pack, leftv sl)
static BOOLEAN jjidMaxIdeal(leftv res, leftv v)
unsigned nLastIdentifier
valid indentifieres are slot 1..nLastIdentifier
static BOOLEAN jjPLUS_B_P(leftv res, leftv u, leftv v)
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)
ideal idElimination(ideal h1, poly delVar, intvec *hilb, GbVariant alg)
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
ideal id_ResizeModule(ideal mod, int rows, int cols, const ring R)
static BOOLEAN jjPLUS_N(leftv res, leftv u, leftv v)
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)
static BOOLEAN jjCOUNT_BIM(leftv res, 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)
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)
static BOOLEAN jjHILBERT(leftv, leftv v)
ideal id_Farey(ideal x, number N, const ring r)
DetVariant mp_GetAlgorithmDet(matrix m, 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)
GbVariant syGetAlgorithm(char *n, const ring r, const ideal)
ring rPlusVar(const ring r, char *v, int left)
K[x],"y" -> K[x,y] resp. K[y,x].
static BOOLEAN jjPOWER_P(leftv res, leftv u, leftv v)
poly sm_Det(ideal a, const ring r, DetVariant d)
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 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)
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)
static BOOLEAN length(leftv result, leftv arg)
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)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
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 jjFRES(leftv res, leftv u, leftv v)
static BOOLEAN jjLE_I(leftv res, leftv u, leftv v)
poly sBucketPeek(sBucket_pt b)
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)
poly singclap_pmod(poly f, poly g, const ring r)
static void pLmFree(poly p)
frees the space of the monomial m, assumes m != NULL coef is not freed, m is not advanced ...
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)
ring rCompose(const lists L, const BOOLEAN check_comp, const long bitmask, const int isLetterplace)
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)
poly p_Vec2Poly(poly v, int k, const ring r)
static BOOLEAN jjPOWER_N(leftv res, leftv u, leftv v)
ideal sm_Add(ideal a, ideal b, const ring R)
cmdnames * sCmds
array of existing commands
int idElem(const ideal F)
count non-zero elements
intvec * delete_pos(int p)
ideal id_Delete_Pos(const ideal I, const int p, const ring r)
static FORCE_INLINE BOOLEAN nCoeff_is_Extension(const coeffs r)
static BOOLEAN jjMATRIX_Mo(leftv res, leftv u, leftv v, leftv w)
static poly p_Neg(poly p, const ring r)
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)
static BOOLEAN jjPLUS_V(leftv res, leftv u, leftv v)
const struct sValCmd1 dArith1[]
BOOLEAN pa(leftv res, leftv args)
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 idLift(ideal mod, ideal submod, ideal *rest, BOOLEAN goodShape, BOOLEAN isSB, BOOLEAN divide, matrix *unit, GbVariant alg)
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)
ideal sm_Mult(ideal a, ideal b, const ring R)
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...
static BOOLEAN jjNOT(leftv res, leftv v)
#define IMATELEM(M, I, J)
static si_char_2 Tok2Cmdname_buf
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 rField_is_numeric(const ring r)
static BOOLEAN jjDET_I(leftv res, leftv v)
static BOOLEAN jjDelete_IV(leftv res, leftv u, leftv v)
ideal id_Matrix2Module(matrix mat, const ring R)
converts mat to module, destroys mat
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)
static ideal idMult(ideal h1, ideal h2)
hh := h1 * h2
static BOOLEAN jjPLUS_B(leftv res, leftv u, leftv v)
struct sValCmd3 * psValCmd3
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 idSect(ideal h1, ideal h2, GbVariant alg)
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 omPrintBinStats(F)
#define pCopy(p)
return a copy of the poly
#define MATELEM(mat, i, j)
1-based access to matrix
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: