92 #define NC_MASK (3+64)
98#define ZERODIVISOR_MASK 8
104#define NO_ZERODIVISOR 8
105#define ALLOW_ZERODIVISOR 0
108#define ALLOW_NC ALLOW_LP|ALLOW_PLURAL
110#define ALLOW_ZZ (ALLOW_RING|NO_ZERODIVISOR)
116#define NO_CONVERSION 32
120#define bit31 SIZEOF_LONG*8-1
205extern int iiArithAddCmd(
const char *szName,
short nAlias,
short nTokval,
206 short nToktype,
short nPos=-1);
216#define ii_div_by_0 "div. by 0"
225 if ((
long)
i==
l)
return l;
246 long bb = (long)(
v->Data());
251 case '+': cc=
bimAdd(aa,bb);
break;
252 case '-': cc=
bimSub(aa,bb);
break;
253 case '*': cc=
bimMult(aa,bb);
break;
255 res->data=(
char *)cc;
265 number bb = (number)(
v->Data());
272 res->data=(
char *)cc;
282 int bb = (int)(
long)(
v->Data());
286 case '+': (*aa) += bb;
break;
287 case '-': (*aa) -= bb;
break;
288 case '*': (*aa) *= bb;
break;
291 case '%': (*aa) %= bb;
break;
293 res->data=(
char *)aa;
303 int bb = (int)(
long)(
v->Data());
312 res->data=(
char *)aa;
321 int l=(int)(
long)
v->Data();
324 int d=(int)(
long)u->
Data();
327 for(
i=
l-1;
i>=0;
i--) { (*vv)[
i]=d; }
328 res->data=(
char *)vv;
334 res->data=(
char *)
new intvec((
int)(
long)u->
Data(),(
int)(
long)
v->Data());
346 res->data = (
char *) (r<0);
349 res->data = (
char *) (r>0);
352 res->data = (
char *) (r<=0);
355 res->data = (
char *) (r>=0);
359 res->data = (
char *) (r==0);
363 if(r==-2) {
WerrorS(
"size incompatible");
return TRUE; }
375 res->data = (
char *) (r<0);
378 res->data = (
char *) (r>0);
381 res->data = (
char *) (r<=0);
384 res->data = (
char *) (r>=0);
389 res->data = (
char *) (r==0);
393 if(r==-2) {
WerrorS(
"size incompatible");
return TRUE; }
399 int b = (int)(
long)(
v->Data());
404 res->data = (
char *) (r<0);
407 res->data = (
char *) (r>0);
410 res->data = (
char *) (r<=0);
413 res->data = (
char *) (r>=0);
417 res->data = (
char *) (r==0);
432 res->data = (
char *) (
long)(r < 0);
435 res->data = (
char *) (
long)(r > 0);
438 res->data = (
char *) (
long)(r <= 0);
441 res->data = (
char *) (
long)(r >= 0);
445 res->data = (
char *)(
long) (r == 0);
453 poly
p=(poly)u->
Data();
454 poly q=(poly)
v->Data();
459 res->data = (
char *) (r < 0);
462 res->data = (
char *) (r > 0);
465 res->data = (
char *) (r <= 0);
468 res->data = (
char *) (r >= 0);
480 char* a = (
char * )(u->
Data());
481 char*
b = (
char * )(
v->Data());
513 else if (
v->Next()!=
NULL)
523 long b=(long)u->
Data();
524 long e=(long)
v->Data();
533 else if ((e==0)||(
b==1))
551 if(rc/
b!=oldrc) overflow=
TRUE;
555 WarnS(
"int overflow(^), result may be wrong");
557 res->data = (
char *)rc;
563 WerrorS(
"exponent must be non-negative");
569 int e=(int)(
long)
v->Data();
570 number n=(number)u->
Data();
577 WerrorS(
"exponent must be non-negative");
585 int e=(int)(
long)
v->Data();
586 number n=(number)u->
Data();
603 int v_i=(int)(
long)
v->Data();
606 WerrorS(
"exponent must be non-negative");
615 Werror(
"OVERFLOW in power(d=%ld, e=%d, max=%ld)",
658 res->data =
v->CopyD();
659 res->rtyp =
v->Typ();
699 if(isupper(u->
name[0]))
701 const char *c=u->
name+1;
702 while((*c!=
'\0')&&(islower(*c)||(isdigit(*c))||(*c==
'_'))) c++;
707 Print(
"%s of type 'ANY'. Trying load.\n", u->
name);
723 package pa=(package)u->Data();
728 Werror(
"'%s' not loaded", u->name);
733 v->name = omStrDup(v->name);
737 WerrorS(
"reserved name with ::");
749 WerrorS(
"<package>::<id> expected");
756 unsigned long a=(
unsigned long)u->
Data();
757 unsigned long b=(
unsigned long)
v->Data();
759 res->data = (
char *)((
long)c);
762 WarnS(
"int overflow(+), result may be wrong");
773 res->data = (
char *)(
nAdd((number)u->
Data(), (number)
v->Data()));
808 WerrorS(
"intmat size not compatible");
818 WerrorS(
"bigintmat/cmatrix not compatible");
829 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
837 ideal
A=(ideal)u->
Data(); ideal
B=(ideal)
v->Data();
841 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
864 char* a = (
char * )(u->
Data());
865 char*
b = (
char * )(
v->Data());
866 char* r = (
char * )
omAlloc(strlen(a) + strlen(
b) + 1);
874 res->data = (
char *)
idAdd((ideal)u->
Data(),(ideal)
v->Data());
879 void *
ap=u->
Data();
void *bp=
v->Data();
883 unsigned long a=(
unsigned long)
ap;
884 unsigned long b=(
unsigned long)bp;
888 WarnS(
"int overflow(-), result may be wrong");
890 res->data = (
char *)cc;
900 res->data = (
char *)(
nSub((number)u->
Data(), (number)
v->Data()));
936 WerrorS(
"intmat size not compatible");
946 WerrorS(
"bigintmat/cmatrix not compatible");
957 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
966 ideal
A=(ideal)u->
Data(); ideal
B=(ideal)
v->Data();
970 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
979 long a=(long)u->
Data();
980 long b=(long)
v->Data();
982 if ((a!=0)&&(c/a!=
b))
983 WarnS(
"int overflow(*), result may be wrong");
984 res->data = (
char *)c;
998 res->data = (
char *)(
nMult( (number)u->
Data(), (number)
v->Data()));
999 number n=(number)
res->data;
1001 res->data=(
char *)n;
1020 Warn(
"possible OVERFLOW in mult(d=%ld, d=%ld, max=%ld)",
1033 Warn(
"possible OVERFLOW in mult(d=%ld, d=%ld, max=%ld)",
1065 WerrorS(
"intmat size not compatible");
1077 WerrorS(
"bigintmat/cmatrix not compatible");
1091 res->data = (
char *)I;
1104 res->data = (
char *)I;
1113 res->data = (
char *)I;
1142 Werror(
"matrix size not compatible(%dx%d, %dx%d) in *",
1152 ideal
A=(ideal)u->
Data(); ideal
B=(ideal)
v->Data();
1156 Werror(
"matrix size not compatible(%dx%d, %dx%d) in *",
1173 res->data = (
char *)(
long)((int)((long)u->
Data()) >= (
int)((
long)
v->Data()));
1191 res->data = (
char *)(
long)((int)((long)u->
Data()) > (
int)((
long)
v->Data()));
1205 res->data = (
char *)(
long)((int)((long)u->
Data()) <= (
int)((
long)
v->Data()));
1218 res->data = (
char *)(
long)((int)((long)u->
Data()) < (
int)((
long)
v->Data()));
1228 long a= (long)u->
Data();
1229 long b= (long)
v->Data();
1243 r=((a-c) /
b);
break;
1245 res->data=(
void *)r;
1250 number q=(number)
v->Data();
1258 res->data = (
char *)q;
1263 number q=(number)
v->Data();
1271 res->data = (
char *)q;
1276 poly q=(poly)
v->Data();
1277 poly
p=(poly)(u->
Data());
1294 poly q=(poly)
v->Data();
1318 res->data=(
char *)mm;
1329 res->data = (
char *)((
int)((
long)u->
Data()) == (
int)((
long)
v->Data()));
1347 res->data = (
char *)(
long)(u->
Data()==
v->Data());
1353 res->data = (
char *)((
long)
nEqual((number)u->
Data(),(number)
v->Data()));
1359 poly
p=(poly)u->
Data();
1360 poly q=(poly)
v->Data();
1380 res->data = (
char *)((
long)u->
Data() && (
long)
v->Data());
1385 res->data = (
char *)((
long)u->
Data() || (
long)
v->Data());
1398 while (sh->next !=
NULL) sh=sh->next;
1414 WerrorS(
"indexed object must have a name");
1425 t.
data=(
char *)((
long)(*iv)[
i]);
1448 poly
p=(poly)u->
Data();
1449 long i=(long)
v->Data();
1469 long i=(long)
v->Data();
1488 poly
p=(poly)u->
Data();
1496 while ((
p!=
NULL) && (sum>0))
1512 res->data=(
char *)r;
1517 poly
p=(poly)u->
Data();
1518 int i=(int)(
long)
v->Data();
1553 res->data=(
char *)r;
1561 long slen = strlen(u->
name) + 14;
1562 char *nn = (
char*)
omAlloc(slen);
1563 snprintf(nn,slen,
"%s(%d)",u->
name,(
int)(
long)
v->Data());
1576 long slen = strlen(u->
name) + 14;
1577 char *n = (
char*)
omAlloc(slen);
1590 snprintf(n,slen,
"%s(%d)",u->
name,(*iv)[
i]);
1611 while (
h->next!=
NULL)
h=
h->next;
1625 tmp_proc->
id=
"_auto";
1629 d=u->
data; u->
data=(
void *)tmp_proc;
1646 if (sl)
return TRUE;
1685 number *
x=(number *)
omAlloc(rl*
sizeof(number));
1686 number *q=(number *)
omAlloc(rl*
sizeof(number));
1688 for(
i=rl-1;
i>=0;
i--)
1695 for(
i=rl-1;
i>=0;
i--)
1701 res->data=(
char *)n;
1711 number *
x=(number *)
omAlloc(rl*
sizeof(number));
1712 number *q=(number *)
omAlloc(rl*
sizeof(number));
1714 for(
i=rl-1;
i>=0;
i--)
1720 for(
i=rl-1;
i>=0;
i--)
1724 Werror(
"poly expected at pos %d",
i+1);
1725 for(
i=rl-1;
i>=0;
i--)
1737 for(
i=rl-1;
i>=0;
i--)
1749 number n=n_ChineseRemainder(
x,q,rl,
currRing->cf);
1750 for(
i=rl-1;
i>=0;
i--)
1758 for(
i=rl-1;
i>=0;
i--)
1770 long s=(long)
v->Data();
1779 ideal
M=(ideal)u->
CopyD();
1780 int s=(int)(
long)
v->Data();
1793 poly
p=(poly)
v->Data();
1800 poly
p=(poly)
v->Data();
1807 int i=
pVar((poly)
v->Data());
1826 (ideal)(
v->Data()),
p);
1838 ideal I=(ideal)u->
Data();
1843 res->data = (
char *)((
long)d);
1848 poly
p=(poly)u->
Data();
1854 res->data = (
char *)(d);
1857 res->data=(
char *)(
long)(-1);
1862 int pos=(int)(
long)
v->Data();
1869 int pos=(int)(
long)
v->Data();
1870 ideal I=(ideal)u->
Data();
1877 ideal I=(ideal)u->
Data();
1904 ideal
m=(ideal)u->
Data();
1910 int i=
pVar((poly)
v->Data());
1921 int i=
pVar((poly)
v->Data());
1940 Warn(
"dim(%s,...) may be wrong because the mixed monomial ordering",
v->Name());
1954 ideal vi=(ideal)
v->Data();
1956 ideal ui=(ideal)u->
Data();
1969 res->data=(
char *)L;
1976 return v->next!=
NULL;
2006 number uu=(number)u->
Data();number vv=(number)
v->Data();
2015 res->data=(
char *)L;
2020 int uu=(int)(
long)u->
Data();
int vv=(int)(
long)
v->Data();
2021 int p0=
ABS(uu),p1=
ABS(vv);
2022 int f0 = 1, f1 = 0, g0 = 0, g1 = 1, q, r;
2043 res->data=(
char *)L;
2050 if (ret)
return TRUE;
2053 res->data=(
char *)L;
2054 L->
m[0].
data=(
void *)r;
2066 int sw=(int)(
long)dummy->
Data();
2068 if ((sw<0)||(sw>2)) fac_sw=1;
2081 l->m[0].data=(
void *)
f;
2083 l->m[1].data=(
void *)
v;
2084 res->data=(
void *)
l;
2089 res->data=(
void *)
f;
2102 res->data=(
void *)
p;
2129 res->data=(
void *)L;
2136 number uu=(number)u->
Data();
2137 number vv=(number)
v->Data();
2145 ideal uu=(ideal)u->
Data();
2146 number vv=(number)
v->Data();
2166 ring r=(ring)u->
Data();
2175 int par_perm_size=0;
2185 par_perm_size=
rPar(r);
2199 perm=(
int *)
omAlloc0((r->N+1)*
sizeof(
int));
2200 if (par_perm_size!=0)
2201 par_perm=(
int *)
omAlloc0(par_perm_size*
sizeof(
int));
2206 char ** r_par_names=
NULL;
2207 if (r->cf->extRing!=
NULL)
2209 r_par=r->cf->extRing->N;
2210 r_par_names=r->cf->extRing->names;
2213 char ** c_par_names=
NULL;
2217 c_par_names=
currRing->cf->extRing->names;
2221 maFindPerm(r->names, r->N, r_par_names, r_par,
2223 perm,par_perm,
currRing->cf->type);
2225 #ifdef HAVE_SHIFTBBA
2230 perm,par_perm,
currRing->cf->type,r->isLPring);
2245 if (par_perm_size!=0)
2260 Print(
"// par nr %d: %s -> %s\n",
2270 perm,par_perm,par_perm_size,nMap)))
2288 Werror(
"no identity map from %s (%s -> %s)",u->
Fullname(),s1,s2);
2299 char *where=(
char *)u->
Data();
2300 char *what=(
char *)
v->Data();
2301 char *
found = strstr(where,what);
2304 res->data=(
char *)((
found-where)+1);
2313 ideal
id = (ideal)u->
Data();
2314 int max_length = (int)(
long)
v->Data();
2317 WerrorS(
"length for fres must not be negative");
2320 if (max_length == 0)
2325 Warn(
"full resolution in a qring may be infinite, "
2326 "setting max length to %d", max_length);
2329 char *method = (
char *)
w->Data();
2333 if (strcmp(method,
"complete") != 0
2334 && strcmp(method,
"frame") != 0
2335 && strcmp(method,
"extended frame") != 0
2336 && strcmp(method,
"single module") != 0)
2338 WerrorS(
"wrong optional argument for fres");
2343 res->data = (
void *)r;
2351 w->data = (
char *)
"complete";
2365 int uu=(int)(
long)u->
Data();
int vv=(int)(
long)
v->Data();
2366 int p0=
ABS(uu),p1=
ABS(vv);
2373 res->data=(
char *)(
long)p0;
2378 number n1 = (number) u->
Data();
2379 number n2 = (number)
v->Data();
2385 number a=(number) u->
Data();
2386 number
b=(number)
v->Data();
2410 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
2411 PrintS(
"// performed for generic fibre, that is, over Q\n");
2416 switch((
int)(
long)
v->Data())
2429 switch((
int)(
long)
v->Data())
2432 res->data=(
void *)iv;
2446 int i=
pVar((poly)
v->Data());
2458 WerrorS(
"variable must have weight 1");
2463 int i=
pVar((poly)
v->Data());
2480 WerrorS(
"variable must have weight 1");
2487 ideal v_id=(ideal)
v->Data();
2496 currRing->pLexOrder=save_pLexOrder;
2506 ideal v_id=(ideal)
v->Data();
2526 const int n = L->
nr;
assume (n >= 0);
2527 std::vector<ideal> V(n + 1);
2529 for(
int i = n;
i >= 0;
i--) V[
i] = (ideal)(L->
m[
i].
Data());
2548 res->data = (
char *)
pJet((poly)u->
CopyD(), (
int)(
long)
v->Data());
2582 h.data=(
void *)(
long)
IDELEMS((ideal)
v->Data());
2594 Werror(
"At least %d ncgen variables are needed for this computation.", ul);
2614 Werror(
"At least %d ncgen variables are needed for this computation.",
IDELEMS((ideal)u->
Data()));
2631 char *
s=(
char *)u->
Data();
2632 if(strcmp(
s,
"with")==0)
2634 if (strcmp(
s,
"try")==0)
2636 WerrorS(
"invalid second argument");
2637 WerrorS(
"load(\"libname\" [,option]);");
2663 ideal u_id=(ideal)u->
Data();
2664 ideal v_id=(ideal)
v->Data();
2667 if ((*w_u).compare((w_v))!=0)
2669 WarnS(
"incompatible weights");
2670 delete w_u; w_u=
NULL;
2678 WarnS(
"wrong weights");
2679 delete w_u; w_u=
NULL;
2684 res->data = (
char *)
idModulo(u_id,v_id ,hom,&w_u);
2695 number q=(number)
v->Data();
2706 number q=(number)
v->Data();
2717 poly q=(poly)
v->Data();
2723 poly
p=(poly)(u->
Data());
2741 char *opt=(
char *)
v->Data();
2753 if(strcmp(
l->m->type,
"ASCII")!=0)
2755 Werror(
"ASCII link required, not `%s`",
l->m->type);
2760 if (
l->name[0]!=
'\0')
2764 if (
v==
NULL) opt=(
const char*)
"i";
2765 else opt=(
const char *)
v->Data();
2807 const char *
s=(
const char *)u->
Data();
2808 newstruct_desc d=
NULL;
2814 else WerrorS(
"name of newstruct must be longer than 1 character");
2820 int i=(int)(
long)
v->Data();
2828 Werror(
"par number %d out of range 1..%d",
i,
p);
2838 WerrorS(
"basering must NOT be a qring!");
2858 WerrorS(
"basering must NOT be a qring!");
2878 WerrorS(
"basering must NOT be a qring!");
2898 WerrorS(
"basering must NOT be a qring!");
2920 const poly q = (poly)
b->Data();
2933 const poly
p = (poly)a->
Data();
2947 const poly q = (poly)
b->Data();
2952 const poly
p = (poly)a->
Data();
2953 int k=(int)(
long)c->
Data();
2957 for (
int i = 0;
i <
k;
i++)
2969 if (qq ==
NULL)
break;
2975 Werror(
"invalid number of iterations");
2985 ring r = (ring)a->
Data();
2988 res->data =
b->Data();
2989 res->rtyp =
b->rtyp;
2994 Werror(
"%s is not an opposite ring to current ring",a->
Fullname());
3007 res->rtyp = argtype;
3015 res->rtyp = argtype;
3023 res->rtyp = argtype;
3036 res->rtyp = argtype;
3041 WerrorS(
"unsupported type in oppose");
3059 WerrorS(
"expected prune_map(`module`,`smatrix`)`");
3064 ideal v_id=(ideal)
v->Data();
3069 WarnS(
"wrong weights");
3078 int *
g=(
int*)
omAlloc(v_id->rank*
sizeof(
int));
3090 int *
g=(
int*)
omAlloc(v_id->rank*
sizeof(
int));
3108 int i=(int)(
long)u->
Data();
3109 int j=(int)(
long)
v->Data();
3110 if (
j-
i <0) {
WerrorS(
"invalid range for random");
return TRUE;}
3117 int isRowEchelon = (int)(
long)
v->Data();
3118 if (isRowEchelon != 1) isRowEchelon = 0;
3119 int rank =
luRank(
m, isRowEchelon);
3120 res->data =(
char *)(
long)rank;
3132 Werror(
"cannot read from `%s`",
s);
3141 ideal vi=(ideal)
v->Data();
3149 ideal ui=(ideal)u->
Data();
3150 ideal vi=(ideal)
v->Data();
3158 int maxl=(int)(
long)
v->Data();
3161 WerrorS(
"length for res must not be negative");
3167 ideal u_id=(ideal)u->
Data();
3176 "full resolution in a qring may be infinite, setting max length to %d",
3190 int add_row_shift=0;
3194 add_row_shift = ww->
min_in();
3195 (*ww) -= add_row_shift;
3213 (
"`lres` not implemented for inhomogeneous input or qring");
3217 WarnS(
"the current implementation of `lres` may not work in the case of a single variable");
3227 (
"`kres` not implemented for inhomogeneous input or qring");
3239 (
"`hres` not implemented for inhomogeneous input or qring");
3242 ideal u_id_copy=
idCopy(u_id);
3244 r=
syHilb(u_id_copy,&dummy);
3257 res->data=(
void *)r;
3258 if ((weights!=
NULL) && (ww!=
NULL)) {
delete ww; ww=
NULL; }
3262 if (weights!=
NULL) (*ww) += add_row_shift;
3292 n1 = (number)u->
CopyD();
3296 i = (int)(
long)u->
Data();
3304 i = (int)(
long)
v->Data();
3308 res->data = (
char*)
l;
3314 res->data = (
char *)r;
3327 res->data = (
char *)r;
3333 int i=
rSum((ring)u->
Data(),(ring)
v->Data(),r);
3334 res->data = (
char *)r;
3337#define SIMPL_NORMALIZE 64
3338#define SIMPL_LMDIV 32
3339#define SIMPL_LMEQ 16
3346 int sw = (int)(
long)
v->Data();
3377 res->data = (
char * )
id;
3384 int sw=(int)(
long)dummy->
Data();
3399 l->m[0].data=(
void *)
f;
3401 l->m[1].data=(
void *)
v;
3402 res->data=(
void *)
l;
3407 res->data=(
void *)
f;
3420 res->data=(
void *)
p;
3441 int sw = (int)(
long)
v->Data();
3452 res->data = (
char * )
p;
3460 ideal u_id=(ideal)(u->
Data());
3486 ideal i1=(ideal)(u->
Data());
3492 poly
p=(poly)
v->Data();
3496 memset(i0->m,0,
sizeof(poly)*
IDELEMS(i0));
3529 i0=(ideal)
v->CopyD();
3531 memset(i0->m,0,
sizeof(poly)*
IDELEMS(i0));
3572 ideal I=(ideal)u->
Data();
3579 int add_row_shift=
w->min_in();
3580 (*w)-=add_row_shift;
3598 res->data = (
char *)S;
3605 for(
int i=0;
i<vl;
i++)
3614 for(
int i=0;
i<vl;
i++)
3631 ideal
A=(ideal)u->
Data();
3632 ideal
B=(ideal)
v->Data();
3638 sleftv tmp_u,tmp_v,tmp_res;
3658 int i=(int)(
long)
v->Data();
3679 int t = (int)(
long)
v->Data();
3689 res->data = (
void*)(
long)
i;
3706 int timeout = (int)(
long)
v->Data();
3714 for(
unsigned nfinished = 0; nfinished <= ((unsigned)L->
nr); nfinished++)
3737 res->data = (
void*)(
long)ret;
3799 res->data = (
char *)n;
3804 res->data = (
char *)(-(
long)u->
Data());
3811 res->data = (
char *)n;
3829 res->data = (
char *)iv;
3836 res->data = (
char *)bim;
3845 ring r=(ring)u->
Data();
3849 char name_buffer[100];
3852 snprintf(name_buffer,100,
"PYTHON_RING_VAR%d",ending);
3875 l->m[0].data=(
void *)
m;
3876 l->m[1].data=(
void *)iv;
3877 res->data = (
char *)
l;
3897 number n=(number)u->
CopyD();
3921 number n=(number) tmp.
data;
3936 res->data = (
char *)(
long)
rChar((ring)
v->Data());
3941 ring r=(ring)
v->Data();
3943 res->data = (
char *)r->cf;
3953 res->data = (
char *)(
long)((
bigintmat*)(
v->Data()))->cols();
3958 res->data = (
char *)(
long)((
intvec*)(
v->Data()))->cols();
3966 res->data = (
char *)
p;
3977 res->data = (
char *)(
long)(aa->
rows()*aa->
cols());
3982 res->data = (
char *)(
long)
nSize((number)
v->Data());
3999 res->data = (
char *)(
long)((
intvec*)(
v->Data()))->length();
4004 ring r=(ring)
v->Data();
4010 extern int ipower (
int b,
int n );
4011 elems=
ipower(r->cf->ch,r->cf->extRing->pFDeg(r->cf->extRing->qideal->m[0],r->cf->extRing));
4013 res->data = (
char *)(
long)elems;
4019 poly
p=(poly)
v->Data();
4021 else res->data=(
char *)-1;
4026 ideal I=(ideal)u->
Data();
4032 res->data = (
char *)(
long)d;
4040 PrintS(
"// NOTE: computation of degree is being performed for\n");
4041 PrintS(
"// generic fibre, that is, over Q\n");
4059 else if (
v->rtyp!=0)
res->data=(
void *)(-1);
4066 number n =
reinterpret_cast<number
>(
v->CopyD());
4075 number n =
reinterpret_cast<number
>(
v->CopyD());
4091 i=
m->rows();
j=
m->cols();
4096 Werror(
"det of %d x %d bigintmat",
i,
j);
4105 number2 r=(number2)
omAlloc0(
sizeof(*r));
4107 i=
m->rows();
j=
m->cols();
4111 r->cf=
m->basecoeffs();
4116 Werror(
"det of %d x %d cmatrix",
i,
j);
4127 i=
m->rows();
j=
m->cols();
4132 Werror(
"det of %d x %d intmat",
i,
j);
4139 ideal I=(ideal)
v->Data();
4151 WerrorS(
"`dim` is not implemented for letterplace rings over rings");
4156 WerrorS(
"qring not supported by `dim` for letterplace rings at the moment");
4159 int gkDim =
lp_gkDim((ideal)(
v->Data()));
4160 res->data = (
char *)(
long)gkDim;
4161 return (gkDim == -2);
4166 Warn(
"dim(%s) may be wrong because the mixed monomial ordering",
v->Name());
4179 Werror(
"cannot dump to `%s`",
s);
4188 int co=(int)(
long)
v->Data();
4194 else WerrorS(
"argument of gen must be positive");
4199 char * d = (
char *)
v->Data();
4200 char *
s = (
char *)
omAlloc(strlen(d) + 13);
4201 strcpy(
s, (
char *)d);
4202 strcat(
s,
"\n;RETURN();\n");
4239 WarnS(
"no factorization implemented");
4243 res->data=(
void *)L;
4256 l->m[0].data=(
void *)
f;
4258 l->m[1].data=(
void *)
v;
4259 res->data=(
void *)
l;
4270 Werror(
"cannot get dump from `%s`",
s);
4279 ideal I=(ideal)
v->Data();
4288 ideal I=(ideal)
v->Data();
4302 WerrorS(
"module must be zero-dimensional");
4303 if (delete_w)
delete w;
4326 if (delete_w)
delete w;
4327 res->data=(
void *)po;
4334 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
4335 PrintS(
"// performed for generic fibre, that is, over Q\n");
4347 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
4348 PrintS(
"// performed for generic fibre, that is, over Q\n");
4356 ideal v_id=(ideal)
v->Data();
4364 char *s_isHomog=
omStrDup(
"isHomog");
4370 else if (
w!=
NULL)
delete w;
4391 int deg = (int)(
long)
v->Data();
4394 WerrorS(
"degree bound of Letterplace ring is to small");
4409 res->data=(
char *)mat;
4419 res->data=(
char *)I;
4426 ring q=(ring)
v->Data();
4429 if (q->qideal==
NULL)
4436 WerrorS(
"can only get ideal from identical qring");
4470 res->data = (
void*)iv;
4475 res->data = (
char *)(
long)
pVar((poly)
v->Data());
4486 res->data = (
char *)0;
4493 poly
p=(poly)(
v->Data());
4498 res->data = (
char *)
i;
4505 WerrorS(
"differentiation not defined in the coefficient ring");
4508 number n = (number) u->
Data();
4509 number
k = (number)
v->Data();
4522 ideal
id = (ideal)a->
Data();
4532 for(
int i = 0;
i < W;
i++,
p++, q++ )
4575 poly
p=(poly)
v->Data();
4589 poly
p=(poly)
v->Data();
4602 res->data=(
char *)iv;
4607 poly
p=(poly)
v->Data();
4616 res->data = (
char*) lm;
4628 int isLetterplace=(int)(
long)
atGet(
v,
"isLetterplaceRing",
INT_CMD);
4630 res->data=(
char *)r;
4645 memset(&a2,0,
sizeof(a2));
4646 memset(&a3,0,
sizeof(a3));
4663 WerrorS(
"matrix must be constant");
4677 res->data=(
char*)ll;
4687 switch(((
int)(
long)
v->Data()))
4702 res->data = (
char *)0;
4719 l->m[0].data=(
char *)r;
4722 l->m[1].data=(
char *)
m;
4723 res->data=(
char *)
l;
4739 res->data=(
char *)tmp;
4748 number n,
i;
i=(number)
v->Data();
4753 res->data=(
void *)n;
4762 else if (
v->name==
NULL)
4766 res->data = (
char *)
v->name;
4783 res->data=(
char*)(
long)((long)
v->Data()==0 ? 1 : 0);
4788 res->data = (
char *)(
long)(((ring)(
v->Data()))->
N);
4799 poly
p=(poly)
v->Data();
4805 int i=(int)(
long)
v->Data();
4808 if ((0<
i) && (
i<=
p))
4814 Werror(
"par number %d out of range 1..%d",
i,
p);
4821 number nn=(number)
v->Data();
4829 WerrorS(
"no ring active (1)");
4832 int i=(int)(
long)
v->Data();
4838 Werror(
"par number %d out of range 1..%d",
i,
p);
4845 poly
p=(poly)
v->Data();
4849 WerrorS(
"poly must be constant");
4858 res->data=(
void *)n;
4865 poly
p=(poly)
v->Data();
4869 WerrorS(
"poly must be constant");
4883 int i =
IsPrime((
int)(
long)(
v->Data()));
4884 res->data = (
char *)(
long)(
i > 1 ?
i : 2);
4890 ideal v_id=(ideal)
v->Data();
4895 WarnS(
"wrong weights");
4915 if (((
p=(poly)
v->Data())!=
NULL)
4924 res->data = (
char *)n;
4929 char *
s= (
char *)
v->Data();
4936 res->data = (
char *)1;
4945 res->data = (
char *)1;
4953 res->data =(
char *)(
long)rank;
4972 ring r=(ring)
v->Data();
4978 long mm=r->wanted_maxExp;
4994 ring r=(ring)
v->Data();
5001 ideal
i = (ideal)
v->Data();
5002 res->data = (
char *)
i->rank;
5007 res->data = (
char *)(
long)((
bigintmat*)(
v->Data()))->rows();
5012 res->data = (
char *)(
long)((
intvec*)(
v->Data()))->rows();
5017 res->data = (
char *)(
long)
rPar(((ring)
v->Data()));
5022 res->data = (
char *)(
long)atoi((
char*)
v->Data());
5031 WerrorS(
"qring not supported by slimgb at the moment");
5036 WerrorS(
"ordering must be global for slimgb");
5040 WarnS(
"groebner base computations with inexact coefficients can not be trusted due to rounding errors");
5043 ideal u_id=(ideal)u->
Data();
5048 WarnS(
"wrong weights");
5070 ideal v_id=(ideal)
v->Data();
5077 WarnS(
"wrong weights");
5096 ideal v_id=(ideal)
v->Data();
5103 WarnS(
"wrong weights");
5122 ideal v_id=(ideal)
v->Data();
5129 WarnS(
"wrong weights");
5148 WarnS(
"groebner base computations with inexact coefficients can not be trusted due to rounding errors");
5150 ideal v_id=(ideal)
v->Data();
5157 WarnS(
"wrong weights");
5175 res->data = (
char *)
idSort((ideal)
v->Data());
5188 l->m[0].data=(
void *)
f;
5190 l->m[1].data=(
void *)
v;
5191 res->data=(
void *)
l;
5207 ideal v_id=(ideal)
v->Data();
5213 Werror(
"At least %d ncgen variables are needed for this computation.",
IDELEMS(v_id));
5226 int add_row_shift=
w->min_in();
5227 (*w)-=add_row_shift;
5244 res->data = (
char *)S;
5251 for(
int i=0;
i<vl;
i++)
5253 if (v_id->m[
i]!=
NULL)
5260 for(
int i=0;
i<vl;
i++)
5262 if (v_id->m[
i]!=
NULL)
5283 res->data = (
char *)(((
bigintmat*)(
v->Data()))->transpose());
5294 ring r = (ring)a->
Data();
5302 WarnS(
"opposite only for global orderings");
5313 ring r = (ring)a->
Data();
5329 ideal v_id=(ideal)a->
Data();
5346#if defined(HAVE_SHIFTBBA) || defined(HAVE_PLURAL)
5350 WarnS(
"groebner base computations with inexact coefficients can not be trusted due to rounding errors");
5352 ideal v_id=(ideal)
v->Data();
5378 ideal I=(ideal)
v->Data();
5393 res->data = (
char *)J;
5407 int t=(int)(
long)
v->data;
5458 int i=(int)(
long)
v->Data();
5464 res->data=(
char *)
p;
5477 WerrorS(
"no ring active (2)");
5480 int i=(int)(
long)
v->Data();
5498 WerrorS(
"`vdim` is not implemented for letterplace rings over rings");
5503 WerrorS(
"qring not supported by `vdim` for letterplace rings at the moment");
5506 int kDim =
lp_kDim((ideal)(
v->Data()));
5507 res->data = (
char *)(
long)kDim;
5508 return (kDim == -2);
5513 WerrorS(
"int overflow in vdim");
5514 res->data = (
char *)
l;
5529 res->data = (
void*)(
long)
i;
5543 for(
int nfinished = 0; nfinished <= L->
nr; nfinished++)
5551 if((
i == -1)||(
j==0))
5563 res->data = (
void*)(
long)
j;
5572#ifdef HAVE_DYNAMIC_LOADING
5579 Werror(
"%s: unknown type",
s);
5597 Werror(
"can not create package `%s`",plib);
5603 package pa=IDPACKAGE(pl);
5607 Werror(
"can not create package `%s` - binaries exists",plib);
5608 omFreeBinAddr(plib);
5613 package savepack=currPack;
5629#ifdef HAVE_DYNAMIC_LOADING
5632 WerrorS(
"Dynamic modules are not supported by this version of Singular");
5652 Print(
"loading of >%s< failed\n",
s);
5661 res->data = (
char *)strlen((
char *)
v->Data());
5666 res->data = (
char *)(
long)
pLength((poly)
v->Data());
5671 res->data = (
char *)(
long)
idElem((ideal)
v->Data());
5691 res->data = (
char *)
pHead((poly)
v->Data());
5759 number n=(number)u->
CopyD();
5766 number n=(number)u->
Data();
5775 char *
s= (
char *)u->
Data();
5776 int r = (int)(
long)
v->Data();
5777 int c = (int)(
long)
w->Data();
5780 if ( (r<1) || (r>
l) || (c<0) )
5786 snprintf((
char *)
res->data,c+1,
"%-*.*s",c,c,
s+r-1);
5792 int r = (int)(
long)
v->Data();
5793 int c = (int)(
long)
w->Data();
5794 if ((r<1)||(r>iv->
rows())||(c<1)||(c>iv->
cols()))
5796 Werror(
"wrong range[%d,%d] in intmat %s(%d x %d)",
5809 while (
h->next!=
NULL)
h=
h->next;
5819 int r = (int)(
long)
v->Data();
5820 int c = (int)(
long)
w->Data();
5821 if ((r<1)||(r>bim->
rows())||(c<1)||(c>bim->
cols()))
5823 Werror(
"wrong range[%d,%d] in bigintmat %s(%d x %d)",
5837 while (
h->next!=
NULL)
h=
h->next;
5847 int r = (int)(
long)
v->Data();
5848 int c = (int)(
long)
w->Data();
5852 Werror(
"wrong range[%d,%d] in matrix %s(%d x %d)",r,c,u->
Fullname(),
5866 while (
h->next!=
NULL)
h=
h->next;
5875 ideal
m= (ideal)u->
Data();
5876 int r = (int)(
long)
v->Data();
5877 int c = (int)(
long)
w->Data();
5879 if ((r<1)||(r>
m->rank)||(c<1)||(c>
IDELEMS(
m)))
5881 Werror(
"wrong range[%d,%d] in matrix %s(%d x %d)",r,c,u->
Fullname(),
5895 while (
h->next!=
NULL)
h=
h->next;
5906 WerrorS(
"cannot build expression lists from unnamed objects");
5915 memcpy(&ut,u,
sizeof(ut));
5921 t.
data=(
char *)(
long)((*iv)[
l]);
5931 memcpy(u,&ut,
sizeof(ut));
5956 WerrorS(
"cannot build expression lists from unnamed objects");
5964 memcpy(&ut,u,
sizeof(ut));
5970 t.
data=(
char *)(
long)((*iv)[
l]);
5980 memcpy(u,&ut,
sizeof(ut));
6005 WerrorS(
"cannot build expression lists from unnamed objects");
6016 memcpy(&ut,u,
sizeof(ut));
6021 for (vl=0;vl< vv->
length(); vl++)
6023 t1.
data=(
char *)(
long)((*vv)[vl]);
6024 for (wl=0;wl< wv->
length(); wl++)
6026 t2.
data=(
char *)(
long)((*wv)[wl]);
6036 memcpy(u,&ut,
sizeof(ut));
6076 int k=(int)(
long)
w->Data();
6083 l->m[0].data=(
void *)
m;
6084 l->m[1].data=(
void *)iv;
6091 l->m[0].data=(
void *)
m;
6093 res->data = (
char *)
l;
6100 WerrorS(
"3rd argument must be a name of a matrix");
6103 ideal
i=(ideal)u->
Data();
6104 int rank=(int)
i->rank;
6113 (ideal)(
v->Data()),(poly)(
w->Data()));
6120 WerrorS(
"3rd argument must be a name of a matrix");
6145 ideal I=(ideal)u->
Data();
6149 return v->next!=
NULL;
6168 int n=(int)(
long)
w->Data();
6169 char *where=(
char *)u->
Data();
6170 char *what=(
char *)
v->Data();
6172 if ((1>n)||(n>(
int)strlen(where)))
6174 Werror(
"start position %d out of range",n);
6177 found = strchr(where+n-1,*what);
6178 if (*(what+1)!=
'\0')
6180 while((
found !=
NULL) && (strncmp(
found+1,what+1,strlen(what+1))!=0))
6187 res->data=(
char *)((
found-where)+1);
6193 if ((
int)(
long)
w->Data()==0)
6205 Werror(
"weight vector must have size %d, not %d",
6211 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
6212 PrintS(
"// performed for generic fibre, that is, over Q\n");
6218 switch((
int)(
long)
v->Data())
6234 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
6235 PrintS(
"// performed for generic fibre, that is, over Q\n");
6238 ring Qt =(ring)
v->Data();
6239 char *
name=(
char*)
w->Data();
6255 int i=
pVar((poly)
v->Data());
6267 WerrorS(
"variable must have weight 1");
6273 int i=
pVar((poly)
v->Data());
6285 WerrorS(
"variable must have weight 1");
6292 ideal v_id=(ideal)v1->
Data();
6298 intvec* im=
new intvec((
int)(
long)
v->Data(),(
int)(
long)
w->Data(), 0);
6304 (*im)[
i] = (*arg)[
i];
6307 res->data = (
char *)im;
6312 ideal I1=(ideal)u->
Data();
6313 ideal I2=(ideal)
v->Data();
6314 ideal I3=(ideal)
w->Data();
6325 ideal I=(ideal)u->
Data();
6327 res->data=(
char *)
idSect(I,(ideal)
v->Data(),alg);
6334 res->data = (
char *)
ppJetW((poly)u->
Data(),(
int)(
long)
v->Data(),iw);
6342 WerrorS(
"2nd argument must be a unit");
6358 WerrorS(
"2nd argument must be a diagonal matrix of units");
6405 Werror(
"`%s` is undefined",
v->Fullname());
6421 const int mk = (int)(
long)u->
Data();
6422 bool noIdeal =
true;
bool noK =
true;
bool noAlgorithm =
true;
6423 bool noCacheMinors =
true;
bool noCacheMonomials =
true;
6424 ideal IasSB;
int k;
char* algorithm;
int cacheMinors;
int cacheMonomials;
6439 noAlgorithm =
false;
6444 noCacheMinors =
false;
6450 noCacheMonomials =
false;
6463 noAlgorithm =
false;
6468 noCacheMinors =
false;
6473 noCacheMonomials =
false;
6480 algorithm = (
char*)u->
next->
Data();
6481 noAlgorithm =
false;
6485 noCacheMinors =
false;
6490 noCacheMonomials =
false;
6498 if (strcmp(algorithm,
"bareiss") == 0)
6499 algorithm = (
char*)
"Bareiss";
6500 if (strcmp(algorithm,
"laplace") == 0)
6501 algorithm = (
char*)
"Laplace";
6502 if (strcmp(algorithm,
"cache") == 0)
6503 algorithm = (
char*)
"Cache";
6512 if ((!noK) && (
k == 0))
6514 WerrorS(
"Provided number of minors to be computed is zero.");
6517 if ((!noAlgorithm) && (strcmp(algorithm,
"Bareiss") != 0)
6518 && (strcmp(algorithm,
"Laplace") != 0)
6519 && (strcmp(algorithm,
"Cache") != 0))
6521 WerrorS(
"Expected as algorithm one of 'B/bareiss', 'L/laplace', or 'C/cache'.");
6524 if ((!noAlgorithm) && (strcmp(algorithm,
"Bareiss") == 0)
6527 Werror(
"Bareiss algorithm not defined over coefficient rings %s",
6528 "with zero divisors.");
6531 if ((mk < 1) || (mk >
m->rows()) || (mk >
m->cols()))
6540 if ((!noAlgorithm) && (strcmp(algorithm,
"Cache") == 0)
6541 && (noCacheMinors || noCacheMonomials))
6544 cacheMonomials = 100000;
6550 (noIdeal ? 0 : IasSB),
false);
6551 else if (strcmp(algorithm,
"Cache") == 0)
6553 (noIdeal ? 0 : IasSB), 3, cacheMinors,
6554 cacheMonomials,
false);
6557 (noIdeal ? 0 : IasSB),
false);
6565 WerrorS(
"3rd argument must have a name");
6568 int maxl=(int)(
long)
v->Data();
6571 WerrorS(
"length for res must not be negative");
6577 ideal u_id=(ideal)u->
Data();
6586 "full resolution in a qring may be infinite, setting max length to %d",
6600 int add_row_shift=0;
6604 add_row_shift = ww->
min_in();
6605 (*ww) -= add_row_shift;
6609 u_id=(ideal)u->
CopyD();
6624 res->data=(
void *)r;
6625 if ((weights!=
NULL) && (ww!=
NULL)) {
delete ww; ww=
NULL; }
6629 if (weights!=
NULL) (*ww) += add_row_shift;
6650 (
const char *)
w->Data());
6662 if ((
v->name==
NULL) || (!kernel_cmd && (
w->name==
NULL)))
6664 WerrorS(
"2nd/3rd arguments must have names");
6668 const char *ring_name=u->
Name();
6675 if ((preim_ring==
NULL)
6678 Werror(
"preimage ring `%s` is not the basering",mapping->preimage);
6694 Werror(
"`%s` is not defined in `%s`",
v->name,ring_name);
6698 if (kernel_cmd) image=
idInit(1,1);
6715 Werror(
"`%s` is not defined in `%s`",
w->name,ring_name);
6722 WarnS(
"preimage in local qring may be wrong: use Ring::preimageLoc instead");
6731 int i=(int)(
long)u->
Data();
6732 int r=(int)(
long)
v->Data();
6733 int c=(int)(
long)
w->Data();
6734 if ((r<=0) || (c<=0))
return TRUE;
6750 res->data = (
char *)iv;
6760 Werror(
"no random function defined for coeff %d",
cf->type);
6766 number2 nn=(number2)
omAlloc(
sizeof(*nn));
6776 int &ringvar, poly &monomexpr)
6778 monomexpr=(poly)
w->Data();
6779 poly
p=(poly)
v->Data();
6783 Werror(
"`%s` substitutes a ringvar only by a term",
6788 if ((ringvar=
pVar(
p))==0)
6797 WerrorS(
"ringvar/par expected");
6821 if (nok)
return TRUE;
6822 poly
p=(poly)u->
Data();
6827 (monomexpr!=
NULL) && (
p!=
NULL) && (mm!=0) &&
6830 Warn(
"possible OVERFLOW in subst, max exponent is %ld, substituting deg %d by deg %d",
currRing->bitmask/2,
pTotaldegree(monomexpr), mm);
6842 WerrorS(
"Substituting parameters not implemented for Letterplace rings.");
6854 if (nok)
return TRUE;
6855 ideal
id=(ideal)u->
Data();
6866 if ((
p!=
NULL) && (mm!=0) &&
6867 ((
unsigned long)deg_monexp > (
currRing->bitmask / (
unsigned long)mm/2)))
6875 Warn(
"possible OVERFLOW in subst, max exponent is %ld",
currRing->bitmask/2);
6889 WerrorS(
"Substituting parameters not implemented for Letterplace rings.");
6919 int mi=(int)(
long)
v->Data();
6920 int ni=(int)(
long)
w->Data();
6923 Werror(
"converting ideal to matrix: dimensions must be positive(%dx%d)",mi,ni);
6934 memcpy(
m->m,I->m,
i*
sizeof(poly));
6935 memset(I->m,0,
i*
sizeof(poly));
6937 res->data = (
char *)
m;
6942 int mi=(int)(
long)
v->Data();
6943 int ni=(int)(
long)
w->Data();
6946 Werror(
"converting module to matrix: dimensions must be positive(%dx%d)",mi,ni);
6955 int mi=(int)(
long)
v->Data();
6956 int ni=(int)(
long)
w->Data();
6959 Werror(
"converting matrix to matrix: dimensions must be positive(%dx%d)",mi,ni);
6976 res->data = (
char *)
m;
6999 ideal u_id=(ideal)u->
Data();
7000 ideal v_id=(ideal)
v->Data();
7003 if ((*w_u).compare((w_v))!=0)
7005 WarnS(
"incompatible weights");
7006 delete w_u; w_u=
NULL;
7014 WarnS(
"wrong weights");
7015 delete w_u; w_u=
NULL;
7021 res->data = (
char *)
idModulo(u_id,v_id ,hom,&w_u, &(
h->data.umatrix));
7050 ideal u_id=(ideal)u->
Data();
7052 ideal v_id=(ideal)
v->Data();
7055 if ((*w_u).compare((w_v))!=0)
7057 WarnS(
"incompatible weights");
7058 delete w_u; w_u=
NULL;
7066 WarnS(
"wrong weights");
7067 delete w_u; w_u=
NULL;
7083 int mi=(int)(
long)
v->Data();
7084 int ni=(int)(
long)
w->Data();
7087 Werror(
"converting to smatrix: dimensions must be positive(%dx%d)",mi,ni);
7104 Werror(
"At least %d ncgen variables are needed for this computation.", ul);
7127 Werror(
"At least %d ncgen variables are needed for this computation.",
IDELEMS((ideal)u->
Data()));
7135 &(hw->
data.uideal));
7149 Werror(
"At least %d ncgen variables are needed for this computation.",
IDELEMS((ideal)u->
Data()));
7166 Werror(
"`%s` must be 0-dimensional",
v->Name());
7178 Werror(
"`%s` must be 0-dimensional",
v->Name());
7189 0,(
int)(
long)
w->Data());
7196 0,(
int)(
long)
w->Data());
7202 int maxl=(int)
v->Data();
7203 ideal u_id=(ideal)u->
Data();
7221 WarnS(
"wrong weights");
7250 yes = (strcmp((
char *)
res->data, (
char *)
w->Data()) == 0);
7252 res->data = (
void *)(
long)yes;
7266 ideal u_id=(ideal)(u->
Data());
7271 WarnS(
"wrong weights");
7313 lineno=(int)(
long)
v->next->Data();
7352 if (
v->next->next->next->rtyp!=
IDHDL)
return TRUE;
7356 mp_Coef2((poly)
v->Data(),(poly)
v->next->Data(),
7377 WarnS(
"<module>,<module>,<int>[,<intvec>] expected!");
7384 ideal P=(ideal)w1.
Data();
7385 ideal
Q=(ideal)w2.
Data();
7387 int n=(int)(
long)v3->
Data();
7394 while( (
i > 0) && ((*w0) > 0) )
7400 WarnS(
"not all weights are positive!");
7419 L->
m[1].
data=(
void *)
R->m[0];
7502 res->data=(
char *)
id;
7507 ring r=(ring)u->
Data();
7509 leftv perm_var_l=
v->next;
7510 leftv perm_par_l=
v->next->next;
7515 WerrorS(
"fetch(<ring>,<name>[,<intvec>[,<intvec>])");
7520 if (perm_par_l!=
NULL)
7529 int par_perm_size=0;
7538 par_perm_size=
rPar(r);
7546 par_perm_size=
rPar(r);
7548 if (par_perm_size!=0)
7549 par_perm=(
int *)
omAlloc0(par_perm_size*
sizeof(
int));
7551 if (perm_par_l==
NULL)
7553 if (par_perm_size!=0)
7558 if (par_perm_size==0)
WarnS(
"source ring has no parameters");
7567 Warn(
"invalid entry for par %d: %d\n",
i,par_perm[
i]);
7579 Warn(
"invalid entry for var %d: %d\n",
i,perm[
i]);
7588 Print(
"// var nr %d: %s -> var %s\n",
i,r->names[
i-1],
currRing->names[perm[
i]-1]);
7594 if (par_perm[
i-1]<0)
7595 Print(
"// par nr %d: %s -> par %s\n",
7597 else if (par_perm[
i-1]>0)
7598 Print(
"// par nr %d: %s -> var %s\n",
7608 perm,par_perm,par_perm_size,nMap)))
7626 Werror(
"no identity map from %s (%s -> %s)",u->
Fullname(),s1,s2);
7633 int l=
v->listLength();
7664 WerrorS(
"cannot convert to ideal or module");
7675 r[
i]=(ideal)
h->Data();
7687 r[
i]=(ideal)tmp.
Data();
7719 matrix iMat;
int invertible;
7725 int rr = aMat->
rows();
7726 int cc = aMat->
cols();
7729 Werror(
"given matrix (%d x %d) is not quadratic, hence not invertible", rr, cc);
7734 WerrorS(
"matrix must be constant");
7744 int rr = uMat->
rows();
7745 int cc = uMat->
cols();
7748 Werror(
"third matrix (%d x %d) is not quadratic, hence not invertible",
7757 WerrorS(
"matricesx must be constant");
7764 Werror(
"expected either one or three matrices");
7782 res->data=(
char*)ll;
7806 WerrorS(
"expected exactly three matrices and one vector as input");
7816 Werror(
"first matrix (%d x %d) is not quadratic",
7822 Werror(
"second matrix (%d x %d) is not quadratic",
7828 Werror(
"second matrix (%d x %d) and third matrix (%d x %d) do not fit",
7834 Werror(
"third matrix (%d x %d) and vector (%d x 1) do not fit",
7843 WerrorS(
"matrices must be constant");
7863 res->data=(
char*)ll;
7876 (*iv)[
i]=(int)(
long)
h->Data();
7895 res->data=(
char *)iv;
7942 number tp = (number)
h->Data();
7948 for(
int j=0;
j<
b->cols();
j++)
7956 res->data=(
char *)bim;
7973 WerrorS(
"2nd argument must be a unit");
7986 WerrorS(
"2nd argument must be a diagonal matrix of units");
7991 (
int)(
long)u3->
Data(),
8000 Werror(
"%s(`poly`,`poly`,`int`,`intvec`) exppected",
8018 else if (
w->next==
NULL)
8045 && ((strcmp(u->
Name(),
"real")==0) || (strcmp(u->
Name(),
"complex")==0)))
8055 else if ((
v->next==
NULL)
8066 Werror(
"`%s` undefined or `int` expected while building `%s(`",u->
name,u->
name);
8070 size_t len=strlen(u->
name) + 12*
l;
8071 char * nn = (
char *)
omAlloc(len);
8072 snprintf(nn,len,
"%s(%d",u->
name,(
int)(
long)
v->Data());
8076 while (*
s!=
'\0')
s++;
8080 Werror(
"`%s` undefined or `int` expected while building `%s(`",u->
name,u->
name);
8084 snprintf(
s,len-(nn-
s),
",%d",(
int)(
long)
v->Data());
8085 }
while (
v->next!=
NULL);
8086 while (*
s!=
'\0')
s++;
8107 ideal I=(ideal)u->
Data();
8120 Werror(
"%s(`ideal`,`ideal`,`matrix`,`string`)\n"
8121 "or (`module`,`module`,`matrix`,`string`) expected",
8153 syz=&(hw->
data.uideal);
8160 syz=&(hw->
data.uideal);
8161 h11=(ideal)u4->
Data();
8166 h11=(ideal)u4->
Data();
8170 Werror(
"%s(`ideal/module`,`matrix`[,`module`][,`string`][,`ideal/module`]) expected",
Tok2Cmdname(
iiOp));
8182 syz=&(hw->
data.uideal);
8184 h11=(ideal)u5->
Data();
8188 Werror(
"%s(`ideal/module`,`matrix`[,`module`][,`string`][,`ideal/module`]) expected",
Tok2Cmdname(
iiOp));
8198 Werror(
"At least %d ncgen variables are needed for this computation.",
IDELEMS((ideal)u->
Data()));
8219 if (
v!=
NULL) sl =
v->listLength();
8223 int add_row_shift = 0;
8225 if (weights!=
NULL) add_row_shift=weights->
min_in();
8252 Werror(
"`%s` is undefined",
h->Fullname());
8264 res->data=(
char *)L;
8279 u_id=(ideal)u->
Data();
8280 v_id=(ideal)
v->Data();
8307 if ((*w_u).compare((w_v))!=0)
8309 WarnS(
"incompatible weights");
8310 delete w_u; w_u=
NULL;
8318 WarnS(
"wrong weights");
8319 delete w_u; w_u=
NULL;
8325 res->data = (
char *)
idModulo(u_id,v_id ,hom,&w_u, &(
h->data.umatrix),alg);
8380 WerrorS(
"2nd argument must be a diagonal matrix of units");
8387 (
int)(
long)u4->
Data()
8397 else u1p=(poly)u1->
Data();
8400 else u2p=(poly)u2->
Data();
8404 WerrorS(
"2nd argument must be a unit");
8433 WerrorS(
"2nd argument must be a diagonal matrix of units");
8440 (
int)(
long)u4->
Data(),
8452 WerrorS(
"2nd argument must be a unit");
8463 Werror(
"%s(`ideal`,`ideal`,`matrix`,`int`,`intvec`) exppected",
8475 for(
i=0;
i<nCount;
i++)
8496 unsigned nCount = (
sArithBase.nCmdUsed-1) / 3;
8504 for (
unsigned i=0;
i<nCount;
i++)
8516 for (
int i = 0;
i < bb_list->
count;
i++)
8526 for (
unsigned i=0;
i<nCount;
i++)
8550 for (
int i = 0;
i < bb_list->
count;
i++)
8566 res->data=(
void *)L;
8577 int n =
v->listLength();
8580 res->data =
v->String();
8584 char** slist = (
char**)
omAlloc(n*
sizeof(
char*));
8587 for (
i=0,
j=0;
i<n;
i++,
v =
v ->next)
8589 slist[
i] =
v->String();
8591 j+=strlen(slist[
i]);
8593 char*
s = (
char*)
omAlloc((
j+1)*
sizeof(
char));
8597 strcat(
s, slist[
i]);
8617#if defined(__alpha) && !defined(linux)
8620 void usleep(
unsigned long usec);
8649 leftv u =
v;
int factorsGiven = 0;
8652 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
8655 else h = (poly)u->
Data();
8659 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
8662 else d = (int)(
long)u->
Data();
8668 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
8673 f0 = (poly)u->
Data();
8683 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
8688 xIndex = (int)(
long)u->
Data();
8689 yIndex = (int)(
long)u->
next->
Data();
8695 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
8702 WerrorS(
"expected non-constant polynomial argument(s)");
8706 if ((xIndex < 1) || (n < xIndex))
8708 Werror(
"index for variable x (%d) out of range [1..%d]", xIndex, n);
8711 if ((yIndex < 1) || (n < yIndex))
8713 Werror(
"index for variable y (%d) out of range [1..%d]", yIndex, n);
8716 if (xIndex == yIndex)
8718 WerrorS(
"expected distinct indices for variables x and y");
8723 if (factorsGiven == 0)
8737 WerrorS(
"expected h(0,y) to have exactly two distinct monic factors");
8752 res->data = (
char*)L;
8760 (
v->next->next->next->Typ() !=
INT_CMD))
8763#if defined(HAVE_USLEEP)
8764 if (((
long)
res->data) == 0L)
8766 int i_s = (int)(
long)
v->next->next->next->Data();
8769 usleep((
int)(
long)
v->next->next->next->Data());
8773#elif defined(HAVE_SLEEP)
8774 if (((
int)
res->data) == 0)
8776 int i_s = (int)
v->next->next->next->Data();
8779 si_sleep((is - 1)/1000000 + 1);
8798 if ((rest!=
NULL) && (!
b))
8805 memcpy(
res,&tmp_res,
sizeof(tmp_res));
8820 WerrorS(
"expected (matrix, number, number, number) as arguments");
8825 (number)(
v->Data()),
8826 (number)(
w->Data()),
8827 (number)(
x->Data()));
8837 ideal i1=(ideal)(u->
Data());
8843 WerrorS(
"expected `std(`ideal/module`,`poly/vector`,`bigintvec`,`intvec`)");
8858 i0->m[0]=(poly)
v->Data();
8863 i0=(ideal)
v->Data();
8867 WerrorS(
"expected `std(`ideal/module`,`poly/vector`,`intvec`,`intvec`)");
8874 memset(i0->m,0,
sizeof(poly)*
IDELEMS(i0));
8884 WarnS(
"wrong weights");
8918 WerrorS(
"expected `cring` [ `id` ... ]");
8924 char **n=(
char**)
omAlloc0(
N*
sizeof(
char*));
8925 for(
int i=0;
i<
N;
i++,names=names->
next)
8927 n[
i]=(
char *)names->
Name();
8939 r->start =(int)(
long)e->
Data();
8944 int c=(int)(
long)u->
Data();
8948 PrintS(
"delete all variables\n");
8953 default:
WerrorS(
"not implemented");
8958#define NULL_VAL NULL
8962#include "iparith.inc"
8980 while (dA2[
i].cmd==op)
8982 if ((at==dA2[
i].arg1)
8983 && (bt==dA2[
i].arg2))
8994 WerrorS(
"no ring active (3)");
9000 if ((call_failed=dA2[
i].
p(
res,a,
b)))
9020 while (dA2[
i].cmd==op)
9038 WerrorS(
"no ring active (4)");
9047 || (call_failed=dA2[
i].
p(
res,an,bn)));
9086 Werror(
"`%s` is not defined",
s);
9093 Werror(
"%s(`%s`,`%s`) failed"
9098 Werror(
"`%s` %s `%s` failed"
9103 while (dA2[
i].cmd==op)
9105 if(((at==dA2[
i].arg1)||(bt==dA2[
i].arg2))
9110 Werror(
"expected %s(`%s`,`%s`)"
9113 Werror(
"expected `%s` %s `%s`"
9152 memcpy(&d->arg1,a,
sizeof(
sleftv));
9154 memcpy(&d->arg2,
b,
sizeof(
sleftv));
9158 res->data=(
char *)d;
9171 if(!bb->blackbox_Op2(op,
res,a,
b))
return FALSE;
9177 else if ((bt>
MAX_TOK)&&(op!=
'('))
9182 if(!bb->blackbox_Op2(op,
res,a,
b))
return FALSE;
9210 while (dA1[
i].cmd==op)
9222 WerrorS(
"no ring active (5)");
9229 if ((call_failed=dA1[
i].
p(
res,a)))
9249 while (dA1[
i].cmd==op)
9265 WerrorS(
"no ring active (6)");
9273 || (call_failed=dA1[
i].
p(
res,an)));
9314 while (dA1[
i].cmd==op)
9318 Werror(
"expected %s(`%s`)"
9340 memcpy(&d->arg1,a,
sizeof(
sleftv));
9344 res->data=(
char *)d;
9357 res->data=bb->blackbox_Init(bb);
9358 return bb->blackbox_Assign(
res,a);
9368 if(!bb->blackbox_Op1(op,
res,a))
return FALSE;
9388 const struct sValCmd3* dA3,
int at,
int bt,
int ct,
9399 while (dA3[
i].cmd==op)
9401 if ((at==dA3[
i].arg1)
9402 && (bt==dA3[
i].arg2)
9403 && (ct==dA3[
i].arg3))
9411 Print(
"call %s(%s,%s,%s)\n",
9413 if ((call_failed=dA3[
i].
p(
res,a,
b,c)))
9434 while (dA3[
i].cmd==op)
9450 Print(
"call %s(%s,%s,%s)\n",
9456 || (call_failed=dA3[
i].
p(
res,an,bn,cn)));
9505 Werror(
"`%s` is not defined",
s);
9511 Werror(
"%s(`%s`,`%s`,`%s`) failed"
9515 while (dA3[
i].cmd==op)
9517 if(((at==dA3[
i].arg1)
9519 ||(ct==dA3[
i].arg3))
9522 Werror(
"expected %s(`%s`,`%s`,`%s`)"
9551 memcpy(&d->arg1,a,
sizeof(
sleftv));
9553 memcpy(&d->arg2,
b,
sizeof(
sleftv));
9555 memcpy(&d->arg3,c,
sizeof(
sleftv));
9559 res->data=(
char *)d;
9571 if(!bb->blackbox_Op3(op,
res,a,
b,c))
return FALSE;
9621 if(
v==
NULL)
return failed;
9623 if(cnt)
v->next =
NULL;
9643 res->data=(
char *)d;
9648 memcpy(&d->arg1,a,
sizeof(
sleftv));
9681 if(!bb->blackbox_OpM(op,
res,a))
return FALSE;
9696 if ((args==
dArithM[
i].number_of_args)
9698 || ((
dArithM[
i].number_of_args==-2)&&(args>0)))
9749 if (strcmp(n,
sArithBase.sCmds[an].name) == 0)
9754 else if ((an!=en) && (strcmp(n,
sArithBase.sCmds[en].name) == 0))
9796 Warn(
"outdated identifier `%s` used - please change your code",
9847 if (op==dArithTab[
p].cmd)
return dArithTab[
p].start;
9848 if (op<dArithTab[
p].cmd) e=
p-1;
9868 if (tok==
ANY_TYPE)
return "any_type";
9869 if (tok==
COMMAND)
return "command";
9870 if (tok==
NONE)
return "nothing";
9882 if (tok==
IDHDL)
return "identifier";
9918 cmdnames *pCmdL = (cmdnames*)a;
9919 cmdnames *pCmdR = (cmdnames*)
b;
9924 if(pCmdL->name==
NULL)
return 1;
9925 if(pCmdR->name==
NULL)
return -1;
9928 if(strcmp(pCmdL->name,
"$INVALID$")==0)
return -1;
9929 if(strcmp(pCmdR->name,
"$INVALID$")==0)
return 1;
9932 if (pCmdL->tokval==-1)
9934 if (pCmdR->tokval==-1)
9935 return strcmp(pCmdL->name, pCmdR->name);
9940 if(pCmdR->tokval==-1)
return -1;
9942 return strcmp(pCmdL->name, pCmdR->name);
9999 if (strcmp(szName,
sArithBase.sCmds[an].name) == 0)
10004 else if (strcmp(szName,
sArithBase.sCmds[en].name) == 0)
10050 if(nPos<0)
return NULL;
10059 if(szName==
NULL)
return -1;
10062 if(nIndex<0 || nIndex>=(
int)
sArithBase.nCmdUsed)
10064 Print(
"'%s' not found (%d)\n", szName, nIndex);
10084 const char *szName,
10107 if(szName==
NULL)
return -1;
10111 Print(
"'%s' already exists at %d\n", szName, nIndex);
10148 WerrorS(
"not implemented for non-commutative rings");
10170 WerrorS(
"not implemented for rings with rings as coeffients");
10175 WerrorS(
"not implemented for rings with rings as coeffients and non-global orderings");
10182 WerrorS(
"domain required as coeffients");
10188 WarnS(
"considering the image in Q[...]");
10200 WerrorS(
"not implemented for rings with rings as coeffients (except ZZ)");
10206 int return_type=c->
m[0].
Typ();
10223 for (
unsigned i=0;
i<=(unsigned)c->
nr;
i++)
10228 if (bo) {
Werror(
"chinrem failed for list entry %d",
i+1);
break;}
10238 WerrorS(
"poly/ideal/module/matrix/list expected");
10248 cf=
cf->extRing->cf;
10257 Werror(
"wromg number of primes (%d:%d) for chinrem",pl->
nr+1,rl);
10264 if (
p->length()!=rl)
10266 Werror(
"wromg number of primes (%d:%d) for chinrem",
p->length(),rl);
10271 ideal *
x=(ideal *)
omAlloc(rl*
sizeof(ideal));
10277 for(
i=rl-1;
i>=0;
i--)
10279 if (c->
m[
i].
Typ()!=return_type)
10304 xx=(number *)
omAlloc(rl*
sizeof(number));
10305 for(
i=rl-1;
i>=0;
i--)
10317 Werror(
"bigint expected at pos %d",
i+1);
10324 number *q=(number *)
omAlloc(rl*
sizeof(number));
10327 for(
i=rl-1;
i>=0;
i--)
10334 for(
i=rl-1;
i>=0;
i--)
10346 Werror(
"bigint expected at pos %d",
i+1);
10362 res->data=(
char *)n;
10385 for(
i=rl-1;
i>=0;
i--)
10390 res->rtyp=return_type;
10400 for (
unsigned i=0;
i<=(unsigned)c->
nr;
i++)
10405 if (bo) {
Werror(
"farey failed for list entry %d",
i+1);
break;}
10418 if (at < bt)
return -1;
10419 if (at > bt)
return 1;
10420 int tab_pos=
iiTabIndex(dArithTab2,JJTAB2LEN,
'<');
10428 unsigned long ad=(
unsigned long)a->
Data();
10429 unsigned long bd=(
unsigned long)
b->Data();
10430 if (ad<bd)
return -1;
10431 else if (ad==bd)
return 0;
10442 unsigned long ad=(
unsigned long)a->
Data();
10443 unsigned long bd=(
unsigned long)
b->Data();
10444 if (ad<bd)
return -1;
10445 else if (ad==bd)
return 0;
10448 else if (tmp.
data==
NULL)
return 1;
10476 for(
j=
i;
j<len;
j++)
l->m[
j]=
l->m[
j+1];
10477 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 atSet(idhdl root, char *name, void *data, int typ)
void * atGet(idhdl root, const char *name, int t, void *defaultReturnValue)
static int si_max(const int a, const int b)
static int si_min(const int a, const int b)
intvec * bim2iv(bigintmat *b)
bigintmat * bimMult(bigintmat *a, bigintmat *b)
bigintmat * bimSub(bigintmat *a, 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...
#define BIMATELEM(M, I, J)
struct blackbox_list * getBlackboxTypes()
return array of all define types.
const char * getBlackboxName(const int t)
return the name to the type given by t (r/o)
blackbox * getBlackboxStuff(const int t)
return the structure to the type given by t
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)
VAR int singclap_factorize_retry
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)
void set(int i, int j, number n, const coeffs C=NULL)
replace an entry with a copy (delete old + copy new!). NOTE: starts at [1,1]
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 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)
@ 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 char * nCoeffString(const coeffs cf)
TODO: make it a virtual method of coeffs, together with: Decompose & Compose, rParameter & rPar.
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 char * nCoeffName(const coeffs cf)
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.
static BOOLEAN pa(leftv res, leftv args)
static BOOLEAN pb(leftv res, leftv args)
const CanonicalForm int s
const Variable & v
< [in] a sqrfree bivariate poly
‘factory.h’ is the user interface to Factory.
VAR void(* WerrorS_callback)(const char *s)
FILE * feFopen(const char *path, const char *mode, char *where, short useWerror, short path_only)
void WerrorS(const char *s)
static void * feOptValue(feOptIndex opt)
VAR char my_yylinebuf[80]
void monitor(void *F, int mode)
if(!FE_OPT_NO_SHELL_FLAG)
void newBuffer(char *s, feBufferTypes t, procinfo *pi, int lineno)
This file is work in progress and currently not part of the official Singular.
matrix singflint_kernel(matrix m, const ring R)
static int _gentable_sort_cmds(const void *a, const void *b)
compares to entry of cmdsname-list
int iiTestConvert(int inputType, int outputType)
const char * iiTwoOps(int t)
const char * Tok2Cmdname(int tok)
static int RingDependend(int t)
BOOLEAN yyInRingConstruction
ideal scKBase(int deg, ideal s, ideal Q, intvec *mv)
int scDimIntRing(ideal vid, ideal Q)
scDimInt for ring-coefficients
long scMult0Int(ideal S, ideal Q)
intvec * scIndIntvec(ideal S, ideal Q)
int lp_kDim(const ideal _G)
int lp_gkDim(const ideal _G)
int scMultInt(ideal S, ideal Q)
poly hFirstSeries0m(ideal A, ideal Q, intvec *wdegree, intvec *shifts, const ring src, const ring Qt)
poly hFirstSeries0p(ideal A, ideal Q, intvec *wdegree, const ring src, const ring Qt)
intvec * hSecondSeries(intvec *hseries1)
intvec * hFirstSeries(ideal A, intvec *module_w, ideal Q, intvec *wdegree)
bigintmat * hFirstSeries0b(ideal I, ideal Q, intvec *wdegree, intvec *shifts, const ring src, const coeffs biv_cf)
bigintmat * hSecondSeries0b(ideal I, ideal Q, intvec *wdegree, intvec *shifts, const ring src, const coeffs biv_cf)
void scDegree(ideal S, intvec *modulweight, ideal Q)
void hLookSeries(ideal S, intvec *modulweight, ideal Q, intvec *wdegree)
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)
ideal idMinEmbedding_with_map_v(ideal arg, intvec **w, ideal &trans, int *g)
ideal idElimination2(ideal h1, poly delVar, bigintmat *hilb, GbVariant alg)
matrix idDiffOp(ideal I, ideal J, BOOLEAN multiply)
ideal idElimination(ideal h1, poly delVar, intvec *hilb, GbVariant alg)
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)
represents the generators of submod in terms of the generators of mod (Matrix(SM)*U-Matrix(rest)) = M...
ideal idModulo(ideal h2, ideal h1, tHomog hom, intvec **w, matrix *T, GbVariant alg)
ideal idMinBase(ideal h1, ideal *SB)
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 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)
static intvec * idSort(ideal id, BOOLEAN nolex=TRUE)
ideal interpolation(const std::vector< ideal > &L, intvec *v)
static BOOLEAN length(leftv result, leftv arg)
intvec * ivSub(intvec *a, intvec *b)
intvec * ivAdd(intvec *a, intvec *b)
intvec * ivMult(intvec *a, intvec *b)
intvec * ivTranp(intvec *o)
intvec * ivCopy(const intvec *o)
#define IMATELEM(M, I, J)
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 jjBIV2IV(leftv res, 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 jjHOMOG1_WI(leftv res, leftv v, leftv u)
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 jjCOEFFS1(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 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)
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 jjHOMOG_W_M(leftv res, leftv v1, leftv v2, leftv v3)
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)
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 jjKERNEL_M(leftv res, leftv v)
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 jjBIGINTVEC_PL(leftv res, leftv v)
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)
static BOOLEAN jjDIVISION4(leftv res, leftv v)
unsigned nLastIdentifier
valid identifiers 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 jjMRES_MAP(leftv res, leftv u, leftv v, leftv ma)
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)
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 jjHILBERT3Qt(leftv res, leftv u, leftv v, leftv w)
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)
const char * Tok2Cmdname(int tok)
static BOOLEAN jjRPLUS(leftv res, leftv u, leftv v)
static BOOLEAN jjKERNEL_SM(leftv res, 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 jjDelete_ID_IV(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)
char * iiArithGetCmd(int nPos)
static BOOLEAN jjSTATUS_M(leftv res, leftv v)
static BOOLEAN jjCALL1ARG(leftv res, leftv v)
static BOOLEAN jjPRUNE_MAP(leftv res, leftv v, leftv ma)
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[]
BOOLEAN(* proc3)(leftv, leftv, leftv, leftv)
const struct sValCmd2 dArith2[]
BOOLEAN(* proc2)(leftv, leftv, leftv)
BOOLEAN setOption(leftv res, leftv v)
BOOLEAN(* proc1)(leftv, leftv)
const struct sValCmdM dArithM[]
const struct sValCmd3 dArith3[]
ideal id_Farey_0(ideal x, number N, const ring r)
long kHomModDeg(poly p, const ring r)
ideal kMin_std2(ideal F, ideal Q, tHomog h, intvec **w, ideal &M, bigintmat *hilb, int syzComp, int reduced)
ideal kInterRed(ideal F, const ideal Q)
ideal kStd2(ideal F, ideal Q, tHomog h, intvec **w, bigintmat *hilb, int syzComp, int newIdeal, intvec *vw, s_poly_proc_t sp)
generic interface to GB/SB computations, large hilbert vectors
ideal kSba(ideal F, ideal Q, tHomog h, intvec **w, int sbaOrder, int arri, bigintmat *hilb, int syzComp, int newIdeal, intvec *vw)
poly kNF(ideal F, ideal Q, poly p, int syzComp, int lazyReduce)
ideal rightgb(ideal F, const 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 maFetchPermLP(const ring preimage_r, const ring dst_r, int *perm)
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)
matrix mp_MultI(matrix a, long f, const ring R)
c = f*a
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_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 omFreeBinAddr(addr)
#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 int pLength(poly a)
static long p_MinComp(poly p, ring lmRing, ring tailRing)
static void p_Delete(poly *p, const ring r)
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
Compatibility 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.
#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
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...
char * rCharStr(const ring r)
TODO: make it a virtual method of coeffs, together with: Decompose & Compose, rParameter & rPar.
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_Zp_a(const ring r)
static BOOLEAN rField_is_Z(const ring r)
static BOOLEAN rField_is_Zp(const ring r)
static BOOLEAN rHasLocalOrMixedOrdering(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 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 char const ** rParameter(const ring r)
(r->cf->parameter)
static BOOLEAN rField_is_numeric(const ring r)
static BOOLEAN rField_is_GF(const ring r)
static short rVar(const ring r)
#define rVar(r) (r->N)
static BOOLEAN rHasMixedOrdering(const ring r)
#define rField_is_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)
BOOLEAN slPrepClose(si_link l)
leftv slRead(si_link l, leftv a)
BOOLEAN slDump(si_link l)
BOOLEAN slGetDump(si_link l)
const char * slStatus(si_link l, const char *request)
BOOLEAN slClose(si_link l)
BOOLEAN slOpen(si_link l, short flag, leftv h)
#define SI_LINK_SET_CLOSE_P(l)
int slStatusSsiL(lists L, int timeout, BOOLEAN *ignore=NULL)
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
BOOLEAN id_HomModuleW(ideal id, ideal Q, const intvec *w, const intvec *module_w, const ring r)
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)
ideal id_Head(ideal h, const ring r)
returns the ideals of initial terms
BOOLEAN id_HomIdealW(ideal id, ideal Q, const intvec *w, const ring r)
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)
static int idElem(const ideal F)
number of non-zero polys in F
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)
resolvente syResolvente(ideal arg, int maxlength, int *length, intvec ***weights, BOOLEAN minim)
syStrategy syMres_with_map(ideal arg, int maxlength, intvec *w, ideal &trans)
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 syCopy(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)
int name
New type name for int.
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)