15 #include "factory/factory.h" 99 #define ZERODIVISOR_MASK 8 102 #define ZERODIVISOR_MASK 0 104 #define ALLOW_PLURAL 1 106 #define COMM_PLURAL 2 109 #define NO_ZERODIVISOR 8 110 #define ALLOW_ZERODIVISOR 0 112 #define ALLOW_ZZ (ALLOW_RING|NO_ZERODIVISOR) 118 #define NO_CONVERSION 32 176 short number_of_args;
205 extern int iiArithAddCmd(
const char *szName,
short nAlias,
short nTokval,
206 short nToktype,
short nPos=-1);
216 #define ii_div_by_0 "div. by 0" 225 if ((
long)i==
l)
return l;
237 if (sArithBase.
sCmds[
i].tokval==op)
238 return sArithBase.
sCmds[
i].toktype;
250 int bb = (int)(
long)(v->
Data());
255 case '+': cc=
bimAdd(aa,bb);
break;
256 case '-': cc=
bimSub(aa,bb);
break;
257 case '*': cc=
bimMult(aa,bb);
break;
259 res->
data=(
char *)cc;
269 number bb = (number)(v->
Data());
276 res->
data=(
char *)cc;
286 int bb = (int)(
long)(v->
Data());
290 case '+': (*aa) += bb;
break;
291 case '-': (*aa) -= bb;
break;
292 case '*': (*aa) *= bb;
break;
295 case '%': (*aa) %= bb;
break;
297 res->
data=(
char *)aa;
307 int bb = (int)(
long)(v->
Data());
311 case '+':
for (;i>0;i--)
IMATELEM(*aa,i,i) += bb;
313 case '-':
for (;i>0;i--)
IMATELEM(*aa,i,i) -= bb;
316 res->
data=(
char *)aa;
325 int l=(int)(
long)v->
Data();
328 int d=(int)(
long)u->
Data();
331 for(i=l-1;i>=0;i--) { (*vv)[
i]=d; }
332 res->
data=(
char *)vv;
350 res->
data = (
char *) (r<0);
353 res->
data = (
char *) (r>0);
356 res->
data = (
char *) (r<=0);
359 res->
data = (
char *) (r>=0);
363 res->
data = (
char *) (r==0);
367 if(r==-2) {
WerrorS(
"size incompatible");
return TRUE; }
378 res->
data = (
char *) (r<0);
381 res->
data = (
char *) (r>0);
384 res->
data = (
char *) (r<=0);
387 res->
data = (
char *) (r>=0);
391 res->
data = (
char *) (r==0);
395 if(r==-2) {
WerrorS(
"size incompatible");
return TRUE; }
401 int b = (int)(
long)(v->
Data());
406 res->
data = (
char *) (r<0);
409 res->
data = (
char *) (r>0);
412 res->
data = (
char *) (r<=0);
415 res->
data = (
char *) (r>=0);
419 res->
data = (
char *) (r==0);
434 res->
data = (
char *) (
long)(r < 0);
437 res->
data = (
char *) (
long)(r > 0);
440 res->
data = (
char *) (
long)(r <= 0);
443 res->
data = (
char *) (
long)(r >= 0);
447 res->
data = (
char *)(
long) (r == 0);
455 poly
p=(poly)u->
Data();
456 poly q=(poly)v->
Data();
461 res->
data = (
char *) (r < 0);
464 res->
data = (
char *) (r > 0);
467 res->
data = (
char *) (r <= 0);
470 res->
data = (
char *) (r >= 0);
482 char* a = (
char * )(u->
Data());
483 char*
b = (
char * )(v->
Data());
488 res->
data = (
char *) (result < 0);
491 res->
data = (
char *) (result > 0);
494 res->
data = (
char *) (result <= 0);
497 res->
data = (
char *) (result >= 0);
501 res->
data = (
char *) (result == 0);
525 int b=(int)(
long)u->
Data();
526 int e=(int)(
long)v->
Data();
535 else if ((e==0)||(b==1))
553 if(rc/b!=oldrc) overflow=
TRUE;
557 WarnS(
"int overflow(^), result may be wrong");
559 res->
data = (
char *)((
long)rc);
565 WerrorS(
"exponent must be non-negative");
571 int e=(int)(
long)v->
Data();
572 number n=(number)u->
Data();
579 WerrorS(
"exponent must be non-negative");
587 int e=(int)(
long)v->
Data();
588 number n=(number)u->
Data();
605 int v_i=(int)(
long)v->
Data();
608 WerrorS(
"exponent must be non-negative");
616 Werror(
"OVERFLOW in power(d=%ld, e=%d, max=%ld)",
700 if(isupper(u->
name[0]))
702 const char *c=u->
name+1;
703 while((*c!=
'\0')&&(islower(*c)||(isdigit(*c))||(*c==
'_'))) c++;
708 Print(
"%s of type 'ANY'. Trying load.\n", u->
name);
724 package pa=(package)u->Data();
738 WerrorS(
"reserved name with ::");
743 memcpy(res, v,
sizeof(
sleftv));
744 memset(v, 0,
sizeof(
sleftv));
750 WerrorS(
"<package>::<id> expected");
757 unsigned int a=(
unsigned int)(
unsigned long)u->
Data();
758 unsigned int b=(
unsigned int)(
unsigned long)v->
Data();
760 res->
data = (
char *)((
long)c);
763 WarnS(
"int overflow(+), result may be wrong");
787 WerrorS(
"intmat size not compatible");
797 WerrorS(
"bigintmat/cmatrix not compatible");
808 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
831 char* a = (
char * )(u->
Data());
832 char*
b = (
char * )(v->
Data());
833 char* r = (
char * )
omAlloc(strlen(a) + strlen(b) + 1);
847 int aa=(int)(
long)ap;
848 int bb=(int)(
long)bp;
850 unsigned int a=(
unsigned int)(
unsigned long)ap;
851 unsigned int b=(
unsigned int)(
unsigned long)bp;
855 WarnS(
"int overflow(-), result may be wrong");
857 res->
data = (
char *)((
long)cc);
880 WerrorS(
"intmat size not compatible");
890 WerrorS(
"bigintmat/cmatrix not compatible");
901 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
910 int a=(int)(
long)u->
Data();
911 int b=(int)(
long)v->
Data();
913 if ((c>INT_MAX)||(c<INT_MIN))
914 WarnS(
"int overflow(*), result may be wrong");
915 res->
data = (
char *)((
long)((int)c));
930 number n=(number)res->
data;
950 Warn(
"possible OVERFLOW in mult(d=%ld, d=%ld, max=%ld)",
962 Warn(
"possible OVERFLOW in mult(d=%ld, d=%ld, max=%ld)",
997 WerrorS(
"intmat size not compatible");
1009 WerrorS(
"bigintmat/cmatrix not compatible");
1023 res->
data = (
char *)I;
1037 res->
data = (
char *)I;
1047 res->
data = (
char *)I;
1078 Werror(
"matrix size not compatible(%dx%d, %dx%d) in *",
1096 res->
data = (
char *)(
long)((int)((
long)u->
Data()) >= (
int)((long)v->
Data()));
1114 res->
data = (
char *)(
long)((int)((
long)u->
Data()) > (
int)((long)v->
Data()));
1128 res->
data = (
char *)(
long)((int)((
long)u->
Data()) <= (
int)((long)v->
Data()));
1141 res->
data = (
char *)(
long)((int)((
long)u->
Data()) < (
int)((long)v->
Data()));
1151 int a= (int)(
long)u->
Data();
1152 int b= (int)(
long)v->
Data();
1166 r=((a-c) /b);
break;
1168 res->
data=(
void *)((
long)r);
1173 number q=(number)v->
Data();
1181 res->
data = (
char *)q;
1186 number q=(number)v->
Data();
1194 res->
data = (
char *)q;
1199 poly q=(poly)v->
CopyD();
1200 poly
p=(poly)(u->
CopyD());
1208 poly q=(poly)v->
Data();
1233 res->
data=(
char *)mm;
1244 res->
data = (
char *)((
int)((long)u->
Data()) == (
int)((long)v->
Data()));
1268 poly
p=(poly)u->
Data();
1269 poly q=(poly)v->
Data();
1289 res->
data = (
char *)((
long)u->
Data() && (long)v->
Data());
1294 res->
data = (
char *)((
long)u->
Data() || (long)v->
Data());
1307 while (sh->next !=
NULL) sh=sh->next;
1323 WerrorS(
"indexed object must have a name");
1330 memset(&t,0,
sizeof(t));
1332 for (i=0;i<iv->
length(); i++)
1334 t.
data=(
char *)((
long)(*iv)[
i]);
1357 poly
p=(poly)u->
Data();
1358 int i=(int)(
long)v->
Data();
1374 poly
p=(poly)u->
Data();
1379 for(i=iv->
length()-1;i>=0;i--)
1382 while ((p!=
NULL) && (sum>0))
1385 for(i=iv->
length()-1;i>=0;i--)
1398 res->
data=(
char *)r;
1406 int i=(int)(
long)v->
Data();
1411 if (r==p) r=
pNext(p);
1428 res->
data=(
char *)r;
1442 for(i=0;i<iv->
length();i++)
1462 res->
data=(
char *)r;
1470 char * nn = (
char *)
omAlloc(strlen(u->
name) + 14);
1471 sprintf(nn,
"%s(%d)",u->
name,(
int)(
long)v->
Data());
1485 long slen = strlen(u->
name) + 14;
1486 char *n = (
char*)
omAlloc(slen);
1488 for (i=0;i<iv->
length(); i++)
1499 sprintf(n,
"%s(%d)",u->
name,(*iv)[i]);
1511 memset(tmp,0,
sizeof(
sleftv));
1537 tmp_proc->
id=
"_auto";
1541 d=u->
data; u->
data=(
void *)tmp_proc;
1558 if (sl)
return TRUE;
1577 memcpy(res,sl,
sizeof(
sleftv));
1585 memset(v,0,
sizeof(
sleftv));
1595 number *
x=(number *)
omAlloc(rl*
sizeof(number));
1596 number *q=(number *)
omAlloc(rl*
sizeof(number));
1598 for(i=rl-1;i>=0;i--)
1605 for(i=rl-1;i>=0;i--)
1611 res->
data=(
char *)n;
1621 number *
x=(number *)
omAlloc(rl*
sizeof(number));
1622 number *q=(number *)
omAlloc(rl*
sizeof(number));
1624 for(i=rl-1;i>=0;i--)
1630 for(i=rl-1;i>=0;i--)
1634 Werror(
"poly expected at pos %d",i+1);
1635 for(i=rl-1;i>=0;i--)
1642 h=((poly)c->
m[i].
Data());
1644 else if (
pLmCmp(r,h)==-1) r=h;
1647 for(i=rl-1;i>=0;i--)
1649 h=((poly)c->
m[i].
Data());
1659 number n=n_ChineseRemainder(x,q,rl,
currRing->cf);
1660 for(i=rl-1;i>=0;i--)
1666 result=
pAdd(result,h);
1668 for(i=rl-1;i>=0;i--)
1673 res->
data=(
char *)result;
1680 int s=(int)(
long)v->
Data();
1689 ideal
M=(ideal)u->
CopyD();
1690 int s=(int)(
long)v->
Data();
1703 poly
p=(poly)v->
Data();
1729 (ideal)(v->
Data()), p);
1741 ideal I=(ideal)u->
Data();
1746 res->
data = (
char *)((
long)d);
1751 poly
p=(poly)u->
Data();
1757 res->
data = (
char *)(d);
1760 res->
data=(
char *)(
long)(-1);
1765 int pos=(int)(
long)v->
Data();
1772 int pos=(int)(
long)v->
Data();
1773 ideal I=(ideal)u->
Data();
1809 Warn(
"dim(%s,...) may be wrong because the mixed monomial ordering",v->
Name());
1814 ideal vid = (ideal)v->
Data();
1818 res->
data = (
char *)-1;
1824 if (i != -1)
pDelete(&vv->m[i]);
1827 res->
data = (
char *)d;
1844 ideal vi=(ideal)v->
Data();
1846 ideal ui=(ideal)u->
Data();
1880 res->
data=(
char *)L;
1917 number uu=(number)u->
Data();number vv=(number)v->
Data();
1926 res->
data=(
char *)L;
1931 int uu=(int)(
long)u->
Data();
int vv=(int)(
long)v->
Data();
1932 int p0=
ABS(uu),p1=
ABS(vv);
1933 int f0 = 1, f1 = 0, g0 = 0, g1 = 1, q, r;
1955 res->
data=(
char *)L;
1962 if (ret)
return TRUE;
1965 res->
data=(
char *)L;
1966 L->
m[0].
data=(
void *)r;
1968 L->
m[1].
data=(
void *)pa;
1970 L->
m[2].
data=(
void *)pb;
1978 int sw=(int)(
long)dummy->
Data();
1980 if ((sw<0)||(sw>2)) fac_sw=1;
1981 singclap_factorize_retry=0;
1993 l->
m[0].
data=(
void *)f;
1995 l->
m[1].
data=(
void *)v;
1996 res->
data=(
void *)l;
2001 res->
data=(
void *)f;
2014 res->
data=(
void *)p;
2028 while (p!=NULL) { p=p->next;l++; }
2034 L->
m[
l].
data=(
char *)h->d;
2041 res->
data=(
void *)L;
2048 number uu=(number)u->
Data();
2049 number vv=(number)v->
Data();
2057 ideal uu=(ideal)u->
Data();
2058 number vv=(number)v->
Data();
2072 ring r=(ring)u->
Data();
2081 int par_perm_size=0;
2094 par_perm_size=
rPar(r);
2103 perm=(
int *)
omAlloc0((r->N+1)*
sizeof(int));
2104 if (par_perm_size!=0)
2105 par_perm=(
int *)
omAlloc0(par_perm_size*
sizeof(
int));
2110 char ** r_par_names=
NULL;
2111 if (r->cf->extRing!=
NULL)
2113 r_par=r->cf->extRing->N;
2114 r_par_names=r->cf->extRing->names;
2117 char ** c_par_names=
NULL;
2121 c_par_names=
currRing->cf->extRing->names;
2123 maFindPerm(r->names, r->N, r_par_names, r_par,
2125 perm,par_perm,
currRing->cf->type);
2130 if (par_perm_size!=0)
2140 Print(
"// var nr %d: %s -> %s\n",i,r->names[i],
currRing->names[i]);
2144 Print(
"// par nr %d: %s -> %s\n",
2150 memset(&tmpW,0,
sizeof(
sleftv));
2154 perm,par_perm,par_perm_size,nMap)))
2172 Werror(
"no identity map from %s (%s -> %s)",u->
Fullname(),s1,s2);
2183 char *where=(
char *)u->
Data();
2184 char *what=(
char *)v->
Data();
2185 char *
found = strstr(where,what);
2188 res->
data=(
char *)((found-where)+1);
2197 ideal
id = (ideal)u->
Data();
2198 int max_length = (int)(
long)v->
Data();
2199 if (max_length < 0) {
2200 WerrorS(
"length for fres must not be negative");
2203 if (max_length == 0) {
2206 Warn(
"full resolution in a qring may be infinite, " 2207 "setting max length to %d", max_length);
2210 char *method = (
char *)w->
Data();
2214 if (strcmp(method,
"complete") != 0
2215 && strcmp(method,
"frame") != 0
2216 && strcmp(method,
"extended frame") != 0
2217 && strcmp(method,
"single module") != 0) {
2218 WerrorS(
"wrong optional argument for fres");
2222 res->
data = (
void *)r;
2230 w->
data = (
char *)
"complete";
2244 int uu=(int)(
long)u->
Data();
int vv=(int)(
long)v->
Data();
2245 int p0=
ABS(uu),p1=
ABS(vv);
2253 res->
data=(
char *)(
long)p0;
2258 number n1 = (number) u->
Data();
2259 number n2 = (number) v->
Data();
2265 number a=(number) u->
Data();
2266 number
b=(number) v->
Data();
2291 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
2292 PrintS(
"// performed for generic fibre, that is, over Q\n");
2300 switch((
int)(long)v->
Data())
2303 res->
data=(
void *)iv;
2328 WerrorS(
"variable must have weight 1");
2350 WerrorS(
"variable must have weight 1");
2357 ideal v_id=(ideal)v->
Data();
2366 currRing->pLexOrder=save_pLexOrder;
2370 if (w!=
NULL)
delete w;
2389 const int n = L->
nr;
assume (n >= 0);
2390 std::vector<ideal> V(n + 1);
2392 for(
int i = n;
i >= 0;
i--) V[
i] = (ideal)(L->
m[
i].
Data());
2443 memset(&h,0,
sizeof(
sleftv));
2474 char *
s=(
char *)u->
Data();
2475 if(strcmp(s,
"with")==0)
2477 if (strcmp(s,
"try")==0)
2479 WerrorS(
"invalid second argument");
2480 WerrorS(
"load(\"libname\" [,option]);");
2502 ideal u_id=(ideal)u->
Data();
2503 ideal v_id=(ideal)v->
Data();
2506 if ((*w_u).compare((w_v))!=0)
2508 WarnS(
"incompatible weights");
2509 delete w_u; w_u=
NULL;
2517 WarnS(
"wrong weights");
2518 delete w_u; w_u=
NULL;
2534 number q=(number)v->
Data();
2545 number q=(number)v->
Data();
2556 poly q=(poly)v->
Data();
2562 poly
p=(poly)(u->
Data());
2580 char *opt=(
char *)v->
Data();
2592 if(strcmp(l->m->type,
"ASCII")!=0)
2594 Werror(
"ASCII link required, not `%s`",l->m->type);
2599 if ( l->name[0]!=
'\0')
2603 if (v==
NULL) opt=(
const char*)
"i";
2604 else opt=(
const char *)v->
Data();
2611 monitor((FILE *)l->data,mode);
2639 if(err) {
pDelete(&p);
WerrorS(
"no negative exponent allowed"); }
2646 const char *
s=(
const char *)u->
Data();
2647 newstruct_desc d=
NULL;
2653 else WerrorS(
"name of newstruct must be longer than 1 character");
2659 int i=(
int)(long)v->
Data();
2667 Werror(
"par number %d out of range 1..%d",
i,p);
2677 WerrorS(
"basering must NOT be a qring!");
2697 WerrorS(
"basering must NOT be a qring!");
2717 WerrorS(
"basering must NOT be a qring!");
2737 WerrorS(
"basering must NOT be a qring!");
2759 const poly q = (poly)b->
Data();
2775 ring r = (ring)a->
Data();
2784 Werror(
"%s is not an opposite ring to current ring",a->
Fullname());
2790 int argtype =
IDTYP(w);
2797 res->
rtyp = argtype;
2803 poly q = (poly)
IDDATA(w);
2805 res->
rtyp = argtype;
2813 res->
rtyp = argtype;
2826 res->
rtyp = argtype;
2831 WerrorS(
"unsupported type in oppose");
2855 int i=(int)(
long)u->
Data();
2856 int j=(int)(
long)v->
Data();
2857 if (j-i <0) {
WerrorS(
"invalid range for random");
return TRUE;}
2858 res->
data =(
char *)(
long)((i >
j) ? i : (
siRand() % (j-i+1)) +
i);
2864 int isRowEchelon = (int)(
long)v->
Data();
2865 if (isRowEchelon != 1) isRowEchelon = 0;
2866 int rank =
luRank(m, isRowEchelon);
2867 res->
data =(
char *)(
long)rank;
2877 if ((l!=
NULL)&&(l->name!=
NULL)) s=l->name;
2879 Werror(
"cannot read from `%s`",s);
2882 memcpy(res,r,
sizeof(
sleftv));
2888 ideal vi=(ideal)v->
Data();
2896 ideal ui=(ideal)u->
Data();
2897 ideal vi=(ideal)v->
Data();
2905 int maxl=(int)(
long)v->
Data();
2908 WerrorS(
"length for res must not be negative");
2914 ideal u_id=(ideal)u->
Data();
2923 "full resolution in a qring may be infinite, setting max length to %d",
2937 int add_row_shift=0;
2941 add_row_shift = ww->
min_in();
2942 (*ww) -= add_row_shift;
2958 (
"`lres` not implemented for inhomogeneous input or qring");
2962 WarnS(
"the current implementation of `lres` may not work in the case of a single variable");
2972 (
"`kres` not implemented for inhomogeneous input or qring");
2984 (
"`hres` not implemented for inhomogeneous input or qring");
2987 ideal u_id_copy=
idCopy(u_id);
2989 r=
syHilb(u_id_copy,&dummy);
3002 res->
data=(
void *)r;
3003 if ((weights!=
NULL) && (ww!=
NULL)) {
delete ww; ww=
NULL; }
3007 if (weights!=
NULL) (*ww) += add_row_shift;
3036 n1 = (number)u->
CopyD();
3040 i = (int)(
long)u->
Data();
3048 i = (int)(
long)v->
Data();
3052 res->
data = (
char*)l;
3059 res->
data = (
char *)r;
3062 #define SIMPL_NORMALIZE 64 3063 #define SIMPL_LMDIV 32 3064 #define SIMPL_LMEQ 16 3065 #define SIMPL_MULT 8 3067 #define SIMPL_NULL 2 3068 #define SIMPL_NORM 1 3071 int sw = (int)(
long)v->
Data();
3102 res->
data = (
char * )
id;
3109 int sw=(int)(
long)dummy->
Data();
3112 singclap_factorize_retry=0;
3124 l->
m[0].
data=(
void *)f;
3126 l->
m[1].
data=(
void *)v;
3127 res->
data=(
void *)l;
3132 res->
data=(
void *)f;
3145 res->
data=(
void *)p;
3166 int sw = (int)(
long)v->
Data();
3177 res->
data = (
char * )p;
3185 ideal u_id=(ideal)(u->
Data());
3201 res->
data = (
char *)result;
3210 ideal i1=(ideal)(u->
Data());
3216 i0->m[0]=(poly)v->
Data();
3219 memset(i0->m,0,
sizeof(poly)*
IDELEMS(i0));
3248 res->
data = (
char *)result;
3252 i0=(ideal)v->
CopyD();
3255 memset(i0->m,0,
sizeof(poly)*
IDELEMS(i0));
3291 res->
data = (
char *)result;
3300 ideal I=(ideal)u->
Data();
3303 if (w!=
NULL)
delete w;
3311 int i=(
int)(long)v->
Data();
3332 int t = (int)(
long)v->
Data();
3342 res->
data = (
void*)(
long)
i;
3357 int timeout = 1000*(int)(
long)v->
Data();
3365 for(
unsigned nfinished = 0; nfinished < ((unsigned)Lforks->
nr)+1; nfinished++)
3390 res->
data = (
void*)(
long)ret;
3398 #define jjWRONG2 (proc2)jjWRONG 3399 #define jjWRONG3 (proc3)jjWRONG 3444 res->
data = (
char *)n;
3449 res->
data = (
char *)(-(
long)u->
Data());
3456 res->
data = (
char *)n;
3474 res->
data = (
char *)iv;
3481 res->
data = (
char *)bim;
3490 ring r=(ring)u->
Data();
3494 char name_buffer[100];
3495 static int ending=1000000;
3497 sprintf(name_buffer,
"PYTHON_RING_VAR%d",ending);
3521 l->m[0].data=(
void *)m;
3522 l->m[1].data=(
void *)iv;
3523 res->
data = (
char *)l;
3543 number n=(number)u->
CopyD();
3567 number n=(number) tmp.
data;
3605 res->
data = (
char *)p;
3643 ring r=(ring)v->
Data();
3649 extern int ipower (
int b,
int n );
3650 elems=
ipower(r->cf->ch,r->cf->extRing->pFDeg(r->cf->extRing->qideal->m[0],r->cf->extRing));
3652 res->
data = (
char *)(
long)elems;
3658 poly
p=(poly)v->
Data();
3660 else res->
data=(
char *)-1;
3665 ideal I=(ideal)u->
Data();
3671 res->
data = (
char *)(
long)d;
3680 PrintS(
"// NOTE: computation of degree is being performed for\n");
3681 PrintS(
"// generic fibre, that is, over Q\n");
3700 else if (v->
rtyp!=0) res->
data=(
void *)(-1);
3708 number n =
reinterpret_cast<number
>(v->
Data());
3717 number n =
reinterpret_cast<number
>(v->
Data());
3734 res ->
data = (
char *)p;
3746 Werror(
"det of %d x %d bigintmat",i,j);
3755 number2 r=(number2)
omAlloc0(
sizeof(*r));
3766 Werror(
"det of %d x %d cmatrix",i,j);
3782 Werror(
"det of %d x %d intmat",i,j);
3789 ideal I=(ideal)v->
Data();
3800 res->
data = (
char *)p;
3808 Warn(
"dim(%s) may be wrong because the mixed monomial ordering",v->
Name());
3813 ideal vid = (ideal)v->
Data();
3817 res->
data = (
char *)-1L;
3839 for(
unsigned ii=0;ii<(unsigned)
IDELEMS(vv);ii++)
3848 for(
unsigned jj = 0;jj<(unsigned)
IDELEMS(vc)-1;jj++)
3850 if((vc->m[jj]!=
NULL)
3858 if (j != -1)
pDelete(&vc->m[j]);
3871 res->
data = (
char *)d;
3885 if ((l!=
NULL)&&(l->name!=
NULL)) s=l->name;
3887 Werror(
"cannot dump to `%s`",s);
3896 int co=(int)(
long)v->
Data();
3902 else WerrorS(
"argument of gen must be positive");
3907 char * d = (
char *)v->
Data();
3908 char *
s = (
char *)
omAlloc(strlen(d) + 13);
3909 strcpy( s, (
char *)d);
3910 strcat( s,
"\n;RETURN();\n");
3931 while (p!=
NULL) { p=p->next;l++; }
3936 L->
m[
l].
data=(
char *)h->d;
3947 WarnS(
"no factorization implemented");
3951 res->
data=(
void *)L;
3957 singclap_factorize_retry=0;
3964 l->
m[0].
data=(
void *)f;
3966 l->
m[1].
data=(
void *)v;
3967 res->
data=(
void *)l;
3976 if ((l!=
NULL)&&(l->name!=
NULL)) s=l->name;
3978 Werror(
"cannot get dump from `%s`",s);
3987 ideal I=(ideal)v->
Data();
3996 ideal I=(ideal)v->
Data();
4010 WerrorS(
"module must be zero-dimensional");
4011 if (delete_w)
delete w;
4034 if (delete_w)
delete w;
4035 res->
data=(
void *)po;
4043 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
4044 PrintS(
"// performed for generic fibre, that is, over Q\n");
4058 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
4059 PrintS(
"// performed for generic fibre, that is, over Q\n");
4068 ideal v_id=(ideal)v->
Data();
4076 char *s_isHomog=
omStrDup(
"isHomog");
4082 else if (w!=
NULL)
delete w;
4119 res->
data=(
char *)mat;
4129 res->
data=(
char *)I;
4136 ring q=(ring)v->
Data();
4139 if (q->qideal==
NULL)
4146 WerrorS(
"can only get ideal from identical qring");
4172 WarnS(
"interred: this command is experimental over the integers");
4191 res->
data = (
char *)0;
4198 poly
p=(poly)(v->
Data());
4201 i->m[k-1]=
pDiff(p,k);
4203 res->
data = (
char *)i;
4210 WerrorS(
"differentiation not defined in the coefficient ring");
4213 number n = (number) u->
Data();
4214 number
k = (number) v->
Data();
4227 ideal
id = (ideal)a->
Data();
4232 poly *
p = result->m;
4234 for(
int v = 1; v <=
currRing->N; v++ )
4237 for(
int i = 0;
i < W;
i++, p++, q++ )
4238 *p =
pDiff( *q, v );
4242 res->
data = (
char *)result;
4263 poly
p=(poly)v->
Data();
4276 poly
p=(poly)v->
Data();
4289 res->
data=(
char *)iv;
4294 poly
p=(poly)v->
Data();
4303 res->
data = (
char*) lm;
4315 if (mm==0) mm=0x7fff;
4317 res->
data=(
char *)r;
4325 memset(&tmp, 0,
sizeof(tmp));
4341 WerrorS(
"matrix must be constant");
4355 res->
data=(
char*)ll;
4366 switch(((
int)(
long)v->
Data()))
4381 res->
data = (
char *)0;
4385 res->
data = (
char *)0;
4400 l->m[0].data=(
char *)r;
4403 l->m[1].data=(
char *)m;
4404 res->
data=(
char *)l;
4420 res->
data=(
char *)tmp;
4429 number n,
i; i=(number)v->
Data();
4434 res->
data=(
void *)n;
4464 res->
data=(
char*)(
long)((long)v->
Data()==0 ? 1 : 0);
4469 res->
data = (
char *)(
long)(((ring)(v->
Data()))->N);
4480 poly
p=(poly)v->
Data();
4486 int i=(int)(
long)v->
Data();
4489 if ((0<i) && (i<=p))
4495 Werror(
"par number %d out of range 1..%d",i,p);
4502 number nn=(number)v->
Data();
4513 int i=(int)(
long)v->
Data();
4519 Werror(
"par number %d out of range 1..%d",i,p);
4526 poly
p=(poly)v->
Data();
4530 WerrorS(
"poly must be constant");
4539 res->
data=(
void *)n;
4546 poly
p=(poly)v->
Data();
4550 WerrorS(
"poly must be constant");
4565 res->
data = (
char *)(
long)(i > 1 ?
i : 2);
4571 ideal v_id=(ideal)v->
Data();
4576 WarnS(
"wrong weights");
4605 res->
data = (
char *)n;
4610 char *
s= (
char *)v->
Data();
4615 if (strcmp(s, sArithBase.
sCmds[
i].name) == 0)
4617 res->
data = (
char *)1;
4626 res->
data = (
char *)1;
4634 res->
data =(
char *)(
long)rank;
4653 ring r=(ring)v->
Data();
4659 long mm=r->bitmask/2;
4676 ring r=(ring)v->
Data();
4683 ideal
i = (ideal)v->
Data();
4684 res->
data = (
char *)i->rank;
4708 WerrorS(
"qring not supported by slimgb at the moment");
4713 WerrorS(
"ordering must be global for slimgb");
4717 WarnS(
"groebner base computations with inexact coefficients can not be trusted due to rounding errors");
4720 ideal u_id=(ideal)u->
Data();
4725 WarnS(
"wrong weights");
4747 ideal v_id=(ideal)v->
Data();
4754 WarnS(
"wrong weights");
4765 res->
data = (
char *)result;
4773 ideal v_id=(ideal)v->
Data();
4780 WarnS(
"wrong weights");
4791 res->
data = (
char *)result;
4799 ideal v_id=(ideal)v->
Data();
4806 WarnS(
"wrong weights");
4817 res->
data = (
char *)result;
4825 WarnS(
"groebner base computations with inexact coefficients can not be trusted due to rounding errors");
4827 ideal v_id=(ideal)v->
Data();
4834 WarnS(
"wrong weights");
4845 res->
data = (
char *)result;
4857 singclap_factorize_retry=0;
4865 l->
m[0].
data=(
void *)f;
4867 l->
m[1].
data=(
void *)v;
4868 res->
data=(
void *)l;
4876 if (w!=
NULL)
delete w;
4885 ideal v_id=(ideal)v->
Data();
4887 int add_row_shift=0;
4891 add_row_shift=w->
min_in();
4892 (*w)-=add_row_shift;
4928 ring r = (ring)a->
Data();
4936 WarnS(
"opposite only for global orderings");
4943 ring r = (ring)a->
Data();
4964 int t=(int)(
long)v->
data;
5012 int i=(int)(
long)v->
Data();
5013 if ((0<i) && (i<=currRing->
N))
5018 res->
data=(
char *)p;
5034 int i=(int)(
long)v->
Data();
5035 if ((0<i) && (i<=currRing->
N))
5062 res->
data = (
void*)(
long)
i;
5075 for(
int nfinished = 0; nfinished < Lforks->
nr+1; nfinished++)
5091 res->
data = (
void*)(
long)
j;
5101 #ifdef HAVE_DYNAMIC_LOADING 5108 Werror(
"%s: unknown type", s);
5111 Werror(
"cannot open %s", s);
5126 Werror(
"can not create package `%s`",plib);
5132 package pa=IDPACKAGE(pl);
5133 if ((pa->language==
LANG_C)
5136 Werror(
"can not create package `%s` - binaries exists",plib);
5142 package savepack=currPack;
5145 char libnamebuf[1024];
5158 #ifdef HAVE_DYNAMIC_LOADING 5161 WerrorS(
"Dynamic modules are not supported by this version of Singular");
5170 WerrorS_dummy_cnt++;
5176 WerrorS_dummy_cnt=0;
5179 Print(
"loading of >%s< failed\n",s);
5187 res->
data = (
char *)strlen((
char *)v->
Data());
5285 number n=(number)u->
CopyD();
5292 number n=(number)u->
Data();
5301 char *s= (
char *)u->
Data();
5302 int r = (int)(
long)v->
Data();
5303 int c = (int)(
long)w->
Data();
5306 if ( (r<1) || (r>l) || (c<0) )
5312 sprintf((
char *)res->
data,
"%-*.*s",c,c,s+r-1);
5318 int r = (int)(
long)v->
Data();
5319 int c = (int)(
long)w->
Data();
5320 if ((r<1)||(r>iv->
rows())||(c<1)||(c>iv->
cols()))
5322 Werror(
"wrong range[%d,%d] in intmat %s(%d x %d)",
5331 if (u->
e==
NULL) res->
e=e;
5335 while (h->next!=
NULL) h=h->next;
5345 int r = (int)(
long)v->
Data();
5346 int c = (int)(
long)w->
Data();
5347 if ((r<1)||(r>bim->
rows())||(c<1)||(c>bim->
cols()))
5349 Werror(
"wrong range[%d,%d] in bigintmat %s(%d x %d)",
5363 while (h->next!=
NULL) h=h->next;
5373 int r = (int)(
long)v->
Data();
5374 int c = (int)(
long)w->
Data();
5378 Werror(
"wrong range[%d,%d] in matrix %s(%d x %d)",r,c,u->
Fullname(),
5392 while (h->next!=
NULL) h=h->next;
5410 WerrorS(
"cannot build expression lists from unnamed objects");
5413 memcpy(&ut,u,
sizeof(ut));
5414 memset(&t,0,
sizeof(t));
5416 for (l=0;l< iv->
length(); l++)
5418 t.
data=(
char *)(
long)((*iv)[
l]);
5428 memcpy(u,&ut,
sizeof(ut));
5460 WerrorS(
"cannot build expression lists from unnamed objects");
5463 memcpy(&ut,u,
sizeof(ut));
5464 memset(&t,0,
sizeof(t));
5466 for (l=0;l< iv->
length(); l++)
5468 t.
data=(
char *)(
long)((*iv)[
l]);
5478 memcpy(u,&ut,
sizeof(ut));
5511 WerrorS(
"cannot build expression lists from unnamed objects");
5514 memcpy(&ut,u,
sizeof(ut));
5515 memset(&t1,0,
sizeof(
sleftv));
5516 memset(&t2,0,
sizeof(
sleftv));
5519 for (vl=0;vl< vv->
length(); vl++)
5521 t1.
data=(
char *)(
long)((*vv)[vl]);
5522 for (wl=0;wl< wv->
length(); wl++)
5524 t2.
data=(
char *)(
long)((*wv)[wl]);
5534 memcpy(u,&ut,
sizeof(ut));
5554 memset(w,0,
sizeof(
sleftv));
5561 memset(v,0,
sizeof(
sleftv));
5564 memset(w,0,
sizeof(
sleftv));
5574 int k=(int)(
long)w->
Data();
5581 l->
m[0].
data=(
void *)m;
5582 l->
m[1].
data=(
void *)iv;
5589 l->
m[0].
data=(
void *)m;
5591 res->
data = (
char *)l;
5598 WerrorS(
"3rd argument must be a name of a matrix");
5601 ideal
i=(ideal)u->
Data();
5602 int rank=(int)i->rank;
5611 (ideal)(v->
Data()),(poly)(w->
Data()));
5618 WerrorS(
"3rd argument must be a name of a matrix");
5626 memset(&t,0,
sizeof(t));
5643 ideal I=(ideal)u->
Data();
5664 int n=(int)(
long)w->
Data();
5665 char *where=(
char *)u->
Data();
5666 char *what=(
char *)v->
Data();
5668 if ((1>n)||(n>(
int)strlen(where)))
5670 Werror(
"start position %d out of range",n);
5673 found = strchr(where+n-1,*what);
5674 if (*(what+1)!=
'\0')
5676 while((found !=
NULL) && (strncmp(found+1,what+1,strlen(what+1))!=0))
5678 found=strchr(found+1,*what);
5683 res->
data=(
char *)((found-where)+1);
5689 if ((
int)(
long)w->
Data()==0)
5701 Werror(
"weight vector must have size %d, not %d",
5708 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
5709 PrintS(
"// performed for generic fibre, that is, over Q\n");
5717 switch((
int)(long)v->
Data())
5720 res->
data=(
void *)iv;
5746 WerrorS(
"variable must have weight 1");
5764 WerrorS(
"variable must have weight 1");
5775 (*im)[
i] = (*arg)[
i];
5778 res->
data = (
char *)im;
5783 ideal I1=(ideal)u->
Data();
5784 ideal I2=(ideal)v->
Data();
5785 ideal I3=(ideal)w->
Data();
5796 ideal I=(ideal)u->
Data();
5813 WerrorS(
"2nd argument must be a unit");
5829 WerrorS(
"2nd argument must be a diagonal matrix of units");
5892 const int mk = (
const int)(
long)u->
Data();
5893 bool noIdeal =
true;
bool noK =
true;
bool noAlgorithm =
true;
5894 bool noCacheMinors =
true;
bool noCacheMonomials =
true;
5895 ideal IasSB;
int k;
char* algorithm;
int cacheMinors;
int cacheMonomials;
5911 noAlgorithm =
false;
5916 noCacheMinors =
false;
5922 noCacheMonomials =
false;
5936 noAlgorithm =
false;
5941 noCacheMinors =
false;
5946 noCacheMonomials =
false;
5953 algorithm = (
char*)u->
next->
Data();
5954 noAlgorithm =
false;
5958 noCacheMinors =
false;
5963 noCacheMonomials =
false;
5971 if (strcmp(algorithm,
"bareiss") == 0)
5972 algorithm = (
char*)
"Bareiss";
5973 if (strcmp(algorithm,
"laplace") == 0)
5974 algorithm = (
char*)
"Laplace";
5975 if (strcmp(algorithm,
"cache") == 0)
5976 algorithm = (
char*)
"Cache";
5985 if ((!noK) && (k == 0))
5987 WerrorS(
"Provided number of minors to be computed is zero.");
5990 if ((!noAlgorithm) && (strcmp(algorithm,
"Bareiss") != 0)
5991 && (strcmp(algorithm,
"Laplace") != 0)
5992 && (strcmp(algorithm,
"Cache") != 0))
5994 WerrorS(
"Expected as algorithm one of 'B/bareiss', 'L/laplace', or 'C/cache'.");
5997 if ((!noAlgorithm) && (strcmp(algorithm,
"Bareiss") == 0)
6000 Werror(
"Bareiss algorithm not defined over coefficient rings %s",
6001 "with zero divisors.");
6005 if ((mk < 1) || (mk > m->
rows()) || (mk > m->
cols()))
6014 if ((!noAlgorithm) && (strcmp(algorithm,
"Cache") == 0)
6015 && (noCacheMinors || noCacheMonomials))
6018 cacheMonomials = 100000;
6024 (noIdeal ? 0 : IasSB),
false);
6025 else if (strcmp(algorithm,
"Cache") == 0)
6027 (noIdeal ? 0 : IasSB), 3, cacheMinors,
6028 cacheMonomials,
false);
6031 (noIdeal ? 0 : IasSB),
false);
6041 (
const char *)w->
Data());
6055 WerrorS(
"2nd/3rd arguments must have names");
6059 const char *ring_name=u->
Name();
6066 if ((preim_ring==
NULL)
6069 Werror(
"preimage ring `%s` is not the basering",mapping->preimage);
6085 Werror(
"`%s` is not defined in `%s`",v->
name,ring_name);
6089 if (kernel_cmd) image=
idInit(1,1);
6106 Werror(
"`%s` is not defined in `%s`",w->
name,ring_name);
6113 WarnS(
"preimage in local qring may be wrong: use Ring::preimageLoc instead");
6122 int i=(int)(
long)u->
Data();
6123 int r=(int)(
long)v->
Data();
6124 int c=(int)(
long)w->
Data();
6125 if ((r<=0) || (c<=0))
return TRUE;
6136 for (k=0; k<iv->
length(); k++)
6138 (*iv)[
k] = ((
siRand() % di) - i);
6141 res->
data = (
char *)iv;
6149 if ((cf==
NULL) ||(cf->cfRandom==
NULL))
6151 Werror(
"no random function defined for coeff %d",cf->type);
6157 number2 nn=(number2)
omAlloc(
sizeof(*nn));
6167 int &ringvar, poly &monomexpr)
6169 monomexpr=(poly)w->
Data();
6170 poly
p=(poly)v->
Data();
6174 Werror(
"`%s` substitutes a ringvar only by a term",
6179 if ((ringvar=
pVar(p))==0)
6188 WerrorS(
"ringvar/par expected");
6199 if (nok)
return TRUE;
6200 poly
p=(poly)u->
Data();
6225 if (nok)
return TRUE;
6226 ideal
id=(ideal)u->
Data();
6230 if (monomexpr!=
NULL)
6245 Warn(
"possible OVERFLOW in subst, max exponent is %ld",
currRing->bitmask/2);
6275 memset(&tmp,0,
sizeof(tmp));
6284 int mi=(int)(
long)v->
Data();
6285 int ni=(int)(
long)w->
Data();
6288 Werror(
"converting ideal to matrix: dimensions must be positive(%dx%d)",mi,ni);
6299 memcpy(m->
m,I->m,i*
sizeof(poly));
6300 memset(I->m,0,i*
sizeof(poly));
6302 res->
data = (
char *)m;
6307 int mi=(int)(
long)v->
Data();
6308 int ni=(int)(
long)w->
Data();
6311 Werror(
"converting module to matrix: dimensions must be positive(%dx%d)",mi,ni);
6320 int mi=(int)(
long)v->
Data();
6321 int ni=(int)(
long)w->
Data();
6324 Werror(
"converting matrix to matrix: dimensions must be positive(%dx%d)",mi,ni);
6341 res->
data = (
char *)m;
6365 &(hw->data.uideal));
6374 Werror(
"`%s` must be 0-dimensional",v->
Name());
6386 Werror(
"`%s` must be 0-dimensional",v->
Name());
6397 0,(int)(
long)w->
Data());
6404 0,(int)(
long)w->
Data());
6410 int maxl=(int)v->
Data();
6411 ideal u_id=(ideal)u->
Data();
6427 WarnS(
"wrong weights");
6455 yes = (strcmp((
char *) res->
data, (
char *) w->
Data()) == 0);
6457 res->
data = (
void *)(
long)yes;
6471 ideal u_id=(ideal)(u->
Data());
6476 WarnS(
"wrong weights");
6493 res->
data = (
char *)result;
6581 WarnS(
"<module>,<module>,<int>[,<intvec>] expected!");
6588 ideal P=(ideal)w1.
Data();
6589 ideal
Q=(ideal)w2.
Data();
6591 int n=(int)(
long)v3->
Data();
6598 while( (i > 0) && ((*w0) > 0) )
6604 WarnS(
"not all weights are positive!");
6618 L->
m[1].
rtyp=v1->Typ();
6623 L->
m[1].
data=(
void *)R->m[0];
6632 L->
m[1].
data=(
void *)R;
6635 L->
m[0].
data=(
char *)T;
6708 res->
data=(
char *)
id;
6713 ring r=(ring)u->
Data();
6721 WerrorS(
"fetch(<ring>,<name>[,<intvec>[,<intvec>])");
6726 if (perm_par_l!=
NULL)
6735 int par_perm_size=0;
6748 par_perm_size=
rPar(r);
6756 par_perm_size=
rPar(r);
6758 if (par_perm_size!=0)
6759 par_perm=(
int *)
omAlloc0(par_perm_size*
sizeof(
int));
6761 if (perm_par_l==
NULL)
6763 if (par_perm_size!=0)
6768 if (par_perm_size==0)
WarnS(
"source ring has no parameters");
6771 for(i=
rPar(r)-1;i>=0;i--)
6773 if (i<perm_par_v->
length()) par_perm[
i]=(*perm_par_v)[
i];
6777 Warn(
"invalid entry for par %d: %d\n",i,par_perm[i]);
6783 for(i=
rVar(r)-1;i>=0;i--)
6785 if (i<perm_var_v->
length()) perm[i+1]=(*perm_var_v)[
i];
6789 Warn(
"invalid entry for var %d: %d\n",i,perm[i]);
6798 Print(
"// var nr %d: %s -> var %s\n",i,r->names[i-1],
currRing->names[perm[i]-1]);
6804 if (par_perm[i-1]<0)
6805 Print(
"// par nr %d: %s -> par %s\n",
6807 else if (par_perm[i-1]>0)
6808 Print(
"// par nr %d: %s -> var %s\n",
6814 memset(&tmpW,0,
sizeof(
sleftv));
6818 perm,par_perm,par_perm_size,nMap)))
6836 Werror(
"no identity map from %s (%s -> %s)",u->
Fullname(),s1,s2);
6874 WerrorS(
"cannot convert to ideal or module");
6885 r[
i]=(ideal)h->
Data();
6897 r[
i]=(ideal)tmp.
Data();
6929 matrix iMat;
int invertible;
6935 int rr = aMat->
rows();
6936 int cc = aMat->
cols();
6939 Werror(
"given matrix (%d x %d) is not quadratic, hence not invertible", rr, cc);
6944 WerrorS(
"matrix must be constant");
6954 int rr = uMat->
rows();
6955 int cc = uMat->
cols();
6958 Werror(
"third matrix (%d x %d) is not quadratic, hence not invertible",
6967 WerrorS(
"matricesx must be constant");
6974 Werror(
"expected either one or three matrices");
6992 res->
data=(
char*)ll;
7016 WerrorS(
"expected exactly three matrices and one vector as input");
7026 Werror(
"first matrix (%d x %d) is not quadratic",
7032 Werror(
"second matrix (%d x %d) is not quadratic",
7038 Werror(
"second matrix (%d x %d) and third matrix (%d x %d) do not fit",
7044 Werror(
"third matrix (%d x %d) and vector (%d x 1) do not fit",
7053 WerrorS(
"matrices must be constant");
7073 res->
data=(
char*)ll;
7087 (*iv)[
i]=(int)(
long)h->
Data();
7106 res->
data=(
char *)iv;
7123 WerrorS(
"2nd argument must be a unit");
7136 WerrorS(
"2nd argument must be a diagonal matrix of units");
7141 (
int)(long)u3->
Data(),
7150 Werror(
"%s(`poly`,`poly`,`int`,`intvec`) exppected",
7186 memset(res,0,
sizeof(
sleftv));
7195 && ((strcmp(u->
Name(),
"real")==0) || (strcmp(u->
Name(),
"complex")==0)))
7197 memcpy(res,u,
sizeof(
sleftv));
7198 memset(u,0,
sizeof(
sleftv));
7216 Werror(
"`int` expected while building `%s(`",u->
name);
7221 sprintf(nn,
"%s(%d",u->
name,(
int)(
long)v->
Data());
7225 while (*s!=
'\0') s++;
7229 Werror(
"`int` expected while building `%s`",nn);
7233 sprintf(s,
",%d",(
int)(
long)v->
Data());
7235 while (*s!=
'\0') s++;
7256 ideal I=(ideal)u->
Data();
7269 Werror(
"%s(`ideal`,`ideal`,`matrix`,`string`)\n" 7270 "or (`module`,`module`,`matrix`,`string`)expected",
7288 ideal I=(ideal)u->
Data();
7295 &(hw->data.uideal),alg);
7301 Werror(
"%s(`ideal`,`ideal`,`matrix`,`string`)\n" 7302 "or (`module`,`module`,`matrix`,`string`)expected",
7314 int add_row_shift = 0;
7316 if (weights!=
NULL) add_row_shift=weights->
min_in();
7349 ((ring)L->
m[i].
data)->ref++;
7355 res->
data=(
char *)L;
7402 WerrorS(
"2nd argument must be a diagonal matrix of units");
7410 (
int)(long)u4->
Data()
7421 WerrorS(
"2nd argument must be a unit");
7450 WerrorS(
"2nd argument must be a diagonal matrix of units");
7458 (
int)(long)u4->
Data(),
7470 WerrorS(
"2nd argument must be a unit");
7481 Werror(
"%s(`ideal`,`ideal`,`matrix`,`int`,`intvec`) exppected",
7489 unsigned nCount = (sArithBase.
nCmdUsed-1)/3;
7490 if((3*nCount)<sArithBase.
nCmdUsed) nCount++;
7493 for(i=0; i<nCount; i++)
7497 Print(
"%-20s",sArithBase.
sCmds[i+1+nCount].name);
7498 if(i+1+2*nCount<sArithBase.
nCmdUsed)
7499 Print(
"%-20s",sArithBase.
sCmds[i+1+2*nCount].name);
7521 char** slist = (
char**)
omAlloc(n*
sizeof(
char*));
7524 for (i=0, j=0; i<n; i++, v = v ->
next)
7526 slist[
i] = v->String();
7528 j+=strlen(slist[i]);
7530 char* s = (
char*)
omAlloc((j+1)*
sizeof(char));
7534 strcat(s, slist[i]);
7554 #if defined(__alpha) && !defined(linux) 7557 void usleep(
unsigned long usec);
7586 leftv u =
v;
int factorsGiven = 0;
7589 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
7592 else h = (poly)u->
Data();
7596 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
7599 else d = (int)(
long)u->
Data();
7605 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
7610 f0 = (poly)u->
Data();
7620 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
7625 xIndex = (int)(
long)u->
Data();
7626 yIndex = (int)(
long)u->
next->
Data();
7632 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
7639 WerrorS(
"expected non-constant polynomial argument(s)");
7643 if ((xIndex < 1) || (n < xIndex))
7645 Werror(
"index for variable x (%d) out of range [1..%d]", xIndex, n);
7648 if ((yIndex < 1) || (n < yIndex))
7650 Werror(
"index for variable y (%d) out of range [1..%d]", yIndex, n);
7653 if (xIndex == yIndex)
7655 WerrorS(
"expected distinct indices for variables x and y");
7660 if (factorsGiven == 0)
7674 WerrorS(
"expected h(0,y) to have exactly two distinct monic factors");
7689 res->
data = (
char*)L;
7700 #if defined(HAVE_USLEEP) 7701 if (((
long) res->
data) == 0L)
7710 #elif defined(HAVE_SLEEP) 7711 if (((
int) res->
data) == 0)
7716 si_sleep((is - 1)/1000000 + 1);
7735 if ((rest!=
NULL) && (!b))
7740 memset(&tmp_res,0,
sizeof(tmp_res));
7742 memcpy(res,&tmp_res,
sizeof(tmp_res));
7757 WerrorS(
"expected (matrix, number, number, number) as arguments");
7762 (number)(v->
Data()),
7763 (number)(w->
Data()),
7764 (number)(x->
Data()));
7774 ideal i1=(ideal)(u->
Data());
7780 WerrorS(
"expected `std(`ideal/module`,`poly/vector`,`intvec`,`intvec`)");
7795 i0->m[0]=(poly)v->
Data();
7800 i0=(ideal)v->
Data();
7804 WerrorS(
"expected `std(`ideal/module`,`poly/vector`,`intvec`,`intvec`)");
7811 memset(i0->m,0,
sizeof(poly)*
IDELEMS(i0));
7821 WarnS(
"wrong weights");
7844 res->
data = (
char *)result;
7855 WerrorS(
"expected `cring` [ `id` ... ]");
7861 char **n=(
char**)
omAlloc0(N*
sizeof(
char*));
7862 for(
int i=0;
i<
N;
i++,names=names->
next)
7864 n[
i]=(
char *)names->Name();
7876 r->start =(int)(
long)e->
Data();
7881 int c=(int)(
long)u->
Data();
7885 PrintS(
"delete all variables\n");
7890 default:
WerrorS(
"not implemented");
7895 #define NULL_VAL NULL 7899 #include "iparith.inc" 7911 memset(res,0,
sizeof(
sleftv));
7918 while (dA2[i].
cmd==op)
7920 if ((at==dA2[i].arg1)
7921 && (bt==dA2[i].arg2))
7938 if ((call_failed=dA2[i].
p(res,a,b)))
7958 while (dA2[i].
cmd==op)
7983 failed= ((
iiConvert(at,dA2[i].arg1,ai,a,an))
7985 || (call_failed=dA2[i].
p(res,an,bn)));
8024 Werror(
"`%s` is not defined",s);
8031 Werror(
"%s(`%s`,`%s`) failed" 8036 Werror(
"`%s` %s `%s` failed" 8041 while (dA2[i].
cmd==op)
8043 if(((at==dA2[i].arg1)||(bt==dA2[i].arg2))
8048 Werror(
"expected %s(`%s`,`%s`)" 8051 Werror(
"expected `%s` %s `%s`" 8080 memset(res,0,
sizeof(
sleftv));
8089 memcpy(&d->arg1,a,
sizeof(
sleftv));
8091 memcpy(&d->arg2,b,
sizeof(
sleftv));
8095 res->
data=(
char *)d;
8108 if (!bb->blackbox_Op2(op,res,a,b))
return FALSE;
8114 else if ((bt>
MAX_TOK)&&(op!=
'('))
8119 if(!bb->blackbox_Op2(op,res,a,b))
return FALSE;
8139 memset(res,0,
sizeof(
sleftv));
8147 while (dA1[i].
cmd==op)
8166 if ((call_failed=dA1[i].
p(res,a)))
8186 while (dA1[i].
cmd==op)
8209 failed= ((
iiConvert(at,dA1[i].arg,ai,a,an,dConvertTypes))
8210 || (call_failed=dA1[i].
p(res,an)));
8251 while (dA1[i].
cmd==op)
8255 Werror(
"expected %s(`%s`)" 8269 memset(res,0,
sizeof(
sleftv));
8278 memcpy(&d->arg1,a,
sizeof(
sleftv));
8282 res->
data=(
char *)d;
8295 res->
data=bb->blackbox_Init(bb);
8296 if(!bb->blackbox_Assign(res,a))
return FALSE;
8306 if(!bb->blackbox_Op1(op,res,a))
return FALSE;
8327 const struct sValCmd3* dA3,
int at,
int bt,
int ct,
8330 memset(res,0,
sizeof(
sleftv));
8339 while (dA3[i].
cmd==op)
8341 if ((at==dA3[i].arg1)
8342 && (bt==dA3[i].arg2)
8343 && (ct==dA3[i].arg3))
8351 Print(
"call %s(%s,%s,%s)\n",
8353 if ((call_failed=dA3[i].
p(res,a,b,c)))
8374 while (dA3[i].
cmd==op)
8390 Print(
"call %s(%s,%s,%s)\n",
8393 failed= ((
iiConvert(at,dA3[i].arg1,ai,a,an,dConvertTypes))
8394 || (
iiConvert(bt,dA3[i].arg2,bi,b,bn,dConvertTypes))
8395 || (
iiConvert(ct,dA3[i].arg3,ci,c,cn,dConvertTypes))
8396 || (call_failed=dA3[i].
p(res,an,bn,cn)));
8445 Werror(
"`%s` is not defined",s);
8451 Werror(
"%s(`%s`,`%s`,`%s`) failed" 8455 while (dA3[i].
cmd==op)
8457 if(((at==dA3[i].arg1)
8459 ||(ct==dA3[i].arg3))
8462 Werror(
"expected %s(`%s`,`%s`,`%s`)" 8482 memset(res,0,
sizeof(
sleftv));
8491 memcpy(&d->arg1,a,
sizeof(
sleftv));
8493 memcpy(&d->arg2,b,
sizeof(
sleftv));
8495 memcpy(&d->arg3,c,
sizeof(
sleftv));
8499 res->
data=(
char *)d;
8511 if(!bb->blackbox_Op3(op,res,a,b,c))
return FALSE;
8560 if(v==
NULL)
return failed;
8572 memset(res,0,
sizeof(
sleftv));
8582 res->
data=(
char *)d;
8587 memcpy(&d->arg1,a,
sizeof(
sleftv));
8622 if(!bb->blackbox_OpM(op,res,a))
return FALSE;
8637 if ((args==
dArithM[i].number_of_args)
8638 || (
dArithM[i].number_of_args==-1)
8639 || ((
dArithM[i].number_of_args==-2)&&(args>0)))
8668 Werror(
"%s(...) failed",s);
8690 if (strcmp(n, sArithBase.
sCmds[an].name) == 0)
8695 else if ((an!=en) && (strcmp(n, sArithBase.
sCmds[en].name) == 0))
8708 if (*n < *(sArithBase.
sCmds[i].name))
8712 else if (*n > *(sArithBase.
sCmds[i].name))
8718 int v=strcmp(n,sArithBase.
sCmds[i].name);
8734 tok=sArithBase.
sCmds[
i].tokval;
8735 if(sArithBase.
sCmds[i].alias==2)
8737 Warn(
"outdated identifier `%s` used - please change your code",
8738 sArithBase.
sCmds[i].name);
8739 sArithBase.
sCmds[
i].alias=1;
8776 return sArithBase.
sCmds[
i].toktype;
8788 if (op==dArithTab[p].
cmd)
return dArithTab[
p].start;
8789 if (op<dArithTab[p].cmd) e=p-1;
8807 return sArithBase.
sCmds[0].name;
8809 if (tok==
ANY_TYPE)
return "any_type";
8810 if (tok==
COMMAND)
return "command";
8811 if (tok==
NONE)
return "nothing";
8814 Tok2Cmdname_buf[1]=(char)tok;
8823 if (tok==
IDHDL)
return "identifier";
8826 for(i=0; i<sArithBase.
nCmdUsed; i++)
8829 if ((sArithBase.
sCmds[i].tokval == tok)&&
8830 (sArithBase.
sCmds[i].alias==0))
8832 return sArithBase.
sCmds[
i].name;
8836 for(i=0; i<sArithBase.
nCmdUsed; i++)
8838 if (sArithBase.
sCmds[i].tokval == tok)
8840 return sArithBase.
sCmds[
i].name;
8843 return sArithBase.
sCmds[0].name;
8859 cmdnames *pCmdL = (cmdnames*)a;
8860 cmdnames *pCmdR = (cmdnames*)b;
8865 if(pCmdL->name==
NULL)
return 1;
8866 if(pCmdR->name==
NULL)
return -1;
8869 if(strcmp(pCmdL->name,
"$INVALID$")==0)
return -1;
8870 if(strcmp(pCmdR->name,
"$INVALID$")==0)
return 1;
8873 if (pCmdL->tokval==-1)
8875 if (pCmdR->tokval==-1)
8876 return strcmp(pCmdL->name, pCmdR->name);
8881 if(pCmdR->tokval==-1)
return -1;
8883 return strcmp(pCmdL->name, pCmdR->name);
8897 memset(&sArithBase, 0,
sizeof(sArithBase));
8940 if (strcmp(szName, sArithBase.
sCmds[an].name) == 0)
8945 else if (strcmp(szName, sArithBase.
sCmds[en].name) == 0)
8957 if (*szName < *(sArithBase.
sCmds[i].name))
8961 else if (*szName > *(sArithBase.
sCmds[i].name))
8967 v=strcmp(szName,sArithBase.
sCmds[i].name);
8991 if(nPos<0)
return NULL;
8993 return sArithBase.
sCmds[nPos].name;
9000 if(szName==
NULL)
return -1;
9003 if(nIndex<0 || nIndex>=(
int)sArithBase.
nCmdUsed)
9005 Print(
"'%s' not found (%d)\n", szName, nIndex);
9010 qsort(sArithBase.
sCmds, sArithBase.
nCmdUsed,
sizeof(cmdnames),
9040 sArithBase.
sCmds[nPos].alias = nAlias;
9041 sArithBase.
sCmds[nPos].tokval = nTokval;
9042 sArithBase.
sCmds[nPos].toktype = nToktype;
9048 if(szName==
NULL)
return -1;
9052 Print(
"'%s' already exists at %d\n", szName, nIndex);
9071 qsort(sArithBase.
sCmds, sArithBase.
nCmdUsed,
sizeof(cmdnames),
9090 WerrorS(
"not implemented for non-commutative rings");
9093 else if ((p & PLURAL_MASK)==2 )
9106 WerrorS(
"not implemented for rings with rings as coeffients");
9113 WerrorS(
"domain required as coeffients");
9119 WarnS(
"considering the image in Q[...]");
9132 WerrorS(
"not implemented for rings with rings as coeffients (except ZZ)");
9138 int return_type=c->
m[0].
Typ();
9154 for (
unsigned i=0;
i<=(unsigned)c->
nr;
i++)
9159 if (bo) {
Werror(
"chinrem failed for list entry %d",
i+1);
break;}
9169 WerrorS(
"poly/ideal/module/matrix/list expected");
9186 ideal *
x=(ideal *)
omAlloc(rl*
sizeof(ideal));
9192 for(i=rl-1;i>=0;i--)
9194 if (c->
m[i].
Typ()!=return_type)
9203 x[
i]->m[0]=(poly)c->
m[i].
CopyD();
9219 xx=(number *)
omAlloc(rl*
sizeof(number));
9220 for(i=rl-1;i>=0;i--)
9232 Werror(
"bigint expected at pos %d",i+1);
9239 number *q=(number *)
omAlloc(rl*
sizeof(number));
9242 for(i=rl-1;i>=0;i--)
9249 for(i=rl-1;i>=0;i--)
9261 Werror(
"bigint expected at pos %d",i+1);
9277 res->
data=(
char *)n;
9285 res->
data=(
char *)result->m[0];
9290 res->
data=(
char *)result;
9292 for(i=rl-1;i>=0;i--)
9297 res->
rtyp=return_type;
9298 return result==
NULL;
9307 for (
unsigned i=0;
i<=(unsigned)c->
nr;
i++)
9312 if (bo) {
Werror(
"farey failed for list entry %d",
i+1);
break;}
9325 if (at < bt)
return -1;
9326 if (at > bt)
return 1;
9327 int tab_pos=
iiTabIndex(dArithTab2,JJTAB2LEN,
'<');
9329 memset(&tmp,0,
sizeof(
sleftv));
9335 unsigned long ad=(
unsigned long)a->
Data();
9336 unsigned long bd=(
unsigned long)b->
Data();
9337 if (ad<bd)
return -1;
9338 else if (ad==bd)
return 0;
9349 unsigned long ad=(
unsigned long)a->
Data();
9350 unsigned long bd=(
unsigned long)b->
Data();
9351 if (ad<bd)
return -1;
9352 else if (ad==bd)
return 0;
9383 for(j=i; j<len;j++) l->
m[j]=l->
m[j+1];
9384 memset(&(l->
m[len]),0,
sizeof(
sleftv));
BOOLEAN rHasLocalOrMixedOrdering(const ring r)
static BOOLEAN jjINTMAT3(leftv res, leftv u, leftv v, leftv w)
#define idPosConstant(I)
index of generator with leading term in ground ring (if any); otherwise -1
int compare(const intvec *o) const
static FORCE_INLINE number n_Sub(number a, number b, const coeffs r)
return the difference of 'a' and 'b', i.e., a-b
int iiInitArithmetic()
initialisation of arithmetic structured data
matrix idDiff(matrix i, int k)
static BOOLEAN jjBREAK0(leftv, leftv)
static BOOLEAN jjPLUS_I(leftv res, leftv u, leftv v)
static BOOLEAN jjE(leftv res, leftv v)
static BOOLEAN jjPAR1(leftv res, leftv v)
static BOOLEAN jjRANK2(leftv res, leftv u, leftv v)
static BOOLEAN jjIDEAL_PL(leftv res, leftv v)
poly pOppose(ring Rop_src, poly p, const ring Rop_dst)
opposes a vector p from Rop to currRing (dst!)
ideal singclap_sqrfree(poly f, intvec **v, int with_exps, const ring r)
static void jjEQUAL_REST(leftv res, leftv u, leftv v)
CanonicalForm map(const CanonicalForm &primElem, const Variable &alpha, const CanonicalForm &F, const Variable &beta)
map from to such that is mapped onto
static BOOLEAN jjDET_S(leftv res, leftv v)
BOOLEAN yyInRingConstruction
ideal scKBase(int deg, ideal s, ideal Q, intvec *mv)
static BOOLEAN jjPLUSMINUS_Gen(leftv res, leftv u, leftv v)
ideal getMinorIdeal(const matrix mat, const int minorSize, const int k, const char *algorithm, const ideal iSB, const bool allDifferent)
Returns the specified set of minors (= subdeterminantes) of the given matrix.
static BOOLEAN jjTIMES_ID(leftv res, leftv u, leftv v)
static FORCE_INLINE number n_IntMod(number a, number b, const coeffs r)
for r a field, return n_Init(0,r) always: n_Div(a,b,r)*b+n_IntMod(a,b,r)==a n_IntMod(a,b,r) >=0
matrix mp_CoeffProc(poly f, poly vars, const ring R)
static FORCE_INLINE number n_GetNumerator(number &n, const coeffs r)
return the numerator of n (if elements of r are by nature not fractional, result is n) ...
static BOOLEAN jjBI2IM(leftv res, leftv u)
static BOOLEAN jjOP_BI_BIM(leftv res, leftv u, leftv v)
void id_Normalize(ideal I, const ring r)
normialize all polys in id
static FORCE_INLINE number n_Gcd(number a, number b, const coeffs r)
in Z: return the gcd of 'a' and 'b' in Z/nZ, Z/2^kZ: computed as in the case Z in Z/pZ...
static BOOLEAN jjFAC_P(leftv res, leftv u)
#define idMaxIdeal(D)
initialise the maximal ideal (at 0)
const CanonicalForm int s
void id_DelDiv(ideal id, const ring r)
delete id[j], if LT(j) == coeff*mon*LT(i) and vice versa, i.e., delete id[i], if LT(i) == coeff*mon*L...
This file provides miscellaneous functionality.
static BOOLEAN jjCALL2ARG(leftv res, leftv u)
resolvente syResolvente(ideal arg, int maxlength, int *length, intvec ***weights, BOOLEAN minim)
static BOOLEAN iiExprArith3TabIntern(leftv res, int op, leftv a, leftv b, leftv c, const struct sValCmd3 *dA3, int at, int bt, int ct, const struct sConvertTypes *dConvertTypes)
syStrategy syKosz(ideal arg, int *length)
int iiTestConvert(int inputType, int outputType)
static BOOLEAN jjREPART(leftv res, leftv v)
ideal id_FreeModule(int i, const ring r)
the free module of rank i
static BOOLEAN jjRING3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjRSUM(leftv res, leftv u, leftv v)
ideal id_Transp(ideal a, const ring rRing)
transpose a module
static BOOLEAN jjVAR1(leftv res, leftv v)
bool luSolveViaLUDecomp(const matrix pMat, const matrix lMat, const matrix uMat, const matrix bVec, matrix &xVec, matrix &H)
Solves the linear system A * x = b, where A is an (m x n)-matrix which is given by its LU-decompositi...
poly nc_p_Bracket_qq(poly p, const poly q, const ring r)
returns [p,q], destroys p
poly pSubstPoly(poly p, int var, poly image)
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)
void omPrintInfo(FILE *fd)
bigintmat * bimSub(bigintmat *a, bigintmat *b)
static BOOLEAN jjPLUS_MA(leftv res, leftv u, leftv v)
#define TEST_OPT_DEGBOUND
static BOOLEAN jjKERNEL(leftv res, leftv u, leftv v)
static BOOLEAN jjCOMPARE_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjPLUS_BIM(leftv res, leftv u, leftv v)
static BOOLEAN jjSQR_FREE(leftv res, leftv u)
static BOOLEAN jjPFAC1(leftv res, leftv v)
number det()
det (via LaPlace in general, hnf for euc. rings)
static BOOLEAN jjTIMES_MA_BI2(leftv res, leftv u, leftv v)
static BOOLEAN jjKBASE2(leftv res, leftv u, leftv v)
static BOOLEAN jjHILBERT2(leftv res, leftv u, leftv v)
static BOOLEAN 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)
ring rCompose(const lists L, const BOOLEAN check_comp=TRUE, const long bitmask=0x7fff)
static BOOLEAN jjGETDUMP(leftv, leftv v)
static BOOLEAN jjINTVEC_PL(leftv res, leftv v)
static BOOLEAN jjP2BI(leftv res, leftv v)
ideal_list kStdfac(ideal F, ideal Q, tHomog h, intvec **w, ideal D)
static BOOLEAN jjTIMES_MA_P2(leftv res, leftv u, leftv v)
void idLiftW(ideal P, ideal Q, int n, matrix &T, ideal &R, short *w)
ideal interpolation(const std::vector< ideal > &L, intvec *v)
intvec * scIndIntvec(ideal S, ideal Q)
void henselFactors(const int xIndex, const int yIndex, const poly h, const poly f0, const poly g0, const int d, poly &f, poly &g)
Computes a factorization of a polynomial h(x, y) in K[[x]][y] up to a certain degree in x...
BOOLEAN mpKoszul(leftv res, leftv c, leftv b, leftv id)
const struct sConvertTypes dConvertTypes[]
static BOOLEAN jjCOUNT_M(leftv res, leftv v)
BOOLEAN iiExprArith1(leftv res, leftv a, int op)
static int WerrorS_dummy_cnt
static int si_min(const int a, const int b)
static BOOLEAN jjRANDOM(leftv res, leftv u, leftv v)
static BOOLEAN jjOP_REST(leftv res, leftv u, leftv v)
unsigned nCmdAllocated
number of commands-slots allocated
static BOOLEAN jjFAREY_BI(leftv res, leftv u, leftv v)
matrix mp_InitP(int r, int c, poly p, const ring R)
make it a p * unit matrix
Compatiblity layer for legacy polynomial operations (over currRing)
static BOOLEAN jjDIVMOD_I(leftv res, leftv u, leftv v)
BOOLEAN iiConvert(int inputType, int outputType, int index, leftv input, leftv output, const struct sConvertTypes *dConvertTypes)
static BOOLEAN jjBRACK_Ma_I_IV(leftv res, leftv u, leftv v, leftv w)
ideal kSba(ideal F, ideal Q, tHomog h, intvec **w, int sbaOrder, int arri, intvec *hilb, int syzComp, int newIdeal, intvec *vw)
poly p_Homogen(poly p, int varnum, const ring r)
static BOOLEAN jjL2R(leftv res, leftv v)
static BOOLEAN jjOpenClose(leftv, leftv v)
static BOOLEAN jjMEMORY(leftv res, leftv v)
BOOLEAN jjWAIT1ST1(leftv res, leftv u)
int exprlist_length(leftv v)
ideal id_Copy(ideal h1, const ring r)
copy an ideal
short * iv2array(intvec *iv, const ring R)
static int rPar(const ring r)
(r->cf->P)
static BOOLEAN jjCOEFFS_Id(leftv res, leftv u, leftv v)
BOOLEAN iiExprArith3(leftv res, int op, leftv a, leftv b, leftv c)
static BOOLEAN jjCOLS(leftv res, leftv v)
matrix mp_Coeffs(ideal I, int var, const ring R)
corresponds to Maple's coeffs: var has to be the number of a variable
#define nPower(a, b, res)
#define pLmCmp(p, q)
returns 0|1|-1 if p=q|p>q|p<q w.r.t monomial ordering
static BOOLEAN jjKLAMMER_rest(leftv res, leftv u, leftv v)
lists syConvRes(syStrategy syzstr, BOOLEAN toDel, int add_row_shift)
static BOOLEAN jjALIGN_M(leftv res, leftv u, leftv v)
static BOOLEAN jjHOMOG1(leftv res, leftv v)
static BOOLEAN jjCHINREM_BI(leftv res, leftv u, leftv v)
void omPrintBinStats(FILE *fd)
static BOOLEAN jjPLUS_MA_P(leftv res, leftv u, leftv v)
poly sm_CallDet(ideal I, const ring R)
BOOLEAN idTestHomModule(ideal m, ideal Q, intvec *w)
static BOOLEAN jjGCD_N(leftv res, leftv u, leftv v)
static BOOLEAN jjrVarStr(leftv res, leftv v)
static BOOLEAN jjPRIME(leftv res, leftv v)
static BOOLEAN jjMODULO(leftv res, leftv u, leftv v)
ideal id_ChineseRemainder(ideal *xx, number *q, int rl, const ring r)
static BOOLEAN jjROWS(leftv res, leftv v)
static BOOLEAN jjDET_BI(leftv res, leftv v)
static BOOLEAN jjDUMP(leftv, leftv v)
static BOOLEAN jjPLUS_S(leftv res, leftv u, leftv v)
BOOLEAN iiTryLoadLib(leftv v, const char *id)
leftv slRead(si_link l, leftv a)
static BOOLEAN jjBRACK_Bim(leftv res, leftv u, leftv v, leftv w)
poly mp_Trace(matrix a, const ring R)
static BOOLEAN jjCOEF(leftv res, leftv u, leftv v)
static BOOLEAN jjREDUCE3_ID(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjTIMES_MA_I2(leftv res, leftv u, leftv v)
static BOOLEAN jjJACOB_M(leftv res, leftv a)
static BOOLEAN jjnlInt(leftv res, leftv u)
static BOOLEAN jjIS_RINGVAR0(leftv res, leftv)
static BOOLEAN jjINTERRED(leftv res, leftv v)
static BOOLEAN jjMINUS_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjSTD_1(leftv res, leftv u, leftv v)
static BOOLEAN jjDOTDOT(leftv res, leftv u, leftv v)
void id_Norm(ideal id, const ring r)
ideal id = (id[i]), result is leadcoeff(id[i]) = 1
static BOOLEAN jjNULL(leftv, leftv)
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
#define pIsUnit(p)
return true if the Lm is a constant <>0
static BOOLEAN jjCONTENT(leftv res, leftv v)
static BOOLEAN jjFAC_P2(leftv res, leftv u, leftv dummy)
#define omFreeSize(addr, size)
static BOOLEAN jjREAD2(leftv res, leftv u, leftv v)
static BOOLEAN jjKLAMMER_IV(leftv res, leftv u, leftv v)
#define idSimpleAdd(A, B)
matrix idDiffOp(ideal I, ideal J, BOOLEAN multiply)
int singclap_det_i(intvec *m, const ring)
static BOOLEAN jjpHead(leftv res, leftv v)
static BOOLEAN 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)
poly singclap_gcd(poly f, poly g, const ring r)
destroys f and g
void id_Delete(ideal *h, ring r)
deletes an ideal/module/matrix
intvec * ivCopy(const intvec *o)
struct sValCmd1 * psValCmd1
static BOOLEAN jjDEGREE(leftv res, leftv v)
bigintmat * bimAdd(bigintmat *a, bigintmat *b)
Matrix-Add/-Sub/-Mult so oder mit operator+/-/* ? : NULL as a result means an error (non-compatible m...
static BOOLEAN jjINTERSECT_PL(leftv res, leftv v)
static BOOLEAN jjBREAK1(leftv, leftv v)
static BOOLEAN jjEXTGCD_I(leftv res, leftv u, leftv v)
ideal getMinorIdealCache(const matrix mat, const int minorSize, const int k, const ideal iSB, const int cacheStrategy, const int cacheN, const int cacheW, const bool allDifferent)
Returns the specified set of minors (= subdeterminantes) of the given matrix.
static BOOLEAN jjPlural_mat_poly(leftv res, leftv a, leftv b)
static BOOLEAN jjNEWSTRUCT3(leftv, leftv u, leftv v, leftv w)
static BOOLEAN jjTRACE_IV(leftv res, leftv v)
#define pLmDelete(p)
assume p != NULL, deletes Lm(p)->coef and Lm(p)
const struct sValCmd2 dArith2[]
static BOOLEAN jjGT_I(leftv res, leftv u, leftv v)
static BOOLEAN jjidFreeModule(leftv res, leftv v)
static BOOLEAN rField_is_Q_a(const ring r)
static BOOLEAN jjINTERPOLATION(leftv res, leftv l, leftv v)
lists qrDoubleShift(const matrix A, const number tol1, const number tol2, const number tol3, const ring r=currRing)
Computes all eigenvalues of a given real quadratic matrix with multiplicites.
lib_types type_of_LIB(const char *newlib, char *libnamebuf)
static BOOLEAN jjMINUS_I(leftv res, leftv u, leftv v)
static BOOLEAN jjDUMMY(leftv res, leftv u)
ideal kStd(ideal F, ideal Q, tHomog h, intvec **w, intvec *hilb, int syzComp, int newIdeal, intvec *vw, s_poly_proc_t sp)
syStrategy syResolution(ideal arg, int maxlength, intvec *w, BOOLEAN minim)
BOOLEAN maApplyFetch(int what, map theMap, leftv res, leftv w, ring preimage_r, int *perm, int *par_perm, int P, nMapFunc nMap)
static BOOLEAN jjHILBERT_IV(leftv res, leftv v)
static long p_Totaldegree(poly p, const ring r)
intvec * ivSub(intvec *a, intvec *b)
int syDim(syStrategy syzstr)
static BOOLEAN rField_is_Domain(const ring r)
static BOOLEAN jjEQUAL_BI(leftv res, leftv u, leftv v)
static FORCE_INLINE void n_Normalize(number &n, const coeffs r)
inplace-normalization of n; produces some canonical representation of n;
poly iiHighCorner(ideal I, int ak)
static BOOLEAN jjTIMES_MA_BI1(leftv res, leftv u, leftv v)
static BOOLEAN jjWEDGE(leftv res, leftv u, leftv v)
BOOLEAN iiExprArithM(leftv res, leftv a, int op)
poly singclap_det(const matrix m, const ring s)
static BOOLEAN jjPROC1(leftv res, leftv u)
intvec * ivTranp(intvec *o)
static BOOLEAN jjDEG_M(leftv res, leftv u)
static BOOLEAN jjDIM_R(leftv res, leftv v)
void WerrorS(const char *s)
static BOOLEAN jjPROC3(leftv res, leftv u, leftv v, leftv w)
void omPrintStats(FILE *fd)
static BOOLEAN jjJanetBasis2(leftv res, leftv u, leftv v)
static BOOLEAN jjOP_BIM_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjBRACK_Im(leftv res, leftv u, leftv v, leftv w)
ideal idModulo(ideal h2, ideal h1, tHomog hom, intvec **w)
static BOOLEAN jjDIV_Ma(leftv res, leftv u, leftv v)
static intvec * idSort(ideal id, BOOLEAN nolex=TRUE)
static BOOLEAN jjNAMES0(leftv res, leftv)
static BOOLEAN rField_is_GF(const ring r)
static char const ** rParameter(const ring r)
(r->cf->parameter)
static BOOLEAN jjTIMES_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjSTD(leftv res, leftv v)
static BOOLEAN 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)
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
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 jjGCD_I(leftv res, leftv u, leftv v)
poly singclap_pdivide(poly f, poly g, const ring r)
static BOOLEAN jjFAREY_LI(leftv res, leftv u, leftv v)
static BOOLEAN jjOPPOSE(leftv res, leftv a, leftv b)
static BOOLEAN jjSUBST_Id(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjPRUNE(leftv res, leftv v)
static BOOLEAN jjOP_I_BIM(leftv res, leftv u, leftv v)
ideal idQuot(ideal h1, ideal h2, BOOLEAN h1IsStb, BOOLEAN resultIsIdeal)
BOOLEAN slOpen(si_link l, short flag, leftv h)
static BOOLEAN iiExprArith2TabIntern(leftv res, leftv a, int op, leftv b, BOOLEAN proccall, const struct sValCmd2 *dA2, int at, int bt, const struct sConvertTypes *dConvertTypes)
long(* pLDegProc)(poly p, int *length, ring r)
static BOOLEAN jjINDEX_P_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjMOD_P(leftv res, leftv u, leftv v)
#define pGetComp(p)
Component.
static BOOLEAN jjPARSTR1(leftv res, leftv v)
static BOOLEAN jjHOMOG1_W(leftv res, leftv v, leftv u)
static BOOLEAN jjGE_I(leftv res, leftv u, leftv v)
static int iiTabIndex(const jjValCmdTab dArithTab, const int len, const int op)
#define SI_LINK_SET_CLOSE_P(l)
BOOLEAN iiExport(leftv v, int toLev)
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)
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 jjMINOR_M(leftv res, leftv v)
static BOOLEAN jjEXPORTTO(leftv, leftv u, leftv v)
char * String(void *d=NULL, BOOLEAN typed=FALSE, int dim=1)
Called for conversion to string (used by string(..), write(..),..)
int iiRegularity(lists L)
static FORCE_INLINE number n_Random(siRandProc p, number p1, number p2, const coeffs cf)
static BOOLEAN jjUMINUS_BI(leftv res, leftv u)
static BOOLEAN jjTIMES_BIM(leftv res, leftv u, leftv v)
static BOOLEAN jjCOUNT_RES(leftv res, leftv v)
static BOOLEAN jjJanetBasis(leftv res, leftv v)
void printBlackboxTypes()
list all defined type (for debugging)
static FORCE_INLINE number n_Param(const int iParameter, const coeffs r)
return the (iParameter^th) parameter as a NEW number NOTE: parameter numbering: 1..n_NumberOfParameters(...)
static BOOLEAN jjVARSTR2(leftv res, leftv u, leftv v)
static BOOLEAN jjLE_N(leftv res, leftv u, leftv v)
static BOOLEAN jjROWS_IV(leftv res, leftv v)
int rSum(ring r1, ring r2, ring &sum)
static BOOLEAN jjEQUAL_Ma(leftv res, leftv u, leftv v)
static BOOLEAN jjBAREISS(leftv res, leftv v)
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)
static BOOLEAN jjPLUS_P(leftv res, leftv u, leftv v)
char * iiArithGetCmd(int nPos)
idhdl enterid(const char *s, int lev, int t, idhdl *root, BOOLEAN init, BOOLEAN search)
static BOOLEAN jjrCharStr(leftv res, leftv v)
static BOOLEAN jjKoszul(leftv res, leftv u, leftv v)
static BOOLEAN jjBRACKET(leftv res, leftv a, leftv b)
const char * Tok2Cmdname(int tok)
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 jjLOAD1(leftv, leftv v)
ideal idSeries(int n, ideal M, matrix U, intvec *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_pdiive 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 jjEQUAL_R(leftv res, leftv u, leftv v)
static BOOLEAN jjKLAMMER(leftv res, leftv u, leftv v)
static long pTotaldegree(poly p)
static BOOLEAN jjHOMOG_P_W(leftv res, leftv u, leftv v, leftv)
BOOLEAN setOption(leftv res, leftv v)
static BOOLEAN jjDIFF_ID(leftv res, leftv u, leftv v)
int scMult0Int(ideal S, ideal Q, const ring tailRing)
static BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
poly pSubstPar(poly p, int par, poly image)
The main handler for Singular numbers which are suitable for Singular polynomials.
static FORCE_INLINE number n_Add(number a, number b, const coeffs r)
return the sum of 'a' and 'b', i.e., a+b
static BOOLEAN jjRPAR(leftv res, leftv v)
static BOOLEAN jjERROR(leftv, leftv u)
static BOOLEAN jjVDIM(leftv res, leftv v)
static BOOLEAN jjEQUAL_N(leftv res, leftv u, leftv v)
static BOOLEAN jjJET4(leftv res, leftv u)
void scDegree(ideal S, intvec *modulweight, ideal Q)
static BOOLEAN jjOP_IM_I(leftv res, leftv u, leftv v)
static BOOLEAN jjLEADEXP(leftv res, leftv v)
int scDimInt(ideal S, ideal Q)
BOOLEAN slPrepClose(si_link l)
static BOOLEAN 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
#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)
static BOOLEAN jjKBASE(leftv res, leftv v)
number(* nMapFunc)(number a, const coeffs src, const coeffs dst)
maps "a", which lives in src, into dst
static FORCE_INLINE BOOLEAN n_DivBy(number a, number b, const coeffs r)
test whether 'a' is divisible 'b'; for r encoding a field: TRUE iff 'b' does not represent zero in Z:...
static FORCE_INLINE number n_ChineseRemainderSym(number *a, number *b, int rl, BOOLEAN sym, CFArray &inv_cache, const coeffs r)
static BOOLEAN jjVARSTR1(leftv res, leftv v)
static BOOLEAN jjREDUCE5(leftv res, leftv u)
static BOOLEAN jjELIMIN(leftv res, leftv u, leftv v)
static BOOLEAN 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)
BOOLEAN sm_CheckDet(ideal I, int d, BOOLEAN sw, const ring r)
static BOOLEAN jjMONOM(leftv res, leftv v)
const char feNotImplemented[]
void id_DelEquals(ideal id, const ring r)
ideal id = (id[i]) if id[i] = id[j] then id[j] is deleted for j > i
static BOOLEAN jjTIMES_N(leftv res, leftv u, leftv v)
BOOLEAN jjUNIQLIST(leftv, leftv arg)
static BOOLEAN jjMOD_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjBRACK_Ma_IV_I(leftv res, leftv u, leftv v, leftv w)
long kHomModDeg(poly p, ring r)
static FORCE_INLINE char * nCoeffName(const coeffs cf)
static BOOLEAN jjPREIMAGE(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjKLAMMER_PL(leftv res, leftv u)
ideal kInterRed(ideal F, ideal Q)
ideal id_Power(ideal given, int exp, const ring r)
BOOLEAN(* proc3)(leftv, leftv, leftv, leftv)
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)
static BOOLEAN jjDIV_N(leftv res, leftv u, leftv v)
BOOLEAN idInsertPoly(ideal h1, poly h2)
insert h2 into h1 (if h2 is not the zero polynomial) return TRUE iff h2 was indeed inserted ...
static BOOLEAN jjEXTGCD_P(leftv res, leftv u, leftv v)
static BOOLEAN jjLEADCOEF(leftv res, leftv v)
static BOOLEAN jjSBA_2(leftv res, leftv v, leftv u, leftv t)
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 might be != 0
static BOOLEAN jjSBA(leftv res, leftv v)
void hnf()
transforms INPLACE to HNF
static BOOLEAN jjREGULARITY(leftv res, leftv v)
BOOLEAN jjStdJanetBasis(leftv res, leftv v, int flag)
flag: 0: JB, 1: SB
matrix pMultMp(poly p, matrix a, const ring R)
static BOOLEAN jjDEFINED(leftv res, leftv v)
static BOOLEAN jjidVec2Ideal(leftv res, leftv v)
struct sValCmdM * psValCmdM
static int si_max(const int a, const int b)
static BOOLEAN jjGE_N(leftv res, leftv u, leftv v)
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)
static BOOLEAN jjMINUS_P(leftv res, leftv u, leftv v)
int p_Compare(const poly a, const poly b, const ring R)
BOOLEAN assumeStdFlag(leftv h)
static BOOLEAN jjOP_I_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjFAREY_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjRESERVED0(leftv, leftv)
ring rInit(leftv pn, leftv rv, leftv ord)
static BOOLEAN jjENVELOPE(leftv res, leftv a)
static BOOLEAN jjPFAC2(leftv res, leftv u, leftv v)
void PrintS(const char *s)
static BOOLEAN jjDEG_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjRINGLIST(leftv res, leftv v)
lists ipNameList(idhdl root)
static BOOLEAN rField_is_Q(const ring r)
static BOOLEAN jjCALL1ARG(leftv res, leftv v)
static BOOLEAN jjLOAD2(leftv, leftv, leftv v)
static BOOLEAN jjidTransp(leftv res, leftv v)
int iiArithAddCmd(const char *szName, short nAlias, short nTokval, short nToktype, short nPos=-1)
lists rDecompose(const ring r)
static long p_MinComp(poly p, ring lmRing, ring tailRing)
BOOLEAN load_builtin(const char *newlib, BOOLEAN autoexport, SModulFunc_t init)
static BOOLEAN jjSTD_HILB(leftv res, leftv u, leftv v)
static BOOLEAN jjidMinBase(leftv res, leftv v)
syStrategy sySchreyer(ideal arg, int maxlength)
BOOLEAN sdb_set_breakpoint(const char *pp, int given_lineno)
static BOOLEAN jjBI2P(leftv res, leftv u)
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)
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)
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)
#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
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
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)
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)
static BOOLEAN jjPOWER_P(leftv res, leftv u, leftv v)
SModulFunc_t iiGetBuiltinModInit(const char *libname)
static BOOLEAN jjQUOT(leftv res, leftv u, leftv v)
ideal sm_CallSolv(ideal I, const ring R)
used for all algebraic extensions, i.e., the top-most extension in an extension tower is algebraic ...
static BOOLEAN jjCOEF_M(leftv, leftv v)
ideal walkProc(leftv first, leftv second)
LINLINE void nlDelete(number *a, const coeffs r)
static FORCE_INLINE number n_Div(number a, number b, const coeffs r)
return the quotient of 'a' and 'b', i.e., a/b; raises an error if 'b' is not invertible in r exceptio...
long(* pFDegProc)(poly p, ring r)
intvec * hSecondSeries(intvec *hseries1)
ideal kMin_std(ideal F, ideal Q, tHomog h, intvec **w, ideal &M, intvec *hilb, int syzComp, int reduced)
BOOLEAN iiCheckTypes(leftv args, const short *type_list, int report)
check a list of arguemys against a given field of types return TRUE if the types match return FALSE (...
int luRank(const matrix aMat, const bool isRowEchelon, const ring R)
Computes the rank of a given (m x n)-matrix.
static BOOLEAN jjPLUS_P_MA(leftv res, leftv u, leftv v)
bool luInverseFromLUDecomp(const matrix pMat, const matrix lMat, const matrix uMat, matrix &iMat, const ring R)
This code computes the inverse by inverting lMat and uMat, and then performing two matrix multiplicat...
coeffs basecoeffs() const
static BOOLEAN rField_is_Ring_Z(const ring r)
static BOOLEAN jjCOUNT_RG(leftv res, leftv v)
static BOOLEAN jjUMINUS_IV(leftv res, leftv u)
void pNorm(poly p, const ring R=currRing)
static BOOLEAN jjTIMES_IV(leftv res, leftv u, leftv v)
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)
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)
static BOOLEAN jjTIMES_P(leftv res, leftv u, leftv v)
static BOOLEAN jjROWS_BIM(leftv res, leftv v)
static BOOLEAN jjLE_BI(leftv res, leftv u, leftv v)
ideal maGetPreimage(ring theImageRing, map theMap, ideal id, const ring dst_r)
static BOOLEAN jjINDEX_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjSBA_1(leftv res, leftv v, leftv u)
static BOOLEAN jjMINUS_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjPOWER_N(leftv res, leftv u, leftv v)
cmdnames * sCmds
array of existing commands
int idElem(const ideal F)
count non-zero elements
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)
LINLINE number nlInit(long i, const coeffs r)
static BOOLEAN jjidHead(leftv res, leftv v)
void newstruct_setup(const char *n, newstruct_desc d)
static BOOLEAN jjOP_I_IM(leftv res, leftv u, leftv v)
static BOOLEAN jjSort_Id(leftv res, leftv v)
int mp_Compare(matrix a, matrix b, const ring R)
static BOOLEAN jjJET_P_P(leftv res, leftv u, leftv v, leftv w)
newstruct_desc newstructChildFromString(const char *parent, const char *s)
leftv iiMap(map theMap, const char *what)
int n_IsParam(const number m, const ring r)
TODO: rewrite somehow...
static BOOLEAN jjPOWER_I(leftv res, leftv u, leftv v)
static BOOLEAN jjCOMPARE_IV_I(leftv res, leftv u, leftv v)
static BOOLEAN jjPLUSPLUS(leftv, leftv u)
BOOLEAN iiLoadLIB(FILE *fp, const char *libnamebuf, const char *newlib, idhdl pl, BOOLEAN autoexport, BOOLEAN tellerror)
const struct sValCmd1 dArith1[]
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete 'p'
char * rCharStr(const ring r)
TODO: make it a virtual method of coeffs, together with: Decompose & Compose, rParameter & rPar...
static BOOLEAN jjFACSTD2(leftv res, leftv v, leftv w)
static FORCE_INLINE BOOLEAN n_GreaterZero(number n, const coeffs r)
ordered fields: TRUE iff 'n' is positive; in Z/pZ: TRUE iff 0 < m <= roundedBelow(p/2), where m is the long representing n in C: TRUE iff (Im(n) != 0 and Im(n) >= 0) or (Im(n) == 0 and Re(n) >= 0) in K(a)/<p(a)>: TRUE iff (n != 0 and (LC(n) > 0 or deg(n) > 0)) in K(t_1, ..., t_n): TRUE iff (LC(numerator(n) is a constant and > 0) or (LC(numerator(n) is not a constant) in Z/2^kZ: TRUE iff 0 < n <= 2^(k-1) in Z/mZ: TRUE iff the internal mpz is greater than zero in Z: TRUE iff n > 0
const char * getBlackboxName(const int t)
return the name to the type given by t (r/o)
ideal 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)
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
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 pCopy(p)
return a copy of the poly
#define MATELEM(mat, i, j)
blackbox * getBlackboxStuff(const int t)
return the structure to the type given by t
static BOOLEAN jjCOMPARE_BIM(leftv res, leftv u, leftv v)
int IsCmd(const char *n, int &tok)
static BOOLEAN jjHILBERT3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjRANDOM_Im(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjLT_N(leftv res, leftv u, leftv v)
static BOOLEAN jjidElem(leftv res, leftv v)
static BOOLEAN jjCOEFFS3_Id(leftv res, leftv u, leftv v, leftv w)
ideal twostd(ideal I)
Compute two-sided GB: