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
207extern int iiArithAddCmd(
const char *szName,
short nAlias,
short nTokval,
208 short nToktype,
short nPos=-1);
218#define ii_div_by_0 "div. by 0"
227 if ((
long)
i==
l)
return l;
252 int bb = (int)(
long)(
v->Data());
257 case '+': cc=
bimAdd(aa,bb);
break;
258 case '-': cc=
bimSub(aa,bb);
break;
259 case '*': cc=
bimMult(aa,bb);
break;
261 res->data=(
char *)cc;
271 number bb = (number)(
v->Data());
278 res->data=(
char *)cc;
288 int bb = (int)(
long)(
v->Data());
292 case '+': (*aa) += bb;
break;
293 case '-': (*aa) -= bb;
break;
294 case '*': (*aa) *= bb;
break;
297 case '%': (*aa) %= bb;
break;
299 res->data=(
char *)aa;
309 int bb = (int)(
long)(
v->Data());
318 res->data=(
char *)aa;
327 int l=(int)(
long)
v->Data();
330 int d=(int)(
long)u->
Data();
333 for(
i=
l-1;
i>=0;
i--) { (*vv)[
i]=d; }
334 res->data=(
char *)vv;
340 res->data=(
char *)
new intvec((
int)(long)u->
Data(),(int)(
long)
v->Data());
352 res->data = (
char *) (r<0);
355 res->data = (
char *) (r>0);
358 res->data = (
char *) (r<=0);
361 res->data = (
char *) (r>=0);
365 res->data = (
char *) (r==0);
369 if(r==-2) {
WerrorS(
"size incompatible");
return TRUE; }
380 res->data = (
char *) (r<0);
383 res->data = (
char *) (r>0);
386 res->data = (
char *) (r<=0);
389 res->data = (
char *) (r>=0);
393 res->data = (
char *) (r==0);
397 if(r==-2) {
WerrorS(
"size incompatible");
return TRUE; }
403 int b = (int)(
long)(
v->Data());
408 res->data = (
char *) (r<0);
411 res->data = (
char *) (r>0);
414 res->data = (
char *) (r<=0);
417 res->data = (
char *) (r>=0);
421 res->data = (
char *) (r==0);
436 res->data = (
char *) (
long)(r < 0);
439 res->data = (
char *) (
long)(r > 0);
442 res->data = (
char *) (
long)(r <= 0);
445 res->data = (
char *) (
long)(r >= 0);
449 res->data = (
char *)(
long) (r == 0);
457 poly
p=(poly)u->
Data();
458 poly q=(poly)
v->Data();
463 res->data = (
char *) (r < 0);
466 res->data = (
char *) (r > 0);
469 res->data = (
char *) (r <= 0);
472 res->data = (
char *) (r >= 0);
484 char* a = (
char * )(u->
Data());
485 char*
b = (
char * )(
v->Data());
517 else if (
v->Next()!=
NULL)
527 int b=(int)(
long)u->
Data();
528 int e=(int)(
long)
v->Data();
537 else if ((e==0)||(
b==1))
555 if(rc/
b!=oldrc) overflow=
TRUE;
559 WarnS(
"int overflow(^), result may be wrong");
561 res->data = (
char *)((
long)rc);
567 WerrorS(
"exponent must be non-negative");
573 int e=(int)(
long)
v->Data();
574 number n=(number)u->
Data();
581 WerrorS(
"exponent must be non-negative");
589 int e=(int)(
long)
v->Data();
590 number n=(number)u->
Data();
607 int v_i=(int)(
long)
v->Data();
610 WerrorS(
"exponent must be non-negative");
619 Werror(
"OVERFLOW in power(d=%ld, e=%d, max=%ld)",
662 res->data =
v->CopyD();
663 res->rtyp =
v->Typ();
703 if(isupper(u->
name[0]))
705 const char *c=u->
name+1;
706 while((*c!=
'\0')&&(islower(*c)||(isdigit(*c))||(*c==
'_'))) c++;
711 Print(
"%s of type 'ANY'. Trying load.\n", u->
name);
727 package pa=(package)u->Data();
741 WerrorS(
"reserved name with ::");
753 WerrorS(
"<package>::<id> expected");
760 unsigned int a=(
unsigned int)(
unsigned long)u->
Data();
761 unsigned int b=(
unsigned int)(
unsigned long)
v->Data();
763 res->data = (
char *)((
long)c);
766 WarnS(
"int overflow(+), result may be wrong");
777 res->data = (
char *)(
nAdd((number)u->
Data(), (number)
v->Data()));
812 WerrorS(
"intmat size not compatible");
822 WerrorS(
"bigintmat/cmatrix not compatible");
833 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
841 ideal
A=(ideal)u->
Data(); ideal
B=(ideal)
v->Data();
845 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
868 char* a = (
char * )(u->
Data());
869 char*
b = (
char * )(
v->Data());
870 char* r = (
char * )
omAlloc(strlen(a) + strlen(
b) + 1);
878 res->data = (
char *)
idAdd((ideal)u->
Data(),(ideal)
v->Data());
883 void *
ap=u->
Data();
void *bp=
v->Data();
884 int aa=(int)(
long)
ap;
885 int bb=(int)(
long)bp;
887 unsigned int a=(
unsigned int)(
unsigned long)
ap;
888 unsigned int b=(
unsigned int)(
unsigned long)bp;
892 WarnS(
"int overflow(-), result may be wrong");
894 res->data = (
char *)((
long)cc);
904 res->data = (
char *)(
nSub((number)u->
Data(), (number)
v->Data()));
940 WerrorS(
"intmat size not compatible");
950 WerrorS(
"bigintmat/cmatrix not compatible");
961 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
970 ideal
A=(ideal)u->
Data(); ideal
B=(ideal)
v->Data();
974 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
983 int a=(int)(
long)u->
Data();
984 int b=(int)(
long)
v->Data();
986 if ((c>INT_MAX)||(c<INT_MIN))
987 WarnS(
"int overflow(*), result may be wrong");
988 res->data = (
char *)((
long)((int)c));
1002 res->data = (
char *)(
nMult( (number)u->
Data(), (number)
v->Data()));
1003 number n=(number)
res->data;
1005 res->data=(
char *)n;
1024 Warn(
"possible OVERFLOW in mult(d=%ld, d=%ld, max=%ld)",
1037 Warn(
"possible OVERFLOW in mult(d=%ld, d=%ld, max=%ld)",
1069 WerrorS(
"intmat size not compatible");
1081 WerrorS(
"bigintmat/cmatrix not compatible");
1095 res->data = (
char *)I;
1108 res->data = (
char *)I;
1117 res->data = (
char *)I;
1146 Werror(
"matrix size not compatible(%dx%d, %dx%d) in *",
1156 ideal
A=(ideal)u->
Data(); ideal
B=(ideal)
v->Data();
1160 Werror(
"matrix size not compatible(%dx%d, %dx%d) in *",
1177 res->data = (
char *)(
long)((int)((
long)u->
Data()) >= (
int)((long)
v->Data()));
1195 res->data = (
char *)(
long)((int)((
long)u->
Data()) > (
int)((long)
v->Data()));
1209 res->data = (
char *)(
long)((int)((
long)u->
Data()) <= (
int)((long)
v->Data()));
1222 res->data = (
char *)(
long)((int)((
long)u->
Data()) < (
int)((long)
v->Data()));
1232 int a= (int)(
long)u->
Data();
1233 int b= (int)(
long)
v->Data();
1247 r=((a-c) /
b);
break;
1249 res->data=(
void *)((
long)r);
1254 number q=(number)
v->Data();
1262 res->data = (
char *)q;
1267 number q=(number)
v->Data();
1275 res->data = (
char *)q;
1280 poly q=(poly)
v->Data();
1281 poly
p=(poly)(u->
Data());
1298 poly q=(poly)
v->Data();
1322 res->data=(
char *)mm;
1333 res->data = (
char *)((
int)((long)u->
Data()) == (
int)((long)
v->Data()));
1351 res->data = (
char *)(
long)(u->
Data()==
v->Data());
1357 res->data = (
char *)((
long)
nEqual((number)u->
Data(),(number)
v->Data()));
1363 poly
p=(poly)u->
Data();
1364 poly q=(poly)
v->Data();
1384 res->data = (
char *)((
long)u->
Data() && (long)
v->Data());
1389 res->data = (
char *)((
long)u->
Data() || (long)
v->Data());
1402 while (sh->next !=
NULL) sh=sh->next;
1418 WerrorS(
"indexed object must have a name");
1429 t.
data=(
char *)((
long)(*iv)[
i]);
1452 poly
p=(poly)u->
Data();
1453 int i=(int)(
long)
v->Data();
1473 int i=(int)(
long)
v->Data();
1492 poly
p=(poly)u->
Data();
1500 while ((
p!=
NULL) && (sum>0))
1516 res->data=(
char *)r;
1521 poly
p=(poly)u->
Data();
1522 int i=(int)(
long)
v->Data();
1557 res->data=(
char *)r;
1565 long slen = strlen(u->
name) + 14;
1566 char *nn = (
char*)
omAlloc(slen);
1567 sprintf(nn,
"%s(%d)",u->
name,(
int)(
long)
v->Data());
1580 long slen = strlen(u->
name) + 14;
1581 char *n = (
char*)
omAlloc(slen);
1594 sprintf(n,
"%s(%d)",u->
name,(*iv)[
i]);
1615 while (
h->next!=
NULL)
h=
h->next;
1629 tmp_proc->
id=
"_auto";
1633 d=u->
data; u->
data=(
void *)tmp_proc;
1650 if (sl)
return TRUE;
1689 number *
x=(number *)
omAlloc(rl*
sizeof(number));
1690 number *q=(number *)
omAlloc(rl*
sizeof(number));
1692 for(
i=rl-1;
i>=0;
i--)
1699 for(
i=rl-1;
i>=0;
i--)
1705 res->data=(
char *)n;
1715 number *
x=(number *)
omAlloc(rl*
sizeof(number));
1716 number *q=(number *)
omAlloc(rl*
sizeof(number));
1718 for(
i=rl-1;
i>=0;
i--)
1724 for(
i=rl-1;
i>=0;
i--)
1728 Werror(
"poly expected at pos %d",
i+1);
1729 for(
i=rl-1;
i>=0;
i--)
1741 for(
i=rl-1;
i>=0;
i--)
1753 number n=n_ChineseRemainder(
x,q,rl,
currRing->cf);
1754 for(
i=rl-1;
i>=0;
i--)
1762 for(
i=rl-1;
i>=0;
i--)
1774 int s=(int)(
long)
v->Data();
1783 ideal
M=(ideal)u->
CopyD();
1784 int s=(int)(
long)
v->Data();
1797 poly
p=(poly)
v->Data();
1804 poly
p=(poly)
v->Data();
1811 int i=
pVar((poly)
v->Data());
1830 (ideal)(
v->Data()),
p);
1842 ideal I=(ideal)u->
Data();
1847 res->data = (
char *)((
long)d);
1852 poly
p=(poly)u->
Data();
1858 res->data = (
char *)(d);
1861 res->data=(
char *)(
long)(-1);
1866 int pos=(int)(
long)
v->Data();
1873 int pos=(int)(
long)
v->Data();
1874 ideal I=(ideal)u->
Data();
1888 ideal
m=(ideal)u->
Data();
1894 int i=
pVar((poly)
v->Data());
1905 int i=
pVar((poly)
v->Data());
1924 Warn(
"dim(%s,...) may be wrong because the mixed monomial ordering",
v->Name());
1938 ideal vi=(ideal)
v->Data();
1940 ideal ui=(ideal)u->
Data();
1954 res->data=(
char *)L;
1991 number uu=(number)u->
Data();number vv=(number)
v->Data();
2000 res->data=(
char *)L;
2005 int uu=(int)(
long)u->
Data();
int vv=(int)(
long)
v->Data();
2006 int p0=
ABS(uu),p1=
ABS(vv);
2007 int f0 = 1, f1 = 0, g0 = 0, g1 = 1, q, r;
2028 res->data=(
char *)L;
2035 if (ret)
return TRUE;
2038 res->data=(
char *)L;
2039 L->
m[0].
data=(
void *)r;
2051 int sw=(int)(
long)dummy->
Data();
2053 if ((sw<0)||(sw>2)) fac_sw=1;
2066 l->m[0].data=(
void *)
f;
2068 l->m[1].data=(
void *)
v;
2069 res->data=(
void *)
l;
2074 res->data=(
void *)
f;
2087 res->data=(
void *)
p;
2114 res->data=(
void *)L;
2121 number uu=(number)u->
Data();
2122 number vv=(number)
v->Data();
2130 ideal uu=(ideal)u->
Data();
2131 number vv=(number)
v->Data();
2153 ring r=(ring)u->
Data();
2162 int par_perm_size=0;
2172 par_perm_size=
rPar(r);
2186 perm=(
int *)
omAlloc0((r->N+1)*
sizeof(int));
2187 if (par_perm_size!=0)
2188 par_perm=(
int *)
omAlloc0(par_perm_size*
sizeof(
int));
2193 char ** r_par_names=
NULL;
2194 if (r->cf->extRing!=
NULL)
2196 r_par=r->cf->extRing->N;
2197 r_par_names=r->cf->extRing->names;
2200 char ** c_par_names=
NULL;
2204 c_par_names=
currRing->cf->extRing->names;
2208 maFindPerm(r->names, r->N, r_par_names, r_par,
2210 perm,par_perm,
currRing->cf->type);
2212 #ifdef HAVE_SHIFTBBA
2217 perm,par_perm,
currRing->cf->type,r->isLPring);
2232 if (par_perm_size!=0)
2247 Print(
"// par nr %d: %s -> %s\n",
2257 perm,par_perm,par_perm_size,nMap)))
2275 Werror(
"no identity map from %s (%s -> %s)",u->
Fullname(),s1,s2);
2286 char *where=(
char *)u->
Data();
2287 char *what=(
char *)
v->Data();
2288 char *
found = strstr(where,what);
2291 res->data=(
char *)((
found-where)+1);
2300 ideal
id = (ideal)u->
Data();
2301 int max_length = (int)(
long)
v->Data();
2304 WerrorS(
"length for fres must not be negative");
2307 if (max_length == 0)
2312 Warn(
"full resolution in a qring may be infinite, "
2313 "setting max length to %d", max_length);
2316 char *method = (
char *)
w->Data();
2320 if (strcmp(method,
"complete") != 0
2321 && strcmp(method,
"frame") != 0
2322 && strcmp(method,
"extended frame") != 0
2323 && strcmp(method,
"single module") != 0)
2325 WerrorS(
"wrong optional argument for fres");
2330 res->data = (
void *)r;
2338 w->data = (
char *)
"complete";
2352 int uu=(int)(
long)u->
Data();
int vv=(int)(
long)
v->Data();
2353 int p0=
ABS(uu),p1=
ABS(vv);
2360 res->data=(
char *)(
long)p0;
2365 number n1 = (number) u->
Data();
2366 number n2 = (number)
v->Data();
2372 number a=(number) u->
Data();
2373 number
b=(number)
v->Data();
2398 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
2399 PrintS(
"// performed for generic fibre, that is, over Q\n");
2407 switch((
int)(
long)
v->Data())
2410 res->data=(
void *)iv;
2423 int i=
pVar((poly)
v->Data());
2435 WerrorS(
"variable must have weight 1");
2440 int i=
pVar((poly)
v->Data());
2457 WerrorS(
"variable must have weight 1");
2464 ideal v_id=(ideal)
v->Data();
2473 currRing->pLexOrder=save_pLexOrder;
2496 const int n = L->
nr;
assume (n >= 0);
2497 std::vector<ideal> V(n + 1);
2499 for(
int i = n;
i >= 0;
i--) V[
i] = (ideal)(L->
m[
i].
Data());
2518 res->data = (
char *)
pJet((poly)u->
CopyD(), (int)(
long)
v->Data());
2552 h.data=(
void *)(
long)
IDELEMS((ideal)
v->Data());
2564 Werror(
"At least %d ncgen variables are needed for this computation.", ul);
2584 Werror(
"At least %d ncgen variables are needed for this computation.",
IDELEMS((ideal)u->
Data()));
2601 char *
s=(
char *)u->
Data();
2602 if(strcmp(
s,
"with")==0)
2604 if (strcmp(
s,
"try")==0)
2606 WerrorS(
"invalid second argument");
2607 WerrorS(
"load(\"libname\" [,option]);");
2633 ideal u_id=(ideal)u->
Data();
2634 ideal v_id=(ideal)
v->Data();
2637 if ((*w_u).compare((w_v))!=0)
2639 WarnS(
"incompatible weights");
2640 delete w_u; w_u=
NULL;
2648 WarnS(
"wrong weights");
2649 delete w_u; w_u=
NULL;
2654 res->data = (
char *)
idModulo(u_id,v_id ,hom,&w_u);
2665 number q=(number)
v->Data();
2676 number q=(number)
v->Data();
2687 poly q=(poly)
v->Data();
2693 poly
p=(poly)(u->
Data());
2711 char *opt=(
char *)
v->Data();
2723 if(strcmp(
l->m->type,
"ASCII")!=0)
2725 Werror(
"ASCII link required, not `%s`",
l->m->type);
2730 if (
l->name[0]!=
'\0')
2734 if (
v==
NULL) opt=(
const char*)
"i";
2735 else opt=(
const char *)
v->Data();
2777 const char *
s=(
const char *)u->
Data();
2778 newstruct_desc d=
NULL;
2784 else WerrorS(
"name of newstruct must be longer than 1 character");
2790 int i=(
int)(long)
v->Data();
2798 Werror(
"par number %d out of range 1..%d",
i,
p);
2808 WerrorS(
"basering must NOT be a qring!");
2828 WerrorS(
"basering must NOT be a qring!");
2848 WerrorS(
"basering must NOT be a qring!");
2868 WerrorS(
"basering must NOT be a qring!");
2890 const poly q = (poly)
b->Data();
2903 const poly
p = (poly)a->
Data();
2917 const poly q = (poly)
b->Data();
2922 const poly
p = (poly)a->
Data();
2923 int k=(int)(
long)c->
Data();
2927 for (
int i = 0;
i <
k;
i++)
2939 if (qq ==
NULL)
break;
2945 Werror(
"invalid number of iterations");
2955 ring r = (ring)a->
Data();
2958 res->data =
b->Data();
2959 res->rtyp =
b->rtyp;
2964 Werror(
"%s is not an opposite ring to current ring",a->
Fullname());
2977 res->rtyp = argtype;
2985 res->rtyp = argtype;
2993 res->rtyp = argtype;
3006 res->rtyp = argtype;
3011 WerrorS(
"unsupported type in oppose");
3034 int i=(int)(
long)u->
Data();
3035 int j=(int)(
long)
v->Data();
3036 if (
j-
i <0) {
WerrorS(
"invalid range for random");
return TRUE;}
3043 int isRowEchelon = (int)(
long)
v->Data();
3044 if (isRowEchelon != 1) isRowEchelon = 0;
3045 int rank =
luRank(
m, isRowEchelon);
3046 res->data =(
char *)(
long)rank;
3058 Werror(
"cannot read from `%s`",
s);
3067 ideal vi=(ideal)
v->Data();
3075 ideal ui=(ideal)u->
Data();
3076 ideal vi=(ideal)
v->Data();
3084 int maxl=(int)(
long)
v->Data();
3087 WerrorS(
"length for res must not be negative");
3093 ideal u_id=(ideal)u->
Data();
3102 "full resolution in a qring may be infinite, setting max length to %d",
3116 int add_row_shift=0;
3120 add_row_shift = ww->
min_in();
3121 (*ww) -= add_row_shift;
3139 (
"`lres` not implemented for inhomogeneous input or qring");
3143 WarnS(
"the current implementation of `lres` may not work in the case of a single variable");
3153 (
"`kres` not implemented for inhomogeneous input or qring");
3165 (
"`hres` not implemented for inhomogeneous input or qring");
3168 ideal u_id_copy=
idCopy(u_id);
3170 r=
syHilb(u_id_copy,&dummy);
3183 res->data=(
void *)r;
3184 if ((weights!=
NULL) && (ww!=
NULL)) {
delete ww; ww=
NULL; }
3188 if (weights!=
NULL) (*ww) += add_row_shift;
3218 n1 = (number)u->
CopyD();
3222 i = (int)(
long)u->
Data();
3230 i = (int)(
long)
v->Data();
3234 res->data = (
char*)
l;
3240 res->data = (
char *)r;
3253 res->data = (
char *)r;
3259 int i=
rSum((ring)u->
Data(),(ring)
v->Data(),r);
3260 res->data = (
char *)r;
3263#define SIMPL_NORMALIZE 64
3264#define SIMPL_LMDIV 32
3265#define SIMPL_LMEQ 16
3272 int sw = (int)(
long)
v->Data();
3303 res->data = (
char * )
id;
3310 int sw=(int)(
long)dummy->
Data();
3325 l->m[0].data=(
void *)
f;
3327 l->m[1].data=(
void *)
v;
3328 res->data=(
void *)
l;
3333 res->data=(
void *)
f;
3346 res->data=(
void *)
p;
3367 int sw = (int)(
long)
v->Data();
3378 res->data = (
char * )
p;
3386 ideal u_id=(ideal)(u->
Data());
3411 ideal i1=(ideal)(u->
Data());
3417 poly
p=(poly)
v->Data();
3421 memset(i0->m,0,
sizeof(poly)*
IDELEMS(i0));
3454 i0=(ideal)
v->CopyD();
3456 memset(i0->m,0,
sizeof(poly)*
IDELEMS(i0));
3497 ideal I=(ideal)u->
Data();
3504 int add_row_shift=
w->min_in();
3505 (*w)-=add_row_shift;
3523 res->data = (
char *)S;
3530 for(
int i=0;
i<vl;
i++)
3539 for(
int i=0;
i<vl;
i++)
3556 ideal
A=(ideal)u->
Data();
3557 ideal
B=(ideal)
v->Data();
3563 sleftv tmp_u,tmp_v,tmp_res;
3583 int i=(
int)(long)
v->Data();
3604 int t = (int)(
long)
v->Data();
3614 res->data = (
void*)(
long)
i;
3629 int timeout = 1000*(int)(
long)
v->Data();
3637 for(
unsigned nfinished = 0; nfinished < ((unsigned)Lforks->
nr)+1; nfinished++)
3662 res->data = (
void*)(
long)ret;
3670#define jjWRONG2 (proc2)jjWRONG
3671#define jjWRONG3 (proc3)jjWRONG
3718 res->data = (
char *)n;
3723 res->data = (
char *)(-(
long)u->
Data());
3730 res->data = (
char *)n;
3748 res->data = (
char *)iv;
3755 res->data = (
char *)bim;
3764 ring r=(ring)u->
Data();
3768 char name_buffer[100];
3771 sprintf(name_buffer,
"PYTHON_RING_VAR%d",ending);
3794 l->m[0].data=(
void *)
m;
3795 l->m[1].data=(
void *)iv;
3796 res->data = (
char *)
l;
3816 number n=(number)u->
CopyD();
3840 number n=(number) tmp.
data;
3855 res->data = (
char *)(
long)
rChar((ring)
v->Data());
3865 res->data = (
char *)(
long)((
bigintmat*)(
v->Data()))->cols();
3870 res->data = (
char *)(
long)((
intvec*)(
v->Data()))->cols();
3878 res->data = (
char *)
p;
3889 res->data = (
char *)(
long)(aa->
rows()*aa->
cols());
3894 res->data = (
char *)(
long)
nSize((number)
v->Data());
3911 res->data = (
char *)(
long)((
intvec*)(
v->Data()))->length();
3916 ring r=(ring)
v->Data();
3922 extern int ipower (
int b,
int n );
3923 elems=
ipower(r->cf->ch,r->cf->extRing->pFDeg(r->cf->extRing->qideal->m[0],r->cf->extRing));
3925 res->data = (
char *)(
long)elems;
3931 poly
p=(poly)
v->Data();
3933 else res->data=(
char *)-1;
3938 ideal I=(ideal)u->
Data();
3944 res->data = (
char *)(
long)d;
3953 PrintS(
"// NOTE: computation of degree is being performed for\n");
3954 PrintS(
"// generic fibre, that is, over Q\n");
3973 else if (
v->rtyp!=0)
res->data=(
void *)(-1);
3980 number n =
reinterpret_cast<number
>(
v->CopyD());
3989 number n =
reinterpret_cast<number
>(
v->CopyD());
4005 i=
m->rows();
j=
m->cols();
4010 Werror(
"det of %d x %d bigintmat",
i,
j);
4019 number2 r=(number2)
omAlloc0(
sizeof(*r));
4021 i=
m->rows();
j=
m->cols();
4025 r->cf=
m->basecoeffs();
4030 Werror(
"det of %d x %d cmatrix",
i,
j);
4041 i=
m->rows();
j=
m->cols();
4046 Werror(
"det of %d x %d intmat",
i,
j);
4053 ideal I=(ideal)
v->Data();
4066 WerrorS(
"`dim` is not implemented for letterplace rings over rings");
4072 WerrorS(
"qring not supported by `dim` for letterplace rings at the moment");
4075 int gkDim =
lp_gkDim((ideal)(
v->Data()));
4076 res->data = (
char *)(
long)gkDim;
4077 return (gkDim == -2);
4082 Warn(
"dim(%s) may be wrong because the mixed monomial ordering",
v->Name());
4095 Werror(
"cannot dump to `%s`",
s);
4104 int co=(int)(
long)
v->Data();
4110 else WerrorS(
"argument of gen must be positive");
4115 char * d = (
char *)
v->Data();
4116 char *
s = (
char *)
omAlloc(strlen(d) + 13);
4117 strcpy(
s, (
char *)d);
4118 strcat(
s,
"\n;RETURN();\n");
4155 WarnS(
"no factorization implemented");
4159 res->data=(
void *)L;
4172 l->m[0].data=(
void *)
f;
4174 l->m[1].data=(
void *)
v;
4175 res->data=(
void *)
l;
4186 Werror(
"cannot get dump from `%s`",
s);
4195 ideal I=(ideal)
v->Data();
4204 ideal I=(ideal)
v->Data();
4218 WerrorS(
"module must be zero-dimensional");
4219 if (delete_w)
delete w;
4242 if (delete_w)
delete w;
4243 res->data=(
void *)po;
4251 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
4252 PrintS(
"// performed for generic fibre, that is, over Q\n");
4266 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
4267 PrintS(
"// performed for generic fibre, that is, over Q\n");
4276 ideal v_id=(ideal)
v->Data();
4284 char *s_isHomog=
omStrDup(
"isHomog");
4290 else if (
w!=
NULL)
delete w;
4311 int deg = (int)(
long)
v->Data();
4314 WerrorS(
"degree bound of Letterplace ring is to small");
4338 res->data=(
char *)mat;
4348 res->data=(
char *)I;
4355 ring q=(ring)
v->Data();
4358 if (q->qideal==
NULL)
4365 WerrorS(
"can only get ideal from identical qring");
4391 WarnS(
"interred: this command is experimental over the integers");
4399 res->data = (
char *)(
long)
pVar((poly)
v->Data());
4410 res->data = (
char *)0;
4417 poly
p=(poly)(
v->Data());
4422 res->data = (
char *)
i;
4429 WerrorS(
"differentiation not defined in the coefficient ring");
4432 number n = (number) u->
Data();
4433 number
k = (number)
v->Data();
4446 ideal
id = (ideal)a->
Data();
4456 for(
int i = 0;
i < W;
i++,
p++, q++ )
4491 poly
p=(poly)
v->Data();
4505 poly
p=(poly)
v->Data();
4518 res->data=(
char *)iv;
4523 poly
p=(poly)
v->Data();
4532 res->data = (
char*) lm;
4544 int isLetterplace=(int)(
long)
atGet(
v,
"isLetterplaceRing",
INT_CMD);
4546 res->data=(
char *)r;
4561 memset(&a2,0,
sizeof(a2));
4562 memset(&a3,0,
sizeof(a3));
4579 WerrorS(
"matrix must be constant");
4593 res->data=(
char*)ll;
4603 switch(((
int)(
long)
v->Data()))
4618 res->data = (
char *)0;
4635 l->m[0].data=(
char *)r;
4638 l->m[1].data=(
char *)
m;
4639 res->data=(
char *)
l;
4655 res->data=(
char *)tmp;
4664 number n,
i;
i=(number)
v->Data();
4669 res->data=(
void *)n;
4699 res->data=(
char*)(
long)((long)
v->Data()==0 ? 1 : 0);
4704 res->data = (
char *)(
long)(((ring)(
v->Data()))->N);
4715 poly
p=(poly)
v->Data();
4721 int i=(int)(
long)
v->Data();
4724 if ((0<
i) && (
i<=
p))
4730 Werror(
"par number %d out of range 1..%d",
i,
p);
4737 number nn=(number)
v->Data();
4745 WerrorS(
"no ring active (1)");
4748 int i=(int)(
long)
v->Data();
4754 Werror(
"par number %d out of range 1..%d",
i,
p);
4761 poly
p=(poly)
v->Data();
4765 WerrorS(
"poly must be constant");
4774 res->data=(
void *)n;
4781 poly
p=(poly)
v->Data();
4785 WerrorS(
"poly must be constant");
4799 int i =
IsPrime((
int)(
long)(
v->Data()));
4800 res->data = (
char *)(
long)(
i > 1 ?
i : 2);
4806 ideal v_id=(ideal)
v->Data();
4811 WarnS(
"wrong weights");
4831 if (((
p=(poly)
v->Data())!=
NULL)
4840 res->data = (
char *)n;
4845 char *
s= (
char *)
v->Data();
4852 res->data = (
char *)1;
4861 res->data = (
char *)1;
4869 res->data =(
char *)(
long)rank;
4888 ring r=(ring)
v->Data();
4894 long mm=r->wanted_maxExp;
4910 ring r=(ring)
v->Data();
4917 ideal
i = (ideal)
v->Data();
4918 res->data = (
char *)
i->rank;
4923 res->data = (
char *)(
long)((
bigintmat*)(
v->Data()))->rows();
4928 res->data = (
char *)(
long)((
intvec*)(
v->Data()))->rows();
4933 res->data = (
char *)(
long)
rPar(((ring)
v->Data()));
4938 res->data = (
char *)(
long)atoi((
char*)
v->Data());
4947 WerrorS(
"qring not supported by slimgb at the moment");
4952 WerrorS(
"ordering must be global for slimgb");
4956 WarnS(
"groebner base computations with inexact coefficients can not be trusted due to rounding errors");
4959 ideal u_id=(ideal)u->
Data();
4964 WarnS(
"wrong weights");
4986 ideal v_id=(ideal)
v->Data();
4993 WarnS(
"wrong weights");
5012 ideal v_id=(ideal)
v->Data();
5019 WarnS(
"wrong weights");
5038 ideal v_id=(ideal)
v->Data();
5045 WarnS(
"wrong weights");
5064 WarnS(
"groebner base computations with inexact coefficients can not be trusted due to rounding errors");
5066 ideal v_id=(ideal)
v->Data();
5073 WarnS(
"wrong weights");
5091 res->data = (
char *)
idSort((ideal)
v->Data());
5104 l->m[0].data=(
void *)
f;
5106 l->m[1].data=(
void *)
v;
5107 res->data=(
void *)
l;
5123 ideal v_id=(ideal)
v->Data();
5129 Werror(
"At least %d ncgen variables are needed for this computation.",
IDELEMS(v_id));
5142 int add_row_shift=
w->min_in();
5143 (*w)-=add_row_shift;
5160 res->data = (
char *)S;
5167 for(
int i=0;
i<vl;
i++)
5169 if (v_id->m[
i]!=
NULL)
5176 for(
int i=0;
i<vl;
i++)
5178 if (v_id->m[
i]!=
NULL)
5199 res->data = (
char *)(((
bigintmat*)(
v->Data()))->transpose());
5210 ring r = (ring)a->
Data();
5218 WarnS(
"opposite only for global orderings");
5229 ring r = (ring)a->
Data();
5245 ideal v_id=(ideal)a->
Data();
5262#if defined(HAVE_SHIFTBBA) || defined(HAVE_PLURAL)
5266 WarnS(
"groebner base computations with inexact coefficients can not be trusted due to rounding errors");
5268 ideal v_id=(ideal)
v->Data();
5294 ideal I=(ideal)
v->Data();
5309 res->data = (
char *)J;
5323 int t=(int)(
long)
v->data;
5373 int i=(int)(
long)
v->Data();
5379 res->data=(
char *)
p;
5392 WerrorS(
"no ring active (2)");
5395 int i=(int)(
long)
v->Data();
5414 WerrorS(
"`vdim` is not implemented for letterplace rings over rings");
5420 WerrorS(
"qring not supported by `vdim` for letterplace rings at the moment");
5423 int kDim =
lp_kDim((ideal)(
v->Data()));
5424 res->data = (
char *)(
long)kDim;
5425 return (kDim == -2);
5443 res->data = (
void*)(
long)
i;
5456 for(
int nfinished = 0; nfinished < Lforks->
nr+1; nfinished++)
5472 res->data = (
void*)(
long)
j;
5482#ifdef HAVE_DYNAMIC_LOADING
5489 Werror(
"%s: unknown type",
s);
5507 Werror(
"can not create package `%s`",plib);
5513 package pa=IDPACKAGE(pl);
5517 Werror(
"can not create package `%s` - binaries exists",plib);
5523 package savepack=currPack;
5539#ifdef HAVE_DYNAMIC_LOADING
5542 WerrorS(
"Dynamic modules are not supported by this version of Singular");
5562 Print(
"loading of >%s< failed\n",
s);
5571 res->data = (
char *)strlen((
char *)
v->Data());
5576 res->data = (
char *)(
long)
pLength((poly)
v->Data());
5581 res->data = (
char *)(
long)
idElem((ideal)
v->Data());
5601 res->data = (
char *)
pHead((poly)
v->Data());
5669 number n=(number)u->
CopyD();
5676 number n=(number)u->
Data();
5685 char *
s= (
char *)u->
Data();
5686 int r = (int)(
long)
v->Data();
5687 int c = (int)(
long)
w->Data();
5690 if ( (r<1) || (r>
l) || (c<0) )
5696 sprintf((
char *)
res->data,
"%-*.*s",c,c,
s+r-1);
5702 int r = (int)(
long)
v->Data();
5703 int c = (int)(
long)
w->Data();
5704 if ((r<1)||(r>iv->
rows())||(c<1)||(c>iv->
cols()))
5706 Werror(
"wrong range[%d,%d] in intmat %s(%d x %d)",
5719 while (
h->next!=
NULL)
h=
h->next;
5729 int r = (int)(
long)
v->Data();
5730 int c = (int)(
long)
w->Data();
5731 if ((r<1)||(r>bim->
rows())||(c<1)||(c>bim->
cols()))
5733 Werror(
"wrong range[%d,%d] in bigintmat %s(%d x %d)",
5747 while (
h->next!=
NULL)
h=
h->next;
5757 int r = (int)(
long)
v->Data();
5758 int c = (int)(
long)
w->Data();
5762 Werror(
"wrong range[%d,%d] in matrix %s(%d x %d)",r,c,u->
Fullname(),
5776 while (
h->next!=
NULL)
h=
h->next;
5785 ideal
m= (ideal)u->
Data();
5786 int r = (int)(
long)
v->Data();
5787 int c = (int)(
long)
w->Data();
5789 if ((r<1)||(r>
m->rank)||(c<1)||(c>
IDELEMS(
m)))
5791 Werror(
"wrong range[%d,%d] in matrix %s(%d x %d)",r,c,u->
Fullname(),
5805 while (
h->next!=
NULL)
h=
h->next;
5816 WerrorS(
"cannot build expression lists from unnamed objects");
5825 memcpy(&ut,u,
sizeof(ut));
5831 t.
data=(
char *)(
long)((*iv)[
l]);
5841 memcpy(u,&ut,
sizeof(ut));
5866 WerrorS(
"cannot build expression lists from unnamed objects");
5874 memcpy(&ut,u,
sizeof(ut));
5880 t.
data=(
char *)(
long)((*iv)[
l]);
5890 memcpy(u,&ut,
sizeof(ut));
5915 WerrorS(
"cannot build expression lists from unnamed objects");
5926 memcpy(&ut,u,
sizeof(ut));
5931 for (vl=0;vl< vv->
length(); vl++)
5933 t1.
data=(
char *)(
long)((*vv)[vl]);
5934 for (wl=0;wl< wv->
length(); wl++)
5936 t2.
data=(
char *)(
long)((*wv)[wl]);
5946 memcpy(u,&ut,
sizeof(ut));
5986 int k=(int)(
long)
w->Data();
5993 l->m[0].data=(
void *)
m;
5994 l->m[1].data=(
void *)iv;
6001 l->m[0].data=(
void *)
m;
6003 res->data = (
char *)
l;
6010 WerrorS(
"3rd argument must be a name of a matrix");
6013 ideal
i=(ideal)u->
Data();
6014 int rank=(int)
i->rank;
6023 (ideal)(
v->Data()),(poly)(
w->Data()));
6030 WerrorS(
"3rd argument must be a name of a matrix");
6055 ideal I=(ideal)u->
Data();
6076 int n=(int)(
long)
w->Data();
6077 char *where=(
char *)u->
Data();
6078 char *what=(
char *)
v->Data();
6080 if ((1>n)||(n>(int)strlen(where)))
6082 Werror(
"start position %d out of range",n);
6085 found = strchr(where+n-1,*what);
6086 if (*(what+1)!=
'\0')
6088 while((
found !=
NULL) && (strncmp(
found+1,what+1,strlen(what+1))!=0))
6095 res->data=(
char *)((
found-where)+1);
6101 if ((
int)(
long)
w->Data()==0)
6113 Werror(
"weight vector must have size %d, not %d",
6120 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
6121 PrintS(
"// performed for generic fibre, that is, over Q\n");
6129 switch((
int)(
long)
v->Data())
6132 res->data=(
void *)iv;
6146 int i=
pVar((poly)
v->Data());
6158 WerrorS(
"variable must have weight 1");
6164 int i=
pVar((poly)
v->Data());
6176 WerrorS(
"variable must have weight 1");
6181 intvec* im=
new intvec((
int)(
long)
v->Data(),(
int)(
long)
w->Data(), 0);
6187 (*im)[
i] = (*arg)[
i];
6190 res->data = (
char *)im;
6195 ideal I1=(ideal)u->
Data();
6196 ideal I2=(ideal)
v->Data();
6197 ideal I3=(ideal)
w->Data();
6208 ideal I=(ideal)u->
Data();
6210 res->data=(
char *)
idSect(I,(ideal)
v->Data(),alg);
6217 res->data = (
char *)
ppJetW((poly)u->
Data(),(int)(
long)
v->Data(),iw);
6225 WerrorS(
"2nd argument must be a unit");
6241 WerrorS(
"2nd argument must be a diagonal matrix of units");
6288 Werror(
"`%s` is undefined",
v->Fullname());
6304 const int mk = (
const int)(
long)u->
Data();
6305 bool noIdeal =
true;
bool noK =
true;
bool noAlgorithm =
true;
6306 bool noCacheMinors =
true;
bool noCacheMonomials =
true;
6307 ideal IasSB;
int k;
char* algorithm;
int cacheMinors;
int cacheMonomials;
6322 noAlgorithm =
false;
6327 noCacheMinors =
false;
6333 noCacheMonomials =
false;
6346 noAlgorithm =
false;
6351 noCacheMinors =
false;
6356 noCacheMonomials =
false;
6363 algorithm = (
char*)u->
next->
Data();
6364 noAlgorithm =
false;
6368 noCacheMinors =
false;
6373 noCacheMonomials =
false;
6381 if (strcmp(algorithm,
"bareiss") == 0)
6382 algorithm = (
char*)
"Bareiss";
6383 if (strcmp(algorithm,
"laplace") == 0)
6384 algorithm = (
char*)
"Laplace";
6385 if (strcmp(algorithm,
"cache") == 0)
6386 algorithm = (
char*)
"Cache";
6395 if ((!noK) && (
k == 0))
6397 WerrorS(
"Provided number of minors to be computed is zero.");
6400 if ((!noAlgorithm) && (strcmp(algorithm,
"Bareiss") != 0)
6401 && (strcmp(algorithm,
"Laplace") != 0)
6402 && (strcmp(algorithm,
"Cache") != 0))
6404 WerrorS(
"Expected as algorithm one of 'B/bareiss', 'L/laplace', or 'C/cache'.");
6407 if ((!noAlgorithm) && (strcmp(algorithm,
"Bareiss") == 0)
6410 Werror(
"Bareiss algorithm not defined over coefficient rings %s",
6411 "with zero divisors.");
6414 if ((mk < 1) || (mk >
m->rows()) || (mk >
m->cols()))
6423 if ((!noAlgorithm) && (strcmp(algorithm,
"Cache") == 0)
6424 && (noCacheMinors || noCacheMonomials))
6427 cacheMonomials = 100000;
6433 (noIdeal ? 0 : IasSB),
false);
6434 else if (strcmp(algorithm,
"Cache") == 0)
6436 (noIdeal ? 0 : IasSB), 3, cacheMinors,
6437 cacheMonomials,
false);
6440 (noIdeal ? 0 : IasSB),
false);
6450 (
const char *)
w->Data());
6464 WerrorS(
"2nd/3rd arguments must have names");
6468 const char *ring_name=u->
Name();
6475 if ((preim_ring==
NULL)
6478 Werror(
"preimage ring `%s` is not the basering",mapping->preimage);
6494 Werror(
"`%s` is not defined in `%s`",
v->
name,ring_name);
6498 if (kernel_cmd) image=
idInit(1,1);
6515 Werror(
"`%s` is not defined in `%s`",
w->name,ring_name);
6522 WarnS(
"preimage in local qring may be wrong: use Ring::preimageLoc instead");
6531 int i=(int)(
long)u->
Data();
6532 int r=(int)(
long)
v->Data();
6533 int c=(int)(
long)
w->Data();
6534 if ((r<=0) || (c<=0))
return TRUE;
6550 res->data = (
char *)iv;
6560 Werror(
"no random function defined for coeff %d",
cf->type);
6566 number2 nn=(number2)
omAlloc(
sizeof(*nn));
6576 int &ringvar, poly &monomexpr)
6578 monomexpr=(poly)
w->Data();
6579 poly
p=(poly)
v->Data();
6583 Werror(
"`%s` substitutes a ringvar only by a term",
6588 if ((ringvar=
pVar(
p))==0)
6597 WerrorS(
"ringvar/par expected");
6621 if (nok)
return TRUE;
6622 poly
p=(poly)u->
Data();
6627 (monomexpr!=
NULL) && (
p!=
NULL) && (mm!=0) &&
6630 Warn(
"possible OVERFLOW in subst, max exponent is %ld, substituting deg %d by deg %d",
currRing->bitmask/2,
pTotaldegree(monomexpr), mm);
6642 WerrorS(
"Substituting parameters not implemented for Letterplace rings.");
6654 if (nok)
return TRUE;
6655 ideal
id=(ideal)u->
Data();
6666 if ((
p!=
NULL) && (mm!=0) &&
6667 ((
unsigned long)deg_monexp > (
currRing->bitmask / (
unsigned long)mm/2)))
6675 Warn(
"possible OVERFLOW in subst, max exponent is %ld",
currRing->bitmask/2);
6689 WerrorS(
"Substituting parameters not implemented for Letterplace rings.");
6719 int mi=(int)(
long)
v->Data();
6720 int ni=(int)(
long)
w->Data();
6723 Werror(
"converting ideal to matrix: dimensions must be positive(%dx%d)",mi,ni);
6734 memcpy(
m->m,I->m,
i*
sizeof(poly));
6735 memset(I->m,0,
i*
sizeof(poly));
6737 res->data = (
char *)
m;
6742 int mi=(int)(
long)
v->Data();
6743 int ni=(int)(
long)
w->Data();
6746 Werror(
"converting module to matrix: dimensions must be positive(%dx%d)",mi,ni);
6755 int mi=(int)(
long)
v->Data();
6756 int ni=(int)(
long)
w->Data();
6759 Werror(
"converting matrix to matrix: dimensions must be positive(%dx%d)",mi,ni);
6776 res->data = (
char *)
m;
6799 ideal u_id=(ideal)u->
Data();
6800 ideal v_id=(ideal)
v->Data();
6803 if ((*w_u).compare((w_v))!=0)
6805 WarnS(
"incompatible weights");
6806 delete w_u; w_u=
NULL;
6814 WarnS(
"wrong weights");
6815 delete w_u; w_u=
NULL;
6821 res->data = (
char *)
idModulo(u_id,v_id ,hom,&w_u, &(
h->data.umatrix));
6850 ideal u_id=(ideal)u->
Data();
6852 ideal v_id=(ideal)
v->Data();
6855 if ((*w_u).compare((w_v))!=0)
6857 WarnS(
"incompatible weights");
6858 delete w_u; w_u=
NULL;
6866 WarnS(
"wrong weights");
6867 delete w_u; w_u=
NULL;
6883 int mi=(int)(
long)
v->Data();
6884 int ni=(int)(
long)
w->Data();
6887 Werror(
"converting to smatrix: dimensions must be positive(%dx%d)",mi,ni);
6904 Werror(
"At least %d ncgen variables are needed for this computation.", ul);
6927 Werror(
"At least %d ncgen variables are needed for this computation.",
IDELEMS((ideal)u->
Data()));
6935 &(hw->data.uideal));
6949 Werror(
"At least %d ncgen variables are needed for this computation.",
IDELEMS((ideal)u->
Data()));
6966 Werror(
"`%s` must be 0-dimensional",
v->Name());
6978 Werror(
"`%s` must be 0-dimensional",
v->Name());
6989 0,(int)(
long)
w->Data());
6996 0,(int)(
long)
w->Data());
7002 int maxl=(int)
v->Data();
7003 ideal u_id=(ideal)u->
Data();
7021 WarnS(
"wrong weights");
7050 yes = (strcmp((
char *)
res->data, (
char *)
w->Data()) == 0);
7052 res->data = (
void *)(
long)yes;
7066 ideal u_id=(ideal)(u->
Data());
7071 WarnS(
"wrong weights");
7112 lineno=(int)(
long)
v->
next->Data();
7176 WarnS(
"<module>,<module>,<int>[,<intvec>] expected!");
7183 ideal P=(ideal)w1.
Data();
7184 ideal
Q=(ideal)w2.
Data();
7186 int n=(int)(
long)v3->
Data();
7193 while( (
i > 0) && ((*w0) > 0) )
7199 WarnS(
"not all weights are positive!");
7218 L->
m[1].
data=(
void *)
R->m[0];
7302 res->data=(
char *)
id;
7307 ring r=(ring)u->
Data();
7315 WerrorS(
"fetch(<ring>,<name>[,<intvec>[,<intvec>])");
7320 if (perm_par_l!=
NULL)
7329 int par_perm_size=0;
7338 par_perm_size=
rPar(r);
7346 par_perm_size=
rPar(r);
7348 if (par_perm_size!=0)
7349 par_perm=(
int *)
omAlloc0(par_perm_size*
sizeof(
int));
7351 if (perm_par_l==
NULL)
7353 if (par_perm_size!=0)
7358 if (par_perm_size==0)
WarnS(
"source ring has no parameters");
7363 if (i<perm_par_v->
length()) par_perm[
i]=(*perm_par_v)[
i];
7367 Warn(
"invalid entry for par %d: %d\n",
i,par_perm[
i]);
7375 if (i<perm_var_v->
length()) perm[
i+1]=(*perm_var_v)[
i];
7379 Warn(
"invalid entry for var %d: %d\n",
i,perm[
i]);
7388 Print(
"// var nr %d: %s -> var %s\n",
i,r->names[
i-1],
currRing->names[perm[
i]-1]);
7394 if (par_perm[
i-1]<0)
7395 Print(
"// par nr %d: %s -> par %s\n",
7397 else if (par_perm[
i-1]>0)
7398 Print(
"// par nr %d: %s -> var %s\n",
7408 perm,par_perm,par_perm_size,nMap)))
7426 Werror(
"no identity map from %s (%s -> %s)",u->
Fullname(),s1,s2);
7433 int l=
v->listLength();
7464 WerrorS(
"cannot convert to ideal or module");
7475 r[
i]=(ideal)
h->Data();
7487 r[
i]=(ideal)tmp.
Data();
7519 matrix iMat;
int invertible;
7525 int rr = aMat->
rows();
7526 int cc = aMat->
cols();
7529 Werror(
"given matrix (%d x %d) is not quadratic, hence not invertible", rr, cc);
7534 WerrorS(
"matrix must be constant");
7544 int rr = uMat->
rows();
7545 int cc = uMat->
cols();
7548 Werror(
"third matrix (%d x %d) is not quadratic, hence not invertible",
7557 WerrorS(
"matricesx must be constant");
7564 Werror(
"expected either one or three matrices");
7582 res->data=(
char*)ll;
7606 WerrorS(
"expected exactly three matrices and one vector as input");
7616 Werror(
"first matrix (%d x %d) is not quadratic",
7622 Werror(
"second matrix (%d x %d) is not quadratic",
7628 Werror(
"second matrix (%d x %d) and third matrix (%d x %d) do not fit",
7634 Werror(
"third matrix (%d x %d) and vector (%d x 1) do not fit",
7643 WerrorS(
"matrices must be constant");
7663 res->data=(
char*)ll;
7677 (*iv)[
i]=(int)(
long)
h->Data();
7696 res->data=(
char *)iv;
7713 WerrorS(
"2nd argument must be a unit");
7726 WerrorS(
"2nd argument must be a diagonal matrix of units");
7731 (
int)(long)u3->
Data(),
7740 Werror(
"%s(`poly`,`poly`,`int`,`intvec`) exppected",
7758 else if (
w->next==
NULL)
7785 && ((strcmp(u->
Name(),
"real")==0) || (strcmp(u->
Name(),
"complex")==0)))
7806 Werror(
"`int` expected while building `%s(`",u->
name);
7811 sprintf(nn,
"%s(%d",u->
name,(
int)(
long)
v->Data());
7815 while (*
s!=
'\0')
s++;
7819 Werror(
"`int` expected while building `%s`",nn);
7823 sprintf(
s,
",%d",(
int)(
long)
v->Data());
7825 while (*
s!=
'\0')
s++;
7846 ideal I=(ideal)u->
Data();
7859 Werror(
"%s(`ideal`,`ideal`,`matrix`,`string`)\n"
7860 "or (`module`,`module`,`matrix`,`string`) expected",
7892 syz=&(hw->
data.uideal);
7899 syz=&(hw->
data.uideal);
7900 h11=(ideal)u4->
Data();
7905 h11=(ideal)u4->
Data();
7909 Werror(
"%s(`ideal/module`,`matrix`[,`module`][,`string`][,`ideal/module`]) expected",
Tok2Cmdname(
iiOp));
7921 syz=&(hw->
data.uideal);
7923 h11=(ideal)u5->
Data();
7927 Werror(
"%s(`ideal/module`,`matrix`[,`module`][,`string`][,`ideal/module`]) expected",
Tok2Cmdname(
iiOp));
7937 Werror(
"At least %d ncgen variables are needed for this computation.",
IDELEMS((ideal)u->
Data()));
7958 if (
v!=
NULL) sl =
v->listLength();
7962 int add_row_shift = 0;
7964 if (weights!=
NULL) add_row_shift=weights->
min_in();
7991 Werror(
"`%s` is undefined",
h->Fullname());
8003 res->data=(
char *)L;
8018 u_id=(ideal)u->
Data();
8019 v_id=(ideal)
v->Data();
8046 if ((*w_u).compare((w_v))!=0)
8048 WarnS(
"incompatible weights");
8049 delete w_u; w_u=
NULL;
8057 WarnS(
"wrong weights");
8058 delete w_u; w_u=
NULL;
8064 res->data = (
char *)
idModulo(u_id,v_id ,hom,&w_u, &(
h->data.umatrix),alg);
8119 WerrorS(
"2nd argument must be a diagonal matrix of units");
8126 (int)(
long)u4->
Data()
8136 else u1p=(poly)u1->
Data();
8139 else u2p=(poly)u2->
Data();
8143 WerrorS(
"2nd argument must be a unit");
8172 WerrorS(
"2nd argument must be a diagonal matrix of units");
8179 (int)(
long)u4->
Data(),
8191 WerrorS(
"2nd argument must be a unit");
8202 Werror(
"%s(`ideal`,`ideal`,`matrix`,`int`,`intvec`) exppected",
8214 for(
i=0;
i<nCount;
i++)
8244 for (
i=0;
i<nCount;
i++)
8256 for (
i = 0;
i < bb_list->
count;
i++)
8266 for (
i=0;
i<nCount;
i++)
8290 for (
i = 0;
i < bb_list->
count;
i++)
8306 res->data=(
void *)L;
8317 int n =
v->listLength();
8320 res->data =
v->String();
8324 char** slist = (
char**)
omAlloc(n*
sizeof(
char*));
8329 slist[
i] =
v->String();
8331 j+=strlen(slist[
i]);
8333 char*
s = (
char*)
omAlloc((
j+1)*
sizeof(char));
8337 strcat(
s, slist[
i]);
8357#if defined(__alpha) && !defined(linux)
8360 void usleep(
unsigned long usec);
8389 leftv u =
v;
int factorsGiven = 0;
8392 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
8395 else h = (poly)u->
Data();
8399 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
8402 else d = (int)(
long)u->
Data();
8408 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
8413 f0 = (poly)u->
Data();
8423 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
8428 xIndex = (int)(
long)u->
Data();
8429 yIndex = (int)(
long)u->
next->
Data();
8435 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
8442 WerrorS(
"expected non-constant polynomial argument(s)");
8446 if ((xIndex < 1) || (n < xIndex))
8448 Werror(
"index for variable x (%d) out of range [1..%d]", xIndex, n);
8451 if ((yIndex < 1) || (n < yIndex))
8453 Werror(
"index for variable y (%d) out of range [1..%d]", yIndex, n);
8456 if (xIndex == yIndex)
8458 WerrorS(
"expected distinct indices for variables x and y");
8463 if (factorsGiven == 0)
8477 WerrorS(
"expected h(0,y) to have exactly two distinct monic factors");
8492 res->data = (
char*)L;
8503#if defined(HAVE_USLEEP)
8504 if (((
long)
res->data) == 0L)
8513#elif defined(HAVE_SLEEP)
8514 if (((
int)
res->data) == 0)
8519 si_sleep((is - 1)/1000000 + 1);
8538 if ((rest!=
NULL) && (!
b))
8545 memcpy(
res,&tmp_res,
sizeof(tmp_res));
8560 WerrorS(
"expected (matrix, number, number, number) as arguments");
8565 (number)(
v->Data()),
8566 (number)(
w->Data()),
8567 (number)(
x->Data()));
8577 ideal i1=(ideal)(u->
Data());
8583 WerrorS(
"expected `std(`ideal/module`,`poly/vector`,`intvec`,`intvec`)");
8598 i0->m[0]=(poly)
v->Data();
8603 i0=(ideal)
v->Data();
8607 WerrorS(
"expected `std(`ideal/module`,`poly/vector`,`intvec`,`intvec`)");
8614 memset(i0->m,0,
sizeof(poly)*
IDELEMS(i0));
8624 WarnS(
"wrong weights");
8658 WerrorS(
"expected `cring` [ `id` ... ]");
8664 char **n=(
char**)
omAlloc0(
N*
sizeof(
char*));
8665 for(
int i=0;
i<
N;
i++,names=names->
next)
8667 n[
i]=(
char *)names->
Name();
8679 r->start =(int)(
long)e->
Data();
8684 int c=(int)(
long)u->
Data();
8688 PrintS(
"delete all variables\n");
8693 default:
WerrorS(
"not implemented");
8698#define NULL_VAL NULL
8702#include "iparith.inc"
8720 while (dA2[
i].cmd==op)
8722 if ((at==dA2[
i].arg1)
8723 && (bt==dA2[
i].arg2))
8734 WerrorS(
"no ring active (3)");
8740 if ((call_failed=dA2[
i].
p(
res,a,
b)))
8760 while (dA2[
i].cmd==op)
8778 WerrorS(
"no ring active (4)");
8787 || (call_failed=dA2[
i].
p(
res,an,bn)));
8826 Werror(
"`%s` is not defined",
s);
8833 Werror(
"%s(`%s`,`%s`) failed"
8838 Werror(
"`%s` %s `%s` failed"
8843 while (dA2[
i].cmd==op)
8845 if(((at==dA2[
i].arg1)||(bt==dA2[
i].arg2))
8850 Werror(
"expected %s(`%s`,`%s`)"
8853 Werror(
"expected `%s` %s `%s`"
8892 memcpy(&d->arg1,a,
sizeof(
sleftv));
8894 memcpy(&d->arg2,
b,
sizeof(
sleftv));
8898 res->data=(
char *)d;
8911 if (!bb->blackbox_Op2(op,
res,a,
b))
return FALSE;
8917 else if ((bt>
MAX_TOK)&&(op!=
'('))
8922 if(!bb->blackbox_Op2(op,
res,a,
b))
return FALSE;
8950 while (dA1[
i].cmd==op)
8962 WerrorS(
"no ring active (5)");
8969 if ((call_failed=dA1[
i].
p(
res,a)))
8989 while (dA1[
i].cmd==op)
9005 WerrorS(
"no ring active (6)");
9013 || (call_failed=dA1[
i].
p(
res,an)));
9054 while (dA1[
i].cmd==op)
9058 Werror(
"expected %s(`%s`)"
9080 memcpy(&d->arg1,a,
sizeof(
sleftv));
9084 res->data=(
char *)d;
9097 res->data=bb->blackbox_Init(bb);
9098 if(!bb->blackbox_Assign(
res,a))
return FALSE;
9108 if(!bb->blackbox_Op1(op,
res,a))
return FALSE;
9128 const struct sValCmd3* dA3,
int at,
int bt,
int ct,
9139 while (dA3[
i].cmd==op)
9141 if ((at==dA3[
i].arg1)
9142 && (bt==dA3[
i].arg2)
9143 && (ct==dA3[
i].arg3))
9151 Print(
"call %s(%s,%s,%s)\n",
9153 if ((call_failed=dA3[
i].
p(
res,a,
b,c)))
9174 while (dA3[
i].cmd==op)
9190 Print(
"call %s(%s,%s,%s)\n",
9196 || (call_failed=dA3[
i].
p(
res,an,bn,cn)));
9245 Werror(
"`%s` is not defined",
s);
9251 Werror(
"%s(`%s`,`%s`,`%s`) failed"
9255 while (dA3[
i].cmd==op)
9257 if(((at==dA3[
i].arg1)
9259 ||(ct==dA3[
i].arg3))
9262 Werror(
"expected %s(`%s`,`%s`,`%s`)"
9291 memcpy(&d->arg1,a,
sizeof(
sleftv));
9293 memcpy(&d->arg2,
b,
sizeof(
sleftv));
9295 memcpy(&d->arg3,c,
sizeof(
sleftv));
9299 res->data=(
char *)d;
9311 if(!bb->blackbox_Op3(op,
res,a,
b,c))
return FALSE;
9361 if(
v==
NULL)
return failed;
9383 res->data=(
char *)d;
9388 memcpy(&d->arg1,a,
sizeof(
sleftv));
9423 if(!bb->blackbox_OpM(op,
res,a))
return FALSE;
9438 if ((args==
dArithM[
i].number_of_args)
9440 || ((
dArithM[
i].number_of_args==-2)&&(args>0)))
9538 Warn(
"outdated identifier `%s` used - please change your code",
9589 if (op==dArithTab[
p].cmd)
return dArithTab[
p].start;
9590 if (op<dArithTab[
p].cmd) e=
p-1;
9610 if (tok==
ANY_TYPE)
return "any_type";
9611 if (tok==
COMMAND)
return "command";
9612 if (tok==
NONE)
return "nothing";
9624 if (tok==
IDHDL)
return "identifier";
9660 cmdnames *pCmdL = (cmdnames*)a;
9661 cmdnames *pCmdR = (cmdnames*)
b;
9666 if(pCmdL->name==
NULL)
return 1;
9667 if(pCmdR->name==
NULL)
return -1;
9670 if(strcmp(pCmdL->name,
"$INVALID$")==0)
return -1;
9671 if(strcmp(pCmdR->name,
"$INVALID$")==0)
return 1;
9674 if (pCmdL->tokval==-1)
9676 if (pCmdR->tokval==-1)
9677 return strcmp(pCmdL->name, pCmdR->name);
9682 if(pCmdR->tokval==-1)
return -1;
9684 return strcmp(pCmdL->name, pCmdR->name);
9792 if(nPos<0)
return NULL;
9801 if(szName==
NULL)
return -1;
9806 Print(
"'%s' not found (%d)\n", szName, nIndex);
9849 if(szName==
NULL)
return -1;
9853 Print(
"'%s' already exists at %d\n", szName, nIndex);
9890 WerrorS(
"not implemented for non-commutative rings");
9912 WerrorS(
"not implemented for rings with rings as coeffients");
9919 WerrorS(
"domain required as coeffients");
9925 WarnS(
"considering the image in Q[...]");
9937 WerrorS(
"not implemented for rings with rings as coeffients (except ZZ)");
9943 int return_type=c->
m[0].
Typ();
9960 for (
unsigned i=0;
i<=(unsigned)c->
nr;
i++)
9965 if (bo) {
Werror(
"chinrem failed for list entry %d",
i+1);
break;}
9975 WerrorS(
"poly/ideal/module/matrix/list expected");
9994 WerrorS(
"wromg number of primes");
10001 if (
p->length()!=rl)
10003 WerrorS(
"wromg number of primes");
10008 ideal *
x=(ideal *)
omAlloc(rl*
sizeof(ideal));
10014 for(
i=rl-1;
i>=0;
i--)
10016 if (c->
m[
i].
Typ()!=return_type)
10041 xx=(number *)
omAlloc(rl*
sizeof(number));
10042 for(
i=rl-1;
i>=0;
i--)
10054 Werror(
"bigint expected at pos %d",
i+1);
10061 number *q=(number *)
omAlloc(rl*
sizeof(number));
10064 for(
i=rl-1;
i>=0;
i--)
10071 for(
i=rl-1;
i>=0;
i--)
10083 Werror(
"bigint expected at pos %d",
i+1);
10099 res->data=(
char *)n;
10122 for(
i=rl-1;
i>=0;
i--)
10127 res->rtyp=return_type;
10137 for (
unsigned i=0;
i<=(unsigned)c->
nr;
i++)
10142 if (bo) {
Werror(
"farey failed for list entry %d",
i+1);
break;}
10155 if (at < bt)
return -1;
10156 if (at > bt)
return 1;
10157 int tab_pos=
iiTabIndex(dArithTab2,JJTAB2LEN,
'<');
10165 unsigned long ad=(
unsigned long)a->
Data();
10166 unsigned long bd=(
unsigned long)
b->Data();
10167 if (ad<bd)
return -1;
10168 else if (ad==bd)
return 0;
10179 unsigned long ad=(
unsigned long)a->
Data();
10180 unsigned long bd=(
unsigned long)
b->Data();
10181 if (ad<bd)
return -1;
10182 else if (ad==bd)
return 0;
10185 else if (tmp.
data==
NULL)
return 1;
10213 for(
j=
i;
j<len;
j++)
l->m[
j]=
l->m[
j+1];
10214 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.
BOOLEAN pa(leftv res, leftv args)
BOOLEAN pb(leftv res, leftv args)
const CanonicalForm int s
const Variable & v
< [in] a sqrfree bivariate poly
VAR void(* WerrorS_callback)(const char *s)
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)
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
int scMult0Int(ideal S, ideal Q, const ring tailRing)
ideal scKBase(int deg, ideal s, ideal Q, intvec *mv)
int scDimIntRing(ideal vid, ideal Q)
scDimInt for ring-coefficients
intvec * scIndIntvec(ideal S, ideal Q)
int lp_kDim(const ideal _G)
int lp_gkDim(const ideal _G)
int scMultInt(ideal S, ideal Q)
void scDegree(ideal S, intvec *modulweight, ideal Q)
intvec * hSecondSeries(intvec *hseries1)
void hLookSeries(ideal S, intvec *modulweight, ideal Q, intvec *wdegree, ring tailRing)
intvec * hFirstSeries(ideal S, intvec *modulweight, ideal Q, intvec *wdegree, ring tailRing)
GbVariant syGetAlgorithm(char *n, const ring r, const ideal)
matrix idCoeffOfKBase(ideal arg, ideal kbase, poly how)
void idLiftW(ideal P, ideal Q, int n, matrix &T, ideal &R, int *w)
ideal idSyzygies(ideal h1, tHomog h, intvec **w, BOOLEAN setSyzComp, BOOLEAN setRegularity, int *deg, GbVariant alg)
matrix idDiff(matrix i, int k)
BOOLEAN idTestHomModule(ideal m, ideal Q, intvec *w)
ideal idLiftStd(ideal h1, matrix *T, tHomog hi, ideal *S, GbVariant alg, ideal h11)
ideal idQuot(ideal h1, ideal h2, BOOLEAN h1IsStb, BOOLEAN resultIsIdeal)
ideal idSeries(int n, ideal M, matrix U, intvec *w)
matrix idDiffOp(ideal I, ideal J, BOOLEAN multiply)
ideal idElimination(ideal h1, poly delVar, intvec *hilb, GbVariant alg)
ideal idMinBase(ideal h1)
ideal idSect(ideal h1, ideal h2, GbVariant alg)
ideal idMultSect(resolvente arg, int length, GbVariant alg)
ideal idLift(ideal mod, ideal submod, ideal *rest, BOOLEAN goodShape, BOOLEAN isSB, BOOLEAN divide, matrix *unit, GbVariant alg)
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 id_Farey(ideal x, number N, const ring r)
ideal idMinEmbedding(ideal arg, BOOLEAN inPlace, intvec **w)
#define idDelete(H)
delete an ideal
#define idSimpleAdd(A, B)
ideal id_Copy(ideal h1, const ring r)
copy an ideal
static BOOLEAN idIsZeroDim(ideal i)
static BOOLEAN idHomModule(ideal m, ideal Q, intvec **w)
static BOOLEAN idHomIdeal(ideal id, ideal Q=NULL)
static ideal idMult(ideal h1, ideal h2)
hh := h1 * h2
ideal idAdd(ideal h1, ideal h2)
h1 + h2
#define idMaxIdeal(D)
initialise the maximal ideal (at 0)
static intvec * idSort(ideal id, BOOLEAN nolex=TRUE)
ideal interpolation(const std::vector< ideal > &L, intvec *v)
static BOOLEAN length(leftv result, leftv arg)
intvec * ivSub(intvec *a, intvec *b)
intvec * ivAdd(intvec *a, intvec *b)
intvec * ivMult(intvec *a, intvec *b)
intvec * ivTranp(intvec *o)
intvec * ivCopy(const intvec *o)
#define IMATELEM(M, I, J)
static BOOLEAN jjUMINUS_MA(leftv res, leftv u)
static BOOLEAN jjOP_BIM_I(leftv res, leftv u, leftv v)
static BOOLEAN jjRANK1(leftv res, leftv v)
static BOOLEAN jjINDEX_V_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjIMPART(leftv res, leftv v)
static BOOLEAN jjIm2Iv(leftv res, leftv v)
static BOOLEAN jjQUOT(leftv res, leftv u, leftv v)
static BOOLEAN jjUMINUS_IV(leftv res, leftv u)
static BOOLEAN jjOPPOSITE(leftv res, leftv a)
static int _gentable_sort_cmds(const void *a, const void *b)
compares to entry of cmdsname-list
BOOLEAN jjWAITALL1(leftv res, leftv u)
static BOOLEAN jjRESTART(leftv, leftv u)
static BOOLEAN jjidHead(leftv res, leftv v)
static BOOLEAN jjHILBERT(leftv, leftv v)
static BOOLEAN jjTIMES_MA_P1(leftv res, leftv u, leftv v)
static BOOLEAN jjLEADMONOM(leftv res, leftv v)
static BOOLEAN jjOP_IV_I(leftv res, leftv u, leftv v)
static BOOLEAN jjstrlen(leftv res, leftv v)
static BOOLEAN jjBRACK_Bim(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjEXTGCD_P(leftv res, leftv u, leftv v)
static BOOLEAN jjDET_BI(leftv res, leftv v)
BOOLEAN jjWAIT1ST1(leftv res, leftv u)
BOOLEAN jjLOAD(const char *s, BOOLEAN autoexport)
load lib/module given in v
static BOOLEAN jjMATRIX_Mo(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjP2I(leftv res, leftv v)
static BOOLEAN jjIS_RINGVAR_P(leftv res, leftv v)
static BOOLEAN jjDOTDOT(leftv res, leftv u, leftv v)
static BOOLEAN jjFWALK3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjREPART(leftv res, leftv v)
static BOOLEAN jjTIMES_MA_BI2(leftv res, leftv u, leftv v)
static BOOLEAN jjMAP(leftv res, leftv u, leftv v)
static BOOLEAN jjGT_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjN2BI(leftv res, leftv v)
static BOOLEAN jjRESERVEDLIST0(leftv res, leftv)
static BOOLEAN jjCHAR(leftv res, leftv v)
static BOOLEAN jjOP_I_IM(leftv res, leftv u, leftv v)
static BOOLEAN jjBRACK_Ma_IV_I(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjROWS_IV(leftv res, leftv v)
static BOOLEAN jjLIFTSTD(leftv res, leftv u, leftv v)
static BOOLEAN jjNULL(leftv, leftv)
static BOOLEAN jjNEWSTRUCT2(leftv, leftv u, leftv v)
static BOOLEAN jjMONITOR2(leftv res, leftv u, leftv v)
static BOOLEAN jjDIM(leftv res, leftv v)
static BOOLEAN jjCOUNT_BIM(leftv res, leftv v)
static BOOLEAN jjBRACKET(leftv res, leftv a, leftv b)
static BOOLEAN jjCOLS_IV(leftv res, leftv v)
static BOOLEAN jjNAMES_I(leftv res, leftv v)
static BOOLEAN jjMULT(leftv res, leftv v)
static BOOLEAN jjPARDEG(leftv res, leftv v)
static BOOLEAN jjDENOMINATOR(leftv res, leftv v)
Return the denominator of the input number.
static BOOLEAN jjRANDOM(leftv res, leftv u, leftv v)
static BOOLEAN jjIDEAL_Ma(leftv res, leftv v)
static BOOLEAN jjDIVISION(leftv res, leftv u, leftv v)
static BOOLEAN jjOP_I_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjmpTransp(leftv res, leftv v)
static BOOLEAN jjOPTION_PL(leftv res, leftv v)
static BOOLEAN jjEQUAL_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjDET_S(leftv res, leftv v)
static BOOLEAN jjL2R(leftv res, leftv v)
static BOOLEAN jjREDUCE5(leftv res, leftv u)
static BOOLEAN jjrCharStr(leftv res, leftv v)
static BOOLEAN jjSUBST_Id_I(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjMINUS_B_P(leftv res, leftv u, leftv v)
static BOOLEAN jjHILBERT_IV(leftv res, leftv v)
int iiArithFindCmd(const char *szName)
static BOOLEAN jjIDEAL_R(leftv res, leftv v)
static BOOLEAN jjINDEPSET(leftv res, leftv v)
static BOOLEAN jjTYPEOF(leftv res, leftv v)
static BOOLEAN jjLU_SOLVE(leftv res, leftv v)
static BOOLEAN jjFACSTD(leftv res, leftv v)
static BOOLEAN jjMEMORY(leftv res, leftv v)
static BOOLEAN jjidTransp(leftv res, leftv v)
static BOOLEAN jjLIFT(leftv res, leftv u, leftv v)
static BOOLEAN jjUMINUS_BIM(leftv res, leftv u)
static BOOLEAN jjSUBST_Bu(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjTIMES_MA_N2(leftv res, leftv u, leftv v)
static BOOLEAN jjDIM_R(leftv res, leftv v)
BOOLEAN jjSORTLIST(leftv, leftv arg)
static BOOLEAN jjDUMP(leftv, leftv v)
static BOOLEAN jjpMaxComp(leftv res, leftv v)
static BOOLEAN jjREDUCE3_ID(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjELIMIN_HILB(leftv res, leftv u, leftv v, leftv w)
static int jjCOMPARE_ALL(const void *aa, const void *bb)
static BOOLEAN jjNAMEOF(leftv res, leftv v)
static BOOLEAN jjPlural_mat_poly(leftv res, leftv a, leftv b)
static BOOLEAN jjTIMES_SM(leftv res, leftv u, leftv v)
static BOOLEAN jjMOD_BI(leftv res, leftv u, leftv v)
BOOLEAN jjUNIQLIST(leftv, leftv arg)
static BOOLEAN jjTIMES_MA_I2(leftv res, leftv u, leftv v)
static BOOLEAN jjSTATUS2L(leftv res, leftv u, leftv v)
BOOLEAN(* proc3)(leftv, leftv, leftv, leftv)
static BOOLEAN jjGT_I(leftv res, leftv u, leftv v)
static BOOLEAN jjPRIME(leftv res, leftv v)
static BOOLEAN jjPFAC2(leftv res, leftv u, leftv v)
static BOOLEAN jjidVec2Ideal(leftv res, leftv v)
static BOOLEAN jjJACOB_P(leftv res, leftv v)
static BOOLEAN jjSQR_FREE(leftv res, leftv u)
static BOOLEAN jjSTD_HILB_W(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjEQUAL_I(leftv res, leftv u, leftv v)
static BOOLEAN jjTIMES_MA_P2(leftv res, leftv u, leftv v)
static BOOLEAN jjMODULO3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjSBA_1(leftv res, leftv v, leftv u)
static BOOLEAN jjCOEFFS3_P(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjCALL1MANY(leftv res, leftv u)
static BOOLEAN jjPLUS_MA(leftv res, leftv u, leftv v)
static BOOLEAN jjWRONG(leftv, leftv)
static BOOLEAN jjMINUS_V(leftv res, leftv u, leftv v)
static BOOLEAN jjINTERRED(leftv res, leftv v)
static BOOLEAN jjJACOB_M(leftv res, leftv a)
static BOOLEAN jjJET_ID_IV(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjTIMES_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjBAREISS(leftv res, leftv v)
static BOOLEAN jjREAD(leftv res, leftv v)
static BOOLEAN jjLT_N(leftv res, leftv u, leftv v)
static BOOLEAN jjMINUS_MA(leftv res, leftv u, leftv v)
static BOOLEAN jjFactModD_M(leftv res, leftv v)
static BOOLEAN jjMATRIX_Id(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjEXTGCD_I(leftv res, leftv u, leftv v)
static BOOLEAN jjIS_RINGVAR_S(leftv res, leftv v)
static BOOLEAN jjDelete_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjLE_N(leftv res, leftv u, leftv v)
static BOOLEAN jjSUBST_P(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjROWS_BIM(leftv res, leftv v)
static BOOLEAN jjCOMPARE_S(leftv res, leftv u, leftv v)
int iiInitArithmetic()
initialisation of arithmetic structured data
static BOOLEAN jjOR_I(leftv res, leftv u, leftv v)
static BOOLEAN jjTIMES_MA_I1(leftv res, leftv u, leftv v)
static BOOLEAN jjLIFTSTD_SYZ(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjBAREISS3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjRESERVED0(leftv, leftv)
static BOOLEAN jjTIMES_MA_N1(leftv res, leftv u, leftv v)
static BOOLEAN jjLIFT_4(leftv res, leftv U)
static BOOLEAN jjSLIM_GB(leftv res, leftv u)
static BOOLEAN jjMSTD(leftv res, leftv v)
static BOOLEAN jjBREAK1(leftv, leftv v)
static BOOLEAN jjJET_ID_M(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjMINUS_BIM(leftv res, leftv u, leftv v)
static BOOLEAN jjnInt(leftv res, leftv u)
static BOOLEAN jjSQR_FREE2(leftv res, leftv u, leftv dummy)
static BOOLEAN jjCOEFFS3_Id(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjREGULARITY(leftv res, leftv v)
static BOOLEAN jjMINUS_N(leftv res, leftv u, leftv v)
static BOOLEAN jjBREAK0(leftv, leftv)
static BOOLEAN jjTRACE_IV(leftv res, leftv v)
BOOLEAN iiExprArith2(leftv res, leftv a, int op, leftv b, BOOLEAN proccall)
static BOOLEAN jjMONOM(leftv res, leftv v)
static BOOLEAN jjSort_Id(leftv res, leftv v)
static BOOLEAN jjCOEF_M(leftv, leftv v)
static BOOLEAN jjidMinBase(leftv res, leftv v)
static BOOLEAN jjDEG_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjRING_2(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjMINUS_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjPREIMAGE_R(leftv res, leftv v)
static BOOLEAN jjHOMOG_P(leftv res, leftv u, leftv v)
static BOOLEAN jjBRACK_Im(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjMATRIX_Ma(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjidMaxIdeal(leftv res, leftv v)
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 indentifieres are slot 1..nLastIdentifier
static BOOLEAN jjDEFINED(leftv res, leftv v)
static BOOLEAN jjLagSolve(leftv res, leftv v)
static BOOLEAN jjRING_1(leftv res, leftv u, leftv v)
static BOOLEAN jjVDIM(leftv res, leftv v)
static BOOLEAN jjOP_I_BIM(leftv res, leftv u, leftv v)
static BOOLEAN jjCOUNT_N(leftv res, leftv v)
static BOOLEAN jjHILBERT2(leftv res, leftv u, leftv v)
static BOOLEAN jjFIND2(leftv res, leftv u, leftv v)
static BOOLEAN jjCOEF_Id(leftv res, leftv u, leftv v)
static BOOLEAN jjP2N(leftv res, leftv v)
static BOOLEAN jjE(leftv res, leftv v)
static BOOLEAN jjPOWER_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjTIMES_MA_BI1(leftv res, leftv u, leftv v)
BOOLEAN iiExprArith1(leftv res, leftv a, int op)
static BOOLEAN jjSTD_HILB_WP(leftv res, leftv INPUT)
static BOOLEAN jjLISTRING(leftv res, leftv v)
static BOOLEAN jjCOEFFS2_KB(leftv res, leftv u, leftv v)
static BOOLEAN jjLIFTSTD_M(leftv res, leftv U)
static BOOLEAN jjELIMIN_ALG(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjVAR1(leftv res, leftv v)
static BOOLEAN jjLEADCOEF(leftv res, leftv v)
static BOOLEAN jjVARSTR2(leftv res, leftv u, leftv v)
static BOOLEAN jjPLUS_N(leftv res, leftv u, leftv v)
static BOOLEAN jjSUBST_Id_X(leftv res, leftv u, leftv v, leftv w, int input_type)
static BOOLEAN jjUMINUS_BI(leftv res, leftv u)
int iiArithAddCmd(const char *szName, short nAlias, short nTokval, short nToktype, short nPos=-1)
static BOOLEAN jjpLength(leftv res, leftv v)
static BOOLEAN jjJET_P_P(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjLT_I(leftv res, leftv u, leftv v)
static BOOLEAN jjIS_RINGVAR0(leftv res, leftv)
static BOOLEAN jjEXTGCD_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjBI2P(leftv res, leftv u)
static BOOLEAN jjTWOSTD(leftv res, leftv a)
static BOOLEAN jjGCD_I(leftv res, leftv u, leftv v)
static BOOLEAN jjCONTRACT(leftv res, leftv u, leftv v)
static BOOLEAN jjFAC_P(leftv res, leftv u)
static BOOLEAN jjREDUCE3_CID(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjFAREY_LI(leftv res, leftv u, leftv v)
static BOOLEAN jjTRANSP_BIM(leftv res, leftv v)
static BOOLEAN jjCOUNT_RES(leftv res, leftv v)
static BOOLEAN jjDelete_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjGE_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjrOrdStr(leftv res, leftv v)
static BOOLEAN jjKERNEL(leftv res, leftv u, leftv v)
static BOOLEAN jjINTERSECT3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjBRACK_Ma(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjMOD_N(leftv res, leftv u, leftv v)
static BOOLEAN jjLOAD_E(leftv, leftv v, leftv u)
static BOOLEAN jjNEWSTRUCT3(leftv, leftv u, leftv v, leftv w)
static BOOLEAN jjHOMOG_P_W(leftv res, leftv u, leftv v, leftv)
static BOOLEAN jjpHead(leftv res, leftv v)
static BOOLEAN jjSUBST_Id(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjEQUAL_R(leftv res, leftv u, leftv v)
static BOOLEAN jjCOUNT_L(leftv res, leftv v)
struct sValCmdM * psValCmdM
static BOOLEAN jjDET_I(leftv res, leftv v)
static BOOLEAN jjCOUNT_RG(leftv res, leftv v)
static BOOLEAN jjSMATRIX_Mo(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjINTERSECT(leftv res, leftv u, leftv v)
static BOOLEAN jjrVarStr(leftv res, leftv v)
static BOOLEAN jjOP_BI_BIM(leftv res, leftv u, leftv v)
static BOOLEAN jjDIFF_P(leftv res, leftv u, leftv v)
static BOOLEAN check_valid(const int p, const int op)
static BOOLEAN jjSTRING_PL(leftv res, leftv v)
static BOOLEAN jjMINUS_B(leftv res, leftv u, leftv v)
static BOOLEAN jjRSUM(leftv res, leftv u, leftv v)
static BOOLEAN jjINDEX_I(leftv res, leftv u, leftv v)
static BOOLEAN jjPOWER_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjMONITOR1(leftv res, leftv v)
static BOOLEAN jjKLAMMER_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjFETCH(leftv res, leftv u, leftv v)
static BOOLEAN jjCALL3ARG(leftv res, leftv u)
static BOOLEAN jjSTD_1(leftv res, leftv u, leftv v)
static BOOLEAN jjUMINUS_N(leftv res, leftv u)
static BOOLEAN jjNUMERATOR(leftv res, leftv v)
Return the numerator of the input number.
static BOOLEAN jjORD(leftv res, leftv v)
static BOOLEAN jjTIMES_P(leftv res, leftv u, leftv v)
static BOOLEAN jjUMINUS_I(leftv res, leftv u)
static BOOLEAN jjPREIMAGE(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjBRACK_Ma_IV_IV(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjPLUS_SM(leftv res, leftv u, leftv v)
BOOLEAN jjLOAD_TRY(const char *s)
static BOOLEAN jjLIFT3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjENVELOPE(leftv res, leftv a)
static BOOLEAN jjSetRing(leftv, leftv u)
static BOOLEAN jjMINUS_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjTIMES_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjFACSTD2(leftv res, leftv v, leftv w)
static BOOLEAN jjINTVEC_PL(leftv res, leftv v)
STATIC_VAR SArithBase sArithBase
Base entry for arithmetic.
static BOOLEAN jjEXPORTTO(leftv, leftv u, leftv v)
static BOOLEAN jjPlural_num_poly(leftv res, leftv a, leftv b)
static BOOLEAN jjDIV_P(leftv res, leftv u, leftv v)
static BOOLEAN jjKBASE2(leftv res, leftv u, leftv v)
static BOOLEAN jjPOWER_I(leftv res, leftv u, leftv v)
static BOOLEAN jjRES(leftv res, leftv u, leftv v)
static int iin_Int(number &n, coeffs cf)
static BOOLEAN jjPLUS_P_MA(leftv res, leftv u, leftv v)
static BOOLEAN jjMINRES_R(leftv res, leftv v)
static BOOLEAN jjCOLS(leftv res, leftv v)
static BOOLEAN jjPLUS_BIM(leftv res, leftv u, leftv v)
static BOOLEAN jjP2BI(leftv res, leftv v)
static void WerrorS_dummy(const char *)
static BOOLEAN jjGE_I(leftv res, leftv u, leftv v)
static BOOLEAN jjTRANSP_IV(leftv res, leftv v)
static BOOLEAN jjGT_N(leftv res, leftv u, leftv v)
static BOOLEAN jjUNIVARIATE(leftv res, leftv v)
static BOOLEAN jjMODULO4(leftv res, leftv u)
static BOOLEAN jjHOMOG_ID_W(leftv res, leftv u, leftv v, leftv)
static BOOLEAN jjWEDGE(leftv res, leftv u, leftv v)
EXTERN_VAR BOOLEAN expected_parms
static BOOLEAN jjCOMPARE_P(leftv res, leftv u, leftv v)
static BOOLEAN jjFIND3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjLU_INVERSE(leftv res, leftv v)
static BOOLEAN jjMODULO3S(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjBAREISS_BIM(leftv res, leftv v)
static BOOLEAN jjPLUS_MA_P(leftv res, leftv u, leftv v)
static BOOLEAN jjSIMPL_P(leftv res, leftv u, leftv v)
static BOOLEAN jjPFAC1(leftv res, leftv v)
static BOOLEAN jjQRDS(leftv res, leftv INPUT)
static BOOLEAN jjELIMIN_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjCONTENT(leftv res, leftv v)
static BOOLEAN jjDIFF_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjSTD(leftv res, leftv v)
static BOOLEAN jjTIMES_BIM(leftv res, leftv u, leftv v)
static BOOLEAN jjTIMES_I(leftv res, leftv u, leftv v)
static BOOLEAN jjDIV_N(leftv res, leftv u, leftv v)
static BOOLEAN jjINTMAT3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjCOUNT_IV(leftv res, leftv v)
static BOOLEAN jjFRES(leftv res, leftv u, leftv v)
unsigned nCmdAllocated
number of commands-slots allocated
static BOOLEAN jjDUMMY(leftv res, leftv u)
static BOOLEAN jjS2I(leftv res, leftv v)
static BOOLEAN jjKLAMMER(leftv res, leftv u, leftv v)
BOOLEAN iiExprArith2Tab(leftv res, leftv a, int op, const struct sValCmd2 *dA2, int at, const struct sConvertTypes *dConvertTypes)
apply an operation 'op' to arguments a and a->next return TRUE on failure
static BOOLEAN jjBI2N(leftv res, leftv u)
static BOOLEAN jjRIGHTSTD(leftv res, leftv v)
BOOLEAN iiExprArithM(leftv res, leftv a, int op)
static BOOLEAN jjCOMPARE_MA(leftv res, leftv u, leftv v)
BOOLEAN iiExprArith3(leftv res, int op, leftv a, leftv b, leftv c)
static BOOLEAN jjGETDUMP(leftv, leftv v)
static BOOLEAN jjidFreeModule(leftv res, leftv v)
static BOOLEAN jjFAREY_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjBRACKET_REC(leftv res, leftv a, leftv b, leftv c)
static BOOLEAN jjCOMPARE_IV_I(leftv res, leftv u, leftv v)
static BOOLEAN jjRANDOM_Im(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjRESERVEDNAME(leftv res, leftv v)
struct sValCmd1 * psValCmd1
static BOOLEAN jjDIVMOD_I(leftv res, leftv u, leftv v)
static BOOLEAN jjLE_I(leftv res, leftv u, leftv v)
static BOOLEAN jjTENSOR_Ma(leftv res, leftv u, leftv v)
static BOOLEAN jjCOEFFS3_KB(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN iiExprArith3TabIntern(leftv res, int op, leftv a, leftv b, leftv c, const struct sValCmd3 *dA3, int at, int bt, int ct, const struct sConvertTypes *dConvertTypes)
static BOOLEAN jjRMINUS(leftv res, leftv u, leftv v)
BOOLEAN jjPROC(leftv res, leftv u, leftv v)
static BOOLEAN jjPLUS_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjHILBERT3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjDET2(leftv res, leftv u, leftv v)
static BOOLEAN jjSTD_HILB(leftv res, leftv u, leftv v)
static BOOLEAN jjAND_I(leftv res, leftv u, leftv v)
static BOOLEAN jjINDEX_P_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjRPAR(leftv res, leftv v)
static BOOLEAN jjJanetBasis2(leftv res, leftv u, leftv v)
static BOOLEAN jjLOAD1(leftv, leftv v)
static BOOLEAN jjCOLON(leftv res, leftv u, leftv v)
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 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)
ideal kMin_std(ideal F, ideal Q, tHomog h, intvec **w, ideal &M, intvec *hilb, int syzComp, int reduced)
ideal kInterRed(ideal F, ideal Q)
long kHomModDeg(poly p, ring r)
poly kNF(ideal F, ideal Q, poly p, int syzComp, int lazyReduce)
ideal kSba(ideal F, ideal Q, tHomog h, intvec **w, int sbaOrder, int arri, intvec *hilb, int syzComp, int newIdeal, intvec *vw)
ideal kStd(ideal F, ideal Q, tHomog h, intvec **w, intvec *hilb, int syzComp, int newIdeal, intvec *vw, s_poly_proc_t sp)
ideal rightgb(ideal F, ideal Q)
poly redNF(poly h, int &max_ind, int nonorm, kStrategy strat)
ideal_list kStdfac(ideal F, ideal Q, tHomog h, intvec **w, ideal D)
VAR char libnamebuf[1024]
static bool rIsSCA(const ring r)
ideal idOppose(ring Rop_src, ideal I, const ring Rop_dst)
opposes a module I from Rop to currRing(dst)
poly pOppose(ring Rop_src, poly p, const ring Rop_dst)
opposes a vector p from Rop to currRing (dst!)
BOOLEAN rIsLikeOpposite(ring rBase, ring rCandidate)
checks whether rings rBase and rCandidate could be opposite to each other returns TRUE if it is so
BOOLEAN nc_CallPlural(matrix cc, matrix dd, poly cn, poly dn, ring r, bool bSetupQuotient, bool bCopyInput, bool bBeQuiet, ring curr, bool dummy_ring=false)
returns TRUE if there were errors analyze inputs, check them for consistency detects nc_type,...
poly nc_p_Bracket_qq(poly p, const poly q, const ring r)
returns [p,q], destroys p
int luRank(const matrix aMat, const bool isRowEchelon, const ring R)
Computes the rank of a given (m x n)-matrix.
bool luInverseFromLUDecomp(const matrix pMat, const matrix lMat, const matrix uMat, matrix &iMat, const ring R)
This code computes the inverse by inverting lMat and uMat, and then performing two matrix multiplicat...
void henselFactors(const int xIndex, const int yIndex, const poly h, const poly f0, const poly g0, const int d, poly &f, poly &g)
Computes a factorization of a polynomial h(x, y) in K[[x]][y] up to a certain degree in x,...
bool luInverse(const matrix aMat, matrix &iMat, const ring R)
This code first computes the LU-decomposition of aMat, and then calls the method for inverting a matr...
void luDecomp(const matrix aMat, matrix &pMat, matrix &lMat, matrix &uMat, const ring R)
LU-decomposition of a given (m x n)-matrix.
bool luSolveViaLUDecomp(const matrix pMat, const matrix lMat, const matrix uMat, const matrix bVec, matrix &xVec, matrix &H)
Solves the linear system A * x = b, where A is an (m x n)-matrix which is given by its LU-decompositi...
lists qrDoubleShift(const matrix A, const number tol1, const number tol2, const number tol3, const ring r=currRing)
Computes all eigenvalues of a given real quadratic matrix with multiplicites.
BOOLEAN jjANY2LIST(leftv res, leftv v, int cnt)
LINLINE void nlDelete(number *a, const coeffs r)
LINLINE number nlInit(long i, const coeffs r)
void 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)
ideal sm_Sub(ideal a, ideal b, const ring R)
ideal sm_Mult(ideal a, ideal b, const ring R)
matrix mp_Sub(matrix a, matrix b, const ring R)
poly mp_Det(matrix a, const ring r, DetVariant d)
matrix mpNew(int r, int c)
create a r x c zero-matrix
int mp_Compare(matrix a, matrix b, const ring R)
BOOLEAN sm_Equal(ideal a, ideal b, const ring R)
matrix mp_Mult(matrix a, matrix b, const ring R)
BOOLEAN mp_Equal(matrix a, matrix b, const ring R)
matrix mp_MultI(matrix a, int f, const ring R)
c = f*a
matrix mp_Coeffs(ideal I, int var, const ring R)
corresponds to Maple's coeffs: var has to be the number of a variable
void mp_Coef2(poly v, poly mon, matrix *c, matrix *m, const ring R)
corresponds to Macauley's coef: the exponent vector of vars has to contain the variables,...
matrix mp_MultP(matrix a, poly p, const ring R)
multiply a matrix 'a' by a poly 'p', destroy the args
matrix mp_Copy(matrix a, const ring r)
copies matrix a (from ring r to r)
matrix mp_Add(matrix a, matrix b, const ring R)
matrix mp_InitP(int r, int c, poly p, const ring R)
make it a p * unit matrix
poly mp_Trace(matrix a, const ring R)
#define MATELEM(mat, i, j)
1-based access to matrix
lists primeFactorisation(const number n, const int pBound)
Factorises a given bigint number n into its prime factors less than or equal to a given bound,...
This file provides miscellaneous functionality.
lib_types type_of_LIB(const char *newlib, char *libnamebuf)
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy
BOOLEAN nuLagSolve(leftv res, leftv arg1, leftv arg2, leftv arg3)
find the (complex) roots an univariate polynomial Determines the roots of an univariate polynomial us...
The main handler for Singular numbers which are suitable for Singular polynomials.
ideal twostd(ideal I)
Compute two-sided GB:
void newstruct_setup(const char *n, newstruct_desc d)
newstruct_desc newstructChildFromString(const char *parent, const char *s)
newstruct_desc newstructFromString(const char *s)
CanonicalForm ndConvSingNFactoryN(number, BOOLEAN, const coeffs)
#define nPower(a, b, res)
#define omFreeSize(addr, size)
#define omRealloc(addr, size)
#define omFreeBin(addr, bin)
#define 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 long p_MinComp(poly p, ring lmRing, ring tailRing)
static void p_Delete(poly *p, const ring r)
static unsigned pLength(poly a)
static poly pp_Mult_qq(poly p, poly q, const ring r)
static long p_Totaldegree(poly p, const ring r)
void rChangeCurrRing(ring r)
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
poly pp_Divide(poly p, poly q, const ring r)
polynomial division a/b, ignoring the rest via singclap_pdivide resp. idLift does not destroy a,...
poly singclap_gcd(poly f, poly g, const ring r)
polynomial gcd via singclap_gcd_r resp. idSyzygies destroys f and g
Compatiblity layer for legacy polynomial operations (over currRing)
static long pTotaldegree(poly p)
#define pHead(p)
returns newly allocated copy of Lm(p), coef is copied, next=NULL, p might be NULL
#define pIsConstant(p)
like above, except that Comp must be 0
#define pGetComp(p)
Component.
#define pSetCoeff(p, n)
deletes old coeff before setting the new one
#define pLmInit(p)
like pInit, except that expvector is initialized to that of p, p must be != NULL
#define pIsUnit(p)
return true if the Lm is a constant <>0
#define pLmDelete(p)
assume p != NULL, deletes Lm(p)->coef and Lm(p)
static void pLmFree(poly p)
frees the space of the monomial m, assumes m != NULL coef is not freed, m is not advanced
#define pSeries(n, p, u, w)
#define pGetExp(p, i)
Exponent.
#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
void id_Normalize(ideal I, const ring r)
normialize all polys in id
ideal id_Transp(ideal a, const ring rRing)
transpose a module
ideal id_FreeModule(int i, const ring r)
the free module of rank i
ideal id_Homogen(ideal h, int varnum, const ring r)
ideal id_Power(ideal given, int exp, const ring r)
matrix id_Module2Matrix(ideal mod, const ring R)
int idElem(const ideal F)
count non-zero elements
ideal id_Head(ideal h, const ring r)
returns the ideals of initial terms
long id_RankFreeModule(ideal s, ring lmRing, ring tailRing)
return the maximal component number found in any polynomial in s
void id_DelDiv(ideal id, const ring r)
delete id[j], if LT(j) == coeff*mon*LT(i) and vice versa, i.e., delete id[i], if LT(i) == coeff*mon*L...
void id_DelMultiples(ideal id, const ring r)
ideal id = (id[i]), c any unit if id[i] = c*id[j] then id[j] is deleted for j > i
matrix id_Module2formatedMatrix(ideal mod, int rows, int cols, const ring R)
ideal id_Matrix2Module(matrix mat, const ring R)
converts mat to module, destroys mat
ideal id_ResizeModule(ideal mod, int rows, int cols, const ring R)
ideal id_Delete_Pos(const ideal I, const int p, const ring r)
void id_DelEquals(ideal id, const ring r)
ideal id = (id[i]) if id[i] = id[j] then id[j] is deleted for j > i
ideal id_Jet(const ideal i, int d, const ring R)
void id_DelLmEquals(ideal id, const ring r)
Delete id[j], if Lm(j) == Lm(i) and both LC(j), LC(i) are units and j > i.
ideal id_JetW(const ideal i, int d, intvec *iv, const ring R)
void idSkipZeroes(ideal ide)
gives an ideal/module the minimal possible size
void id_Shift(ideal M, int s, const ring r)
ideal id_ChineseRemainder(ideal *xx, number *q, int rl, const ring r)
ideal id_Subst(ideal id, int n, poly e, const ring r)
void sm_CallBareiss(ideal I, int x, int y, ideal &M, intvec **iv, const ring R)
ideal sm_CallSolv(ideal I, const ring R)
EXTERN_VAR omBin char_ptr_bin
void syMake(leftv v, const char *id, package pa)
INST_VAR sleftv sLastPrinted
BOOLEAN assumeStdFlag(leftv h)
BOOLEAN RingDependend(int t)
resolvente syResolvente(ideal arg, int maxlength, int *length, intvec ***weights, BOOLEAN minim)
syStrategy syResolution(ideal arg, int maxlength, intvec *w, BOOLEAN minim)
ideal syMinBase(ideal arg)
syStrategy syHilb(ideal arg, int *length)
resolvente sySchreyerResolvente(ideal arg, int maxlength, int *length, BOOLEAN isMonomial=FALSE, BOOLEAN notReplace=FALSE)
syStrategy sySchreyer(ideal arg, int maxlength)
int syDim(syStrategy syzstr)
syStrategy syMinimize(syStrategy syzstr)
syStrategy syKosz(ideal arg, int *length)
int sySize(syStrategy syzstr)
syStrategy syFrank(const ideal arg, const int length, const char *method, const bool use_cache=true, const bool use_tensor_trick=false)
syStrategy syLaScala3(ideal arg, int *length)
ideal t_rep_gb(const ring r, ideal arg_I, int syz_comp, BOOLEAN F4_mode)
number ntDiff(number a, number d, const coeffs cf)
ideal fractalWalkProc(leftv first, leftv second)
ideal walkProc(leftv first, leftv second)
int * iv2array(intvec *iv, const ring R)
BOOLEAN jjStdJanetBasis(leftv res, leftv v, int flag)
flag: 0: JB, 1: SB
#define omPrintBinStats(F)