13 #include "factory/factory.h"
91 #define NC_MASK (3+64)
98 #define ZERODIVISOR_MASK 8
101 #define ZERODIVISOR_MASK 0
103 #define ALLOW_PLURAL 1
105 #define COMM_PLURAL 2
108 #define NO_ZERODIVISOR 8
109 #define ALLOW_ZERODIVISOR 0
111 #define ALLOW_NC ALLOW_LP|ALLOW_PLURAL
113 #define ALLOW_ZZ (ALLOW_RING|NO_ZERODIVISOR)
119 #define NO_CONVERSION 32
206 extern int iiArithAddCmd(
const char *szName,
short nAlias,
short nTokval,
207 short nToktype,
short nPos=-1);
217 #define ii_div_by_0 "div. by 0"
226 if ((
long)
i==
l)
return l;
251 int bb = (int)(
long)(
v->Data());
256 case '+': cc=
bimAdd(aa,bb);
break;
257 case '-': cc=
bimSub(aa,bb);
break;
258 case '*': cc=
bimMult(aa,bb);
break;
260 res->data=(
char *)cc;
270 number bb = (number)(
v->Data());
277 res->data=(
char *)cc;
287 int bb = (int)(
long)(
v->Data());
291 case '+': (*aa) += bb;
break;
292 case '-': (*aa) -= bb;
break;
293 case '*': (*aa) *= bb;
break;
296 case '%': (*aa) %= bb;
break;
298 res->data=(
char *)aa;
308 int bb = (int)(
long)(
v->Data());
317 res->data=(
char *)aa;
326 int l=(int)(
long)
v->Data();
329 int d=(int)(
long)u->
Data();
332 for(
i=
l-1;
i>=0;
i--) { (*vv)[
i]=d; }
333 res->data=(
char *)vv;
339 res->data=(
char *)
new intvec((
int)(long)u->
Data(),(int)(
long)
v->Data());
351 res->data = (
char *) (r<0);
354 res->data = (
char *) (r>0);
357 res->data = (
char *) (r<=0);
360 res->data = (
char *) (r>=0);
364 res->data = (
char *) (r==0);
368 if(r==-2) {
WerrorS(
"size incompatible");
return TRUE; }
379 res->data = (
char *) (r<0);
382 res->data = (
char *) (r>0);
385 res->data = (
char *) (r<=0);
388 res->data = (
char *) (r>=0);
392 res->data = (
char *) (r==0);
396 if(r==-2) {
WerrorS(
"size incompatible");
return TRUE; }
402 int b = (int)(
long)(
v->Data());
407 res->data = (
char *) (r<0);
410 res->data = (
char *) (r>0);
413 res->data = (
char *) (r<=0);
416 res->data = (
char *) (r>=0);
420 res->data = (
char *) (r==0);
435 res->data = (
char *) (
long)(r < 0);
438 res->data = (
char *) (
long)(r > 0);
441 res->data = (
char *) (
long)(r <= 0);
444 res->data = (
char *) (
long)(r >= 0);
448 res->data = (
char *)(
long) (r == 0);
456 poly
p=(poly)u->
Data();
457 poly q=(poly)
v->Data();
462 res->data = (
char *) (r < 0);
465 res->data = (
char *) (r > 0);
468 res->data = (
char *) (r <= 0);
471 res->data = (
char *) (r >= 0);
483 char* a = (
char * )(u->
Data());
484 char*
b = (
char * )(
v->Data());
516 else if (
v->Next()!=
NULL)
526 int b=(int)(
long)u->
Data();
527 int e=(int)(
long)
v->Data();
536 else if ((e==0)||(
b==1))
554 if(rc/
b!=oldrc) overflow=
TRUE;
558 WarnS(
"int overflow(^), result may be wrong");
560 res->data = (
char *)((
long)rc);
566 WerrorS(
"exponent must be non-negative");
572 int e=(int)(
long)
v->Data();
573 number n=(number)u->
Data();
580 WerrorS(
"exponent must be non-negative");
588 int e=(int)(
long)
v->Data();
589 number n=(number)u->
Data();
606 int v_i=(int)(
long)
v->Data();
609 WerrorS(
"exponent must be non-negative");
618 Werror(
"OVERFLOW in power(d=%ld, e=%d, max=%ld)",
661 res->data =
v->CopyD();
662 res->rtyp =
v->Typ();
702 if(isupper(u->
name[0]))
704 const char *c=u->
name+1;
705 while((*c!=
'\0')&&(islower(*c)||(isdigit(*c))||(*c==
'_'))) c++;
710 Print(
"%s of type 'ANY'. Trying load.\n", u->
name);
726 package pa=(package)u->Data();
740 WerrorS(
"reserved name with ::");
752 WerrorS(
"<package>::<id> expected");
759 unsigned int a=(
unsigned int)(
unsigned long)u->
Data();
760 unsigned int b=(
unsigned int)(
unsigned long)
v->Data();
762 res->data = (
char *)((
long)c);
765 WarnS(
"int overflow(+), result may be wrong");
776 res->data = (
char *)(
nAdd((number)u->
Data(), (number)
v->Data()));
811 WerrorS(
"intmat size not compatible");
821 WerrorS(
"bigintmat/cmatrix not compatible");
832 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
840 ideal
A=(ideal)u->
Data(); ideal
B=(ideal)
v->Data();
844 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
867 char* a = (
char * )(u->
Data());
868 char*
b = (
char * )(
v->Data());
869 char* r = (
char * )
omAlloc(strlen(a) + strlen(
b) + 1);
877 res->data = (
char *)
idAdd((ideal)u->
Data(),(ideal)
v->Data());
882 void *
ap=u->
Data();
void *bp=
v->Data();
883 int aa=(int)(
long)
ap;
884 int bb=(int)(
long)bp;
886 unsigned int a=(
unsigned int)(
unsigned long)
ap;
887 unsigned int b=(
unsigned int)(
unsigned long)bp;
891 WarnS(
"int overflow(-), result may be wrong");
893 res->data = (
char *)((
long)cc);
903 res->data = (
char *)(
nSub((number)u->
Data(), (number)
v->Data()));
939 WerrorS(
"intmat size not compatible");
949 WerrorS(
"bigintmat/cmatrix not compatible");
960 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
969 ideal
A=(ideal)u->
Data(); ideal
B=(ideal)
v->Data();
973 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
982 int a=(int)(
long)u->
Data();
983 int b=(int)(
long)
v->Data();
985 if ((c>INT_MAX)||(c<INT_MIN))
986 WarnS(
"int overflow(*), result may be wrong");
987 res->data = (
char *)((
long)((int)c));
1001 res->data = (
char *)(
nMult( (number)u->
Data(), (number)
v->Data()));
1002 number n=(number)
res->data;
1004 res->data=(
char *)n;
1022 Warn(
"possible OVERFLOW in mult(d=%ld, d=%ld, max=%ld)",
1034 Warn(
"possible OVERFLOW in mult(d=%ld, d=%ld, max=%ld)",
1066 WerrorS(
"intmat size not compatible");
1078 WerrorS(
"bigintmat/cmatrix not compatible");
1092 res->data = (
char *)I;
1105 res->data = (
char *)I;
1114 res->data = (
char *)I;
1143 Werror(
"matrix size not compatible(%dx%d, %dx%d) in *",
1153 ideal
A=(ideal)u->
Data(); ideal
B=(ideal)
v->Data();
1157 Werror(
"matrix size not compatible(%dx%d, %dx%d) in *",
1174 res->data = (
char *)(
long)((int)((
long)u->
Data()) >= (
int)((long)
v->Data()));
1192 res->data = (
char *)(
long)((int)((
long)u->
Data()) > (
int)((long)
v->Data()));
1206 res->data = (
char *)(
long)((int)((
long)u->
Data()) <= (
int)((long)
v->Data()));
1219 res->data = (
char *)(
long)((int)((
long)u->
Data()) < (
int)((long)
v->Data()));
1229 int a= (int)(
long)u->
Data();
1230 int b= (int)(
long)
v->Data();
1244 r=((a-c) /
b);
break;
1246 res->data=(
void *)((
long)r);
1251 number q=(number)
v->Data();
1259 res->data = (
char *)q;
1264 number q=(number)
v->Data();
1272 res->data = (
char *)q;
1277 poly q=(poly)
v->Data();
1278 poly
p=(poly)(u->
Data());
1286 poly q=(poly)
v->Data();
1310 res->data=(
char *)mm;
1321 res->data = (
char *)((
int)((long)u->
Data()) == (
int)((long)
v->Data()));
1339 res->data = (
char *)(
long)(u->
Data()==
v->Data());
1345 res->data = (
char *)((
long)
nEqual((number)u->
Data(),(number)
v->Data()));
1351 poly
p=(poly)u->
Data();
1352 poly q=(poly)
v->Data();
1372 res->data = (
char *)((
long)u->
Data() && (long)
v->Data());
1377 res->data = (
char *)((
long)u->
Data() || (long)
v->Data());
1390 while (sh->next !=
NULL) sh=sh->next;
1406 WerrorS(
"indexed object must have a name");
1417 t.
data=(
char *)((
long)(*iv)[
i]);
1440 poly
p=(poly)u->
Data();
1441 int i=(int)(
long)
v->Data();
1461 int i=(int)(
long)
v->Data();
1480 poly
p=(poly)u->
Data();
1488 while ((
p!=
NULL) && (sum>0))
1504 res->data=(
char *)r;
1509 poly
p=(poly)u->
Data();
1510 int i=(int)(
long)
v->Data();
1545 res->data=(
char *)r;
1553 long slen = strlen(u->
name) + 14;
1554 char *nn = (
char*)
omAlloc(slen);
1555 sprintf(nn,
"%s(%d)",u->
name,(
int)(
long)
v->Data());
1568 long slen = strlen(u->
name) + 14;
1569 char *n = (
char*)
omAlloc(slen);
1582 sprintf(n,
"%s(%d)",u->
name,(*iv)[
i]);
1603 while (
h->next!=
NULL)
h=
h->next;
1617 tmp_proc->
id=
"_auto";
1621 d=u->
data; u->
data=(
void *)tmp_proc;
1638 if (sl)
return TRUE;
1677 number *
x=(number *)
omAlloc(rl*
sizeof(number));
1678 number *q=(number *)
omAlloc(rl*
sizeof(number));
1680 for(
i=rl-1;
i>=0;
i--)
1687 for(
i=rl-1;
i>=0;
i--)
1693 res->data=(
char *)n;
1703 number *
x=(number *)
omAlloc(rl*
sizeof(number));
1704 number *q=(number *)
omAlloc(rl*
sizeof(number));
1706 for(
i=rl-1;
i>=0;
i--)
1712 for(
i=rl-1;
i>=0;
i--)
1716 Werror(
"poly expected at pos %d",
i+1);
1717 for(
i=rl-1;
i>=0;
i--)
1729 for(
i=rl-1;
i>=0;
i--)
1741 number n=n_ChineseRemainder(
x,q,rl,
currRing->cf);
1742 for(
i=rl-1;
i>=0;
i--)
1750 for(
i=rl-1;
i>=0;
i--)
1762 int s=(int)(
long)
v->Data();
1771 ideal
M=(ideal)u->
CopyD();
1772 int s=(int)(
long)
v->Data();
1785 poly
p=(poly)
v->Data();
1792 poly
p=(poly)
v->Data();
1799 int i=
pVar((poly)
v->Data());
1818 (ideal)(
v->Data()),
p);
1830 ideal I=(ideal)u->
Data();
1835 res->data = (
char *)((
long)d);
1840 poly
p=(poly)u->
Data();
1846 res->data = (
char *)(d);
1849 res->data=(
char *)(
long)(-1);
1854 int pos=(int)(
long)
v->Data();
1861 int pos=(int)(
long)
v->Data();
1862 ideal I=(ideal)u->
Data();
1876 ideal
m=(ideal)u->
Data();
1882 int i=
pVar((poly)
v->Data());
1893 int i=
pVar((poly)
v->Data());
1912 Warn(
"dim(%s,...) may be wrong because the mixed monomial ordering",
v->Name());
1926 ideal vi=(ideal)
v->Data();
1928 ideal ui=(ideal)u->
Data();
1942 res->data=(
char *)L;
1979 number uu=(number)u->
Data();number vv=(number)
v->Data();
1988 res->data=(
char *)L;
1993 int uu=(int)(
long)u->
Data();
int vv=(int)(
long)
v->Data();
1994 int p0=
ABS(uu),p1=
ABS(vv);
1995 int f0 = 1, f1 = 0, g0 = 0, g1 = 1, q, r;
2016 res->data=(
char *)L;
2023 if (ret)
return TRUE;
2026 res->data=(
char *)L;
2027 L->
m[0].
data=(
void *)r;
2039 int sw=(int)(
long)dummy->
Data();
2041 if ((sw<0)||(sw>2)) fac_sw=1;
2054 l->m[0].data=(
void *)
f;
2056 l->m[1].data=(
void *)
v;
2057 res->data=(
void *)
l;
2062 res->data=(
void *)
f;
2075 res->data=(
void *)
p;
2102 res->data=(
void *)L;
2109 number uu=(number)u->
Data();
2110 number vv=(number)
v->Data();
2118 ideal uu=(ideal)u->
Data();
2119 number vv=(number)
v->Data();
2141 ring r=(ring)u->
Data();
2150 int par_perm_size=0;
2160 par_perm_size=
rPar(r);
2169 perm=(
int *)
omAlloc0((r->N+1)*
sizeof(int));
2170 if (par_perm_size!=0)
2171 par_perm=(
int *)
omAlloc0(par_perm_size*
sizeof(
int));
2176 char ** r_par_names=
NULL;
2177 if (r->cf->extRing!=
NULL)
2179 r_par=r->cf->extRing->N;
2180 r_par_names=r->cf->extRing->names;
2183 char ** c_par_names=
NULL;
2187 c_par_names=
currRing->cf->extRing->names;
2191 maFindPerm(r->names, r->N, r_par_names, r_par,
2193 perm,par_perm,
currRing->cf->type);
2195 #ifdef HAVE_SHIFTBBA
2200 perm,par_perm,
currRing->cf->type,r->isLPring);
2207 if (par_perm_size!=0)
2221 Print(
"// par nr %d: %s -> %s\n",
2231 perm,par_perm,par_perm_size,nMap)))
2249 Werror(
"no identity map from %s (%s -> %s)",u->
Fullname(),s1,s2);
2260 char *where=(
char *)u->
Data();
2261 char *what=(
char *)
v->Data();
2262 char *
found = strstr(where,what);
2265 res->data=(
char *)((
found-where)+1);
2274 ideal
id = (ideal)u->
Data();
2275 int max_length = (int)(
long)
v->Data();
2278 WerrorS(
"length for fres must not be negative");
2281 if (max_length == 0)
2286 Warn(
"full resolution in a qring may be infinite, "
2287 "setting max length to %d", max_length);
2290 char *method = (
char *)
w->Data();
2294 if (strcmp(method,
"complete") != 0
2295 && strcmp(method,
"frame") != 0
2296 && strcmp(method,
"extended frame") != 0
2297 && strcmp(method,
"single module") != 0)
2299 WerrorS(
"wrong optional argument for fres");
2304 res->data = (
void *)r;
2312 w->data = (
char *)
"complete";
2326 int uu=(int)(
long)u->
Data();
int vv=(int)(
long)
v->Data();
2327 int p0=
ABS(uu),p1=
ABS(vv);
2334 res->data=(
char *)(
long)p0;
2339 number n1 = (number) u->
Data();
2340 number n2 = (number)
v->Data();
2346 number a=(number) u->
Data();
2347 number
b=(number)
v->Data();
2372 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
2373 PrintS(
"// performed for generic fibre, that is, over Q\n");
2381 switch((
int)(
long)
v->Data())
2384 res->data=(
void *)iv;
2397 int i=
pVar((poly)
v->Data());
2409 WerrorS(
"variable must have weight 1");
2414 int i=
pVar((poly)
v->Data());
2431 WerrorS(
"variable must have weight 1");
2438 ideal v_id=(ideal)
v->Data();
2447 currRing->pLexOrder=save_pLexOrder;
2470 const int n = L->
nr;
assume (n >= 0);
2471 std::vector<ideal> V(n + 1);
2473 for(
int i = n;
i >= 0;
i--) V[
i] = (ideal)(L->
m[
i].
Data());
2492 res->data = (
char *)
pJet((poly)u->
CopyD(), (int)(
long)
v->Data());
2526 h.data=(
void *)(
long)
IDELEMS((ideal)
v->Data());
2533 #ifdef HAVE_SHIFTBBA
2538 Werror(
"At least %d ncgen variables are needed for this computation.", ul);
2553 #ifdef HAVE_SHIFTBBA
2558 Werror(
"At least %d ncgen variables are needed for this computation.",
IDELEMS((ideal)u->
Data()));
2575 char *
s=(
char *)u->
Data();
2576 if(strcmp(
s,
"with")==0)
2578 if (strcmp(
s,
"try")==0)
2580 WerrorS(
"invalid second argument");
2581 WerrorS(
"load(\"libname\" [,option]);");
2607 ideal u_id=(ideal)u->
Data();
2608 ideal v_id=(ideal)
v->Data();
2611 if ((*w_u).compare((w_v))!=0)
2613 WarnS(
"incompatible weights");
2614 delete w_u; w_u=
NULL;
2622 WarnS(
"wrong weights");
2623 delete w_u; w_u=
NULL;
2628 res->data = (
char *)
idModulo(u_id,v_id ,hom,&w_u);
2639 number q=(number)
v->Data();
2650 number q=(number)
v->Data();
2661 poly q=(poly)
v->Data();
2667 poly
p=(poly)(u->
Data());
2685 char *opt=(
char *)
v->Data();
2697 if(strcmp(
l->m->type,
"ASCII")!=0)
2699 Werror(
"ASCII link required, not `%s`",
l->m->type);
2704 if (
l->name[0]!=
'\0')
2708 if (
v==
NULL) opt=(
const char*)
"i";
2709 else opt=(
const char *)
v->Data();
2751 const char *
s=(
const char *)u->
Data();
2752 newstruct_desc d=
NULL;
2758 else WerrorS(
"name of newstruct must be longer than 1 character");
2764 int i=(
int)(long)
v->Data();
2772 Werror(
"par number %d out of range 1..%d",
i,
p);
2782 WerrorS(
"basering must NOT be a qring!");
2802 WerrorS(
"basering must NOT be a qring!");
2822 WerrorS(
"basering must NOT be a qring!");
2842 WerrorS(
"basering must NOT be a qring!");
2864 const poly q = (poly)
b->Data();
2877 const poly
p = (poly)a->
Data();
2891 const poly q = (poly)
b->Data();
2896 const poly
p = (poly)a->
Data();
2897 int k=(int)(
long)c->
Data();
2901 for (
int i = 0;
i <
k;
i++)
2913 if (qq ==
NULL)
break;
2919 Werror(
"invalid number of iterations");
2929 ring r = (ring)a->
Data();
2932 res->data =
b->Data();
2933 res->rtyp =
b->rtyp;
2938 Werror(
"%s is not an opposite ring to current ring",a->
Fullname());
2951 res->rtyp = argtype;
2959 res->rtyp = argtype;
2967 res->rtyp = argtype;
2980 res->rtyp = argtype;
2985 WerrorS(
"unsupported type in oppose");
3008 int i=(int)(
long)u->
Data();
3009 int j=(int)(
long)
v->Data();
3010 if (
j-
i <0) {
WerrorS(
"invalid range for random");
return TRUE;}
3017 int isRowEchelon = (int)(
long)
v->Data();
3018 if (isRowEchelon != 1) isRowEchelon = 0;
3019 int rank =
luRank(
m, isRowEchelon);
3020 res->data =(
char *)(
long)rank;
3032 Werror(
"cannot read from `%s`",
s);
3041 ideal vi=(ideal)
v->Data();
3049 ideal ui=(ideal)u->
Data();
3050 ideal vi=(ideal)
v->Data();
3058 int maxl=(int)(
long)
v->Data();
3061 WerrorS(
"length for res must not be negative");
3067 ideal u_id=(ideal)u->
Data();
3076 "full resolution in a qring may be infinite, setting max length to %d",
3090 int add_row_shift=0;
3094 add_row_shift = ww->
min_in();
3095 (*ww) -= add_row_shift;
3113 (
"`lres` not implemented for inhomogeneous input or qring");
3117 WarnS(
"the current implementation of `lres` may not work in the case of a single variable");
3127 (
"`kres` not implemented for inhomogeneous input or qring");
3139 (
"`hres` not implemented for inhomogeneous input or qring");
3142 ideal u_id_copy=
idCopy(u_id);
3144 r=
syHilb(u_id_copy,&dummy);
3157 res->data=(
void *)r;
3158 if ((weights!=
NULL) && (ww!=
NULL)) {
delete ww; ww=
NULL; }
3162 if (weights!=
NULL) (*ww) += add_row_shift;
3192 n1 = (number)u->
CopyD();
3196 i = (int)(
long)u->
Data();
3204 i = (int)(
long)
v->Data();
3208 res->data = (
char*)
l;
3214 res->data = (
char *)r;
3227 res->data = (
char *)r;
3233 int i=
rSum((ring)u->
Data(),(ring)
v->Data(),r);
3234 res->data = (
char *)r;
3237 #define SIMPL_NORMALIZE 64
3238 #define SIMPL_LMDIV 32
3239 #define SIMPL_LMEQ 16
3240 #define SIMPL_MULT 8
3242 #define SIMPL_NULL 2
3243 #define SIMPL_NORM 1
3246 int sw = (int)(
long)
v->Data();
3277 res->data = (
char * )
id;
3284 int sw=(int)(
long)dummy->
Data();
3299 l->m[0].data=(
void *)
f;
3301 l->m[1].data=(
void *)
v;
3302 res->data=(
void *)
l;
3307 res->data=(
void *)
f;
3320 res->data=(
void *)
p;
3341 int sw = (int)(
long)
v->Data();
3352 res->data = (
char * )
p;
3360 ideal u_id=(ideal)(u->
Data());
3385 ideal i1=(ideal)(u->
Data());
3391 poly
p=(poly)
v->Data();
3395 memset(i0->m,0,
sizeof(poly)*
IDELEMS(i0));
3428 i0=(ideal)
v->CopyD();
3430 memset(i0->m,0,
sizeof(poly)*
IDELEMS(i0));
3471 ideal I=(ideal)u->
Data();
3478 int add_row_shift=
w->min_in();
3479 (*w)-=add_row_shift;
3497 res->data = (
char *)S;
3504 for(
int i=0;
i<vl;
i++)
3513 for(
int i=0;
i<vl;
i++)
3530 ideal
A=(ideal)u->
Data();
3531 ideal
B=(ideal)
v->Data();
3537 sleftv tmp_u,tmp_v,tmp_res;
3557 int i=(
int)(long)
v->Data();
3578 int t = (int)(
long)
v->Data();
3588 res->data = (
void*)(
long)
i;
3603 int timeout = 1000*(int)(
long)
v->Data();
3611 for(
unsigned nfinished = 0; nfinished < ((unsigned)Lforks->
nr)+1; nfinished++)
3636 res->data = (
void*)(
long)ret;
3644 #define jjWRONG2 (proc2)jjWRONG
3645 #define jjWRONG3 (proc3)jjWRONG
3692 res->data = (
char *)n;
3697 res->data = (
char *)(-(
long)u->
Data());
3704 res->data = (
char *)n;
3722 res->data = (
char *)iv;
3729 res->data = (
char *)bim;
3738 ring r=(ring)u->
Data();
3742 char name_buffer[100];
3745 sprintf(name_buffer,
"PYTHON_RING_VAR%d",ending);
3768 l->m[0].data=(
void *)
m;
3769 l->m[1].data=(
void *)iv;
3770 res->data = (
char *)
l;
3790 number n=(number)u->
CopyD();
3814 number n=(number) tmp.
data;
3829 res->data = (
char *)(
long)
rChar((ring)
v->Data());
3839 res->data = (
char *)(
long)((
bigintmat*)(
v->Data()))->cols();
3844 res->data = (
char *)(
long)((
intvec*)(
v->Data()))->cols();
3852 res->data = (
char *)
p;
3863 res->data = (
char *)(
long)(aa->
rows()*aa->
cols());
3868 res->data = (
char *)(
long)
nSize((number)
v->Data());
3885 res->data = (
char *)(
long)((
intvec*)(
v->Data()))->length();
3890 ring r=(ring)
v->Data();
3896 extern int ipower (
int b,
int n );
3897 elems=
ipower(r->cf->ch,r->cf->extRing->pFDeg(r->cf->extRing->qideal->m[0],r->cf->extRing));
3899 res->data = (
char *)(
long)elems;
3905 poly
p=(poly)
v->Data();
3907 else res->data=(
char *)-1;
3912 ideal I=(ideal)u->
Data();
3918 res->data = (
char *)(
long)d;
3927 PrintS(
"// NOTE: computation of degree is being performed for\n");
3928 PrintS(
"// generic fibre, that is, over Q\n");
3947 else if (
v->rtyp!=0)
res->data=(
void *)(-1);
3954 number n =
reinterpret_cast<number
>(
v->CopyD());
3963 number n =
reinterpret_cast<number
>(
v->CopyD());
3979 i=
m->rows();
j=
m->cols();
3984 Werror(
"det of %d x %d bigintmat",
i,
j);
3993 number2 r=(number2)
omAlloc0(
sizeof(*r));
3995 i=
m->rows();
j=
m->cols();
3999 r->cf=
m->basecoeffs();
4004 Werror(
"det of %d x %d cmatrix",
i,
j);
4015 i=
m->rows();
j=
m->cols();
4020 Werror(
"det of %d x %d intmat",
i,
j);
4027 ideal I=(ideal)
v->Data();
4034 #ifdef HAVE_SHIFTBBA
4040 WerrorS(
"`dim` is not implemented for letterplace rings over rings");
4046 WerrorS(
"qring not supported by `dim` for letterplace rings at the moment");
4049 int gkDim =
lp_gkDim((ideal)(
v->Data()));
4050 res->data = (
char *)(
long)gkDim;
4051 return (gkDim == -2);
4056 Warn(
"dim(%s) may be wrong because the mixed monomial ordering",
v->Name());
4069 Werror(
"cannot dump to `%s`",
s);
4078 int co=(int)(
long)
v->Data();
4084 else WerrorS(
"argument of gen must be positive");
4089 char * d = (
char *)
v->Data();
4090 char *
s = (
char *)
omAlloc(strlen(d) + 13);
4091 strcpy(
s, (
char *)d);
4092 strcat(
s,
"\n;RETURN();\n");
4129 WarnS(
"no factorization implemented");
4133 res->data=(
void *)L;
4146 l->m[0].data=(
void *)
f;
4148 l->m[1].data=(
void *)
v;
4149 res->data=(
void *)
l;
4160 Werror(
"cannot get dump from `%s`",
s);
4169 ideal I=(ideal)
v->Data();
4178 ideal I=(ideal)
v->Data();
4192 WerrorS(
"module must be zero-dimensional");
4193 if (delete_w)
delete w;
4216 if (delete_w)
delete w;
4217 res->data=(
void *)po;
4225 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
4226 PrintS(
"// performed for generic fibre, that is, over Q\n");
4240 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
4241 PrintS(
"// performed for generic fibre, that is, over Q\n");
4250 ideal v_id=(ideal)
v->Data();
4258 char *s_isHomog=
omStrDup(
"isHomog");
4264 else if (
w!=
NULL)
delete w;
4282 #ifdef HAVE_SHIFTBBA
4285 int deg = (int)(
long)
v->Data();
4288 WerrorS(
"degree bound of Letterplace ring is to small");
4312 res->data=(
char *)mat;
4322 res->data=(
char *)I;
4329 ring q=(ring)
v->Data();
4332 if (q->qideal==
NULL)
4339 WerrorS(
"can only get ideal from identical qring");
4365 WarnS(
"interred: this command is experimental over the integers");
4373 res->data = (
char *)(
long)
pVar((poly)
v->Data());
4384 res->data = (
char *)0;
4391 poly
p=(poly)(
v->Data());
4396 res->data = (
char *)
i;
4403 WerrorS(
"differentiation not defined in the coefficient ring");
4406 number n = (number) u->
Data();
4407 number
k = (number)
v->Data();
4420 ideal
id = (ideal)a->
Data();
4430 for(
int i = 0;
i < W;
i++,
p++, q++ )
4455 poly
p=(poly)
v->Data();
4469 poly
p=(poly)
v->Data();
4482 res->data=(
char *)iv;
4487 poly
p=(poly)
v->Data();
4496 res->data = (
char*) lm;
4508 int isLetterplace=(int)(
long)
atGet(
v,
"isLetterplaceRing",
INT_CMD);
4510 res->data=(
char *)r;
4525 memset(&a2,0,
sizeof(a2));
4526 memset(&a3,0,
sizeof(a3));
4543 WerrorS(
"matrix must be constant");
4557 res->data=(
char*)ll;
4567 switch(((
int)(
long)
v->Data()))
4582 res->data = (
char *)0;
4586 res->data = (
char *)0;
4601 l->m[0].data=(
char *)r;
4604 l->m[1].data=(
char *)
m;
4605 res->data=(
char *)
l;
4621 res->data=(
char *)tmp;
4630 number n,
i;
i=(number)
v->Data();
4635 res->data=(
void *)n;
4665 res->data=(
char*)(
long)((long)
v->Data()==0 ? 1 : 0);
4670 res->data = (
char *)(
long)(((ring)(
v->Data()))->N);
4681 poly
p=(poly)
v->Data();
4687 int i=(int)(
long)
v->Data();
4690 if ((0<
i) && (
i<=
p))
4696 Werror(
"par number %d out of range 1..%d",
i,
p);
4703 number nn=(number)
v->Data();
4711 WerrorS(
"no ring active (1)");
4714 int i=(int)(
long)
v->Data();
4720 Werror(
"par number %d out of range 1..%d",
i,
p);
4727 poly
p=(poly)
v->Data();
4731 WerrorS(
"poly must be constant");
4740 res->data=(
void *)n;
4747 poly
p=(poly)
v->Data();
4751 WerrorS(
"poly must be constant");
4765 int i =
IsPrime((
int)(
long)(
v->Data()));
4766 res->data = (
char *)(
long)(
i > 1 ?
i : 2);
4772 ideal v_id=(ideal)
v->Data();
4777 WarnS(
"wrong weights");
4797 if (((
p=(poly)
v->Data())!=
NULL)
4806 res->data = (
char *)n;
4811 char *
s= (
char *)
v->Data();
4818 res->data = (
char *)1;
4827 res->data = (
char *)1;
4835 res->data =(
char *)(
long)rank;
4854 ring r=(ring)
v->Data();
4860 long mm=r->wanted_maxExp;
4876 ring r=(ring)
v->Data();
4883 ideal
i = (ideal)
v->Data();
4884 res->data = (
char *)
i->rank;
4889 res->data = (
char *)(
long)((
bigintmat*)(
v->Data()))->rows();
4894 res->data = (
char *)(
long)((
intvec*)(
v->Data()))->rows();
4899 res->data = (
char *)(
long)
rPar(((ring)
v->Data()));
4904 res->data = (
char *)(
long)atoi((
char*)
v->Data());
4913 WerrorS(
"qring not supported by slimgb at the moment");
4918 WerrorS(
"ordering must be global for slimgb");
4922 WarnS(
"groebner base computations with inexact coefficients can not be trusted due to rounding errors");
4925 ideal u_id=(ideal)u->
Data();
4930 WarnS(
"wrong weights");
4952 ideal v_id=(ideal)
v->Data();
4959 WarnS(
"wrong weights");
4978 ideal v_id=(ideal)
v->Data();
4985 WarnS(
"wrong weights");
5004 ideal v_id=(ideal)
v->Data();
5011 WarnS(
"wrong weights");
5030 WarnS(
"groebner base computations with inexact coefficients can not be trusted due to rounding errors");
5032 ideal v_id=(ideal)
v->Data();
5039 WarnS(
"wrong weights");
5057 res->data = (
char *)
idSort((ideal)
v->Data());
5070 l->m[0].data=(
void *)
f;
5072 l->m[1].data=(
void *)
v;
5073 res->data=(
void *)
l;
5089 ideal v_id=(ideal)
v->Data();
5090 #ifdef HAVE_SHIFTBBA
5095 Werror(
"At least %d ncgen variables are needed for this computation.",
IDELEMS(v_id));
5108 int add_row_shift=
w->min_in();
5109 (*w)-=add_row_shift;
5126 res->data = (
char *)S;
5133 for(
int i=0;
i<vl;
i++)
5135 if (v_id->m[
i]!=
NULL)
5142 for(
int i=0;
i<vl;
i++)
5144 if (v_id->m[
i]!=
NULL)
5165 res->data = (
char *)(((
bigintmat*)(
v->Data()))->transpose());
5176 ring r = (ring)a->
Data();
5184 WarnS(
"opposite only for global orderings");
5195 ring r = (ring)a->
Data();
5211 ideal v_id=(ideal)a->
Data();
5228 #if defined(HAVE_SHIFTBBA) || defined(HAVE_PLURAL)
5232 WarnS(
"groebner base computations with inexact coefficients can not be trusted due to rounding errors");
5234 ideal v_id=(ideal)
v->Data();
5260 ideal I=(ideal)
v->Data();
5275 res->data = (
char *)J;
5289 int t=(int)(
long)
v->data;
5339 int i=(int)(
long)
v->Data();
5345 res->data=(
char *)
p;
5358 WerrorS(
"no ring active (2)");
5361 int i=(int)(
long)
v->Data();
5374 #ifdef HAVE_SHIFTBBA
5380 WerrorS(
"`vdim` is not implemented for letterplace rings over rings");
5386 WerrorS(
"qring not supported by `vdim` for letterplace rings at the moment");
5389 int kDim =
lp_kDim((ideal)(
v->Data()));
5390 res->data = (
char *)(
long)kDim;
5391 return (kDim == -2);
5409 res->data = (
void*)(
long)
i;
5422 for(
int nfinished = 0; nfinished < Lforks->
nr+1; nfinished++)
5438 res->data = (
void*)(
long)
j;
5448 #ifdef HAVE_DYNAMIC_LOADING
5455 Werror(
"%s: unknown type",
s);
5473 Werror(
"can not create package `%s`",plib);
5479 package pa=IDPACKAGE(pl);
5483 Werror(
"can not create package `%s` - binaries exists",plib);
5489 package savepack=currPack;
5505 #ifdef HAVE_DYNAMIC_LOADING
5508 WerrorS(
"Dynamic modules are not supported by this version of Singular");
5528 Print(
"loading of >%s< failed\n",
s);
5537 res->data = (
char *)strlen((
char *)
v->Data());
5542 res->data = (
char *)(
long)
pLength((poly)
v->Data());
5547 res->data = (
char *)(
long)
idElem((ideal)
v->Data());
5567 res->data = (
char *)
pHead((poly)
v->Data());
5635 number n=(number)u->
CopyD();
5642 number n=(number)u->
Data();
5651 char *
s= (
char *)u->
Data();
5652 int r = (int)(
long)
v->Data();
5653 int c = (int)(
long)
w->Data();
5656 if ( (r<1) || (r>
l) || (c<0) )
5662 sprintf((
char *)
res->data,
"%-*.*s",c,c,
s+r-1);
5668 int r = (int)(
long)
v->Data();
5669 int c = (int)(
long)
w->Data();
5670 if ((r<1)||(r>iv->
rows())||(c<1)||(c>iv->
cols()))
5672 Werror(
"wrong range[%d,%d] in intmat %s(%d x %d)",
5685 while (
h->next!=
NULL)
h=
h->next;
5695 int r = (int)(
long)
v->Data();
5696 int c = (int)(
long)
w->Data();
5697 if ((r<1)||(r>bim->
rows())||(c<1)||(c>bim->
cols()))
5699 Werror(
"wrong range[%d,%d] in bigintmat %s(%d x %d)",
5713 while (
h->next!=
NULL)
h=
h->next;
5723 int r = (int)(
long)
v->Data();
5724 int c = (int)(
long)
w->Data();
5728 Werror(
"wrong range[%d,%d] in matrix %s(%d x %d)",r,c,u->
Fullname(),
5742 while (
h->next!=
NULL)
h=
h->next;
5751 ideal
m= (ideal)u->
Data();
5752 int r = (int)(
long)
v->Data();
5753 int c = (int)(
long)
w->Data();
5755 if ((r<1)||(r>
m->rank)||(c<1)||(c>
IDELEMS(
m)))
5757 Werror(
"wrong range[%d,%d] in matrix %s(%d x %d)",r,c,u->
Fullname(),
5771 while (
h->next!=
NULL)
h=
h->next;
5782 WerrorS(
"cannot build expression lists from unnamed objects");
5791 memcpy(&ut,u,
sizeof(ut));
5797 t.
data=(
char *)(
long)((*iv)[
l]);
5807 memcpy(u,&ut,
sizeof(ut));
5832 WerrorS(
"cannot build expression lists from unnamed objects");
5840 memcpy(&ut,u,
sizeof(ut));
5846 t.
data=(
char *)(
long)((*iv)[
l]);
5856 memcpy(u,&ut,
sizeof(ut));
5881 WerrorS(
"cannot build expression lists from unnamed objects");
5892 memcpy(&ut,u,
sizeof(ut));
5897 for (vl=0;vl< vv->
length(); vl++)
5899 t1.
data=(
char *)(
long)((*vv)[vl]);
5900 for (wl=0;wl< wv->
length(); wl++)
5902 t2.
data=(
char *)(
long)((*wv)[wl]);
5912 memcpy(u,&ut,
sizeof(ut));
5952 int k=(int)(
long)
w->Data();
5959 l->m[0].data=(
void *)
m;
5960 l->m[1].data=(
void *)iv;
5967 l->m[0].data=(
void *)
m;
5969 res->data = (
char *)
l;
5976 WerrorS(
"3rd argument must be a name of a matrix");
5979 ideal
i=(ideal)u->
Data();
5980 int rank=(int)
i->rank;
5989 (ideal)(
v->Data()),(poly)(
w->Data()));
5996 WerrorS(
"3rd argument must be a name of a matrix");
6021 ideal I=(ideal)u->
Data();
6042 int n=(int)(
long)
w->Data();
6043 char *where=(
char *)u->
Data();
6044 char *what=(
char *)
v->Data();
6046 if ((1>n)||(n>(int)strlen(where)))
6048 Werror(
"start position %d out of range",n);
6051 found = strchr(where+n-1,*what);
6052 if (*(what+1)!=
'\0')
6054 while((
found !=
NULL) && (strncmp(
found+1,what+1,strlen(what+1))!=0))
6061 res->data=(
char *)((
found-where)+1);
6067 if ((
int)(
long)
w->Data()==0)
6079 Werror(
"weight vector must have size %d, not %d",
6086 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
6087 PrintS(
"// performed for generic fibre, that is, over Q\n");
6095 switch((
int)(
long)
v->Data())
6098 res->data=(
void *)iv;
6112 int i=
pVar((poly)
v->Data());
6124 WerrorS(
"variable must have weight 1");
6130 int i=
pVar((poly)
v->Data());
6142 WerrorS(
"variable must have weight 1");
6147 intvec* im=
new intvec((
int)(
long)
v->Data(),(
int)(
long)
w->Data(), 0);
6153 (*im)[
i] = (*arg)[
i];
6156 res->data = (
char *)im;
6161 ideal I1=(ideal)u->
Data();
6162 ideal I2=(ideal)
v->Data();
6163 ideal I3=(ideal)
w->Data();
6174 ideal I=(ideal)u->
Data();
6176 res->data=(
char *)
idSect(I,(ideal)
v->Data(),alg);
6183 res->data = (
char *)
ppJetW((poly)u->
Data(),(int)(
long)
v->Data(),iw);
6191 WerrorS(
"2nd argument must be a unit");
6207 WerrorS(
"2nd argument must be a diagonal matrix of units");
6254 Werror(
"`%s` is undefined",
v->Fullname());
6270 const int mk = (
const int)(
long)u->
Data();
6271 bool noIdeal =
true;
bool noK =
true;
bool noAlgorithm =
true;
6272 bool noCacheMinors =
true;
bool noCacheMonomials =
true;
6273 ideal IasSB;
int k;
char* algorithm;
int cacheMinors;
int cacheMonomials;
6288 noAlgorithm =
false;
6293 noCacheMinors =
false;
6299 noCacheMonomials =
false;
6312 noAlgorithm =
false;
6317 noCacheMinors =
false;
6322 noCacheMonomials =
false;
6329 algorithm = (
char*)u->
next->
Data();
6330 noAlgorithm =
false;
6334 noCacheMinors =
false;
6339 noCacheMonomials =
false;
6347 if (strcmp(algorithm,
"bareiss") == 0)
6348 algorithm = (
char*)
"Bareiss";
6349 if (strcmp(algorithm,
"laplace") == 0)
6350 algorithm = (
char*)
"Laplace";
6351 if (strcmp(algorithm,
"cache") == 0)
6352 algorithm = (
char*)
"Cache";
6361 if ((!noK) && (
k == 0))
6363 WerrorS(
"Provided number of minors to be computed is zero.");
6366 if ((!noAlgorithm) && (strcmp(algorithm,
"Bareiss") != 0)
6367 && (strcmp(algorithm,
"Laplace") != 0)
6368 && (strcmp(algorithm,
"Cache") != 0))
6370 WerrorS(
"Expected as algorithm one of 'B/bareiss', 'L/laplace', or 'C/cache'.");
6373 if ((!noAlgorithm) && (strcmp(algorithm,
"Bareiss") == 0)
6376 Werror(
"Bareiss algorithm not defined over coefficient rings %s",
6377 "with zero divisors.");
6380 if ((mk < 1) || (mk >
m->rows()) || (mk >
m->cols()))
6389 if ((!noAlgorithm) && (strcmp(algorithm,
"Cache") == 0)
6390 && (noCacheMinors || noCacheMonomials))
6393 cacheMonomials = 100000;
6399 (noIdeal ? 0 : IasSB),
false);
6400 else if (strcmp(algorithm,
"Cache") == 0)
6402 (noIdeal ? 0 : IasSB), 3, cacheMinors,
6403 cacheMonomials,
false);
6406 (noIdeal ? 0 : IasSB),
false);
6416 (
const char *)
w->Data());
6430 WerrorS(
"2nd/3rd arguments must have names");
6434 const char *ring_name=u->
Name();
6441 if ((preim_ring==
NULL)
6444 Werror(
"preimage ring `%s` is not the basering",mapping->preimage);
6460 Werror(
"`%s` is not defined in `%s`",
v->
name,ring_name);
6464 if (kernel_cmd) image=
idInit(1,1);
6481 Werror(
"`%s` is not defined in `%s`",
w->name,ring_name);
6488 WarnS(
"preimage in local qring may be wrong: use Ring::preimageLoc instead");
6497 int i=(int)(
long)u->
Data();
6498 int r=(int)(
long)
v->Data();
6499 int c=(int)(
long)
w->Data();
6500 if ((r<=0) || (c<=0))
return TRUE;
6516 res->data = (
char *)iv;
6526 Werror(
"no random function defined for coeff %d",
cf->type);
6532 number2 nn=(number2)
omAlloc(
sizeof(*nn));
6542 int &ringvar, poly &monomexpr)
6544 monomexpr=(poly)
w->Data();
6545 poly
p=(poly)
v->Data();
6549 Werror(
"`%s` substitutes a ringvar only by a term",
6554 if ((ringvar=
pVar(
p))==0)
6563 WerrorS(
"ringvar/par expected");
6587 if (nok)
return TRUE;
6588 poly
p=(poly)u->
Data();
6592 if ((monomexpr!=
NULL) && (
p!=
NULL) && (mm!=0) &&
6595 Warn(
"possible OVERFLOW in subst, max exponent is %ld, substituting deg %d by deg %d",
currRing->bitmask/2,
pTotaldegree(monomexpr), mm);
6607 WerrorS(
"Substituting parameters not implemented for Letterplace rings.");
6619 if (nok)
return TRUE;
6620 ideal
id=(ideal)u->
Data();
6624 if (monomexpr!=
NULL)
6631 if ((
p!=
NULL) && (mm!=0) &&
6632 ((
unsigned long)deg_monexp > (
currRing->bitmask / (
unsigned long)mm/2)))
6640 Warn(
"possible OVERFLOW in subst, max exponent is %ld",
currRing->bitmask/2);
6654 WerrorS(
"Substituting parameters not implemented for Letterplace rings.");
6684 int mi=(int)(
long)
v->Data();
6685 int ni=(int)(
long)
w->Data();
6688 Werror(
"converting ideal to matrix: dimensions must be positive(%dx%d)",mi,ni);
6699 memcpy(
m->m,I->m,
i*
sizeof(poly));
6700 memset(I->m,0,
i*
sizeof(poly));
6702 res->data = (
char *)
m;
6707 int mi=(int)(
long)
v->Data();
6708 int ni=(int)(
long)
w->Data();
6711 Werror(
"converting module to matrix: dimensions must be positive(%dx%d)",mi,ni);
6720 int mi=(int)(
long)
v->Data();
6721 int ni=(int)(
long)
w->Data();
6724 Werror(
"converting matrix to matrix: dimensions must be positive(%dx%d)",mi,ni);
6741 res->data = (
char *)
m;
6764 ideal u_id=(ideal)u->
Data();
6765 ideal v_id=(ideal)
v->Data();
6768 if ((*w_u).compare((w_v))!=0)
6770 WarnS(
"incompatible weights");
6771 delete w_u; w_u=
NULL;
6779 WarnS(
"wrong weights");
6780 delete w_u; w_u=
NULL;
6786 res->data = (
char *)
idModulo(u_id,v_id ,hom,&w_u, &(
h->data.umatrix));
6815 ideal u_id=(ideal)u->
Data();
6817 ideal v_id=(ideal)
v->Data();
6820 if ((*w_u).compare((w_v))!=0)
6822 WarnS(
"incompatible weights");
6823 delete w_u; w_u=
NULL;
6831 WarnS(
"wrong weights");
6832 delete w_u; w_u=
NULL;
6848 int mi=(int)(
long)
v->Data();
6849 int ni=(int)(
long)
w->Data();
6852 Werror(
"converting to smatrix: dimensions must be positive(%dx%d)",mi,ni);
6864 #ifdef HAVE_SHIFTBBA
6869 Werror(
"At least %d ncgen variables are needed for this computation.", ul);
6887 #ifdef HAVE_SHIFTBBA
6892 Werror(
"At least %d ncgen variables are needed for this computation.",
IDELEMS((ideal)u->
Data()));
6900 &(hw->data.uideal));
6909 #ifdef HAVE_SHIFTBBA
6914 Werror(
"At least %d ncgen variables are needed for this computation.",
IDELEMS((ideal)u->
Data()));
6931 Werror(
"`%s` must be 0-dimensional",
v->Name());
6943 Werror(
"`%s` must be 0-dimensional",
v->Name());
6954 0,(int)(
long)
w->Data());
6961 0,(int)(
long)
w->Data());
6967 int maxl=(int)
v->Data();
6968 ideal u_id=(ideal)u->
Data();
6986 WarnS(
"wrong weights");
7015 yes = (strcmp((
char *)
res->data, (
char *)
w->Data()) == 0);
7017 res->data = (
void *)(
long)yes;
7031 ideal u_id=(ideal)(u->
Data());
7036 WarnS(
"wrong weights");
7077 lineno=(int)(
long)
v->
next->Data();
7141 WarnS(
"<module>,<module>,<int>[,<intvec>] expected!");
7148 ideal P=(ideal)w1.
Data();
7149 ideal
Q=(ideal)w2.
Data();
7151 int n=(int)(
long)v3->
Data();
7158 while( (
i > 0) && ((*w0) > 0) )
7164 WarnS(
"not all weights are positive!");
7183 L->
m[1].
data=(
void *)
R->m[0];
7267 res->data=(
char *)
id;
7272 ring r=(ring)u->
Data();
7280 WerrorS(
"fetch(<ring>,<name>[,<intvec>[,<intvec>])");
7285 if (perm_par_l!=
NULL)
7294 int par_perm_size=0;
7303 par_perm_size=
rPar(r);
7311 par_perm_size=
rPar(r);
7313 if (par_perm_size!=0)
7314 par_perm=(
int *)
omAlloc0(par_perm_size*
sizeof(
int));
7316 if (perm_par_l==
NULL)
7318 if (par_perm_size!=0)
7323 if (par_perm_size==0)
WarnS(
"source ring has no parameters");
7328 if (i<perm_par_v->
length()) par_perm[
i]=(*perm_par_v)[
i];
7332 Warn(
"invalid entry for par %d: %d\n",
i,par_perm[
i]);
7340 if (i<perm_var_v->
length()) perm[
i+1]=(*perm_var_v)[
i];
7344 Warn(
"invalid entry for var %d: %d\n",
i,perm[
i]);
7353 Print(
"// var nr %d: %s -> var %s\n",
i,r->names[
i-1],
currRing->names[perm[
i]-1]);
7359 if (par_perm[
i-1]<0)
7360 Print(
"// par nr %d: %s -> par %s\n",
7362 else if (par_perm[
i-1]>0)
7363 Print(
"// par nr %d: %s -> var %s\n",
7373 perm,par_perm,par_perm_size,nMap)))
7391 Werror(
"no identity map from %s (%s -> %s)",u->
Fullname(),s1,s2);
7398 int l=
v->listLength();
7429 WerrorS(
"cannot convert to ideal or module");
7440 r[
i]=(ideal)
h->Data();
7452 r[
i]=(ideal)tmp.
Data();
7484 matrix iMat;
int invertible;
7490 int rr = aMat->
rows();
7491 int cc = aMat->
cols();
7494 Werror(
"given matrix (%d x %d) is not quadratic, hence not invertible", rr, cc);
7499 WerrorS(
"matrix must be constant");
7509 int rr = uMat->
rows();
7510 int cc = uMat->
cols();
7513 Werror(
"third matrix (%d x %d) is not quadratic, hence not invertible",
7522 WerrorS(
"matricesx must be constant");
7529 Werror(
"expected either one or three matrices");
7547 res->data=(
char*)ll;
7571 WerrorS(
"expected exactly three matrices and one vector as input");
7581 Werror(
"first matrix (%d x %d) is not quadratic",
7587 Werror(
"second matrix (%d x %d) is not quadratic",
7593 Werror(
"second matrix (%d x %d) and third matrix (%d x %d) do not fit",
7599 Werror(
"third matrix (%d x %d) and vector (%d x 1) do not fit",
7608 WerrorS(
"matrices must be constant");
7628 res->data=(
char*)ll;
7642 (*iv)[
i]=(int)(
long)
h->Data();
7661 res->data=(
char *)iv;
7678 WerrorS(
"2nd argument must be a unit");
7691 WerrorS(
"2nd argument must be a diagonal matrix of units");
7696 (
int)(long)u3->
Data(),
7705 Werror(
"%s(`poly`,`poly`,`int`,`intvec`) exppected",
7723 else if (
w->next==
NULL)
7750 && ((strcmp(u->
Name(),
"real")==0) || (strcmp(u->
Name(),
"complex")==0)))
7771 Werror(
"`int` expected while building `%s(`",u->
name);
7776 sprintf(nn,
"%s(%d",u->
name,(
int)(
long)
v->Data());
7780 while (*
s!=
'\0')
s++;
7784 Werror(
"`int` expected while building `%s`",nn);
7788 sprintf(
s,
",%d",(
int)(
long)
v->Data());
7790 while (*
s!=
'\0')
s++;
7811 ideal I=(ideal)u->
Data();
7824 Werror(
"%s(`ideal`,`ideal`,`matrix`,`string`)\n"
7825 "or (`module`,`module`,`matrix`,`string`) expected",
7857 syz=&(hw->
data.uideal);
7864 syz=&(hw->
data.uideal);
7865 h11=(ideal)u4->
Data();
7870 h11=(ideal)u4->
Data();
7874 Werror(
"%s(`ideal/module`,`matrix`[,`module`][,`string`][,`ideal/module`]) expected",
Tok2Cmdname(
iiOp));
7886 syz=&(hw->
data.uideal);
7888 h11=(ideal)u5->
Data();
7892 Werror(
"%s(`ideal/module`,`matrix`[,`module`][,`string`][,`ideal/module`]) expected",
Tok2Cmdname(
iiOp));
7897 #ifdef HAVE_SHIFTBBA
7902 Werror(
"At least %d ncgen variables are needed for this computation.",
IDELEMS((ideal)u->
Data()));
7923 if (
v!=
NULL) sl =
v->listLength();
7927 int add_row_shift = 0;
7929 if (weights!=
NULL) add_row_shift=weights->
min_in();
7956 Werror(
"`%s` is undefined",
h->Fullname());
7968 res->data=(
char *)L;
7983 u_id=(ideal)u->
Data();
7984 v_id=(ideal)
v->Data();
8011 if ((*w_u).compare((w_v))!=0)
8013 WarnS(
"incompatible weights");
8014 delete w_u; w_u=
NULL;
8022 WarnS(
"wrong weights");
8023 delete w_u; w_u=
NULL;
8029 res->data = (
char *)
idModulo(u_id,v_id ,hom,&w_u, &(
h->data.umatrix),alg);
8084 WerrorS(
"2nd argument must be a diagonal matrix of units");
8091 (int)(
long)u4->
Data()
8101 else u1p=(poly)u1->
Data();
8104 else u2p=(poly)u2->
Data();
8108 WerrorS(
"2nd argument must be a unit");
8137 WerrorS(
"2nd argument must be a diagonal matrix of units");
8144 (int)(
long)u4->
Data(),
8156 WerrorS(
"2nd argument must be a unit");
8167 Werror(
"%s(`ideal`,`ideal`,`matrix`,`int`,`intvec`) exppected",
8179 for(
i=0;
i<nCount;
i++)
8209 for (
i=0;
i<nCount;
i++)
8221 for (
i = 0;
i < bb_list->
count;
i++)
8231 for (
i=0;
i<nCount;
i++)
8255 for (
i = 0;
i < bb_list->
count;
i++)
8271 res->data=(
void *)L;
8282 int n =
v->listLength();
8285 res->data =
v->String();
8289 char** slist = (
char**)
omAlloc(n*
sizeof(
char*));
8294 slist[
i] =
v->String();
8296 j+=strlen(slist[
i]);
8298 char*
s = (
char*)
omAlloc((
j+1)*
sizeof(char));
8302 strcat(
s, slist[
i]);
8322 #if defined(__alpha) && !defined(linux)
8325 void usleep(
unsigned long usec);
8354 leftv u =
v;
int factorsGiven = 0;
8357 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
8360 else h = (poly)u->
Data();
8364 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
8367 else d = (int)(
long)u->
Data();
8373 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
8378 f0 = (poly)u->
Data();
8388 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
8393 xIndex = (int)(
long)u->
Data();
8394 yIndex = (int)(
long)u->
next->
Data();
8400 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
8407 WerrorS(
"expected non-constant polynomial argument(s)");
8411 if ((xIndex < 1) || (n < xIndex))
8413 Werror(
"index for variable x (%d) out of range [1..%d]", xIndex, n);
8416 if ((yIndex < 1) || (n < yIndex))
8418 Werror(
"index for variable y (%d) out of range [1..%d]", yIndex, n);
8421 if (xIndex == yIndex)
8423 WerrorS(
"expected distinct indices for variables x and y");
8428 if (factorsGiven == 0)
8442 WerrorS(
"expected h(0,y) to have exactly two distinct monic factors");
8457 res->data = (
char*)L;
8468 #if defined(HAVE_USLEEP)
8469 if (((
long)
res->data) == 0L)
8478 #elif defined(HAVE_SLEEP)
8479 if (((
int)
res->data) == 0)
8484 si_sleep((is - 1)/1000000 + 1);
8503 if ((rest!=
NULL) && (!
b))
8510 memcpy(
res,&tmp_res,
sizeof(tmp_res));
8525 WerrorS(
"expected (matrix, number, number, number) as arguments");
8530 (number)(
v->Data()),
8531 (number)(
w->Data()),
8532 (number)(
x->Data()));
8542 ideal i1=(ideal)(u->
Data());
8548 WerrorS(
"expected `std(`ideal/module`,`poly/vector`,`intvec`,`intvec`)");
8563 i0->m[0]=(poly)
v->Data();
8568 i0=(ideal)
v->Data();
8572 WerrorS(
"expected `std(`ideal/module`,`poly/vector`,`intvec`,`intvec`)");
8579 memset(i0->m,0,
sizeof(poly)*
IDELEMS(i0));
8589 WarnS(
"wrong weights");
8623 WerrorS(
"expected `cring` [ `id` ... ]");
8629 char **n=(
char**)
omAlloc0(
N*
sizeof(
char*));
8630 for(
int i=0;
i<
N;
i++,names=names->
next)
8632 n[
i]=(
char *)names->
Name();
8644 r->start =(int)(
long)e->
Data();
8649 int c=(int)(
long)u->
Data();
8653 PrintS(
"delete all variables\n");
8658 default:
WerrorS(
"not implemented");
8663 #define NULL_VAL NULL
8667 #include "iparith.inc"
8685 while (dA2[
i].cmd==op)
8687 if ((at==dA2[
i].arg1)
8688 && (bt==dA2[
i].arg2))
8699 WerrorS(
"no ring active (3)");
8705 if ((call_failed=dA2[
i].
p(
res,a,
b)))
8725 while (dA2[
i].cmd==op)
8743 WerrorS(
"no ring active (4)");
8752 || (call_failed=dA2[
i].
p(
res,an,bn)));
8791 Werror(
"`%s` is not defined",
s);
8798 Werror(
"%s(`%s`,`%s`) failed"
8803 Werror(
"`%s` %s `%s` failed"
8808 while (dA2[
i].cmd==op)
8810 if(((at==dA2[
i].arg1)||(bt==dA2[
i].arg2))
8815 Werror(
"expected %s(`%s`,`%s`)"
8818 Werror(
"expected `%s` %s `%s`"
8857 memcpy(&d->arg1,a,
sizeof(
sleftv));
8859 memcpy(&d->arg2,
b,
sizeof(
sleftv));
8863 res->data=(
char *)d;
8876 if (!bb->blackbox_Op2(op,
res,a,
b))
return FALSE;
8882 else if ((bt>
MAX_TOK)&&(op!=
'('))
8887 if(!bb->blackbox_Op2(op,
res,a,
b))
return FALSE;
8915 while (dA1[
i].cmd==op)
8927 WerrorS(
"no ring active (5)");
8934 if ((call_failed=dA1[
i].
p(
res,a)))
8954 while (dA1[
i].cmd==op)
8970 WerrorS(
"no ring active (6)");
8978 || (call_failed=dA1[
i].
p(
res,an)));
9019 while (dA1[
i].cmd==op)
9023 Werror(
"expected %s(`%s`)"
9046 memcpy(&d->arg1,a,
sizeof(
sleftv));
9050 res->data=(
char *)d;
9063 res->data=bb->blackbox_Init(bb);
9064 if(!bb->blackbox_Assign(
res,a))
return FALSE;
9074 if(!bb->blackbox_Op1(op,
res,a))
return FALSE;
9095 const struct sValCmd3* dA3,
int at,
int bt,
int ct,
9106 while (dA3[
i].cmd==op)
9108 if ((at==dA3[
i].arg1)
9109 && (bt==dA3[
i].arg2)
9110 && (ct==dA3[
i].arg3))
9118 Print(
"call %s(%s,%s,%s)\n",
9120 if ((call_failed=dA3[
i].
p(
res,a,
b,c)))
9141 while (dA3[
i].cmd==op)
9157 Print(
"call %s(%s,%s,%s)\n",
9163 || (call_failed=dA3[
i].
p(
res,an,bn,cn)));
9212 Werror(
"`%s` is not defined",
s);
9218 Werror(
"%s(`%s`,`%s`,`%s`) failed"
9222 while (dA3[
i].cmd==op)
9224 if(((at==dA3[
i].arg1)
9226 ||(ct==dA3[
i].arg3))
9229 Werror(
"expected %s(`%s`,`%s`,`%s`)"
9258 memcpy(&d->arg1,a,
sizeof(
sleftv));
9260 memcpy(&d->arg2,
b,
sizeof(
sleftv));
9262 memcpy(&d->arg3,c,
sizeof(
sleftv));
9266 res->data=(
char *)d;
9278 if(!bb->blackbox_Op3(op,
res,a,
b,c))
return FALSE;
9328 if(
v==
NULL)
return failed;
9350 res->data=(
char *)d;
9355 memcpy(&d->arg1,a,
sizeof(
sleftv));
9390 if(!bb->blackbox_OpM(op,
res,a))
return FALSE;
9405 if ((args==
dArithM[
i].number_of_args)
9407 || ((
dArithM[
i].number_of_args==-2)&&(args>0)))
9505 Warn(
"outdated identifier `%s` used - please change your code",
9556 if (op==dArithTab[
p].cmd)
return dArithTab[
p].start;
9557 if (op<dArithTab[
p].cmd) e=
p-1;
9577 if (tok==
ANY_TYPE)
return "any_type";
9578 if (tok==
COMMAND)
return "command";
9579 if (tok==
NONE)
return "nothing";
9591 if (tok==
IDHDL)
return "identifier";
9627 cmdnames *pCmdL = (cmdnames*)a;
9628 cmdnames *pCmdR = (cmdnames*)
b;
9633 if(pCmdL->name==
NULL)
return 1;
9634 if(pCmdR->name==
NULL)
return -1;
9637 if(strcmp(pCmdL->name,
"$INVALID$")==0)
return -1;
9638 if(strcmp(pCmdR->name,
"$INVALID$")==0)
return 1;
9641 if (pCmdL->tokval==-1)
9643 if (pCmdR->tokval==-1)
9644 return strcmp(pCmdL->name, pCmdR->name);
9649 if(pCmdR->tokval==-1)
return -1;
9651 return strcmp(pCmdL->name, pCmdR->name);
9759 if(nPos<0)
return NULL;
9768 if(szName==
NULL)
return -1;
9773 Print(
"'%s' not found (%d)\n", szName, nIndex);
9816 if(szName==
NULL)
return -1;
9820 Print(
"'%s' already exists at %d\n", szName, nIndex);
9857 WerrorS(
"not implemented for non-commutative rings");
9879 WerrorS(
"not implemented for rings with rings as coeffients");
9886 WerrorS(
"domain required as coeffients");
9892 WarnS(
"considering the image in Q[...]");
9904 WerrorS(
"not implemented for rings with rings as coeffients (except ZZ)");
9910 int return_type=c->
m[0].
Typ();
9926 for (
unsigned i=0;
i<=(unsigned)c->
nr;
i++)
9931 if (bo) {
Werror(
"chinrem failed for list entry %d",
i+1);
break;}
9941 WerrorS(
"poly/ideal/module/matrix/list expected");
9960 WerrorS(
"wromg number of primes");
9967 if (
p->length()!=rl)
9969 WerrorS(
"wromg number of primes");
9974 ideal *
x=(ideal *)
omAlloc(rl*
sizeof(ideal));
9980 for(
i=rl-1;
i>=0;
i--)
9982 if (c->
m[
i].
Typ()!=return_type)
10007 xx=(number *)
omAlloc(rl*
sizeof(number));
10008 for(
i=rl-1;
i>=0;
i--)
10020 Werror(
"bigint expected at pos %d",
i+1);
10027 number *q=(number *)
omAlloc(rl*
sizeof(number));
10030 for(
i=rl-1;
i>=0;
i--)
10037 for(
i=rl-1;
i>=0;
i--)
10049 Werror(
"bigint expected at pos %d",
i+1);
10065 res->data=(
char *)n;
10088 for(
i=rl-1;
i>=0;
i--)
10093 res->rtyp=return_type;
10103 for (
unsigned i=0;
i<=(unsigned)c->
nr;
i++)
10108 if (bo) {
Werror(
"farey failed for list entry %d",
i+1);
break;}
10121 if (at < bt)
return -1;
10122 if (at > bt)
return 1;
10123 int tab_pos=
iiTabIndex(dArithTab2,JJTAB2LEN,
'<');
10131 unsigned long ad=(
unsigned long)a->
Data();
10132 unsigned long bd=(
unsigned long)
b->Data();
10133 if (ad<bd)
return -1;
10134 else if (ad==bd)
return 0;
10145 unsigned long ad=(
unsigned long)a->
Data();
10146 unsigned long bd=(
unsigned long)
b->Data();
10147 if (ad<bd)
return -1;
10148 else if (ad==bd)
return 0;
10151 else if (tmp.
data==
NULL)
return 1;
10179 for(
j=
i;
j<len;
j++)
l->m[
j]=
l->m[
j+1];
10180 memset(&(
l->m[len]),0,
sizeof(
sleftv));
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.
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.
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 * atGet(idhdl root, const char *name, int t, void *defaultReturnValue)
void atSet(idhdl root, char *name, void *data, int typ)
static int si_max(const int a, const int b)
static int si_min(const int a, const int b)
bigintmat * bimSub(bigintmat *a, bigintmat *b)
bigintmat * bimMult(bigintmat *a, bigintmat *b)
intvec * bim2iv(bigintmat *b)
bigintmat * bimAdd(bigintmat *a, bigintmat *b)
Matrix-Add/-Sub/-Mult so oder mit operator+/-/* ? @Note: NULL as a result means an error (non-compati...
struct blackbox_list * getBlackboxTypes()
return array of all define types.
blackbox * getBlackboxStuff(const int t)
return the structure to the type given by t
const char * getBlackboxName(const int t)
return the name to the type given by t (r/o)
int blackboxIsCmd(const char *n, int &tok)
used by scanner: returns ROOT_DECL for known types (and the type number in tok)
void printBlackboxTypes()
list all defined type (for debugging)
struct for containing list of blackbox names and the number of them.
const CanonicalForm CFMap CFMap & N
CanonicalForm map(const CanonicalForm &primElem, const Variable &alpha, const CanonicalForm &F, const Variable &beta)
map from to such that is mapped onto
int ipower(int b, int m)
int ipower ( int b, int m )
poly singclap_pmod(poly f, poly g, const ring r)
ideal singclap_factorize(poly f, intvec **v, int with_exps, const ring r)
poly singclap_pdivide(poly f, poly g, const ring r)
BOOLEAN singclap_extgcd(poly f, poly g, poly &res, poly &pa, poly &pb, const ring r)
number singclap_det_bi(bigintmat *m, const coeffs cf)
int singclap_det_i(intvec *m, const ring)
ideal singclap_sqrfree(poly f, intvec **v, int with_exps, const ring r)
int compare(const bigintmat *op) const
intvec * delete_pos(int p)
void show(int mat=0, int spaces=0) const
int compare(const intvec *o) const
Class used for (list of) interpreter objects.
void CleanUp(ring r=currRing)
void Clean(ring r=currRing)
INLINE_THIS void Init(int l=0)
Coefficient rings, fields and other domains suitable for Singular polynomials.
static FORCE_INLINE int n_ParDeg(number n, const coeffs 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 FORCE_INLINE number n_Param(const int iParameter, const coeffs r)
return the (iParameter^th) parameter as a NEW number NOTE: parameter numbering: 1....
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 ....
static FORCE_INLINE char * nCoeffString(const coeffs cf)
TODO: make it a virtual method of coeffs, together with: Decompose & Compose, rParameter & rPar.
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 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 FORCE_INLINE BOOLEAN nCoeff_is_Extension(const coeffs r)
static FORCE_INLINE number n_Random(siRandProc p, number p1, number p2, const coeffs cf)
static FORCE_INLINE char * nCoeffName(const coeffs cf)
@ n_algExt
used for all algebraic extensions, i.e., the top-most extension in an extension tower is algebraic
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 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),...
static FORCE_INLINE nMapFunc n_SetMap(const coeffs src, const coeffs dst)
set the mapping function pointers for translating numbers from src to dst
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)
static FORCE_INLINE void n_Power(number a, int b, number *res, const coeffs r)
fill res with the power a^b
static FORCE_INLINE number n_Farey(number a, number b, 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...
static FORCE_INLINE number n_RePart(number i, const coeffs cf)
static FORCE_INLINE BOOLEAN n_IsZero(number n, const coeffs r)
TRUE iff 'n' represents the zero element.
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 FORCE_INLINE number n_Sub(number a, number b, const coeffs r)
return the difference of 'a' and 'b', i.e., a-b
static FORCE_INLINE number n_ChineseRemainderSym(number *a, number *b, int rl, BOOLEAN sym, CFArray &inv_cache, const coeffs r)
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete 'p'
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 FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
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,...
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 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 FORCE_INLINE number n_SubringGcd(number a, number b, const coeffs r)
static FORCE_INLINE number n_ImPart(number i, const coeffs cf)
number(* nMapFunc)(number a, const coeffs src, const coeffs dst)
maps "a", which lives in src, into dst
static FORCE_INLINE void n_Normalize(number &n, const coeffs r)
inplace-normalization of n; produces some canonical representation of n;
static FORCE_INLINE BOOLEAN nCoeff_is_transExt(const coeffs r)
TRUE iff r represents a transcendental extension field.
BOOLEAN pa(leftv res, leftv args)
BOOLEAN pb(leftv res, leftv args)
const CanonicalForm int s
const Variable & v
< [in] a sqrfree bivariate poly
VAR void(* WerrorS_callback)(const char *s)
void WerrorS(const char *s)
FILE * feFopen(const char *path, const char *mode, char *where, short useWerror, short path_only)
static void * feOptValue(feOptIndex opt)
VAR char my_yylinebuf[80]
void monitor(void *F, int mode)
void newBuffer(char *s, feBufferTypes t, procinfo *pi, int lineno)
int iiTestConvert(int inputType, int outputType)
const char * iiTwoOps(int t)
VAR BOOLEAN yyInRingConstruction
int scMult0Int(ideal S, ideal Q, const ring tailRing)
ideal scKBase(int deg, ideal s, ideal Q, intvec *mv)
int scDimIntRing(ideal vid, ideal Q)
scDimInt for ring-coefficients
intvec * scIndIntvec(ideal S, ideal Q)
int lp_kDim(const ideal _G)
int lp_gkDim(const ideal _G)
int scMultInt(ideal S, ideal Q)
void scDegree(ideal S, intvec *modulweight, ideal Q)
void hLookSeries(ideal S, intvec *modulweight, ideal Q, intvec *wdegree, ring tailRing)
intvec * hSecondSeries(intvec *hseries1)
intvec * hFirstSeries(ideal S, intvec *modulweight, ideal Q, intvec *wdegree, ring tailRing)
GbVariant syGetAlgorithm(char *n, const ring r, const ideal)
matrix idCoeffOfKBase(ideal arg, ideal kbase, poly how)
void idLiftW(ideal P, ideal Q, int n, matrix &T, ideal &R, int *w)
ideal idSyzygies(ideal h1, tHomog h, intvec **w, BOOLEAN setSyzComp, BOOLEAN setRegularity, int *deg, GbVariant alg)
matrix idDiff(matrix i, int k)
BOOLEAN idTestHomModule(ideal m, ideal Q, intvec *w)
ideal idLiftStd(ideal h1, matrix *T, tHomog hi, ideal *S, GbVariant alg, ideal h11)
ideal idQuot(ideal h1, ideal h2, BOOLEAN h1IsStb, BOOLEAN resultIsIdeal)
ideal idSeries(int n, ideal M, matrix U, intvec *w)
matrix idDiffOp(ideal I, ideal J, BOOLEAN multiply)
ideal idElimination(ideal h1, poly delVar, intvec *hilb, GbVariant alg)
ideal idMinBase(ideal h1)
ideal idSect(ideal h1, ideal h2, GbVariant alg)
ideal idMultSect(resolvente arg, int length, GbVariant alg)
ideal idLift(ideal mod, ideal submod, ideal *rest, BOOLEAN goodShape, BOOLEAN isSB, BOOLEAN divide, matrix *unit, GbVariant alg)
ideal idModulo(ideal h2, ideal h1, tHomog hom, intvec **w, matrix *T, GbVariant alg)
ideal id_Farey(ideal x, number N, const ring r)
ideal idMinEmbedding(ideal arg, BOOLEAN inPlace, intvec **w)
#define idDelete(H)
delete an ideal
#define idSimpleAdd(A, B)
ideal id_Copy(ideal h1, const ring r)
copy an ideal
static BOOLEAN idIsZeroDim(ideal i)
static BOOLEAN idHomModule(ideal m, ideal Q, intvec **w)
static intvec * idSort(ideal id, BOOLEAN nolex=TRUE)
static BOOLEAN idHomIdeal(ideal id, ideal Q=NULL)
static ideal idMult(ideal h1, ideal h2)
hh := h1 * h2
ideal idAdd(ideal h1, ideal h2)
h1 + h2
#define idMaxIdeal(D)
initialise the maximal ideal (at 0)
ideal interpolation(const std::vector< ideal > &L, intvec *v)
static BOOLEAN length(leftv result, leftv arg)
intvec * ivSub(intvec *a, intvec *b)
intvec * ivTranp(intvec *o)
intvec * ivMult(intvec *a, intvec *b)
intvec * ivAdd(intvec *a, intvec *b)
#define IMATELEM(M, I, J)
intvec * ivCopy(const intvec *o)
static BOOLEAN jjUMINUS_MA(leftv res, leftv u)
static BOOLEAN jjOP_BIM_I(leftv res, leftv u, leftv v)
static BOOLEAN jjRANK1(leftv res, leftv v)
static BOOLEAN jjINDEX_V_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjIMPART(leftv res, leftv v)
static BOOLEAN jjIm2Iv(leftv res, leftv v)
static BOOLEAN jjQUOT(leftv res, leftv u, leftv v)
static BOOLEAN jjUMINUS_IV(leftv res, leftv u)
static BOOLEAN jjOPPOSITE(leftv res, leftv a)
static int _gentable_sort_cmds(const void *a, const void *b)
compares to entry of cmdsname-list
BOOLEAN jjWAITALL1(leftv res, leftv u)
static BOOLEAN jjRESTART(leftv, leftv u)
static BOOLEAN jjidHead(leftv res, leftv v)
static BOOLEAN jjHILBERT(leftv, leftv v)
static BOOLEAN jjTIMES_MA_P1(leftv res, leftv u, leftv v)
static BOOLEAN jjLEADMONOM(leftv res, leftv v)
static BOOLEAN jjOP_IV_I(leftv res, leftv u, leftv v)
static BOOLEAN jjstrlen(leftv res, leftv v)
static BOOLEAN jjBRACK_Bim(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjEXTGCD_P(leftv res, leftv u, leftv v)
static BOOLEAN jjDET_BI(leftv res, leftv v)
BOOLEAN jjWAIT1ST1(leftv res, leftv u)
BOOLEAN jjLOAD(const char *s, BOOLEAN autoexport)
load lib/module given in v
static BOOLEAN jjMATRIX_Mo(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjP2I(leftv res, leftv v)
static BOOLEAN jjIS_RINGVAR_P(leftv res, leftv v)
static BOOLEAN jjDOTDOT(leftv res, leftv u, leftv v)
static BOOLEAN jjFWALK3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjREPART(leftv res, leftv v)
static BOOLEAN jjTIMES_MA_BI2(leftv res, leftv u, leftv v)
static BOOLEAN jjMAP(leftv res, leftv u, leftv v)
static BOOLEAN jjGT_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjN2BI(leftv res, leftv v)
static BOOLEAN jjRESERVEDLIST0(leftv res, leftv)
static BOOLEAN jjCHAR(leftv res, leftv v)
static BOOLEAN jjOP_I_IM(leftv res, leftv u, leftv v)
static BOOLEAN jjBRACK_Ma_IV_I(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjROWS_IV(leftv res, leftv v)
static BOOLEAN jjLIFTSTD(leftv res, leftv u, leftv v)
static BOOLEAN jjNULL(leftv, leftv)
static BOOLEAN jjNEWSTRUCT2(leftv, leftv u, leftv v)
static BOOLEAN jjMONITOR2(leftv res, leftv u, leftv v)
static BOOLEAN jjDIM(leftv res, leftv v)
static BOOLEAN jjCOUNT_BIM(leftv res, leftv v)
static BOOLEAN jjBRACKET(leftv res, leftv a, leftv b)
static BOOLEAN jjCOLS_IV(leftv res, leftv v)
static BOOLEAN jjNAMES_I(leftv res, leftv v)
static BOOLEAN jjMULT(leftv res, leftv v)
static BOOLEAN jjPARDEG(leftv res, leftv v)
static BOOLEAN jjDENOMINATOR(leftv res, leftv v)
Return the denominator of the input number.
static BOOLEAN jjRANDOM(leftv res, leftv u, leftv v)
static BOOLEAN jjIDEAL_Ma(leftv res, leftv v)
static BOOLEAN jjDIVISION(leftv res, leftv u, leftv v)
static BOOLEAN jjOP_I_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjmpTransp(leftv res, leftv v)
static BOOLEAN jjOPTION_PL(leftv res, leftv v)
static BOOLEAN jjEQUAL_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjDET_S(leftv res, leftv v)
static BOOLEAN jjL2R(leftv res, leftv v)
static BOOLEAN jjREDUCE5(leftv res, leftv u)
static BOOLEAN jjrCharStr(leftv res, leftv v)
static BOOLEAN jjSUBST_Id_I(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjMINUS_B_P(leftv res, leftv u, leftv v)
static BOOLEAN jjHILBERT_IV(leftv res, leftv v)
int iiArithFindCmd(const char *szName)
static BOOLEAN jjIDEAL_R(leftv res, leftv v)
static BOOLEAN jjINDEPSET(leftv res, leftv v)
static BOOLEAN jjTYPEOF(leftv res, leftv v)
static BOOLEAN jjLU_SOLVE(leftv res, leftv v)
static BOOLEAN jjFACSTD(leftv res, leftv v)
static BOOLEAN jjMEMORY(leftv res, leftv v)
static BOOLEAN jjidTransp(leftv res, leftv v)
static BOOLEAN jjLIFT(leftv res, leftv u, leftv v)
static BOOLEAN jjUMINUS_BIM(leftv res, leftv u)
static BOOLEAN jjSUBST_Bu(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjTIMES_MA_N2(leftv res, leftv u, leftv v)
static BOOLEAN jjDIM_R(leftv res, leftv v)
BOOLEAN jjSORTLIST(leftv, leftv arg)
static BOOLEAN jjDUMP(leftv, leftv v)
static BOOLEAN jjpMaxComp(leftv res, leftv v)
static BOOLEAN jjREDUCE3_ID(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjELIMIN_HILB(leftv res, leftv u, leftv v, leftv w)
static int jjCOMPARE_ALL(const void *aa, const void *bb)
static BOOLEAN jjNAMEOF(leftv res, leftv v)
static BOOLEAN jjPlural_mat_poly(leftv res, leftv a, leftv b)
static BOOLEAN jjTIMES_SM(leftv res, leftv u, leftv v)
static BOOLEAN jjMOD_BI(leftv res, leftv u, leftv v)
BOOLEAN jjUNIQLIST(leftv, leftv arg)
static BOOLEAN jjTIMES_MA_I2(leftv res, leftv u, leftv v)
static BOOLEAN jjSTATUS2L(leftv res, leftv u, leftv v)
BOOLEAN(* proc3)(leftv, leftv, leftv, leftv)
static BOOLEAN jjGT_I(leftv res, leftv u, leftv v)
static BOOLEAN jjPRIME(leftv res, leftv v)
static BOOLEAN jjPFAC2(leftv res, leftv u, leftv v)
static BOOLEAN jjidVec2Ideal(leftv res, leftv v)
static BOOLEAN jjJACOB_P(leftv res, leftv v)
static BOOLEAN jjSQR_FREE(leftv res, leftv u)
static BOOLEAN jjSTD_HILB_W(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjEQUAL_I(leftv res, leftv u, leftv v)
static BOOLEAN jjTIMES_MA_P2(leftv res, leftv u, leftv v)
static BOOLEAN jjMODULO3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjSBA_1(leftv res, leftv v, leftv u)
static BOOLEAN jjCOEFFS3_P(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjCALL1MANY(leftv res, leftv u)
static BOOLEAN jjPLUS_MA(leftv res, leftv u, leftv v)
static BOOLEAN jjWRONG(leftv, leftv)
static BOOLEAN jjMINUS_V(leftv res, leftv u, leftv v)
static BOOLEAN jjINTERRED(leftv res, leftv v)
static BOOLEAN jjJACOB_M(leftv res, leftv a)
static BOOLEAN jjJET_ID_IV(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjTIMES_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjBAREISS(leftv res, leftv v)
static BOOLEAN jjREAD(leftv res, leftv v)
static BOOLEAN jjLT_N(leftv res, leftv u, leftv v)
static BOOLEAN jjMINUS_MA(leftv res, leftv u, leftv v)
static BOOLEAN jjFactModD_M(leftv res, leftv v)
static BOOLEAN jjMATRIX_Id(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjEXTGCD_I(leftv res, leftv u, leftv v)
static BOOLEAN jjIS_RINGVAR_S(leftv res, leftv v)
static BOOLEAN jjDelete_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjLE_N(leftv res, leftv u, leftv v)
static BOOLEAN jjSUBST_P(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjROWS_BIM(leftv res, leftv v)
static BOOLEAN jjCOMPARE_S(leftv res, leftv u, leftv v)
int iiInitArithmetic()
initialisation of arithmetic structured data
static BOOLEAN jjOR_I(leftv res, leftv u, leftv v)
static BOOLEAN jjTIMES_MA_I1(leftv res, leftv u, leftv v)
static BOOLEAN jjLIFTSTD_SYZ(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjBAREISS3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjRESERVED0(leftv, leftv)
static BOOLEAN jjTIMES_MA_N1(leftv res, leftv u, leftv v)
static BOOLEAN jjLIFT_4(leftv res, leftv U)
static BOOLEAN jjSLIM_GB(leftv res, leftv u)
static BOOLEAN jjMSTD(leftv res, leftv v)
static BOOLEAN jjBREAK1(leftv, leftv v)
const char * Tok2Cmdname(int tok)
static BOOLEAN jjJET_ID_M(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjMINUS_BIM(leftv res, leftv u, leftv v)
static BOOLEAN jjnInt(leftv res, leftv u)
static BOOLEAN jjSQR_FREE2(leftv res, leftv u, leftv dummy)
static BOOLEAN jjCOEFFS3_Id(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjREGULARITY(leftv res, leftv v)
static BOOLEAN jjMINUS_N(leftv res, leftv u, leftv v)
static BOOLEAN jjBREAK0(leftv, leftv)
static BOOLEAN jjTRACE_IV(leftv res, leftv v)
BOOLEAN iiExprArith2(leftv res, leftv a, int op, leftv b, BOOLEAN proccall)
static BOOLEAN jjMONOM(leftv res, leftv v)
static BOOLEAN jjSort_Id(leftv res, leftv v)
static BOOLEAN jjCOEF_M(leftv, leftv v)
static BOOLEAN jjidMinBase(leftv res, leftv v)
static BOOLEAN jjDEG_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjRING_2(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjMINUS_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjPREIMAGE_R(leftv res, leftv v)
static BOOLEAN jjHOMOG_P(leftv res, leftv u, leftv v)
static BOOLEAN jjBRACK_Im(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjMATRIX_Ma(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjidMaxIdeal(leftv res, leftv v)
char * iiArithGetCmd(int nPos)
static BOOLEAN jjMINOR_M(leftv res, leftv v)
static BOOLEAN jjCOUNT_BI(leftv res, leftv v)
static BOOLEAN jjPROC3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjCOLS_BIM(leftv res, leftv v)
static BOOLEAN jjREDUCE3_CP(leftv res, leftv u, leftv v, leftv w)
struct sValCmd3 * psValCmd3
static BOOLEAN jjBRACK_Ma_I_IV(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjLE_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjPLUS_B_P(leftv res, leftv u, leftv v)
static BOOLEAN jjPlural_mat_mat(leftv res, leftv a, leftv b)
static BOOLEAN jjIDEAL_Map(leftv res, leftv v)
static BOOLEAN jjPARSTR2(leftv res, leftv u, leftv v)
BOOLEAN(* proc2)(leftv, leftv, leftv)
static BOOLEAN jjKoszul(leftv res, leftv u, leftv v)
static BOOLEAN jjTIMES_N(leftv res, leftv u, leftv v)
static BOOLEAN jjINTERSECT_PL(leftv res, leftv v)
static BOOLEAN jjTIMES_MA(leftv res, leftv u, leftv v)
static BOOLEAN jjTIMES_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjPLUS_I(leftv res, leftv u, leftv v)
static BOOLEAN jjINTERSEC3S(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjRES3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjJET_P_IV(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjREDUCE_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjCOEF(leftv res, leftv u, 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 jjOP_REST(leftv res, leftv u, leftv v)
static BOOLEAN jjEXECUTE(leftv, leftv v)
static BOOLEAN jjDEG_M_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjSTATUS3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjLEADEXP(leftv res, leftv v)
static BOOLEAN jjDEG_M(leftv res, leftv u)
static BOOLEAN jjPLUS_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjDIFF_COEF(leftv res, leftv u, leftv v)
int iiArithRemoveCmd(char *szName)
static BOOLEAN jjGE_N(leftv res, leftv u, leftv v)
static BOOLEAN jjEQUAL_SM(leftv res, leftv u, leftv v)
static BOOLEAN jjINTERPOLATION(leftv res, leftv l, leftv v)
static BOOLEAN jjSIMPL_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjRING3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjREDUCE_P(leftv res, leftv u, leftv v)
static BOOLEAN jjDIV_Ma(leftv res, leftv u, leftv v)
static BOOLEAN jjFRES3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjMODULO(leftv res, leftv u, leftv v)
static BOOLEAN jjCOMPARE_IV(leftv res, leftv u, leftv v)
STATIC_VAR int WerrorS_dummy_cnt
static BOOLEAN jjREAD2(leftv res, leftv u, leftv v)
static BOOLEAN jjREDUCE3_P(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjPAR1(leftv res, leftv v)
static BOOLEAN jjnlInt(leftv res, leftv u)
cmdnames * sCmds
array of existing commands
static BOOLEAN jjFAREY_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjPLUS_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjGCD_N(leftv res, leftv u, leftv v)
static BOOLEAN jjELIMIN(leftv res, leftv u, leftv v)
static BOOLEAN jjPLUSPLUS(leftv, leftv u)
static Subexpr jjMakeSub(leftv e)
static BOOLEAN jjCHINREM_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjROWS(leftv res, leftv v)
static BOOLEAN jjJET_ID(leftv res, leftv u, leftv v)
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)
int IsCmd(const char *n, int &tok)
static BOOLEAN jjSBA(leftv res, leftv v)
static BOOLEAN jjOP_IM_I(leftv res, leftv u, leftv v)
static BOOLEAN jjJanetBasis(leftv res, leftv v)
static BOOLEAN jjKBASE(leftv res, leftv v)
static BOOLEAN jjTENSOR(leftv res, leftv u, leftv v)
static BOOLEAN jjmpTrace(leftv res, leftv v)
static BOOLEAN jjRING_PL(leftv res, leftv a)
static BOOLEAN jjREDUCE4(leftv res, leftv u)
static BOOLEAN jjFWALK(leftv res, leftv u, leftv v)
static BOOLEAN jjTEST(leftv, leftv v)
static BOOLEAN jjDIFF_ID_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjSYZ_2(leftv res, leftv u, leftv v)
static BOOLEAN jjPRUNE(leftv res, leftv v)
EXTERN_VAR int singclap_factorize_retry
static BOOLEAN jjDIVISION4(leftv res, leftv v)
unsigned nLastIdentifier
valid indentifieres are slot 1..nLastIdentifier
static BOOLEAN jjDEFINED(leftv res, leftv v)
static BOOLEAN jjLagSolve(leftv res, leftv v)
static BOOLEAN jjRING_1(leftv res, leftv u, leftv v)
static BOOLEAN jjVDIM(leftv res, leftv v)
static BOOLEAN jjOP_I_BIM(leftv res, leftv u, leftv v)
static BOOLEAN jjCOUNT_N(leftv res, leftv v)
static BOOLEAN jjHILBERT2(leftv res, leftv u, leftv v)
static BOOLEAN jjFIND2(leftv res, leftv u, leftv v)
static BOOLEAN jjCOEF_Id(leftv res, leftv u, leftv v)
static BOOLEAN jjP2N(leftv res, leftv v)
static BOOLEAN jjE(leftv res, leftv v)
static BOOLEAN jjPOWER_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjTIMES_MA_BI1(leftv res, leftv u, leftv v)
BOOLEAN iiExprArith1(leftv res, leftv a, int op)
static BOOLEAN jjSTD_HILB_WP(leftv res, leftv INPUT)
static BOOLEAN jjLISTRING(leftv res, leftv v)
static BOOLEAN jjCOEFFS2_KB(leftv res, leftv u, leftv v)
static BOOLEAN jjLIFTSTD_M(leftv res, leftv U)
static BOOLEAN jjELIMIN_ALG(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjVAR1(leftv res, leftv v)
static BOOLEAN jjLEADCOEF(leftv res, leftv v)
static BOOLEAN jjVARSTR2(leftv res, leftv u, leftv v)
static BOOLEAN jjPLUS_N(leftv res, leftv u, leftv v)
static BOOLEAN jjSUBST_Id_X(leftv res, leftv u, leftv v, leftv w, int input_type)
static BOOLEAN jjUMINUS_BI(leftv res, leftv u)
int iiArithAddCmd(const char *szName, short nAlias, short nTokval, short nToktype, short nPos=-1)
static BOOLEAN jjpLength(leftv res, leftv v)
static BOOLEAN jjJET_P_P(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjLT_I(leftv res, leftv u, leftv v)
static BOOLEAN jjIS_RINGVAR0(leftv res, leftv)
static BOOLEAN jjEXTGCD_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjBI2P(leftv res, leftv u)
static BOOLEAN jjTWOSTD(leftv res, leftv a)
static BOOLEAN jjGCD_I(leftv res, leftv u, leftv v)
static BOOLEAN jjCONTRACT(leftv res, leftv u, leftv v)
static BOOLEAN jjFAC_P(leftv res, leftv u)
static BOOLEAN jjREDUCE3_CID(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjFAREY_LI(leftv res, leftv u, leftv v)
static BOOLEAN jjTRANSP_BIM(leftv res, leftv v)
static BOOLEAN jjCOUNT_RES(leftv res, leftv v)
static BOOLEAN jjDelete_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjGE_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjrOrdStr(leftv res, leftv v)
static BOOLEAN jjKERNEL(leftv res, leftv u, leftv v)
static BOOLEAN jjINTERSECT3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjBRACK_Ma(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjMOD_N(leftv res, leftv u, leftv v)
static BOOLEAN jjLOAD_E(leftv, leftv v, leftv u)
static BOOLEAN jjNEWSTRUCT3(leftv, leftv u, leftv v, leftv w)
static BOOLEAN jjHOMOG_P_W(leftv res, leftv u, leftv v, leftv)
static BOOLEAN jjpHead(leftv res, leftv v)
static BOOLEAN jjSUBST_Id(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjEQUAL_R(leftv res, leftv u, leftv v)
static BOOLEAN jjCOUNT_L(leftv res, leftv v)
struct sValCmdM * psValCmdM
static BOOLEAN jjDET_I(leftv res, leftv v)
static BOOLEAN jjCOUNT_RG(leftv res, leftv v)
static BOOLEAN jjSMATRIX_Mo(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjINTERSECT(leftv res, leftv u, leftv v)
static BOOLEAN jjrVarStr(leftv res, leftv v)
static BOOLEAN jjOP_BI_BIM(leftv res, leftv u, leftv v)
static BOOLEAN jjDIFF_P(leftv res, leftv u, leftv v)
static BOOLEAN check_valid(const int p, const int op)
static BOOLEAN jjSTRING_PL(leftv res, leftv v)
static BOOLEAN jjMINUS_B(leftv res, leftv u, leftv v)
static BOOLEAN jjRSUM(leftv res, leftv u, leftv v)
static BOOLEAN jjINDEX_I(leftv res, leftv u, leftv v)
static BOOLEAN jjPOWER_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjMONITOR1(leftv res, leftv v)
static BOOLEAN jjKLAMMER_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjFETCH(leftv res, leftv u, leftv v)
static BOOLEAN jjCALL3ARG(leftv res, leftv u)
static BOOLEAN jjSTD_1(leftv res, leftv u, leftv v)
static BOOLEAN jjUMINUS_N(leftv res, leftv u)
static BOOLEAN jjNUMERATOR(leftv res, leftv v)
Return the numerator of the input number.
static BOOLEAN jjORD(leftv res, leftv v)
static BOOLEAN jjTIMES_P(leftv res, leftv u, leftv v)
static BOOLEAN jjUMINUS_I(leftv res, leftv u)
static BOOLEAN jjPREIMAGE(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjBRACK_Ma_IV_IV(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjPLUS_SM(leftv res, leftv u, leftv v)
BOOLEAN jjLOAD_TRY(const char *s)
static BOOLEAN jjLIFT3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjENVELOPE(leftv res, leftv a)
static BOOLEAN jjSetRing(leftv, leftv u)
static BOOLEAN jjMINUS_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjTIMES_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjFACSTD2(leftv res, leftv v, leftv w)
static BOOLEAN jjINTVEC_PL(leftv res, leftv v)
STATIC_VAR SArithBase sArithBase
Base entry for arithmetic.
static BOOLEAN jjEXPORTTO(leftv, leftv u, leftv v)
static BOOLEAN jjPlural_num_poly(leftv res, leftv a, leftv b)
static BOOLEAN jjDIV_P(leftv res, leftv u, leftv v)
static BOOLEAN jjKBASE2(leftv res, leftv u, leftv v)
static BOOLEAN jjPOWER_I(leftv res, leftv u, leftv v)
static BOOLEAN jjRES(leftv res, leftv u, leftv v)
static int iin_Int(number &n, coeffs cf)
static BOOLEAN jjPLUS_P_MA(leftv res, leftv u, leftv v)
static BOOLEAN jjMINRES_R(leftv res, leftv v)
static BOOLEAN jjCOLS(leftv res, leftv v)
static BOOLEAN jjPLUS_BIM(leftv res, leftv u, leftv v)
static BOOLEAN jjP2BI(leftv res, leftv v)
static void WerrorS_dummy(const char *)
static BOOLEAN jjGE_I(leftv res, leftv u, leftv v)
static BOOLEAN jjTRANSP_IV(leftv res, leftv v)
static BOOLEAN jjGT_N(leftv res, leftv u, leftv v)
static BOOLEAN jjUNIVARIATE(leftv res, leftv v)
static BOOLEAN jjMODULO4(leftv res, leftv u)
static BOOLEAN jjHOMOG_ID_W(leftv res, leftv u, leftv v, leftv)
static BOOLEAN jjWEDGE(leftv res, leftv u, leftv v)
EXTERN_VAR BOOLEAN expected_parms
static BOOLEAN jjCOMPARE_P(leftv res, leftv u, leftv v)
static BOOLEAN jjFIND3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjLU_INVERSE(leftv res, leftv v)
static BOOLEAN jjMODULO3S(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjBAREISS_BIM(leftv res, leftv v)
static BOOLEAN jjPLUS_MA_P(leftv res, leftv u, leftv v)
static BOOLEAN jjSIMPL_P(leftv res, leftv u, leftv v)
static BOOLEAN jjPFAC1(leftv res, leftv v)
static BOOLEAN jjQRDS(leftv res, leftv INPUT)
static BOOLEAN jjELIMIN_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjCONTENT(leftv res, leftv v)
static BOOLEAN jjDIFF_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjSTD(leftv res, leftv v)
static BOOLEAN jjTIMES_BIM(leftv res, leftv u, leftv v)
static BOOLEAN jjTIMES_I(leftv res, leftv u, leftv v)
static BOOLEAN jjDIV_N(leftv res, leftv u, leftv v)
static BOOLEAN jjINTMAT3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjCOUNT_IV(leftv res, leftv v)
static BOOLEAN jjFRES(leftv res, leftv u, leftv v)
unsigned nCmdAllocated
number of commands-slots allocated
static BOOLEAN jjDUMMY(leftv res, leftv u)
static BOOLEAN jjS2I(leftv res, leftv v)
static BOOLEAN jjKLAMMER(leftv res, leftv u, leftv v)
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 jjBI2N(leftv res, leftv u)
static BOOLEAN jjRIGHTSTD(leftv res, leftv v)
BOOLEAN iiExprArithM(leftv res, leftv a, int op)
static BOOLEAN jjCOMPARE_MA(leftv res, leftv u, leftv v)
BOOLEAN iiExprArith3(leftv res, int op, leftv a, leftv b, leftv c)
static BOOLEAN jjGETDUMP(leftv, leftv v)
static BOOLEAN jjidFreeModule(leftv res, leftv v)
static BOOLEAN jjFAREY_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjBRACKET_REC(leftv res, leftv a, leftv b, leftv c)
static BOOLEAN jjCOMPARE_IV_I(leftv res, leftv u, leftv v)
static BOOLEAN jjRANDOM_Im(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjRESERVEDNAME(leftv res, leftv v)
struct sValCmd1 * psValCmd1
static BOOLEAN jjDIVMOD_I(leftv res, leftv u, leftv v)
static BOOLEAN jjLE_I(leftv res, leftv u, leftv v)
static BOOLEAN jjTENSOR_Ma(leftv res, leftv u, leftv v)
static BOOLEAN jjCOEFFS3_KB(leftv res, leftv u, leftv v, leftv w)
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)
static BOOLEAN jjRMINUS(leftv res, leftv u, leftv v)
BOOLEAN jjPROC(leftv res, leftv u, leftv v)
static BOOLEAN jjPLUS_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjHILBERT3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjDET2(leftv res, leftv u, leftv v)
static BOOLEAN jjSTD_HILB(leftv res, leftv u, leftv v)
static BOOLEAN jjAND_I(leftv res, leftv u, leftv v)
static BOOLEAN jjINDEX_P_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjRPAR(leftv res, leftv v)
static BOOLEAN jjJanetBasis2(leftv res, leftv u, leftv v)
static BOOLEAN jjLOAD1(leftv, leftv v)
static BOOLEAN jjCOLON(leftv res, leftv u, leftv v)
static BOOLEAN jjRPLUS(leftv res, leftv u, leftv v)
static BOOLEAN jjCOLCOL(leftv res, leftv u, leftv v)
static BOOLEAN jjFAC_P2(leftv res, leftv u, leftv dummy)
static BOOLEAN jjHOMOG_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjrParStr(leftv res, leftv v)
struct sValCmd2 * psValCmd2
static BOOLEAN jjDEG(leftv res, leftv v)
static BOOLEAN jjFETCH_M(leftv res, leftv u)
static BOOLEAN jjINDEX_V(leftv res, leftv u, leftv v)
static BOOLEAN jjRINGLIST(leftv res, leftv v)
static BOOLEAN jjidElem(leftv res, leftv v)
static BOOLEAN jjDIM2(leftv res, leftv v, leftv w)
static BOOLEAN jjOP_BIM_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjGCD_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjBI2IM(leftv res, leftv u)
static BOOLEAN jjRANK2(leftv res, leftv u, leftv v)
static BOOLEAN jjDEGREE(leftv res, leftv v)
static BOOLEAN jjLIFTSTD_ALG(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjINDEPSET2(leftv res, leftv u, leftv v)
static BOOLEAN jjWAITALL2(leftv res, leftv u, leftv v)
static BOOLEAN jjOpenClose(leftv, leftv v)
static BOOLEAN jjBRACK_S(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjUMINUS_P(leftv res, leftv u)
static BOOLEAN jjMINUS_SM(leftv res, leftv u, leftv v)
static BOOLEAN jjHIGHCORNER_M(leftv res, leftv v)
static BOOLEAN jjNAMES(leftv res, leftv v)
static BOOLEAN jjINDEX_P(leftv res, leftv u, leftv v)
static BOOLEAN jjHIGHCORNER(leftv res, leftv v)
static BOOLEAN jjEQUAL_Ma(leftv res, leftv u, leftv v)
static BOOLEAN jjNAMES0(leftv res, leftv)
static BOOLEAN jjLOAD2(leftv, leftv, leftv v)
static BOOLEAN jjALIGN_M(leftv res, leftv u, leftv v)
static BOOLEAN jjWAIT1ST2(leftv res, leftv u, leftv v)
static BOOLEAN jjDIV_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjCOMPARE_BIM(leftv res, leftv u, leftv v)
static BOOLEAN jjEQUAL_N(leftv res, leftv u, leftv v)
static BOOLEAN jjDET2_S(leftv res, leftv u, leftv v)
static BOOLEAN jjCOEFFS_Id(leftv res, leftv u, leftv v)
STATIC_VAR si_char_2 Tok2Cmdname_buf
static BOOLEAN jjPROC1(leftv res, leftv u)
static BOOLEAN jjNOT(leftv res, leftv v)
static BOOLEAN jjPARSTR1(leftv res, leftv v)
static BOOLEAN jjSUBST_Id_N(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjJET4(leftv res, leftv u)
static BOOLEAN jjOPPOSE(leftv res, leftv a, leftv b)
static BOOLEAN jjMOD_P(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
static BOOLEAN jjPLUS_B(leftv res, leftv u, leftv v)
static BOOLEAN jjGCD_P(leftv res, leftv u, leftv v)
static BOOLEAN jjHOMOG1(leftv res, leftv v)
static BOOLEAN jjDET(leftv res, leftv v)
static void jjEQUAL_REST(leftv res, leftv u, leftv v)
static BOOLEAN jjCOUNT_M(leftv res, leftv v)
static BOOLEAN jjPLUS_V(leftv res, leftv u, leftv v)
static BOOLEAN jjKoszul_Id(leftv res, leftv u, leftv v)
static BOOLEAN jjKLAMMER_rest(leftv res, leftv u, leftv v)
static BOOLEAN jjCHINREM_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjPLUS_S(leftv res, leftv u, leftv v)
static BOOLEAN jjHOMOG1_W(leftv res, leftv v, leftv u)
static BOOLEAN jjSBA_2(leftv res, leftv v, leftv u, leftv t)
static BOOLEAN jjINDEX_IV(leftv res, leftv u, leftv v)
unsigned nCmdUsed
number of commands used
static BOOLEAN jjRING_LIST(leftv res, leftv v)
static BOOLEAN jjBRACK_SM(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjSUBST_Test(leftv v, leftv w, int &ringvar, poly &monomexpr)
static BOOLEAN jjMINUS_I(leftv res, leftv u, leftv v)
static BOOLEAN jjJET_P(leftv res, leftv u, leftv v)
static BOOLEAN jjVARSTR1(leftv res, leftv v)
static BOOLEAN jjSTATUS_M(leftv res, leftv v)
static BOOLEAN jjCALL1ARG(leftv res, leftv v)
static BOOLEAN jjLT_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjPOWER_P(leftv res, leftv u, leftv v)
BOOLEAN jjLIST_PL(leftv res, leftv v)
static BOOLEAN jjPLUSMINUS_Gen(leftv res, leftv u, leftv v)
static BOOLEAN jjCALL2ARG(leftv res, leftv u)
static BOOLEAN jjINDEX_PBu(leftv res, leftv u, leftv v)
static int iiTabIndex(const jjValCmdTab dArithTab, const int len, const int op)
static BOOLEAN jjSYZYGY(leftv res, leftv v)
static BOOLEAN jjPOWER_N(leftv res, leftv u, leftv v)
static BOOLEAN jjKLAMMER_PL(leftv res, leftv u)
static BOOLEAN jjSUBST_M(leftv res, leftv u)
static BOOLEAN jjEQUAL_P(leftv res, leftv u, leftv v)
static BOOLEAN jjLU_DECOMP(leftv res, leftv v)
static BOOLEAN jjPlural_num_mat(leftv res, leftv a, leftv b)
static BOOLEAN jjIDEAL_PL(leftv res, leftv v)
static BOOLEAN jjNVARS(leftv res, leftv v)
static BOOLEAN jjERROR(leftv, leftv u)
static BOOLEAN jjSTATUS2(leftv res, leftv u, leftv v)
static BOOLEAN jjALIGN_V(leftv res, leftv u, leftv v)
static BOOLEAN jjRINGLIST_C(leftv res, leftv v)
BOOLEAN iiConvert(int inputType, int outputType, int index, leftv input, leftv output, const struct sConvertTypes *dConvertTypes)
const struct sConvertTypes dConvertTypes[]
VAR omBin sip_command_bin
lists ipNameListLev(idhdl root, int lev)
idhdl enterid(const char *s, int lev, int t, idhdl *root, BOOLEAN init, BOOLEAN search)
lists ipNameList(idhdl root)
EXTERN_VAR omBin sleftv_bin
BOOLEAN load_builtin(const char *newlib, BOOLEAN autoexport, SModulFunc_t init)
int(* SModulFunc_t)(SModulFunctions *)
BOOLEAN iiLoadLIB(FILE *fp, const char *libnamebuf, const char *newlib, idhdl pl, BOOLEAN autoexport, BOOLEAN tellerror)
char * iiConvName(const char *libname)
BOOLEAN iiGetLibStatus(const char *lib)
BOOLEAN iiMake_proc(idhdl pn, package pack, leftv args)
BOOLEAN iiTryLoadLib(leftv v, const char *id)
BOOLEAN load_modules(const char *newlib, char *fullname, BOOLEAN autoexport)
INST_VAR sleftv iiRETURNEXPR
SModulFunc_t iiGetBuiltinModInit(const char *libname)
lists rDecompose(const ring r)
lists rDecompose_list_cf(const ring r)
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 (...
ring rInit(leftv pn, leftv rv, leftv ord)
leftv iiMap(map theMap, const char *what)
int iiRegularity(lists L)
BOOLEAN rDecompose_CF(leftv res, const coeffs C)
void iiMakeResolv(resolvente r, int length, int rlen, char *name, int typ0, intvec **weights)
int exprlist_length(leftv v)
BOOLEAN mpKoszul(leftv res, leftv c, leftv b, leftv id)
poly iiHighCorner(ideal I, int ak)
lists scIndIndset(ideal S, BOOLEAN all, ideal Q)
idhdl rFindHdl(ring r, idhdl n)
syStrategy syConvList(lists li)
ring rCompose(const lists L, const BOOLEAN check_comp, const long bitmask, const int isLetterplace)
const char * lastreserved
lists syConvRes(syStrategy syzstr, BOOLEAN toDel, int add_row_shift)
BOOLEAN iiExport(leftv v, int toLev)
const struct sValCmd1 dArith1[]
const struct sValCmd2 dArith2[]
BOOLEAN(* proc1)(leftv, leftv)
const struct sValCmdM dArithM[]
const struct sValCmd3 dArith3[]
ideal id_Farey_0(ideal x, number N, const ring r)
ideal id_ChineseRemainder_0(ideal *xx, number *q, int rl, const ring r)
ideal kMin_std(ideal F, ideal Q, tHomog h, intvec **w, ideal &M, intvec *hilb, int syzComp, int reduced)
ideal kInterRed(ideal F, ideal Q)
long kHomModDeg(poly p, ring r)
poly kNF(ideal F, ideal Q, poly p, int syzComp, int lazyReduce)
ideal kSba(ideal F, ideal Q, tHomog h, intvec **w, int sbaOrder, int arri, intvec *hilb, int syzComp, int newIdeal, intvec *vw)
ideal kStd(ideal F, ideal Q, tHomog h, intvec **w, intvec *hilb, int syzComp, int newIdeal, intvec *vw, s_poly_proc_t sp)
ideal rightgb(ideal F, ideal Q)
poly redNF(poly h, int &max_ind, int nonorm, kStrategy strat)
ideal_list kStdfac(ideal F, ideal Q, tHomog h, intvec **w, ideal D)
VAR char libnamebuf[1024]
static bool rIsSCA(const ring r)
ideal idOppose(ring Rop_src, ideal I, const ring Rop_dst)
opposes a module I from Rop to currRing(dst)
poly pOppose(ring Rop_src, poly p, const ring Rop_dst)
opposes a vector p from Rop to currRing (dst!)
BOOLEAN rIsLikeOpposite(ring rBase, ring rCandidate)
checks whether rings rBase and rCandidate could be opposite to each other returns TRUE if it is so
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,...
poly nc_p_Bracket_qq(poly p, const poly q, const ring r)
returns [p,q], destroys p
int luRank(const matrix aMat, const bool isRowEchelon, const ring R)
Computes the rank of a given (m x n)-matrix.
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...
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,...
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...
void luDecomp(const matrix aMat, matrix &pMat, matrix &lMat, matrix &uMat, const ring R)
LU-decomposition of a given (m x n)-matrix.
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...
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.
BOOLEAN jjANY2LIST(leftv res, leftv v, int cnt)
LINLINE void nlDelete(number *a, const coeffs r)
LINLINE number nlInit(long i, const coeffs r)
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)
void maFindPermLP(char const *const *const preim_names, int preim_n, char const *const *const preim_par, int preim_p, char const *const *const names, int n, char const *const *const par, int nop, int *perm, int *par_perm, n_coeffType ch, int lV)
poly pSubstPoly(poly p, int var, poly image)
ideal idSubstPoly(ideal id, int n, poly e)
BOOLEAN maApplyFetch(int what, map theMap, leftv res, leftv w, ring preimage_r, int *perm, int *par_perm, int P, nMapFunc nMap)
ideal idSubstPar(ideal id, int n, poly e)
poly pSubstPar(poly p, int par, poly image)
BOOLEAN mp_IsDiagUnit(matrix U, const ring R)
matrix mp_Wedge(matrix a, int ar, const ring R)
matrix mp_Transp(matrix a, const ring R)
ideal sm_Tensor(ideal A, ideal B, const ring r)
ideal sm_Add(ideal a, ideal b, const ring R)
matrix mp_CoeffProc(poly f, poly vars, const ring R)
matrix pMultMp(poly p, matrix a, const ring R)
void mp_Monomials(matrix c, int r, int var, matrix m, const ring R)
DetVariant mp_GetAlgorithmDet(matrix m, const ring r)
matrix mp_CoeffProcId(ideal I, poly vars, const ring R)
poly sm_Det(ideal a, const ring r, DetVariant d)
ideal sm_Sub(ideal a, ideal b, const ring R)
ideal sm_Mult(ideal a, ideal b, const ring R)
matrix mp_Sub(matrix a, matrix b, const ring R)
poly mp_Det(matrix a, const ring r, DetVariant d)
matrix mpNew(int r, int c)
create a r x c zero-matrix
int mp_Compare(matrix a, matrix b, const ring R)
BOOLEAN sm_Equal(ideal a, ideal b, const ring R)
matrix mp_Mult(matrix a, matrix b, const ring R)
BOOLEAN mp_Equal(matrix a, matrix b, const ring R)
matrix mp_MultI(matrix a, int f, const ring R)
c = f*a
matrix mp_Coeffs(ideal I, int var, const ring R)
corresponds to Maple's coeffs: var has to be the number of a variable
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,...
matrix mp_MultP(matrix a, poly p, const ring R)
multiply a matrix 'a' by a poly 'p', destroy the args
matrix mp_Copy(matrix a, const ring r)
copies matrix a (from ring r to r)
matrix mp_Add(matrix a, matrix b, const ring R)
matrix mp_InitP(int r, int c, poly p, const ring R)
make it a p * unit matrix
poly mp_Trace(matrix a, const ring R)
#define MATELEM(mat, i, j)
1-based access to matrix
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,...
This file provides miscellaneous functionality.
lib_types type_of_LIB(const char *newlib, char *libnamebuf)
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy
BOOLEAN nuLagSolve(leftv res, leftv arg1, leftv arg2, leftv arg3)
find the (complex) roots an univariate polynomial Determines the roots of an univariate polynomial us...
The main handler for Singular numbers which are suitable for Singular polynomials.
ideal twostd(ideal I)
Compute two-sided GB:
void newstruct_setup(const char *n, newstruct_desc d)
newstruct_desc newstructChildFromString(const char *parent, const char *s)
newstruct_desc newstructFromString(const char *s)
CanonicalForm ndConvSingNFactoryN(number, BOOLEAN, const coeffs)
#define nPower(a, b, res)
#define omFreeSize(addr, size)
#define omRealloc(addr, size)
#define omFreeBin(addr, bin)
#define SI_RESTORE_OPT1(A)
#define SI_RESTORE_OPT2(A)
#define TEST_OPT_DEGBOUND
#define TEST_OPT_RETURN_SB
static int index(p_Length length, p_Ord ord)
void pRestoreDegProcs(ring r, pFDegProc old_FDeg, pLDegProc old_lDeg)
poly p_Homogen(poly p, int varnum, const ring r)
poly pp_DivideM(poly a, poly b, const ring r)
void p_Shift(poly *p, int i, const ring r)
shifts components of the vector p by i
void p_Normalize(poly p, const ring r)
int p_MaxExpPerVar(poly p, int i, const ring r)
max exponent of variable x_i in p
int p_Compare(const poly a, const poly b, const ring R)
poly p_Series(int n, poly p, poly u, intvec *w, const ring R)
long p_DegW(poly p, const int *w, const ring R)
poly p_Cleardenom(poly p, const ring r)
poly p_Vec2Poly(poly v, int k, const ring r)
void p_SetModDeg(intvec *w, ring r)
void pSetDegProcs(ring r, pFDegProc new_FDeg, pLDegProc new_lDeg)
long p_Deg(poly a, const ring r)
static poly p_Neg(poly p, const ring r)
static long p_MinComp(poly p, ring lmRing, ring tailRing)
static void p_Delete(poly *p, const ring r)
static unsigned pLength(poly a)
static poly pp_Mult_qq(poly p, poly q, const ring r)
static long p_Totaldegree(poly p, const ring r)
void rChangeCurrRing(ring r)
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
poly pp_Divide(poly p, poly q, const ring r)
polynomial division a/b, ignoring the rest via singclap_pdivide resp. idLift does not destroy a,...
poly singclap_gcd(poly f, poly g, const ring r)
polynomial gcd via singclap_gcd_r resp. idSyzygies destroys f and g
Compatiblity layer for legacy polynomial operations (over currRing)
static long pTotaldegree(poly p)
#define pHead(p)
returns newly allocated copy of Lm(p), coef is copied, next=NULL, p might be NULL
#define pIsConstant(p)
like above, except that Comp must be 0
#define pGetComp(p)
Component.
#define pSetCoeff(p, n)
deletes old coeff before setting the new one
#define pLmInit(p)
like pInit, except that expvector is initialized to that of p, p must be != NULL
#define pIsUnit(p)
return true if the Lm is a constant <>0
#define pLmDelete(p)
assume p != NULL, deletes Lm(p)->coef and Lm(p)
static void pLmFree(poly p)
frees the space of the monomial m, assumes m != NULL coef is not freed, m is not advanced
#define pSeries(n, p, u, w)
#define pGetExp(p, i)
Exponent.
void pNorm(poly p, const ring R=currRing)
#define pInit()
allocates a new monomial and initializes everything to 0
#define pEqualPolys(p1, p2)
#define pLmCmp(p, q)
returns 0|1|-1 if p=q|p>q|p<q w.r.t monomial ordering
#define pCopy(p)
return a copy of the poly
#define pLmFreeAndNext(p)
assumes p != NULL, deletes p, returns pNext(p)
ideal maGetPreimage(ring theImageRing, map theMap, ideal id, const ring dst_r)
const char feNotImplemented[]
void PrintS(const char *s)
void Werror(const char *fmt,...)
int rSum(ring r1, ring r2, ring &sum)
int r_IsRingVar(const char *n, char **names, int N)
ring rMinusVar(const ring r, char *v)
undo rPlusVar
char * rCharStr(const ring r)
TODO: make it a virtual method of coeffs, together with: Decompose & Compose, rParameter & rPar.
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...
void rDelete(ring r)
unconditionally deletes fields in r
ring rDefault(const coeffs cf, int N, char **n, int ord_size, rRingOrder_t *ord, int *block0, int *block1, int **wvhdl, unsigned long bitmask)
ring rPlusVar(const ring r, char *v, int left)
K[x],"y" -> K[x,y] resp. K[y,x].
int n_IsParam(const number m, const ring r)
TODO: rewrite somehow...
static BOOLEAN rField_is_Ring(const ring r)
static BOOLEAN rField_is_Zp_a(const ring r)
static BOOLEAN rField_is_Z(const ring r)
static BOOLEAN rField_is_Zp(const ring r)
static BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
long(* pFDegProc)(poly p, ring r)
static ring rIncRefCnt(ring r)
static char const ** rParameter(const ring r)
(r->cf->parameter)
static BOOLEAN rField_is_Domain(const ring r)
long(* pLDegProc)(poly p, int *length, ring r)
static int rPar(const ring r)
(r->cf->P)
static BOOLEAN rIsLPRing(const ring r)
static BOOLEAN rField_is_Q(const ring r)
static BOOLEAN rField_is_numeric(const ring r)
BOOLEAN rHasMixedOrdering(const ring r)
static BOOLEAN rField_is_GF(const ring r)
static short rVar(const ring r)
#define rVar(r) (r->N)
BOOLEAN rHasLocalOrMixedOrdering(const ring r)
void sBucket_Add_p(sBucket_pt bucket, poly p, int length)
adds poly p to bucket destroys p!
void sBucketCanonicalize(sBucket_pt bucket)
sBucket_pt sBucketCreate(const ring r)
poly sBucketPeek(sBucket_pt b)
void sBucketDestroyAdd(sBucket_pt bucket, poly *p, int *length)
BOOLEAN sdb_set_breakpoint(const char *pp, int given_lineno)
const char * slStatus(si_link l, const char *request)
BOOLEAN slPrepClose(si_link l)
leftv slRead(si_link l, leftv a)
BOOLEAN slDump(si_link l)
BOOLEAN slGetDump(si_link l)
BOOLEAN slClose(si_link l)
BOOLEAN slOpen(si_link l, short flag, leftv h)
int slStatusSsiL(lists L, int timeout)
#define SI_LINK_SET_CLOSE_P(l)
ideal id_Vec2Ideal(poly vec, const ring R)
ideal idInit(int idsize, int rank)
initialise an ideal / module
void id_Delete(ideal *h, ring r)
deletes an ideal/module/matrix
void id_Norm(ideal id, const ring r)
ideal id = (id[i]), result is leadcoeff(id[i]) = 1
void id_Normalize(ideal I, const ring r)
normialize all polys in id
ideal id_Transp(ideal a, const ring rRing)
transpose a module
ideal id_FreeModule(int i, const ring r)
the free module of rank i
ideal id_Homogen(ideal h, int varnum, const ring r)
ideal id_Power(ideal given, int exp, const ring r)
matrix id_Module2Matrix(ideal mod, const ring R)
int idElem(const ideal F)
count non-zero elements
ideal id_Head(ideal h, const ring r)
returns the ideals of initial terms
long id_RankFreeModule(ideal s, ring lmRing, ring tailRing)
return the maximal component number found in any polynomial in 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...
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
matrix id_Module2formatedMatrix(ideal mod, int rows, int cols, const ring R)
ideal id_Matrix2Module(matrix mat, const ring R)
converts mat to module, destroys mat
ideal id_ResizeModule(ideal mod, int rows, int cols, const ring R)
ideal id_Delete_Pos(const ideal I, const int p, const ring r)
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
ideal id_Jet(const ideal i, int d, const ring R)
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.
ideal id_JetW(const ideal i, int d, intvec *iv, const ring R)
void idSkipZeroes(ideal ide)
gives an ideal/module the minimal possible size
void id_Shift(ideal M, int s, const ring r)
ideal id_ChineseRemainder(ideal *xx, number *q, int rl, const ring r)
ideal id_Subst(ideal id, int n, poly e, const ring r)
void sm_CallBareiss(ideal I, int x, int y, ideal &M, intvec **iv, const ring R)
ideal sm_CallSolv(ideal I, const ring R)
EXTERN_VAR omBin char_ptr_bin
void syMake(leftv v, const char *id, package pa)
INST_VAR sleftv sLastPrinted
BOOLEAN assumeStdFlag(leftv h)
BOOLEAN RingDependend(int t)
resolvente syResolvente(ideal arg, int maxlength, int *length, intvec ***weights, BOOLEAN minim)
syStrategy syResolution(ideal arg, int maxlength, intvec *w, BOOLEAN minim)
ideal syMinBase(ideal arg)
syStrategy syHilb(ideal arg, int *length)
resolvente sySchreyerResolvente(ideal arg, int maxlength, int *length, BOOLEAN isMonomial=FALSE, BOOLEAN notReplace=FALSE)
syStrategy sySchreyer(ideal arg, int maxlength)
int syDim(syStrategy syzstr)
syStrategy syMinimize(syStrategy syzstr)
syStrategy syKosz(ideal arg, int *length)
int sySize(syStrategy syzstr)
syStrategy syFrank(const ideal arg, const int length, const char *method, const bool use_cache=true, const bool use_tensor_trick=false)
syStrategy syLaScala3(ideal arg, int *length)
ideal t_rep_gb(const ring r, ideal arg_I, int syz_comp, BOOLEAN F4_mode)
number ntDiff(number a, number d, const coeffs cf)
ideal fractalWalkProc(leftv first, leftv second)
ideal walkProc(leftv first, leftv second)
int * iv2array(intvec *iv, const ring R)
BOOLEAN jjStdJanetBasis(leftv res, leftv v, int flag)
flag: 0: JB, 1: SB
#define omPrintBinStats(F)