13#include "factory/factory.h"
92 #define NC_MASK (3+64)
99 #define ZERODIVISOR_MASK 8
102 #define ZERODIVISOR_MASK 0
104#define ALLOW_PLURAL 1
109#define NO_ZERODIVISOR 8
110#define ALLOW_ZERODIVISOR 0
112#define ALLOW_NC ALLOW_LP|ALLOW_PLURAL
114#define ALLOW_ZZ (ALLOW_RING|NO_ZERODIVISOR)
120#define NO_CONVERSION 32
124#define bit31 SIZEOF_LONG*8-1
209extern int iiArithAddCmd(
const char *szName,
short nAlias,
short nTokval,
210 short nToktype,
short nPos=-1);
220#define ii_div_by_0 "div. by 0"
229 if ((
long)
i==
l)
return l;
250 long bb = (long)(
v->Data());
255 case '+': cc=
bimAdd(aa,bb);
break;
256 case '-': cc=
bimSub(aa,bb);
break;
257 case '*': cc=
bimMult(aa,bb);
break;
259 res->data=(
char *)cc;
269 number bb = (number)(
v->Data());
276 res->data=(
char *)cc;
286 int bb = (int)(
long)(
v->Data());
290 case '+': (*aa) += bb;
break;
291 case '-': (*aa) -= bb;
break;
292 case '*': (*aa) *= bb;
break;
295 case '%': (*aa) %= bb;
break;
297 res->data=(
char *)aa;
307 int bb = (int)(
long)(
v->Data());
316 res->data=(
char *)aa;
325 int l=(int)(
long)
v->Data();
328 int d=(int)(
long)u->
Data();
331 for(
i=
l-1;
i>=0;
i--) { (*vv)[
i]=d; }
332 res->data=(
char *)vv;
338 res->data=(
char *)
new intvec((
int)(long)u->
Data(),(int)(
long)
v->Data());
350 res->data = (
char *) (r<0);
353 res->data = (
char *) (r>0);
356 res->data = (
char *) (r<=0);
359 res->data = (
char *) (r>=0);
363 res->data = (
char *) (r==0);
367 if(r==-2) {
WerrorS(
"size incompatible");
return TRUE; }
378 res->data = (
char *) (r<0);
381 res->data = (
char *) (r>0);
384 res->data = (
char *) (r<=0);
387 res->data = (
char *) (r>=0);
391 res->data = (
char *) (r==0);
395 if(r==-2) {
WerrorS(
"size incompatible");
return TRUE; }
401 int b = (int)(
long)(
v->Data());
406 res->data = (
char *) (r<0);
409 res->data = (
char *) (r>0);
412 res->data = (
char *) (r<=0);
415 res->data = (
char *) (r>=0);
419 res->data = (
char *) (r==0);
434 res->data = (
char *) (
long)(r < 0);
437 res->data = (
char *) (
long)(r > 0);
440 res->data = (
char *) (
long)(r <= 0);
443 res->data = (
char *) (
long)(r >= 0);
447 res->data = (
char *)(
long) (r == 0);
455 poly
p=(poly)u->
Data();
456 poly q=(poly)
v->Data();
461 res->data = (
char *) (r < 0);
464 res->data = (
char *) (r > 0);
467 res->data = (
char *) (r <= 0);
470 res->data = (
char *) (r >= 0);
482 char* a = (
char * )(u->
Data());
483 char*
b = (
char * )(
v->Data());
515 else if (
v->Next()!=
NULL)
525 long b=(long)u->
Data();
526 long e=(long)
v->Data();
535 else if ((e==0)||(
b==1))
553 if(rc/
b!=oldrc) overflow=
TRUE;
557 WarnS(
"int overflow(^), result may be wrong");
559 res->data = (
char *)rc;
565 WerrorS(
"exponent must be non-negative");
571 int e=(int)(
long)
v->Data();
572 number n=(number)u->
Data();
579 WerrorS(
"exponent must be non-negative");
587 int e=(int)(
long)
v->Data();
588 number n=(number)u->
Data();
605 int v_i=(int)(
long)
v->Data();
608 WerrorS(
"exponent must be non-negative");
617 Werror(
"OVERFLOW in power(d=%ld, e=%d, max=%ld)",
660 res->data =
v->CopyD();
661 res->rtyp =
v->Typ();
701 if(isupper(u->
name[0]))
703 const char *c=u->
name+1;
704 while((*c!=
'\0')&&(islower(*c)||(isdigit(*c))||(*c==
'_'))) c++;
709 Print(
"%s of type 'ANY'. Trying load.\n", u->
name);
725 package pa=(package)u->Data();
739 WerrorS(
"reserved name with ::");
751 WerrorS(
"<package>::<id> expected");
758 unsigned long a=(
unsigned long)u->
Data();
759 unsigned long b=(
unsigned long)
v->Data();
761 res->data = (
char *)((
long)c);
764 WarnS(
"int overflow(+), result may be wrong");
775 res->data = (
char *)(
nAdd((number)u->
Data(), (number)
v->Data()));
810 WerrorS(
"intmat size not compatible");
820 WerrorS(
"bigintmat/cmatrix not compatible");
831 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
839 ideal
A=(ideal)u->
Data(); ideal
B=(ideal)
v->Data();
843 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
866 char* a = (
char * )(u->
Data());
867 char*
b = (
char * )(
v->Data());
868 char* r = (
char * )
omAlloc(strlen(a) + strlen(
b) + 1);
876 res->data = (
char *)
idAdd((ideal)u->
Data(),(ideal)
v->Data());
881 void *
ap=u->
Data();
void *bp=
v->Data();
885 unsigned long a=(
unsigned long)
ap;
886 unsigned long b=(
unsigned long)bp;
890 WarnS(
"int overflow(-), result may be wrong");
892 res->data = (
char *)cc;
902 res->data = (
char *)(
nSub((number)u->
Data(), (number)
v->Data()));
938 WerrorS(
"intmat size not compatible");
948 WerrorS(
"bigintmat/cmatrix not compatible");
959 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
968 ideal
A=(ideal)u->
Data(); ideal
B=(ideal)
v->Data();
972 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
981 long a=(long)u->
Data();
982 long b=(long)
v->Data();
984 if ((a!=0)&&(c/a!=
b))
985 WarnS(
"int overflow(*), result may be wrong");
986 res->data = (
char *)c;
1000 res->data = (
char *)(
nMult( (number)u->
Data(), (number)
v->Data()));
1001 number n=(number)
res->data;
1003 res->data=(
char *)n;
1022 Warn(
"possible OVERFLOW in mult(d=%ld, d=%ld, max=%ld)",
1035 Warn(
"possible OVERFLOW in mult(d=%ld, d=%ld, max=%ld)",
1067 WerrorS(
"intmat size not compatible");
1079 WerrorS(
"bigintmat/cmatrix not compatible");
1093 res->data = (
char *)I;
1106 res->data = (
char *)I;
1115 res->data = (
char *)I;
1144 Werror(
"matrix size not compatible(%dx%d, %dx%d) in *",
1154 ideal
A=(ideal)u->
Data(); ideal
B=(ideal)
v->Data();
1158 Werror(
"matrix size not compatible(%dx%d, %dx%d) in *",
1175 res->data = (
char *)(
long)((int)((
long)u->
Data()) >= (
int)((long)
v->Data()));
1193 res->data = (
char *)(
long)((int)((
long)u->
Data()) > (
int)((long)
v->Data()));
1207 res->data = (
char *)(
long)((int)((
long)u->
Data()) <= (
int)((long)
v->Data()));
1220 res->data = (
char *)(
long)((int)((
long)u->
Data()) < (
int)((long)
v->Data()));
1230 int a= (int)(
long)u->
Data();
1231 int b= (int)(
long)
v->Data();
1245 r=((a-c) /
b);
break;
1247 res->data=(
void *)((
long)r);
1252 number q=(number)
v->Data();
1260 res->data = (
char *)q;
1265 number q=(number)
v->Data();
1273 res->data = (
char *)q;
1278 poly q=(poly)
v->Data();
1279 poly
p=(poly)(u->
Data());
1296 poly q=(poly)
v->Data();
1320 res->data=(
char *)mm;
1331 res->data = (
char *)((
int)((long)u->
Data()) == (
int)((long)
v->Data()));
1349 res->data = (
char *)(
long)(u->
Data()==
v->Data());
1355 res->data = (
char *)((
long)
nEqual((number)u->
Data(),(number)
v->Data()));
1361 poly
p=(poly)u->
Data();
1362 poly q=(poly)
v->Data();
1382 res->data = (
char *)((
long)u->
Data() && (long)
v->Data());
1387 res->data = (
char *)((
long)u->
Data() || (long)
v->Data());
1400 while (sh->next !=
NULL) sh=sh->next;
1416 WerrorS(
"indexed object must have a name");
1427 t.
data=(
char *)((
long)(*iv)[
i]);
1450 poly
p=(poly)u->
Data();
1451 int i=(int)(
long)
v->Data();
1471 int i=(int)(
long)
v->Data();
1490 poly
p=(poly)u->
Data();
1498 while ((
p!=
NULL) && (sum>0))
1514 res->data=(
char *)r;
1519 poly
p=(poly)u->
Data();
1520 int i=(int)(
long)
v->Data();
1555 res->data=(
char *)r;
1563 long slen = strlen(u->
name) + 14;
1564 char *nn = (
char*)
omAlloc(slen);
1565 snprintf(nn,slen,
"%s(%d)",u->
name,(
int)(
long)
v->Data());
1578 long slen = strlen(u->
name) + 14;
1579 char *n = (
char*)
omAlloc(slen);
1592 snprintf(n,slen,
"%s(%d)",u->
name,(*iv)[
i]);
1613 while (
h->next!=
NULL)
h=
h->next;
1627 tmp_proc->
id=
"_auto";
1631 d=u->
data; u->
data=(
void *)tmp_proc;
1648 if (sl)
return TRUE;
1687 number *
x=(number *)
omAlloc(rl*
sizeof(number));
1688 number *q=(number *)
omAlloc(rl*
sizeof(number));
1690 for(
i=rl-1;
i>=0;
i--)
1697 for(
i=rl-1;
i>=0;
i--)
1703 res->data=(
char *)n;
1713 number *
x=(number *)
omAlloc(rl*
sizeof(number));
1714 number *q=(number *)
omAlloc(rl*
sizeof(number));
1716 for(
i=rl-1;
i>=0;
i--)
1722 for(
i=rl-1;
i>=0;
i--)
1726 Werror(
"poly expected at pos %d",
i+1);
1727 for(
i=rl-1;
i>=0;
i--)
1739 for(
i=rl-1;
i>=0;
i--)
1751 number n=n_ChineseRemainder(
x,q,rl,
currRing->cf);
1752 for(
i=rl-1;
i>=0;
i--)
1760 for(
i=rl-1;
i>=0;
i--)
1772 int s=(int)(
long)
v->Data();
1781 ideal
M=(ideal)u->
CopyD();
1782 int s=(int)(
long)
v->Data();
1795 poly
p=(poly)
v->Data();
1802 poly
p=(poly)
v->Data();
1809 int i=
pVar((poly)
v->Data());
1828 (ideal)(
v->Data()),
p);
1840 ideal I=(ideal)u->
Data();
1845 res->data = (
char *)((
long)d);
1850 poly
p=(poly)u->
Data();
1856 res->data = (
char *)(d);
1859 res->data=(
char *)(
long)(-1);
1864 int pos=(int)(
long)
v->Data();
1871 int pos=(int)(
long)
v->Data();
1872 ideal I=(ideal)u->
Data();
1879 ideal I=(ideal)u->
Data();
1906 ideal
m=(ideal)u->
Data();
1912 int i=
pVar((poly)
v->Data());
1923 int i=
pVar((poly)
v->Data());
1942 Warn(
"dim(%s,...) may be wrong because the mixed monomial ordering",
v->Name());
1956 ideal vi=(ideal)
v->Data();
1958 ideal ui=(ideal)u->
Data();
1971 res->data=(
char *)L;
2008 number uu=(number)u->
Data();number vv=(number)
v->Data();
2017 res->data=(
char *)L;
2022 int uu=(int)(
long)u->
Data();
int vv=(int)(
long)
v->Data();
2023 int p0=
ABS(uu),p1=
ABS(vv);
2024 int f0 = 1, f1 = 0, g0 = 0, g1 = 1, q, r;
2045 res->data=(
char *)L;
2052 if (ret)
return TRUE;
2055 res->data=(
char *)L;
2056 L->
m[0].
data=(
void *)r;
2068 int sw=(int)(
long)dummy->
Data();
2070 if ((sw<0)||(sw>2)) fac_sw=1;
2083 l->m[0].data=(
void *)
f;
2085 l->m[1].data=(
void *)
v;
2086 res->data=(
void *)
l;
2091 res->data=(
void *)
f;
2104 res->data=(
void *)
p;
2131 res->data=(
void *)L;
2138 number uu=(number)u->
Data();
2139 number vv=(number)
v->Data();
2147 ideal uu=(ideal)u->
Data();
2148 number vv=(number)
v->Data();
2170 ring r=(ring)u->
Data();
2179 int par_perm_size=0;
2189 par_perm_size=
rPar(r);
2203 perm=(
int *)
omAlloc0((r->N+1)*
sizeof(int));
2204 if (par_perm_size!=0)
2205 par_perm=(
int *)
omAlloc0(par_perm_size*
sizeof(
int));
2210 char ** r_par_names=
NULL;
2211 if (r->cf->extRing!=
NULL)
2213 r_par=r->cf->extRing->N;
2214 r_par_names=r->cf->extRing->names;
2217 char ** c_par_names=
NULL;
2221 c_par_names=
currRing->cf->extRing->names;
2225 maFindPerm(r->names, r->N, r_par_names, r_par,
2227 perm,par_perm,
currRing->cf->type);
2229 #ifdef HAVE_SHIFTBBA
2234 perm,par_perm,
currRing->cf->type,r->isLPring);
2249 if (par_perm_size!=0)
2264 Print(
"// par nr %d: %s -> %s\n",
2274 perm,par_perm,par_perm_size,nMap)))
2292 Werror(
"no identity map from %s (%s -> %s)",u->
Fullname(),s1,s2);
2303 char *where=(
char *)u->
Data();
2304 char *what=(
char *)
v->Data();
2305 char *
found = strstr(where,what);
2308 res->data=(
char *)((
found-where)+1);
2317 ideal
id = (ideal)u->
Data();
2318 int max_length = (int)(
long)
v->Data();
2321 WerrorS(
"length for fres must not be negative");
2324 if (max_length == 0)
2329 Warn(
"full resolution in a qring may be infinite, "
2330 "setting max length to %d", max_length);
2333 char *method = (
char *)
w->Data();
2337 if (strcmp(method,
"complete") != 0
2338 && strcmp(method,
"frame") != 0
2339 && strcmp(method,
"extended frame") != 0
2340 && strcmp(method,
"single module") != 0)
2342 WerrorS(
"wrong optional argument for fres");
2347 res->data = (
void *)r;
2355 w->data = (
char *)
"complete";
2369 int uu=(int)(
long)u->
Data();
int vv=(int)(
long)
v->Data();
2370 int p0=
ABS(uu),p1=
ABS(vv);
2377 res->data=(
char *)(
long)p0;
2382 number n1 = (number) u->
Data();
2383 number n2 = (number)
v->Data();
2389 number a=(number) u->
Data();
2390 number
b=(number)
v->Data();
2415 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
2416 PrintS(
"// performed for generic fibre, that is, over Q\n");
2424 switch((
int)(
long)
v->Data())
2427 res->data=(
void *)iv;
2440 int i=
pVar((poly)
v->Data());
2452 WerrorS(
"variable must have weight 1");
2457 int i=
pVar((poly)
v->Data());
2474 WerrorS(
"variable must have weight 1");
2481 ideal v_id=(ideal)
v->Data();
2490 currRing->pLexOrder=save_pLexOrder;
2500 ideal v_id=(ideal)
v->Data();
2520 const int n = L->
nr;
assume (n >= 0);
2521 std::vector<ideal> V(n + 1);
2523 for(
int i = n;
i >= 0;
i--) V[
i] = (ideal)(L->
m[
i].
Data());
2542 res->data = (
char *)
pJet((poly)u->
CopyD(), (int)(
long)
v->Data());
2576 h.data=(
void *)(
long)
IDELEMS((ideal)
v->Data());
2588 Werror(
"At least %d ncgen variables are needed for this computation.", ul);
2608 Werror(
"At least %d ncgen variables are needed for this computation.",
IDELEMS((ideal)u->
Data()));
2625 char *
s=(
char *)u->
Data();
2626 if(strcmp(
s,
"with")==0)
2628 if (strcmp(
s,
"try")==0)
2630 WerrorS(
"invalid second argument");
2631 WerrorS(
"load(\"libname\" [,option]);");
2657 ideal u_id=(ideal)u->
Data();
2658 ideal v_id=(ideal)
v->Data();
2661 if ((*w_u).compare((w_v))!=0)
2663 WarnS(
"incompatible weights");
2664 delete w_u; w_u=
NULL;
2672 WarnS(
"wrong weights");
2673 delete w_u; w_u=
NULL;
2678 res->data = (
char *)
idModulo(u_id,v_id ,hom,&w_u);
2689 number q=(number)
v->Data();
2700 number q=(number)
v->Data();
2711 poly q=(poly)
v->Data();
2717 poly
p=(poly)(u->
Data());
2735 char *opt=(
char *)
v->Data();
2747 if(strcmp(
l->m->type,
"ASCII")!=0)
2749 Werror(
"ASCII link required, not `%s`",
l->m->type);
2754 if (
l->name[0]!=
'\0')
2758 if (
v==
NULL) opt=(
const char*)
"i";
2759 else opt=(
const char *)
v->Data();
2801 const char *
s=(
const char *)u->
Data();
2802 newstruct_desc d=
NULL;
2808 else WerrorS(
"name of newstruct must be longer than 1 character");
2814 int i=(
int)(long)
v->Data();
2822 Werror(
"par number %d out of range 1..%d",
i,
p);
2832 WerrorS(
"basering must NOT be a qring!");
2852 WerrorS(
"basering must NOT be a qring!");
2872 WerrorS(
"basering must NOT be a qring!");
2892 WerrorS(
"basering must NOT be a qring!");
2914 const poly q = (poly)
b->Data();
2927 const poly
p = (poly)a->
Data();
2941 const poly q = (poly)
b->Data();
2946 const poly
p = (poly)a->
Data();
2947 int k=(int)(
long)c->
Data();
2951 for (
int i = 0;
i <
k;
i++)
2963 if (qq ==
NULL)
break;
2969 Werror(
"invalid number of iterations");
2979 ring r = (ring)a->
Data();
2982 res->data =
b->Data();
2983 res->rtyp =
b->rtyp;
2988 Werror(
"%s is not an opposite ring to current ring",a->
Fullname());
3001 res->rtyp = argtype;
3009 res->rtyp = argtype;
3017 res->rtyp = argtype;
3030 res->rtyp = argtype;
3035 WerrorS(
"unsupported type in oppose");
3058 int i=(int)(
long)u->
Data();
3059 int j=(int)(
long)
v->Data();
3060 if (
j-
i <0) {
WerrorS(
"invalid range for random");
return TRUE;}
3067 int isRowEchelon = (int)(
long)
v->Data();
3068 if (isRowEchelon != 1) isRowEchelon = 0;
3069 int rank =
luRank(
m, isRowEchelon);
3070 res->data =(
char *)(
long)rank;
3082 Werror(
"cannot read from `%s`",
s);
3091 ideal vi=(ideal)
v->Data();
3099 ideal ui=(ideal)u->
Data();
3100 ideal vi=(ideal)
v->Data();
3108 int maxl=(int)(
long)
v->Data();
3111 WerrorS(
"length for res must not be negative");
3117 ideal u_id=(ideal)u->
Data();
3126 "full resolution in a qring may be infinite, setting max length to %d",
3140 int add_row_shift=0;
3144 add_row_shift = ww->
min_in();
3145 (*ww) -= add_row_shift;
3163 (
"`lres` not implemented for inhomogeneous input or qring");
3167 WarnS(
"the current implementation of `lres` may not work in the case of a single variable");
3177 (
"`kres` not implemented for inhomogeneous input or qring");
3189 (
"`hres` not implemented for inhomogeneous input or qring");
3192 ideal u_id_copy=
idCopy(u_id);
3194 r=
syHilb(u_id_copy,&dummy);
3207 res->data=(
void *)r;
3208 if ((weights!=
NULL) && (ww!=
NULL)) {
delete ww; ww=
NULL; }
3212 if (weights!=
NULL) (*ww) += add_row_shift;
3242 n1 = (number)u->
CopyD();
3246 i = (int)(
long)u->
Data();
3254 i = (int)(
long)
v->Data();
3258 res->data = (
char*)
l;
3264 res->data = (
char *)r;
3277 res->data = (
char *)r;
3283 int i=
rSum((ring)u->
Data(),(ring)
v->Data(),r);
3284 res->data = (
char *)r;
3287#define SIMPL_NORMALIZE 64
3288#define SIMPL_LMDIV 32
3289#define SIMPL_LMEQ 16
3296 int sw = (int)(
long)
v->Data();
3327 res->data = (
char * )
id;
3334 int sw=(int)(
long)dummy->
Data();
3349 l->m[0].data=(
void *)
f;
3351 l->m[1].data=(
void *)
v;
3352 res->data=(
void *)
l;
3357 res->data=(
void *)
f;
3370 res->data=(
void *)
p;
3391 int sw = (int)(
long)
v->Data();
3402 res->data = (
char * )
p;
3410 ideal u_id=(ideal)(u->
Data());
3435 ideal i1=(ideal)(u->
Data());
3441 poly
p=(poly)
v->Data();
3445 memset(i0->m,0,
sizeof(poly)*
IDELEMS(i0));
3478 i0=(ideal)
v->CopyD();
3480 memset(i0->m,0,
sizeof(poly)*
IDELEMS(i0));
3521 ideal I=(ideal)u->
Data();
3528 int add_row_shift=
w->min_in();
3529 (*w)-=add_row_shift;
3547 res->data = (
char *)S;
3554 for(
int i=0;
i<vl;
i++)
3563 for(
int i=0;
i<vl;
i++)
3580 ideal
A=(ideal)u->
Data();
3581 ideal
B=(ideal)
v->Data();
3587 sleftv tmp_u,tmp_v,tmp_res;
3607 int i=(
int)(long)
v->Data();
3628 int t = (int)(
long)
v->Data();
3638 res->data = (
void*)(
long)
i;
3653 int timeout = 1000*(int)(
long)
v->Data();
3661 for(
unsigned nfinished = 0; nfinished < ((unsigned)Lforks->
nr)+1; nfinished++)
3686 res->data = (
void*)(
long)ret;
3748 res->data = (
char *)n;
3753 res->data = (
char *)(-(
long)u->
Data());
3760 res->data = (
char *)n;
3778 res->data = (
char *)iv;
3785 res->data = (
char *)bim;
3794 ring r=(ring)u->
Data();
3798 char name_buffer[100];
3801 snprintf(name_buffer,100,
"PYTHON_RING_VAR%d",ending);
3824 l->m[0].data=(
void *)
m;
3825 l->m[1].data=(
void *)iv;
3826 res->data = (
char *)
l;
3846 number n=(number)u->
CopyD();
3870 number n=(number) tmp.
data;
3885 res->data = (
char *)(
long)
rChar((ring)
v->Data());
3890 ring r=(ring)
v->Data();
3892 res->data = (
char *)r->cf;
3902 res->data = (
char *)(
long)((
bigintmat*)(
v->Data()))->cols();
3907 res->data = (
char *)(
long)((
intvec*)(
v->Data()))->cols();
3915 res->data = (
char *)
p;
3926 res->data = (
char *)(
long)(aa->
rows()*aa->
cols());
3931 res->data = (
char *)(
long)
nSize((number)
v->Data());
3948 res->data = (
char *)(
long)((
intvec*)(
v->Data()))->length();
3953 ring r=(ring)
v->Data();
3959 extern int ipower (
int b,
int n );
3960 elems=
ipower(r->cf->ch,r->cf->extRing->pFDeg(r->cf->extRing->qideal->m[0],r->cf->extRing));
3962 res->data = (
char *)(
long)elems;
3968 poly
p=(poly)
v->Data();
3970 else res->data=(
char *)-1;
3975 ideal I=(ideal)u->
Data();
3981 res->data = (
char *)(
long)d;
3990 PrintS(
"// NOTE: computation of degree is being performed for\n");
3991 PrintS(
"// generic fibre, that is, over Q\n");
4010 else if (
v->rtyp!=0)
res->data=(
void *)(-1);
4017 number n =
reinterpret_cast<number
>(
v->CopyD());
4026 number n =
reinterpret_cast<number
>(
v->CopyD());
4042 i=
m->rows();
j=
m->cols();
4047 Werror(
"det of %d x %d bigintmat",
i,
j);
4056 number2 r=(number2)
omAlloc0(
sizeof(*r));
4058 i=
m->rows();
j=
m->cols();
4062 r->cf=
m->basecoeffs();
4067 Werror(
"det of %d x %d cmatrix",
i,
j);
4078 i=
m->rows();
j=
m->cols();
4083 Werror(
"det of %d x %d intmat",
i,
j);
4090 ideal I=(ideal)
v->Data();
4103 WerrorS(
"`dim` is not implemented for letterplace rings over rings");
4109 WerrorS(
"qring not supported by `dim` for letterplace rings at the moment");
4112 int gkDim =
lp_gkDim((ideal)(
v->Data()));
4113 res->data = (
char *)(
long)gkDim;
4114 return (gkDim == -2);
4119 Warn(
"dim(%s) may be wrong because the mixed monomial ordering",
v->Name());
4132 Werror(
"cannot dump to `%s`",
s);
4141 int co=(int)(
long)
v->Data();
4147 else WerrorS(
"argument of gen must be positive");
4152 char * d = (
char *)
v->Data();
4153 char *
s = (
char *)
omAlloc(strlen(d) + 13);
4154 strcpy(
s, (
char *)d);
4155 strcat(
s,
"\n;RETURN();\n");
4192 WarnS(
"no factorization implemented");
4196 res->data=(
void *)L;
4209 l->m[0].data=(
void *)
f;
4211 l->m[1].data=(
void *)
v;
4212 res->data=(
void *)
l;
4223 Werror(
"cannot get dump from `%s`",
s);
4232 ideal I=(ideal)
v->Data();
4241 ideal I=(ideal)
v->Data();
4255 WerrorS(
"module must be zero-dimensional");
4256 if (delete_w)
delete w;
4279 if (delete_w)
delete w;
4280 res->data=(
void *)po;
4288 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
4289 PrintS(
"// performed for generic fibre, that is, over Q\n");
4303 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
4304 PrintS(
"// performed for generic fibre, that is, over Q\n");
4313 ideal v_id=(ideal)
v->Data();
4321 char *s_isHomog=
omStrDup(
"isHomog");
4327 else if (
w!=
NULL)
delete w;
4348 int deg = (int)(
long)
v->Data();
4351 WerrorS(
"degree bound of Letterplace ring is to small");
4366 res->data=(
char *)mat;
4376 res->data=(
char *)I;
4383 ring q=(ring)
v->Data();
4386 if (q->qideal==
NULL)
4393 WerrorS(
"can only get ideal from identical qring");
4423 res->data = (
char *)(
long)
pVar((poly)
v->Data());
4434 res->data = (
char *)0;
4441 poly
p=(poly)(
v->Data());
4446 res->data = (
char *)
i;
4453 WerrorS(
"differentiation not defined in the coefficient ring");
4456 number n = (number) u->
Data();
4457 number
k = (number)
v->Data();
4470 ideal
id = (ideal)a->
Data();
4480 for(
int i = 0;
i < W;
i++,
p++, q++ )
4523 poly
p=(poly)
v->Data();
4537 poly
p=(poly)
v->Data();
4550 res->data=(
char *)iv;
4555 poly
p=(poly)
v->Data();
4564 res->data = (
char*) lm;
4576 int isLetterplace=(int)(
long)
atGet(
v,
"isLetterplaceRing",
INT_CMD);
4578 res->data=(
char *)r;
4593 memset(&a2,0,
sizeof(a2));
4594 memset(&a3,0,
sizeof(a3));
4611 WerrorS(
"matrix must be constant");
4625 res->data=(
char*)ll;
4635 switch(((
int)(
long)
v->Data()))
4650 res->data = (
char *)0;
4667 l->m[0].data=(
char *)r;
4670 l->m[1].data=(
char *)
m;
4671 res->data=(
char *)
l;
4687 res->data=(
char *)tmp;
4696 number n,
i;
i=(number)
v->Data();
4701 res->data=(
void *)n;
4731 res->data=(
char*)(
long)((long)
v->Data()==0 ? 1 : 0);
4736 res->data = (
char *)(
long)(((ring)(
v->Data()))->N);
4747 poly
p=(poly)
v->Data();
4753 int i=(int)(
long)
v->Data();
4756 if ((0<
i) && (
i<=
p))
4762 Werror(
"par number %d out of range 1..%d",
i,
p);
4769 number nn=(number)
v->Data();
4777 WerrorS(
"no ring active (1)");
4780 int i=(int)(
long)
v->Data();
4786 Werror(
"par number %d out of range 1..%d",
i,
p);
4793 poly
p=(poly)
v->Data();
4797 WerrorS(
"poly must be constant");
4806 res->data=(
void *)n;
4813 poly
p=(poly)
v->Data();
4817 WerrorS(
"poly must be constant");
4831 int i =
IsPrime((
int)(
long)(
v->Data()));
4832 res->data = (
char *)(
long)(
i > 1 ?
i : 2);
4838 ideal v_id=(ideal)
v->Data();
4843 WarnS(
"wrong weights");
4863 if (((
p=(poly)
v->Data())!=
NULL)
4872 res->data = (
char *)n;
4877 char *
s= (
char *)
v->Data();
4884 res->data = (
char *)1;
4893 res->data = (
char *)1;
4901 res->data =(
char *)(
long)rank;
4920 ring r=(ring)
v->Data();
4926 long mm=r->wanted_maxExp;
4942 ring r=(ring)
v->Data();
4949 ideal
i = (ideal)
v->Data();
4950 res->data = (
char *)
i->rank;
4955 res->data = (
char *)(
long)((
bigintmat*)(
v->Data()))->rows();
4960 res->data = (
char *)(
long)((
intvec*)(
v->Data()))->rows();
4965 res->data = (
char *)(
long)
rPar(((ring)
v->Data()));
4970 res->data = (
char *)(
long)atoi((
char*)
v->Data());
4979 WerrorS(
"qring not supported by slimgb at the moment");
4984 WerrorS(
"ordering must be global for slimgb");
4988 WarnS(
"groebner base computations with inexact coefficients can not be trusted due to rounding errors");
4991 ideal u_id=(ideal)u->
Data();
4996 WarnS(
"wrong weights");
5018 ideal v_id=(ideal)
v->Data();
5025 WarnS(
"wrong weights");
5044 ideal v_id=(ideal)
v->Data();
5051 WarnS(
"wrong weights");
5070 ideal v_id=(ideal)
v->Data();
5077 WarnS(
"wrong weights");
5096 WarnS(
"groebner base computations with inexact coefficients can not be trusted due to rounding errors");
5098 ideal v_id=(ideal)
v->Data();
5105 WarnS(
"wrong weights");
5123 res->data = (
char *)
idSort((ideal)
v->Data());
5136 l->m[0].data=(
void *)
f;
5138 l->m[1].data=(
void *)
v;
5139 res->data=(
void *)
l;
5155 ideal v_id=(ideal)
v->Data();
5161 Werror(
"At least %d ncgen variables are needed for this computation.",
IDELEMS(v_id));
5174 int add_row_shift=
w->min_in();
5175 (*w)-=add_row_shift;
5192 res->data = (
char *)S;
5199 for(
int i=0;
i<vl;
i++)
5201 if (v_id->m[
i]!=
NULL)
5208 for(
int i=0;
i<vl;
i++)
5210 if (v_id->m[
i]!=
NULL)
5231 res->data = (
char *)(((
bigintmat*)(
v->Data()))->transpose());
5242 ring r = (ring)a->
Data();
5250 WarnS(
"opposite only for global orderings");
5261 ring r = (ring)a->
Data();
5277 ideal v_id=(ideal)a->
Data();
5294#if defined(HAVE_SHIFTBBA) || defined(HAVE_PLURAL)
5298 WarnS(
"groebner base computations with inexact coefficients can not be trusted due to rounding errors");
5300 ideal v_id=(ideal)
v->Data();
5326 ideal I=(ideal)
v->Data();
5341 res->data = (
char *)J;
5355 int t=(int)(
long)
v->data;
5405 int i=(int)(
long)
v->Data();
5411 res->data=(
char *)
p;
5424 WerrorS(
"no ring active (2)");
5427 int i=(int)(
long)
v->Data();
5446 WerrorS(
"`vdim` is not implemented for letterplace rings over rings");
5452 WerrorS(
"qring not supported by `vdim` for letterplace rings at the moment");
5455 int kDim =
lp_kDim((ideal)(
v->Data()));
5456 res->data = (
char *)(
long)kDim;
5457 return (kDim == -2);
5462 WerrorS(
"int overflow in vdim");
5463 res->data = (
char *)
l;
5478 res->data = (
void*)(
long)
i;
5491 for(
int nfinished = 0; nfinished < Lforks->
nr+1; nfinished++)
5507 res->data = (
void*)(
long)
j;
5517#ifdef HAVE_DYNAMIC_LOADING
5524 Werror(
"%s: unknown type",
s);
5542 Werror(
"can not create package `%s`",plib);
5548 package pa=IDPACKAGE(pl);
5552 Werror(
"can not create package `%s` - binaries exists",plib);
5558 package savepack=currPack;
5574#ifdef HAVE_DYNAMIC_LOADING
5577 WerrorS(
"Dynamic modules are not supported by this version of Singular");
5597 Print(
"loading of >%s< failed\n",
s);
5606 res->data = (
char *)strlen((
char *)
v->Data());
5611 res->data = (
char *)(
long)
pLength((poly)
v->Data());
5616 res->data = (
char *)(
long)
idElem((ideal)
v->Data());
5636 res->data = (
char *)
pHead((poly)
v->Data());
5704 number n=(number)u->
CopyD();
5711 number n=(number)u->
Data();
5720 char *
s= (
char *)u->
Data();
5721 int r = (int)(
long)
v->Data();
5722 int c = (int)(
long)
w->Data();
5725 if ( (r<1) || (r>
l) || (c<0) )
5731 snprintf((
char *)
res->data,c+1,
"%-*.*s",c,c,
s+r-1);
5737 int r = (int)(
long)
v->Data();
5738 int c = (int)(
long)
w->Data();
5739 if ((r<1)||(r>iv->
rows())||(c<1)||(c>iv->
cols()))
5741 Werror(
"wrong range[%d,%d] in intmat %s(%d x %d)",
5754 while (
h->next!=
NULL)
h=
h->next;
5764 int r = (int)(
long)
v->Data();
5765 int c = (int)(
long)
w->Data();
5766 if ((r<1)||(r>bim->
rows())||(c<1)||(c>bim->
cols()))
5768 Werror(
"wrong range[%d,%d] in bigintmat %s(%d x %d)",
5782 while (
h->next!=
NULL)
h=
h->next;
5792 int r = (int)(
long)
v->Data();
5793 int c = (int)(
long)
w->Data();
5797 Werror(
"wrong range[%d,%d] in matrix %s(%d x %d)",r,c,u->
Fullname(),
5811 while (
h->next!=
NULL)
h=
h->next;
5820 ideal
m= (ideal)u->
Data();
5821 int r = (int)(
long)
v->Data();
5822 int c = (int)(
long)
w->Data();
5824 if ((r<1)||(r>
m->rank)||(c<1)||(c>
IDELEMS(
m)))
5826 Werror(
"wrong range[%d,%d] in matrix %s(%d x %d)",r,c,u->
Fullname(),
5840 while (
h->next!=
NULL)
h=
h->next;
5851 WerrorS(
"cannot build expression lists from unnamed objects");
5860 memcpy(&ut,u,
sizeof(ut));
5866 t.
data=(
char *)(
long)((*iv)[
l]);
5876 memcpy(u,&ut,
sizeof(ut));
5901 WerrorS(
"cannot build expression lists from unnamed objects");
5909 memcpy(&ut,u,
sizeof(ut));
5915 t.
data=(
char *)(
long)((*iv)[
l]);
5925 memcpy(u,&ut,
sizeof(ut));
5950 WerrorS(
"cannot build expression lists from unnamed objects");
5961 memcpy(&ut,u,
sizeof(ut));
5966 for (vl=0;vl< vv->
length(); vl++)
5968 t1.
data=(
char *)(
long)((*vv)[vl]);
5969 for (wl=0;wl< wv->
length(); wl++)
5971 t2.
data=(
char *)(
long)((*wv)[wl]);
5981 memcpy(u,&ut,
sizeof(ut));
6021 int k=(int)(
long)
w->Data();
6028 l->m[0].data=(
void *)
m;
6029 l->m[1].data=(
void *)iv;
6036 l->m[0].data=(
void *)
m;
6038 res->data = (
char *)
l;
6045 WerrorS(
"3rd argument must be a name of a matrix");
6048 ideal
i=(ideal)u->
Data();
6049 int rank=(int)
i->rank;
6058 (ideal)(
v->Data()),(poly)(
w->Data()));
6065 WerrorS(
"3rd argument must be a name of a matrix");
6090 ideal I=(ideal)u->
Data();
6111 int n=(int)(
long)
w->Data();
6112 char *where=(
char *)u->
Data();
6113 char *what=(
char *)
v->Data();
6115 if ((1>n)||(n>(int)strlen(where)))
6117 Werror(
"start position %d out of range",n);
6120 found = strchr(where+n-1,*what);
6121 if (*(what+1)!=
'\0')
6123 while((
found !=
NULL) && (strncmp(
found+1,what+1,strlen(what+1))!=0))
6130 res->data=(
char *)((
found-where)+1);
6136 if ((
int)(
long)
w->Data()==0)
6148 Werror(
"weight vector must have size %d, not %d",
6155 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
6156 PrintS(
"// performed for generic fibre, that is, over Q\n");
6164 switch((
int)(
long)
v->Data())
6167 res->data=(
void *)iv;
6183 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
6184 PrintS(
"// performed for generic fibre, that is, over Q\n");
6188 ring Qt =(ring)
v->Data();
6189 char *
name=(
char*)
w->Data();
6205 int i=
pVar((poly)
v->Data());
6217 WerrorS(
"variable must have weight 1");
6223 int i=
pVar((poly)
v->Data());
6235 WerrorS(
"variable must have weight 1");
6242 ideal v_id=(ideal)v1->
Data();
6248 intvec* im=
new intvec((
int)(
long)
v->Data(),(
int)(
long)
w->Data(), 0);
6254 (*im)[
i] = (*arg)[
i];
6257 res->data = (
char *)im;
6262 ideal I1=(ideal)u->
Data();
6263 ideal I2=(ideal)
v->Data();
6264 ideal I3=(ideal)
w->Data();
6275 ideal I=(ideal)u->
Data();
6277 res->data=(
char *)
idSect(I,(ideal)
v->Data(),alg);
6284 res->data = (
char *)
ppJetW((poly)u->
Data(),(int)(
long)
v->Data(),iw);
6292 WerrorS(
"2nd argument must be a unit");
6308 WerrorS(
"2nd argument must be a diagonal matrix of units");
6355 Werror(
"`%s` is undefined",
v->Fullname());
6371 const int mk = (int)(
long)u->
Data();
6372 bool noIdeal =
true;
bool noK =
true;
bool noAlgorithm =
true;
6373 bool noCacheMinors =
true;
bool noCacheMonomials =
true;
6374 ideal IasSB;
int k;
char* algorithm;
int cacheMinors;
int cacheMonomials;
6389 noAlgorithm =
false;
6394 noCacheMinors =
false;
6400 noCacheMonomials =
false;
6413 noAlgorithm =
false;
6418 noCacheMinors =
false;
6423 noCacheMonomials =
false;
6430 algorithm = (
char*)u->
next->
Data();
6431 noAlgorithm =
false;
6435 noCacheMinors =
false;
6440 noCacheMonomials =
false;
6448 if (strcmp(algorithm,
"bareiss") == 0)
6449 algorithm = (
char*)
"Bareiss";
6450 if (strcmp(algorithm,
"laplace") == 0)
6451 algorithm = (
char*)
"Laplace";
6452 if (strcmp(algorithm,
"cache") == 0)
6453 algorithm = (
char*)
"Cache";
6462 if ((!noK) && (
k == 0))
6464 WerrorS(
"Provided number of minors to be computed is zero.");
6467 if ((!noAlgorithm) && (strcmp(algorithm,
"Bareiss") != 0)
6468 && (strcmp(algorithm,
"Laplace") != 0)
6469 && (strcmp(algorithm,
"Cache") != 0))
6471 WerrorS(
"Expected as algorithm one of 'B/bareiss', 'L/laplace', or 'C/cache'.");
6474 if ((!noAlgorithm) && (strcmp(algorithm,
"Bareiss") == 0)
6477 Werror(
"Bareiss algorithm not defined over coefficient rings %s",
6478 "with zero divisors.");
6481 if ((mk < 1) || (mk >
m->rows()) || (mk >
m->cols()))
6490 if ((!noAlgorithm) && (strcmp(algorithm,
"Cache") == 0)
6491 && (noCacheMinors || noCacheMonomials))
6494 cacheMonomials = 100000;
6500 (noIdeal ? 0 : IasSB),
false);
6501 else if (strcmp(algorithm,
"Cache") == 0)
6503 (noIdeal ? 0 : IasSB), 3, cacheMinors,
6504 cacheMonomials,
false);
6507 (noIdeal ? 0 : IasSB),
false);
6517 (
const char *)
w->Data());
6531 WerrorS(
"2nd/3rd arguments must have names");
6535 const char *ring_name=u->
Name();
6542 if ((preim_ring==
NULL)
6545 Werror(
"preimage ring `%s` is not the basering",mapping->preimage);
6561 Werror(
"`%s` is not defined in `%s`",
v->
name,ring_name);
6565 if (kernel_cmd) image=
idInit(1,1);
6582 Werror(
"`%s` is not defined in `%s`",
w->name,ring_name);
6589 WarnS(
"preimage in local qring may be wrong: use Ring::preimageLoc instead");
6598 int i=(int)(
long)u->
Data();
6599 int r=(int)(
long)
v->Data();
6600 int c=(int)(
long)
w->Data();
6601 if ((r<=0) || (c<=0))
return TRUE;
6617 res->data = (
char *)iv;
6627 Werror(
"no random function defined for coeff %d",
cf->type);
6633 number2 nn=(number2)
omAlloc(
sizeof(*nn));
6643 int &ringvar, poly &monomexpr)
6645 monomexpr=(poly)
w->Data();
6646 poly
p=(poly)
v->Data();
6650 Werror(
"`%s` substitutes a ringvar only by a term",
6655 if ((ringvar=
pVar(
p))==0)
6664 WerrorS(
"ringvar/par expected");
6688 if (nok)
return TRUE;
6689 poly
p=(poly)u->
Data();
6694 (monomexpr!=
NULL) && (
p!=
NULL) && (mm!=0) &&
6697 Warn(
"possible OVERFLOW in subst, max exponent is %ld, substituting deg %d by deg %d",
currRing->bitmask/2,
pTotaldegree(monomexpr), mm);
6709 WerrorS(
"Substituting parameters not implemented for Letterplace rings.");
6721 if (nok)
return TRUE;
6722 ideal
id=(ideal)u->
Data();
6733 if ((
p!=
NULL) && (mm!=0) &&
6734 ((
unsigned long)deg_monexp > (
currRing->bitmask / (
unsigned long)mm/2)))
6742 Warn(
"possible OVERFLOW in subst, max exponent is %ld",
currRing->bitmask/2);
6756 WerrorS(
"Substituting parameters not implemented for Letterplace rings.");
6786 int mi=(int)(
long)
v->Data();
6787 int ni=(int)(
long)
w->Data();
6790 Werror(
"converting ideal to matrix: dimensions must be positive(%dx%d)",mi,ni);
6801 memcpy(
m->m,I->m,
i*
sizeof(poly));
6802 memset(I->m,0,
i*
sizeof(poly));
6804 res->data = (
char *)
m;
6809 int mi=(int)(
long)
v->Data();
6810 int ni=(int)(
long)
w->Data();
6813 Werror(
"converting module to matrix: dimensions must be positive(%dx%d)",mi,ni);
6822 int mi=(int)(
long)
v->Data();
6823 int ni=(int)(
long)
w->Data();
6826 Werror(
"converting matrix to matrix: dimensions must be positive(%dx%d)",mi,ni);
6843 res->data = (
char *)
m;
6866 ideal u_id=(ideal)u->
Data();
6867 ideal v_id=(ideal)
v->Data();
6870 if ((*w_u).compare((w_v))!=0)
6872 WarnS(
"incompatible weights");
6873 delete w_u; w_u=
NULL;
6881 WarnS(
"wrong weights");
6882 delete w_u; w_u=
NULL;
6888 res->data = (
char *)
idModulo(u_id,v_id ,hom,&w_u, &(
h->data.umatrix));
6917 ideal u_id=(ideal)u->
Data();
6919 ideal v_id=(ideal)
v->Data();
6922 if ((*w_u).compare((w_v))!=0)
6924 WarnS(
"incompatible weights");
6925 delete w_u; w_u=
NULL;
6933 WarnS(
"wrong weights");
6934 delete w_u; w_u=
NULL;
6950 int mi=(int)(
long)
v->Data();
6951 int ni=(int)(
long)
w->Data();
6954 Werror(
"converting to smatrix: dimensions must be positive(%dx%d)",mi,ni);
6971 Werror(
"At least %d ncgen variables are needed for this computation.", ul);
6994 Werror(
"At least %d ncgen variables are needed for this computation.",
IDELEMS((ideal)u->
Data()));
7002 &(hw->data.uideal));
7016 Werror(
"At least %d ncgen variables are needed for this computation.",
IDELEMS((ideal)u->
Data()));
7033 Werror(
"`%s` must be 0-dimensional",
v->Name());
7045 Werror(
"`%s` must be 0-dimensional",
v->Name());
7056 0,(int)(
long)
w->Data());
7063 0,(int)(
long)
w->Data());
7069 int maxl=(int)
v->Data();
7070 ideal u_id=(ideal)u->
Data();
7088 WarnS(
"wrong weights");
7117 yes = (strcmp((
char *)
res->data, (
char *)
w->Data()) == 0);
7119 res->data = (
void *)(
long)yes;
7133 ideal u_id=(ideal)(u->
Data());
7138 WarnS(
"wrong weights");
7179 lineno=(int)(
long)
v->
next->Data();
7243 WarnS(
"<module>,<module>,<int>[,<intvec>] expected!");
7250 ideal P=(ideal)w1.
Data();
7251 ideal
Q=(ideal)w2.
Data();
7253 int n=(int)(
long)v3->
Data();
7260 while( (
i > 0) && ((*w0) > 0) )
7266 WarnS(
"not all weights are positive!");
7285 L->
m[1].
data=(
void *)
R->m[0];
7369 res->data=(
char *)
id;
7374 ring r=(ring)u->
Data();
7382 WerrorS(
"fetch(<ring>,<name>[,<intvec>[,<intvec>])");
7387 if (perm_par_l!=
NULL)
7396 int par_perm_size=0;
7405 par_perm_size=
rPar(r);
7413 par_perm_size=
rPar(r);
7415 if (par_perm_size!=0)
7416 par_perm=(
int *)
omAlloc0(par_perm_size*
sizeof(
int));
7418 if (perm_par_l==
NULL)
7420 if (par_perm_size!=0)
7425 if (par_perm_size==0)
WarnS(
"source ring has no parameters");
7430 if (i<perm_par_v->
length()) par_perm[
i]=(*perm_par_v)[
i];
7434 Warn(
"invalid entry for par %d: %d\n",
i,par_perm[
i]);
7442 if (i<perm_var_v->
length()) perm[
i+1]=(*perm_var_v)[
i];
7446 Warn(
"invalid entry for var %d: %d\n",
i,perm[
i]);
7455 Print(
"// var nr %d: %s -> var %s\n",
i,r->names[
i-1],
currRing->names[perm[
i]-1]);
7461 if (par_perm[
i-1]<0)
7462 Print(
"// par nr %d: %s -> par %s\n",
7464 else if (par_perm[
i-1]>0)
7465 Print(
"// par nr %d: %s -> var %s\n",
7475 perm,par_perm,par_perm_size,nMap)))
7493 Werror(
"no identity map from %s (%s -> %s)",u->
Fullname(),s1,s2);
7500 int l=
v->listLength();
7531 WerrorS(
"cannot convert to ideal or module");
7542 r[
i]=(ideal)
h->Data();
7554 r[
i]=(ideal)tmp.
Data();
7586 matrix iMat;
int invertible;
7592 int rr = aMat->
rows();
7593 int cc = aMat->
cols();
7596 Werror(
"given matrix (%d x %d) is not quadratic, hence not invertible", rr, cc);
7601 WerrorS(
"matrix must be constant");
7611 int rr = uMat->
rows();
7612 int cc = uMat->
cols();
7615 Werror(
"third matrix (%d x %d) is not quadratic, hence not invertible",
7624 WerrorS(
"matricesx must be constant");
7631 Werror(
"expected either one or three matrices");
7649 res->data=(
char*)ll;
7673 WerrorS(
"expected exactly three matrices and one vector as input");
7683 Werror(
"first matrix (%d x %d) is not quadratic",
7689 Werror(
"second matrix (%d x %d) is not quadratic",
7695 Werror(
"second matrix (%d x %d) and third matrix (%d x %d) do not fit",
7701 Werror(
"third matrix (%d x %d) and vector (%d x 1) do not fit",
7710 WerrorS(
"matrices must be constant");
7730 res->data=(
char*)ll;
7744 (*iv)[
i]=(int)(
long)
h->Data();
7763 res->data=(
char *)iv;
7780 WerrorS(
"2nd argument must be a unit");
7793 WerrorS(
"2nd argument must be a diagonal matrix of units");
7798 (
int)(long)u3->
Data(),
7807 Werror(
"%s(`poly`,`poly`,`int`,`intvec`) exppected",
7825 else if (
w->next==
NULL)
7852 && ((strcmp(u->
Name(),
"real")==0) || (strcmp(u->
Name(),
"complex")==0)))
7873 Werror(
"`%s` undefined or `int` expected while building `%s(`",u->
name,u->
name);
7877 size_t len=strlen(u->
name) + 12*
l;
7878 char * nn = (
char *)
omAlloc(len);
7879 snprintf(nn,len,
"%s(%d",u->
name,(
int)(
long)
v->Data());
7883 while (*
s!=
'\0')
s++;
7887 Werror(
"`%s` undefined or `int` expected while building `%s(`",u->
name,u->
name);
7891 snprintf(
s,len-(nn-
s),
",%d",(
int)(
long)
v->Data());
7893 while (*
s!=
'\0')
s++;
7914 ideal I=(ideal)u->
Data();
7927 Werror(
"%s(`ideal`,`ideal`,`matrix`,`string`)\n"
7928 "or (`module`,`module`,`matrix`,`string`) expected",
7960 syz=&(hw->
data.uideal);
7967 syz=&(hw->
data.uideal);
7968 h11=(ideal)u4->
Data();
7973 h11=(ideal)u4->
Data();
7977 Werror(
"%s(`ideal/module`,`matrix`[,`module`][,`string`][,`ideal/module`]) expected",
Tok2Cmdname(
iiOp));
7989 syz=&(hw->
data.uideal);
7991 h11=(ideal)u5->
Data();
7995 Werror(
"%s(`ideal/module`,`matrix`[,`module`][,`string`][,`ideal/module`]) expected",
Tok2Cmdname(
iiOp));
8005 Werror(
"At least %d ncgen variables are needed for this computation.",
IDELEMS((ideal)u->
Data()));
8026 if (
v!=
NULL) sl =
v->listLength();
8030 int add_row_shift = 0;
8032 if (weights!=
NULL) add_row_shift=weights->
min_in();
8059 Werror(
"`%s` is undefined",
h->Fullname());
8071 res->data=(
char *)L;
8086 u_id=(ideal)u->
Data();
8087 v_id=(ideal)
v->Data();
8114 if ((*w_u).compare((w_v))!=0)
8116 WarnS(
"incompatible weights");
8117 delete w_u; w_u=
NULL;
8125 WarnS(
"wrong weights");
8126 delete w_u; w_u=
NULL;
8132 res->data = (
char *)
idModulo(u_id,v_id ,hom,&w_u, &(
h->data.umatrix),alg);
8187 WerrorS(
"2nd argument must be a diagonal matrix of units");
8194 (int)(
long)u4->
Data()
8204 else u1p=(poly)u1->
Data();
8207 else u2p=(poly)u2->
Data();
8211 WerrorS(
"2nd argument must be a unit");
8240 WerrorS(
"2nd argument must be a diagonal matrix of units");
8247 (int)(
long)u4->
Data(),
8259 WerrorS(
"2nd argument must be a unit");
8270 Werror(
"%s(`ideal`,`ideal`,`matrix`,`int`,`intvec`) exppected",
8282 for(
i=0;
i<nCount;
i++)
8311 for (
unsigned i=0;
i<nCount;
i++)
8323 for (
int i = 0;
i < bb_list->
count;
i++)
8333 for (
unsigned i=0;
i<nCount;
i++)
8357 for (
int i = 0;
i < bb_list->
count;
i++)
8373 res->data=(
void *)L;
8384 int n =
v->listLength();
8387 res->data =
v->String();
8391 char** slist = (
char**)
omAlloc(n*
sizeof(
char*));
8396 slist[
i] =
v->String();
8398 j+=strlen(slist[
i]);
8400 char*
s = (
char*)
omAlloc((
j+1)*
sizeof(char));
8404 strcat(
s, slist[
i]);
8424#if defined(__alpha) && !defined(linux)
8427 void usleep(
unsigned long usec);
8456 leftv u =
v;
int factorsGiven = 0;
8459 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
8462 else h = (poly)u->
Data();
8466 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
8469 else d = (int)(
long)u->
Data();
8475 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
8480 f0 = (poly)u->
Data();
8490 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
8495 xIndex = (int)(
long)u->
Data();
8496 yIndex = (int)(
long)u->
next->
Data();
8502 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
8509 WerrorS(
"expected non-constant polynomial argument(s)");
8513 if ((xIndex < 1) || (n < xIndex))
8515 Werror(
"index for variable x (%d) out of range [1..%d]", xIndex, n);
8518 if ((yIndex < 1) || (n < yIndex))
8520 Werror(
"index for variable y (%d) out of range [1..%d]", yIndex, n);
8523 if (xIndex == yIndex)
8525 WerrorS(
"expected distinct indices for variables x and y");
8530 if (factorsGiven == 0)
8544 WerrorS(
"expected h(0,y) to have exactly two distinct monic factors");
8559 res->data = (
char*)L;
8570#if defined(HAVE_USLEEP)
8571 if (((
long)
res->data) == 0L)
8580#elif defined(HAVE_SLEEP)
8581 if (((
int)
res->data) == 0)
8586 si_sleep((is - 1)/1000000 + 1);
8605 if ((rest!=
NULL) && (!
b))
8612 memcpy(
res,&tmp_res,
sizeof(tmp_res));
8627 WerrorS(
"expected (matrix, number, number, number) as arguments");
8632 (number)(
v->Data()),
8633 (number)(
w->Data()),
8634 (number)(
x->Data()));
8644 ideal i1=(ideal)(u->
Data());
8650 WerrorS(
"expected `std(`ideal/module`,`poly/vector`,`intvec`,`intvec`)");
8665 i0->m[0]=(poly)
v->Data();
8670 i0=(ideal)
v->Data();
8674 WerrorS(
"expected `std(`ideal/module`,`poly/vector`,`intvec`,`intvec`)");
8681 memset(i0->m,0,
sizeof(poly)*
IDELEMS(i0));
8691 WarnS(
"wrong weights");
8725 WerrorS(
"expected `cring` [ `id` ... ]");
8731 char **n=(
char**)
omAlloc0(
N*
sizeof(
char*));
8732 for(
int i=0;
i<
N;
i++,names=names->
next)
8734 n[
i]=(
char *)names->
Name();
8746 r->start =(int)(
long)e->
Data();
8751 int c=(int)(
long)u->
Data();
8755 PrintS(
"delete all variables\n");
8760 default:
WerrorS(
"not implemented");
8765#define NULL_VAL NULL
8769#include "iparith.inc"
8787 while (dA2[
i].cmd==op)
8789 if ((at==dA2[
i].arg1)
8790 && (bt==dA2[
i].arg2))
8801 WerrorS(
"no ring active (3)");
8807 if ((call_failed=dA2[
i].
p(
res,a,
b)))
8827 while (dA2[
i].cmd==op)
8845 WerrorS(
"no ring active (4)");
8854 || (call_failed=dA2[
i].
p(
res,an,bn)));
8893 Werror(
"`%s` is not defined",
s);
8900 Werror(
"%s(`%s`,`%s`) failed"
8905 Werror(
"`%s` %s `%s` failed"
8910 while (dA2[
i].cmd==op)
8912 if(((at==dA2[
i].arg1)||(bt==dA2[
i].arg2))
8917 Werror(
"expected %s(`%s`,`%s`)"
8920 Werror(
"expected `%s` %s `%s`"
8959 memcpy(&d->arg1,a,
sizeof(
sleftv));
8961 memcpy(&d->arg2,
b,
sizeof(
sleftv));
8965 res->data=(
char *)d;
8978 if(!bb->blackbox_Op2(op,
res,a,
b))
return FALSE;
8984 else if ((bt>
MAX_TOK)&&(op!=
'('))
8989 if(!bb->blackbox_Op2(op,
res,a,
b))
return FALSE;
9017 while (dA1[
i].cmd==op)
9029 WerrorS(
"no ring active (5)");
9036 if ((call_failed=dA1[
i].
p(
res,a)))
9056 while (dA1[
i].cmd==op)
9072 WerrorS(
"no ring active (6)");
9080 || (call_failed=dA1[
i].
p(
res,an)));
9121 while (dA1[
i].cmd==op)
9125 Werror(
"expected %s(`%s`)"
9147 memcpy(&d->arg1,a,
sizeof(
sleftv));
9151 res->data=(
char *)d;
9164 res->data=bb->blackbox_Init(bb);
9165 return bb->blackbox_Assign(
res,a);
9175 if(!bb->blackbox_Op1(op,
res,a))
return FALSE;
9195 const struct sValCmd3* dA3,
int at,
int bt,
int ct,
9206 while (dA3[
i].cmd==op)
9208 if ((at==dA3[
i].arg1)
9209 && (bt==dA3[
i].arg2)
9210 && (ct==dA3[
i].arg3))
9218 Print(
"call %s(%s,%s,%s)\n",
9220 if ((call_failed=dA3[
i].
p(
res,a,
b,c)))
9241 while (dA3[
i].cmd==op)
9257 Print(
"call %s(%s,%s,%s)\n",
9263 || (call_failed=dA3[
i].
p(
res,an,bn,cn)));
9312 Werror(
"`%s` is not defined",
s);
9318 Werror(
"%s(`%s`,`%s`,`%s`) failed"
9322 while (dA3[
i].cmd==op)
9324 if(((at==dA3[
i].arg1)
9326 ||(ct==dA3[
i].arg3))
9329 Werror(
"expected %s(`%s`,`%s`,`%s`)"
9358 memcpy(&d->arg1,a,
sizeof(
sleftv));
9360 memcpy(&d->arg2,
b,
sizeof(
sleftv));
9362 memcpy(&d->arg3,c,
sizeof(
sleftv));
9366 res->data=(
char *)d;
9378 if(!bb->blackbox_Op3(op,
res,a,
b,c))
return FALSE;
9428 if(
v==
NULL)
return failed;
9450 res->data=(
char *)d;
9455 memcpy(&d->arg1,a,
sizeof(
sleftv));
9490 if(!bb->blackbox_OpM(op,
res,a))
return FALSE;
9505 if ((args==
dArithM[
i].number_of_args)
9507 || ((
dArithM[
i].number_of_args==-2)&&(args>0)))
9605 Warn(
"outdated identifier `%s` used - please change your code",
9656 if (op==dArithTab[
p].cmd)
return dArithTab[
p].start;
9657 if (op<dArithTab[
p].cmd) e=
p-1;
9677 if (tok==
ANY_TYPE)
return "any_type";
9678 if (tok==
COMMAND)
return "command";
9679 if (tok==
NONE)
return "nothing";
9691 if (tok==
IDHDL)
return "identifier";
9727 cmdnames *pCmdL = (cmdnames*)a;
9728 cmdnames *pCmdR = (cmdnames*)
b;
9733 if(pCmdL->name==
NULL)
return 1;
9734 if(pCmdR->name==
NULL)
return -1;
9737 if(strcmp(pCmdL->name,
"$INVALID$")==0)
return -1;
9738 if(strcmp(pCmdR->name,
"$INVALID$")==0)
return 1;
9741 if (pCmdL->tokval==-1)
9743 if (pCmdR->tokval==-1)
9744 return strcmp(pCmdL->name, pCmdR->name);
9749 if(pCmdR->tokval==-1)
return -1;
9751 return strcmp(pCmdL->name, pCmdR->name);
9859 if(nPos<0)
return NULL;
9868 if(szName==
NULL)
return -1;
9873 Print(
"'%s' not found (%d)\n", szName, nIndex);
9916 if(szName==
NULL)
return -1;
9920 Print(
"'%s' already exists at %d\n", szName, nIndex);
9957 WerrorS(
"not implemented for non-commutative rings");
9979 WerrorS(
"not implemented for rings with rings as coeffients");
9986 WerrorS(
"domain required as coeffients");
9992 WarnS(
"considering the image in Q[...]");
10004 WerrorS(
"not implemented for rings with rings as coeffients (except ZZ)");
10010 int return_type=c->
m[0].
Typ();
10027 for (
unsigned i=0;
i<=(unsigned)c->
nr;
i++)
10032 if (bo) {
Werror(
"chinrem failed for list entry %d",
i+1);
break;}
10042 WerrorS(
"poly/ideal/module/matrix/list expected");
10052 cf=
cf->extRing->cf;
10061 WerrorS(
"wromg number of primes");
10068 if (
p->length()!=rl)
10070 WerrorS(
"wromg number of primes");
10075 ideal *
x=(ideal *)
omAlloc(rl*
sizeof(ideal));
10081 for(
i=rl-1;
i>=0;
i--)
10083 if (c->
m[
i].
Typ()!=return_type)
10108 xx=(number *)
omAlloc(rl*
sizeof(number));
10109 for(
i=rl-1;
i>=0;
i--)
10121 Werror(
"bigint expected at pos %d",
i+1);
10128 number *q=(number *)
omAlloc(rl*
sizeof(number));
10131 for(
i=rl-1;
i>=0;
i--)
10138 for(
i=rl-1;
i>=0;
i--)
10150 Werror(
"bigint expected at pos %d",
i+1);
10166 res->data=(
char *)n;
10189 for(
i=rl-1;
i>=0;
i--)
10194 res->rtyp=return_type;
10204 for (
unsigned i=0;
i<=(unsigned)c->
nr;
i++)
10209 if (bo) {
Werror(
"farey failed for list entry %d",
i+1);
break;}
10222 if (at < bt)
return -1;
10223 if (at > bt)
return 1;
10224 int tab_pos=
iiTabIndex(dArithTab2,JJTAB2LEN,
'<');
10232 unsigned long ad=(
unsigned long)a->
Data();
10233 unsigned long bd=(
unsigned long)
b->Data();
10234 if (ad<bd)
return -1;
10235 else if (ad==bd)
return 0;
10246 unsigned long ad=(
unsigned long)a->
Data();
10247 unsigned long bd=(
unsigned long)
b->Data();
10248 if (ad<bd)
return -1;
10249 else if (ad==bd)
return 0;
10252 else if (tmp.
data==
NULL)
return 1;
10280 for(
j=
i;
j<len;
j++)
l->m[
j]=
l->m[
j+1];
10281 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...
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)
poly singclap_pdivide(poly f, poly g, const ring r)
BOOLEAN singclap_extgcd(poly f, poly g, poly &res, poly &pa, poly &pb, const ring r)
number singclap_det_bi(bigintmat *m, const coeffs cf)
int singclap_det_i(intvec *m, const ring)
ideal singclap_sqrfree(poly f, intvec **v, int with_exps, const ring r)
int compare(const bigintmat *op) const
intvec * delete_pos(int p)
void show(int mat=0, int spaces=0) const
int compare(const intvec *o) const
Class used for (list of) interpreter objects.
void CleanUp(ring r=currRing)
void Clean(ring r=currRing)
INLINE_THIS void Init(int l=0)
Coefficient rings, fields and other domains suitable for Singular polynomials.
static FORCE_INLINE int n_ParDeg(number n, const coeffs r)
static FORCE_INLINE number n_Mult(number a, number b, const coeffs r)
return the product of 'a' and 'b', i.e., a*b
static FORCE_INLINE number n_Param(const int iParameter, const coeffs r)
return the (iParameter^th) parameter as a NEW number NOTE: parameter numbering: 1....
static FORCE_INLINE long n_Int(number &n, const coeffs r)
conversion of n to an int; 0 if not possible in Z/pZ: the representing int lying in (-p/2 ....
static FORCE_INLINE 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
char name(const Variable &v)
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) system(sys)
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)
int iiTestConvert(int inputType, int outputType)
const char * iiTwoOps(int t)
VAR 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)
void scDegree(ideal S, intvec *modulweight, 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)
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)
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 jjWRONG2(leftv, leftv, leftv)
static BOOLEAN jjLIFTSTD(leftv res, leftv u, leftv v)
static BOOLEAN jjNULL(leftv, leftv)
static BOOLEAN jjNEWSTRUCT2(leftv, leftv u, leftv v)
static BOOLEAN jjMONITOR2(leftv res, leftv u, leftv v)
static BOOLEAN jjDIM(leftv res, leftv v)
static BOOLEAN jjCOUNT_BIM(leftv res, leftv v)
static BOOLEAN jjBRACKET(leftv res, leftv a, leftv b)
static BOOLEAN jjCOLS_IV(leftv res, leftv v)
static BOOLEAN jjNAMES_I(leftv res, leftv v)
static BOOLEAN jjMULT(leftv res, leftv v)
static BOOLEAN 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 jjWRONG3(leftv, leftv, leftv, leftv)
static BOOLEAN jjREDUCE3_ID(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjELIMIN_HILB(leftv res, leftv u, leftv v, leftv w)
static int jjCOMPARE_ALL(const void *aa, const void *bb)
static BOOLEAN jjNAMEOF(leftv res, leftv v)
static BOOLEAN jjPlural_mat_poly(leftv res, leftv a, leftv b)
static BOOLEAN jjTIMES_SM(leftv res, leftv u, leftv v)
static BOOLEAN jjMOD_BI(leftv res, leftv u, leftv v)
BOOLEAN jjUNIQLIST(leftv, leftv arg)
static BOOLEAN jjTIMES_MA_I2(leftv res, leftv u, leftv v)
static BOOLEAN jjSTATUS2L(leftv res, leftv u, leftv v)
BOOLEAN(* proc3)(leftv, leftv, leftv, leftv)
static BOOLEAN jjGT_I(leftv res, leftv u, leftv v)
static BOOLEAN jjPRIME(leftv res, leftv v)
static BOOLEAN jjPFAC2(leftv res, leftv u, leftv v)
static BOOLEAN jjidVec2Ideal(leftv res, leftv v)
static BOOLEAN jjJACOB_P(leftv res, leftv v)
static BOOLEAN jjSQR_FREE(leftv res, leftv u)
static BOOLEAN jjSTD_HILB_W(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjEQUAL_I(leftv res, leftv u, leftv v)
static BOOLEAN jjTIMES_MA_P2(leftv res, leftv u, leftv v)
static BOOLEAN jjMODULO3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjSBA_1(leftv res, leftv v, leftv u)
static BOOLEAN jjCOEFFS3_P(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjCALL1MANY(leftv res, leftv u)
static BOOLEAN jjPLUS_MA(leftv res, leftv u, leftv v)
static BOOLEAN jjWRONG(leftv, leftv)
static BOOLEAN jjMINUS_V(leftv res, leftv u, leftv v)
static BOOLEAN jjINTERRED(leftv res, leftv v)
static BOOLEAN jjJACOB_M(leftv res, leftv a)
static BOOLEAN jjJET_ID_IV(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjTIMES_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjBAREISS(leftv res, leftv v)
static BOOLEAN jjREAD(leftv res, leftv v)
static BOOLEAN jjLT_N(leftv res, leftv u, leftv v)
static BOOLEAN jjMINUS_MA(leftv res, leftv u, leftv v)
static BOOLEAN jjFactModD_M(leftv res, leftv v)
static BOOLEAN jjMATRIX_Id(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjEXTGCD_I(leftv res, leftv u, leftv v)
static BOOLEAN jjIS_RINGVAR_S(leftv res, leftv v)
static BOOLEAN jjDelete_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjLE_N(leftv res, leftv u, leftv v)
static BOOLEAN jjSUBST_P(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjROWS_BIM(leftv res, leftv v)
static BOOLEAN jjCOMPARE_S(leftv res, leftv u, leftv v)
int iiInitArithmetic()
initialisation of arithmetic structured data
static BOOLEAN jjOR_I(leftv res, leftv u, leftv v)
static BOOLEAN jjTIMES_MA_I1(leftv res, leftv u, leftv v)
static BOOLEAN jjLIFTSTD_SYZ(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjBAREISS3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjRESERVED0(leftv, leftv)
static BOOLEAN jjTIMES_MA_N1(leftv res, leftv u, leftv v)
static BOOLEAN jjLIFT_4(leftv res, leftv U)
static BOOLEAN jjSLIM_GB(leftv res, leftv u)
static BOOLEAN jjMSTD(leftv res, leftv v)
static BOOLEAN jjBREAK1(leftv, leftv v)
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 jjJET_P_IV(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjREDUCE_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjCOEF(leftv res, leftv u, leftv v)
BOOLEAN iiExprArith3Tab(leftv res, leftv a, int op, const struct sValCmd3 *dA3, int at, const struct sConvertTypes *dConvertTypes)
apply an operation 'op' to arguments a, a->next and a->next->next return TRUE on failure
static BOOLEAN jjOP_REST(leftv res, leftv u, leftv v)
static BOOLEAN jjEXECUTE(leftv, leftv v)
static BOOLEAN jjDEG_M_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjSTATUS3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjLEADEXP(leftv res, leftv v)
static BOOLEAN jjDEG_M(leftv res, leftv u)
static BOOLEAN jjPLUS_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjDIFF_COEF(leftv res, leftv u, leftv v)
int iiArithRemoveCmd(char *szName)
static BOOLEAN jjGE_N(leftv res, leftv u, leftv v)
static BOOLEAN jjEQUAL_SM(leftv res, leftv u, leftv v)
static BOOLEAN jjINTERPOLATION(leftv res, leftv l, leftv v)
static BOOLEAN jjSIMPL_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjRING3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjREDUCE_P(leftv res, leftv u, leftv v)
static BOOLEAN jjDIV_Ma(leftv res, leftv u, leftv v)
static BOOLEAN jjFRES3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjMODULO(leftv res, leftv u, leftv v)
static BOOLEAN jjCOMPARE_IV(leftv res, leftv u, leftv v)
STATIC_VAR int WerrorS_dummy_cnt
static BOOLEAN jjREAD2(leftv res, leftv u, leftv v)
static BOOLEAN jjREDUCE3_P(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjPAR1(leftv res, leftv v)
static BOOLEAN jjnlInt(leftv res, leftv u)
cmdnames * sCmds
array of existing commands
static BOOLEAN jjFAREY_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjPLUS_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjGCD_N(leftv res, leftv u, leftv v)
static BOOLEAN jjELIMIN(leftv res, leftv u, leftv v)
static BOOLEAN jjPLUSPLUS(leftv, leftv u)
static Subexpr jjMakeSub(leftv e)
static BOOLEAN jjCHINREM_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjROWS(leftv res, leftv v)
static BOOLEAN jjJET_ID(leftv res, leftv u, leftv v)
static BOOLEAN iiExprArith2TabIntern(leftv res, leftv a, int op, leftv b, BOOLEAN proccall, const struct sValCmd2 *dA2, int at, int bt, const struct sConvertTypes *dConvertTypes)
int IsCmd(const char *n, int &tok)
static BOOLEAN jjSBA(leftv res, leftv v)
static BOOLEAN jjOP_IM_I(leftv res, leftv u, leftv v)
static BOOLEAN jjJanetBasis(leftv res, leftv v)
static BOOLEAN jjKBASE(leftv res, leftv v)
static BOOLEAN jjTENSOR(leftv res, leftv u, leftv v)
static BOOLEAN jjmpTrace(leftv res, leftv v)
static BOOLEAN jjRING_PL(leftv res, leftv a)
static BOOLEAN jjREDUCE4(leftv res, leftv u)
static BOOLEAN jjFWALK(leftv res, leftv u, leftv v)
static BOOLEAN jjTEST(leftv, leftv v)
static BOOLEAN jjDIFF_ID_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjSYZ_2(leftv res, leftv u, leftv v)
static BOOLEAN jjPRUNE(leftv res, leftv v)
EXTERN_VAR int singclap_factorize_retry
static BOOLEAN jjDIVISION4(leftv res, leftv v)
unsigned nLastIdentifier
valid 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 jjPLUS_SM(leftv res, leftv u, leftv v)
BOOLEAN jjLOAD_TRY(const char *s)
static BOOLEAN jjLIFT3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjENVELOPE(leftv res, leftv a)
static BOOLEAN jjSetRing(leftv, leftv u)
static BOOLEAN jjMINUS_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjTIMES_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjFACSTD2(leftv res, leftv v, leftv w)
static BOOLEAN jjINTVEC_PL(leftv res, leftv v)
STATIC_VAR SArithBase sArithBase
Base entry for arithmetic.
static BOOLEAN jjEXPORTTO(leftv, leftv u, leftv v)
static BOOLEAN jjPlural_num_poly(leftv res, leftv a, leftv b)
static BOOLEAN jjDIV_P(leftv res, leftv u, leftv v)
static BOOLEAN jjKBASE2(leftv res, leftv u, leftv v)
static BOOLEAN jjPOWER_I(leftv res, leftv u, leftv v)
static BOOLEAN jjRES(leftv res, leftv u, leftv v)
static int iin_Int(number &n, coeffs cf)
static BOOLEAN jjPLUS_P_MA(leftv res, leftv u, leftv v)
static BOOLEAN jjMINRES_R(leftv res, leftv v)
static BOOLEAN jjCOLS(leftv res, leftv v)
static BOOLEAN jjPLUS_BIM(leftv res, leftv u, leftv v)
static BOOLEAN jjP2BI(leftv res, leftv v)
static void WerrorS_dummy(const char *)
static BOOLEAN jjGE_I(leftv res, leftv u, leftv v)
static BOOLEAN jjTRANSP_IV(leftv res, leftv v)
static BOOLEAN jjGT_N(leftv res, leftv u, leftv v)
static BOOLEAN jjUNIVARIATE(leftv res, leftv v)
static BOOLEAN jjMODULO4(leftv res, leftv u)
static BOOLEAN jjHOMOG_ID_W(leftv res, leftv u, leftv v, leftv)
static BOOLEAN jjWEDGE(leftv res, leftv u, leftv v)
EXTERN_VAR BOOLEAN expected_parms
static BOOLEAN jjCOMPARE_P(leftv res, leftv u, leftv v)
static BOOLEAN jjFIND3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjLU_INVERSE(leftv res, leftv v)
static BOOLEAN jjMODULO3S(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjBAREISS_BIM(leftv res, leftv v)
static BOOLEAN jjPLUS_MA_P(leftv res, leftv u, leftv v)
static BOOLEAN jjSIMPL_P(leftv res, leftv u, leftv v)
static BOOLEAN jjPFAC1(leftv res, leftv v)
static BOOLEAN jjQRDS(leftv res, leftv INPUT)
static BOOLEAN jjELIMIN_IV(leftv res, leftv u, leftv v)
static BOOLEAN 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 jjLT_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjPOWER_P(leftv res, leftv u, leftv v)
BOOLEAN jjLIST_PL(leftv res, leftv v)
static BOOLEAN jjPLUSMINUS_Gen(leftv res, leftv u, leftv v)
static BOOLEAN jjCALL2ARG(leftv res, leftv u)
static BOOLEAN jjINDEX_PBu(leftv res, leftv u, leftv v)
static int iiTabIndex(const jjValCmdTab dArithTab, const int len, const int op)
static BOOLEAN jjSYZYGY(leftv res, leftv v)
static BOOLEAN jjPOWER_N(leftv res, leftv u, leftv v)
static BOOLEAN jjKLAMMER_PL(leftv res, leftv u)
static BOOLEAN jjSUBST_M(leftv res, leftv u)
static BOOLEAN jjEQUAL_P(leftv res, leftv u, leftv v)
static BOOLEAN jjLU_DECOMP(leftv res, leftv v)
static BOOLEAN jjPlural_num_mat(leftv res, leftv a, leftv b)
static BOOLEAN jjIDEAL_PL(leftv res, leftv v)
static BOOLEAN jjNVARS(leftv res, leftv v)
static BOOLEAN jjERROR(leftv, leftv u)
static BOOLEAN jjSTATUS2(leftv res, leftv u, leftv v)
static BOOLEAN jjALIGN_V(leftv res, leftv u, leftv v)
static BOOLEAN jjRINGLIST_C(leftv res, leftv v)
BOOLEAN iiConvert(int inputType, int outputType, int index, leftv input, leftv output, const struct sConvertTypes *dConvertTypes)
const struct sConvertTypes dConvertTypes[]
VAR omBin sip_command_bin
lists ipNameListLev(idhdl root, int lev)
idhdl enterid(const char *s, int lev, int t, idhdl *root, BOOLEAN init, BOOLEAN search)
lists ipNameList(idhdl root)
EXTERN_VAR omBin sleftv_bin
BOOLEAN load_builtin(const char *newlib, BOOLEAN autoexport, SModulFunc_t init)
int(* SModulFunc_t)(SModulFunctions *)
BOOLEAN iiLoadLIB(FILE *fp, const char *libnamebuf, const char *newlib, idhdl pl, BOOLEAN autoexport, BOOLEAN tellerror)
char * iiConvName(const char *libname)
BOOLEAN iiGetLibStatus(const char *lib)
BOOLEAN iiMake_proc(idhdl pn, package pack, leftv args)
BOOLEAN iiTryLoadLib(leftv v, const char *id)
BOOLEAN load_modules(const char *newlib, char *fullname, BOOLEAN autoexport)
INST_VAR sleftv iiRETURNEXPR
SModulFunc_t iiGetBuiltinModInit(const char *libname)
lists rDecompose(const ring r)
lists rDecompose_list_cf(const ring r)
BOOLEAN iiCheckTypes(leftv args, const short *type_list, int report)
check a list of arguemys against a given field of types return TRUE if the types match return FALSE (...
ring rInit(leftv pn, leftv rv, leftv ord)
leftv iiMap(map theMap, const char *what)
int iiRegularity(lists L)
BOOLEAN rDecompose_CF(leftv res, const coeffs C)
void iiMakeResolv(resolvente r, int length, int rlen, char *name, int typ0, intvec **weights)
int exprlist_length(leftv v)
BOOLEAN mpKoszul(leftv res, leftv c, leftv b, leftv id)
poly iiHighCorner(ideal I, int ak)
lists scIndIndset(ideal S, BOOLEAN all, ideal Q)
idhdl rFindHdl(ring r, idhdl n)
syStrategy syConvList(lists li)
ring rCompose(const lists L, const BOOLEAN check_comp, const long bitmask, const int isLetterplace)
const char * lastreserved
lists syConvRes(syStrategy syzstr, BOOLEAN toDel, int add_row_shift)
BOOLEAN iiExport(leftv v, int toLev)
const struct sValCmd1 dArith1[]
const struct sValCmd2 dArith2[]
BOOLEAN(* proc1)(leftv, leftv)
const struct sValCmdM dArithM[]
const struct sValCmd3 dArith3[]
ideal id_Farey_0(ideal x, number N, const ring r)
ideal id_ChineseRemainder_0(ideal *xx, number *q, int rl, const ring r)
long kHomModDeg(poly p, const ring r)
ideal kMin_std(ideal F, ideal Q, tHomog h, intvec **w, ideal &M, intvec *hilb, int syzComp, int reduced)
ideal kInterRed(ideal F, const ideal Q)
poly kNF(ideal F, ideal Q, poly p, int syzComp, int lazyReduce)
ideal kSba(ideal F, ideal Q, tHomog h, intvec **w, int sbaOrder, int arri, intvec *hilb, int syzComp, int newIdeal, intvec *vw)
ideal kStd(ideal F, ideal Q, tHomog h, intvec **w, intvec *hilb, int syzComp, int newIdeal, intvec *vw, s_poly_proc_t sp)
ideal rightgb(ideal F, 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 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)
BOOLEAN rHasMixedOrdering(const ring r)
static BOOLEAN rField_is_GF(const ring r)
static short rVar(const ring r)
#define rVar(r) (r->N)
BOOLEAN rHasLocalOrMixedOrdering(const ring r)
#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)
int slStatusSsiL(lists L, int timeout)
#define SI_LINK_SET_CLOSE_P(l)
ideal id_Vec2Ideal(poly vec, const ring R)
ideal idInit(int idsize, int rank)
initialise an ideal / module
void id_Delete(ideal *h, ring r)
deletes an ideal/module/matrix
void id_Norm(ideal id, const ring r)
ideal id = (id[i]), result is leadcoeff(id[i]) = 1
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)
BOOLEAN RingDependend(int t)
resolvente syResolvente(ideal arg, int maxlength, int *length, intvec ***weights, BOOLEAN minim)
syStrategy syResolution(ideal arg, int maxlength, intvec *w, BOOLEAN minim)
ideal syMinBase(ideal arg)
syStrategy syHilb(ideal arg, int *length)
resolvente sySchreyerResolvente(ideal arg, int maxlength, int *length, BOOLEAN isMonomial=FALSE, BOOLEAN notReplace=FALSE)
syStrategy sySchreyer(ideal arg, int maxlength)
int syDim(syStrategy syzstr)
syStrategy syMinimize(syStrategy syzstr)
syStrategy 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)
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)