14 #include <factory/factory.h> 100 #define PLURAL_MASK 0 105 #define ZERODIVISOR_MASK 8 108 #define ZERODIVISOR_MASK 0 110 #define ALLOW_PLURAL 1 112 #define COMM_PLURAL 2 115 #define NO_ZERODIVISOR 8 116 #define ALLOW_ZERODIVISOR 0 118 #define ALLOW_ZZ (ALLOW_RING|NO_ZERODIVISOR) 124 #define NO_CONVERSION 32 211 extern int iiArithAddCmd(
const char *szName,
short nAlias,
short nTokval,
212 short nToktype,
short nPos=-1);
222 #define ii_div_by_0 "div. by 0" 231 if ((
long)
i==
l)
return l;
256 int bb = (int)(
long)(
v->Data());
261 case '+': cc=
bimAdd(aa,bb);
break;
262 case '-': cc=
bimSub(aa,bb);
break;
263 case '*': cc=
bimMult(aa,bb);
break;
265 res->data=(
char *)cc;
275 number bb = (number)(
v->Data());
282 res->data=(
char *)cc;
292 int bb = (int)(
long)(
v->Data());
296 case '+': (*aa) += bb;
break;
297 case '-': (*aa) -= bb;
break;
298 case '*': (*aa) *= bb;
break;
301 case '%': (*aa) %= bb;
break;
303 res->data=(
char *)aa;
313 int bb = (int)(
long)(
v->Data());
322 res->data=(
char *)aa;
331 int l=(int)(
long)
v->Data();
334 int d=(int)(
long)u->
Data();
337 for(
i=
l-1;
i>=0;
i--) { (*vv)[
i]=d; }
338 res->data=(
char *)vv;
344 res->data=(
char *)
new intvec((
int)(long)u->
Data(),(int)(
long)
v->Data());
356 res->data = (
char *) (
r<0);
359 res->data = (
char *) (
r>0);
362 res->data = (
char *) (
r<=0);
365 res->data = (
char *) (
r>=0);
369 res->data = (
char *) (
r==0);
373 if(
r==-2) {
WerrorS(
"size incompatible");
return TRUE; }
384 res->data = (
char *) (
r<0);
387 res->data = (
char *) (
r>0);
390 res->data = (
char *) (
r<=0);
393 res->data = (
char *) (
r>=0);
397 res->data = (
char *) (
r==0);
401 if(
r==-2) {
WerrorS(
"size incompatible");
return TRUE; }
407 int b = (int)(
long)(
v->Data());
412 res->data = (
char *) (
r<0);
415 res->data = (
char *) (
r>0);
418 res->data = (
char *) (
r<=0);
421 res->data = (
char *) (
r>=0);
425 res->data = (
char *) (
r==0);
440 res->data = (
char *) (
long)(
r < 0);
443 res->data = (
char *) (
long)(
r > 0);
446 res->data = (
char *) (
long)(
r <= 0);
449 res->data = (
char *) (
long)(
r >= 0);
453 res->data = (
char *)(
long) (
r == 0);
467 res->data = (
char *) (
r < 0);
470 res->data = (
char *) (
r > 0);
473 res->data = (
char *) (
r <= 0);
476 res->data = (
char *) (
r >= 0);
488 char*
a = (
char * )(u->
Data());
489 char*
b = (
char * )(
v->Data());
521 else if (
v->Next()!=
NULL)
531 int b=(int)(
long)u->
Data();
532 int e=(int)(
long)
v->Data();
541 else if ((e==0)||(
b==1))
559 if(rc/
b!=oldrc) overflow=
TRUE;
563 WarnS(
"int overflow(^), result may be wrong");
565 res->data = (
char *)((
long)rc);
571 WerrorS(
"exponent must be non-negative");
577 int e=(int)(
long)
v->Data();
578 number n=(number)u->
Data();
585 WerrorS(
"exponent must be non-negative");
593 int e=(int)(
long)
v->Data();
594 number n=(number)u->
Data();
611 int v_i=(int)(
long)
v->Data();
614 WerrorS(
"exponent must be non-negative");
622 Werror(
"OVERFLOW in power(d=%ld, e=%d, max=%ld)",
665 res->data =
v->CopyD();
666 res->rtyp =
v->Typ();
706 if(isupper(u->
name[0]))
708 const char *c=u->
name+1;
709 while((*c!=
'\0')&&(islower(*c)||(isdigit(*c)))) c++;
714 Print(
"%s of type 'ANY'. Trying load.\n", u->
name);
730 package pa=(package)u->Data();
744 WerrorS(
"reserved name with ::");
756 WerrorS(
"<package>::<id> expected");
763 unsigned int a=(
unsigned int)(
unsigned long)u->
Data();
764 unsigned int b=(
unsigned int)(
unsigned long)
v->Data();
766 res->data = (
char *)((
long)c);
769 WarnS(
"int overflow(+), result may be wrong");
780 res->data = (
char *)(
nAdd((number)u->
Data(), (number)
v->Data()));
793 WerrorS(
"intmat size not compatible");
803 WerrorS(
"bigintmat/cmatrix not compatible");
814 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
837 char*
a = (
char * )(u->
Data());
838 char*
b = (
char * )(
v->Data());
839 char*
r = (
char * )
omAlloc(strlen(
a) + strlen(
b) + 1);
847 res->data = (
char *)
idAdd((ideal)u->
Data(),(ideal)
v->Data());
852 void *ap=u->
Data();
void *bp=
v->Data();
853 int aa=(int)(
long)ap;
854 int bb=(int)(
long)bp;
856 unsigned int a=(
unsigned int)(
unsigned long)ap;
857 unsigned int b=(
unsigned int)(
unsigned long)bp;
861 WarnS(
"int overflow(-), result may be wrong");
863 res->data = (
char *)((
long)cc);
873 res->data = (
char *)(
nSub((number)u->
Data(), (number)
v->Data()));
886 WerrorS(
"intmat size not compatible");
896 WerrorS(
"bigintmat/cmatrix not compatible");
907 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
916 int a=(int)(
long)u->
Data();
917 int b=(int)(
long)
v->Data();
919 if ((c>INT_MAX)||(c<INT_MIN))
920 WarnS(
"int overflow(*), result may be wrong");
921 res->data = (
char *)((
long)((int)c));
935 res->data = (
char *)(
nMult( (number)u->
Data(), (number)
v->Data()));
936 number n=(number)
res->data;
956 Warn(
"possible OVERFLOW in mult(d=%ld, d=%ld, max=%ld)",
968 Warn(
"possible OVERFLOW in mult(d=%ld, d=%ld, max=%ld)",
1003 WerrorS(
"intmat size not compatible");
1015 WerrorS(
"bigintmat/cmatrix not compatible");
1029 res->data = (
char *)I;
1043 res->data = (
char *)I;
1053 res->data = (
char *)I;
1084 Werror(
"matrix size not compatible(%dx%d, %dx%d) in *",
1102 res->data = (
char *)(
long)((int)((
long)u->
Data()) >= (
int)((long)
v->Data()));
1120 res->data = (
char *)(
long)((int)((
long)u->
Data()) > (
int)((long)
v->Data()));
1134 res->data = (
char *)(
long)((int)((
long)u->
Data()) <= (
int)((long)
v->Data()));
1147 res->data = (
char *)(
long)((int)((
long)u->
Data()) < (
int)((long)
v->Data()));
1157 int a= (int)(
long)u->
Data();
1158 int b= (int)(
long)
v->Data();
1172 r=((
a-c) /
b);
break;
1174 res->data=(
void *)((
long)
r);
1179 number q=(number)
v->Data();
1187 res->data = (
char *)q;
1192 number q=(number)
v->Data();
1200 res->data = (
char *)q;
1245 for(
i=comps-1;
i>=0;
i--)
1255 res->data=(
void *)
p;
1264 WerrorS(
"division only defined over coefficient domains");
1269 WerrorS(
"division over a coefficient domain only implemented for terms");
1305 res->data=(
char *)mm;
1316 res->data = (
char *)((
int)((long)u->
Data()) == (
int)((long)
v->Data()));
1328 res->data = (
char *)(
long)(u->
Data()==
v->Data());
1334 res->data = (
char *)((
long)
nEqual((number)u->
Data(),(number)
v->Data()));
1361 res->data = (
char *)((
long)u->
Data() && (long)
v->Data());
1366 res->data = (
char *)((
long)u->
Data() || (long)
v->Data());
1379 while (sh->next !=
NULL) sh=sh->next;
1395 WerrorS(
"indexed object must have a name");
1402 memset(&t,0,
sizeof(t));
1406 t.
data=(
char *)((
long)(*iv)[
i]);
1430 int i=(int)(
long)
v->Data();
1454 while ((
p!=
NULL) && (sum>0))
1470 res->data=(
char *)
r;
1478 int i=(int)(
long)
v->Data();
1500 res->data=(
char *)
r;
1534 res->data=(
char *)
r;
1542 char * nn = (
char *)
omAlloc(strlen(u->
name) + 14);
1543 sprintf(nn,
"%s(%d)",u->
name,(
int)(
long)
v->Data());
1557 long slen = strlen(u->
name) + 14;
1558 char *n = (
char*)
omAlloc(slen);
1571 sprintf(n,
"%s(%d)",u->
name,(*iv)[
i]);
1583 memset(tmp,0,
sizeof(
sleftv));
1595 while (
h->next!=
NULL)
h=
h->next;
1609 tmp_proc->
id=
"_auto";
1613 d=u->
data; u->
data=(
void *)tmp_proc;
1630 if (sl)
return TRUE;
1667 number *
x=(number *)
omAlloc(rl*
sizeof(number));
1668 number *q=(number *)
omAlloc(rl*
sizeof(number));
1670 for(
i=rl-1;
i>=0;
i--)
1677 for(
i=rl-1;
i>=0;
i--)
1683 res->data=(
char *)n;
1693 number *
x=(number *)
omAlloc(rl*
sizeof(number));
1694 number *q=(number *)
omAlloc(rl*
sizeof(number));
1696 for(
i=rl-1;
i>=0;
i--)
1702 for(
i=rl-1;
i>=0;
i--)
1706 Werror(
"poly expected at pos %d",
i+1);
1707 for(
i=rl-1;
i>=0;
i--)
1719 for(
i=rl-1;
i>=0;
i--)
1731 number n=n_ChineseRemainder(
x,q,rl,
currRing->cf);
1732 for(
i=rl-1;
i>=0;
i--)
1740 for(
i=rl-1;
i>=0;
i--)
1752 int s=(int)(
long)
v->Data();
1761 ideal
M=(ideal)u->
CopyD();
1762 int s=(int)(
long)
v->Data();
1801 (ideal)(
v->Data()),
p);
1813 ideal I=(ideal)u->
Data();
1818 res->data = (
char *)((
long)d);
1829 res->data = (
char *)(d);
1832 res->data=(
char *)(
long)(-1);
1867 Warn(
"dim(%s,...) may be wrong because the mixed monomial ordering",
v->Name());
1872 ideal vid = (ideal)
v->Data();
1876 res->data = (
char *)-1;
1885 res->data = (
char *)d;
1891 res->data = (
char *)((
long)
scDimInt((ideal)(
v->Data()),(ideal)
w->Data()));
1895 res->data = (
char *)((
long)
scDimInt((ideal)(
v->Data()),q));
1902 ideal vi=(ideal)
v->Data();
1904 ideal ui=(ideal)u->
Data();
1938 res->data=(
char *)L;
1975 number uu=(number)u->
Data();number vv=(number)
v->Data();
1984 res->data=(
char *)L;
1989 int uu=(int)(
long)u->
Data();
int vv=(int)(
long)
v->Data();
1990 int p0=
ABS(uu),p1=
ABS(vv);
1991 int f0 = 1, f1 = 0, g0 = 0, g1 = 1, q,
r;
2013 res->data=(
char *)L;
2020 if (ret)
return TRUE;
2023 res->data=(
char *)L;
2026 L->
m[1].
data=(
void *)pa;
2028 L->
m[2].
data=(
void *)pb;
2036 int sw=(int)(
long)dummy->
Data();
2038 if ((sw<0)||(sw>2)) fac_sw=1;
2051 l->m[0].data=(
void *)
f;
2053 l->m[1].data=(
void *)
v;
2054 res->data=(
void *)
l;
2059 res->data=(
void *)
f;
2072 res->data=(
void *)
p;
2099 res->data=(
void *)L;
2106 number uu=(number)u->
Data();
2107 number vv=(number)
v->Data();
2115 ideal uu=(ideal)u->
Data();
2116 number vv=(number)
v->Data();
2123 ring
r=(ring)u->
Data();
2132 int par_perm_size=0;
2145 par_perm_size=
rPar(
r);
2154 perm=(
int *)
omAlloc0((
r->N+1)*
sizeof(int));
2155 if (par_perm_size!=0)
2156 par_perm=(
int *)
omAlloc0(par_perm_size*
sizeof(
int));
2161 char ** r_par_names=
NULL;
2162 if (
r->cf->extRing!=
NULL)
2164 r_par=
r->cf->extRing->N;
2165 r_par_names=
r->cf->extRing->names;
2168 char ** c_par_names=
NULL;
2172 c_par_names=
currRing->cf->extRing->names;
2176 perm,par_perm,
currRing->cf->type);
2181 if (par_perm_size!=0)
2195 Print(
"// par nr %d: %s -> %s\n",
2201 memset(&tmpW,0,
sizeof(
sleftv));
2205 perm,par_perm,par_perm_size,nMap)))
2223 Werror(
"no identity map from %s (%s -> %s)",u->
Fullname(),s1,s2);
2234 char *where=(
char *)u->
Data();
2235 char *what=(
char *)
v->Data();
2236 char *
found = strstr(where,what);
2239 res->data=(
char *)((
found-where)+1);
2252 int uu=(int)(
long)u->
Data();
int vv=(int)(
long)
v->Data();
2253 int p0=
ABS(uu),p1=
ABS(vv);
2261 res->data=(
char *)(
long)p0;
2266 number n1 = (number) u->
Data();
2267 number n2 = (number)
v->Data();
2273 number
a=(number) u->
Data();
2274 number
b=(number)
v->Data();
2299 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
2300 PrintS(
"// performed for generic fibre, that is, over Q\n");
2306 switch((
int)(long)
v->Data())
2309 res->data=(
void *)iv;
2334 WerrorS(
"variable must have weight 1");
2356 WerrorS(
"variable must have weight 1");
2363 ideal v_id=(ideal)
v->Data();
2372 currRing->pLexOrder=save_pLexOrder;
2395 const int n = L->
nr;
assume (n >= 0);
2396 std::vector<ideal> V(n + 1);
2398 for(
int i = n;
i >= 0;
i--) V[
i] = (ideal)(L->
m[
i].
Data());
2451 h.data=(
void *)(
long)
IDELEMS((ideal)
v->Data());
2480 char *
s=(
char *)u->
Data();
2481 if(strcmp(
s,
"with")==0)
2483 if (strcmp(
s,
"try")==0)
2485 WerrorS(
"invalid second argument");
2486 WerrorS(
"load(\"libname\" [,option]);");
2508 ideal u_id=(ideal)u->
Data();
2509 ideal v_id=(ideal)
v->Data();
2512 if ((*w_u).compare((w_v))!=0)
2514 WarnS(
"incompatible weights");
2515 delete w_u; w_u=
NULL;
2523 WarnS(
"wrong weights");
2524 delete w_u; w_u=
NULL;
2529 res->data = (
char *)
idModulo(u_id,v_id ,hom,&w_u);
2540 number q=(number)
v->Data();
2551 number q=(number)
v->Data();
2568 char *opt=(
char *)
v->Data();
2580 if(strcmp(
l->m->type,
"ASCII")!=0)
2582 Werror(
"ASCII link required, not `%s`",
l->m->type);
2587 if (
l->name[0]!=
'\0')
2591 if (
v==
NULL) opt=(
const char*)
"i";
2592 else opt=(
const char *)
v->Data();
2641 int i=(
int)(long)
v->Data();
2649 Werror(
"par number %d out of range 1..%d",
i,
p);
2659 WerrorS(
"basering must NOT be a qring!");
2679 WerrorS(
"basering must NOT be a qring!");
2699 WerrorS(
"basering must NOT be a qring!");
2719 WerrorS(
"basering must NOT be a qring!");
2757 ring
r = (ring)
a->Data();
2760 res->data =
b->Data();
2761 res->rtyp =
b->rtyp;
2766 Werror(
"%s is not an opposite ring to current ring",
a->Fullname());
2779 res->rtyp = argtype;
2787 res->rtyp = argtype;
2795 res->rtyp = argtype;
2808 res->rtyp = argtype;
2813 WerrorS(
"unsupported type in oppose");
2820 Werror(
"identifier %s not found in %s",
b->Fullname(),
a->Fullname());
2837 int i=(int)(
long)u->
Data();
2838 int j=(int)(
long)
v->Data();
2839 if (
j-
i <0) {
WerrorS(
"invalid range for random");
return TRUE;}
2846 int isRowEchelon = (int)(
long)
v->Data();
2847 if (isRowEchelon != 1) isRowEchelon = 0;
2848 int rank =
luRank(
m, isRowEchelon);
2849 res->data =(
char *)(
long)rank;
2861 Werror(
"cannot read from `%s`",
s);
2870 ideal vi=(ideal)
v->Data();
2878 ideal ui=(ideal)u->
Data();
2879 ideal vi=(ideal)
v->Data();
2888 int maxl=(int)(
long)
v->Data();
2891 WerrorS(
"length for res must not be negative");
2899 ideal u_id=(ideal)u->
Data();
2908 "full resolution in a qring may be infinite, setting max length to %d",
2922 int add_row_shift=0;
2926 add_row_shift = ww->
min_in();
2927 (*ww) -= add_row_shift;
2947 (
"`lres` not implemented for inhomogeneous input or qring");
2959 (
"`kres` not implemented for inhomogeneous input or qring");
2971 (
"`hres` not implemented for inhomogeneous input or qring");
2978 r->list_length=wmaxl;
2979 res->data=(
void *)
r;
2980 if ((
r->weights!=
NULL) && (
r->weights[0]!=
NULL))
2983 if (weights!=
NULL) (*w) += add_row_shift;
2995 (
r->weights)[0] =
ivCopy(weights);
2999 if (ww!=
NULL) {
delete ww; ww=
NULL; }
3005 int maxl=(int)(
long)
v->Data();
3008 WerrorS(
"length for res must not be negative");
3014 ideal u_id=(ideal)u->
Data();
3023 "full resolution in a qring may be infinite, setting max length to %d",
3037 int add_row_shift=0;
3041 add_row_shift = ww->
min_in();
3042 (*ww) -= add_row_shift;
3058 (
"`lres` not implemented for inhomogeneous input or qring");
3062 WarnS(
"the current implementation of `lres` may not work in the case of a single variable");
3072 (
"`kres` not implemented for inhomogeneous input or qring");
3084 (
"`hres` not implemented for inhomogeneous input or qring");
3087 ideal u_id_copy=
idCopy(u_id);
3094 r->list_length=wmaxl;
3095 res->data=(
void *)
r;
3096 if ((weights!=
NULL) && (ww!=
NULL)) {
delete ww; ww=
NULL; }
3097 if ((
r->weights!=
NULL) && (
r->weights[0]!=
NULL))
3100 if (weights!=
NULL) (*ww) += add_row_shift;
3130 n1 = (number)u->
CopyD();
3134 i = (int)(
long)u->
Data();
3142 i = (int)(
long)
v->Data();
3146 res->data = (
char*)
l;
3153 res->data = (
char *)
r;
3156 #define SIMPL_LMDIV 32 3157 #define SIMPL_LMEQ 16 3158 #define SIMPL_MULT 8 3160 #define SIMPL_NULL 2 3161 #define SIMPL_NORM 1 3164 int sw = (int)(
long)
v->Data();
3191 res->data = (
char * )
id;
3198 int sw=(int)(
long)dummy->
Data();
3213 l->m[0].data=(
void *)
f;
3215 l->m[1].data=(
void *)
v;
3216 res->data=(
void *)
l;
3221 res->data=(
void *)
f;
3234 res->data=(
void *)
p;
3255 int sw = (int)(
long)
v->Data();
3262 res->data = (
char * )
p;
3270 ideal u_id=(ideal)(u->
Data());
3295 ideal i1=(ideal)(u->
Data());
3301 i0->m[0]=(
poly)
v->Data();
3337 i0=(ideal)
v->CopyD();
3385 ideal I=(ideal)u->
Data();
3396 int i=(
int)(long)
v->Data();
3417 int t = (int)(
long)
v->Data();
3427 res->data = (
void*)(
long)
i;
3442 int timeout = 1000*(int)(
long)
v->Data();
3450 for(
unsigned nfinished = 0; nfinished < ((unsigned)Lforks->
nr)+1; nfinished++)
3475 res->data = (
void*)(
long)ret;
3483 #define jjWRONG2 (proc2)jjWRONG 3484 #define jjWRONG3 (proc3)jjWRONG 3529 res->data = (
char *)n;
3534 res->data = (
char *)(-(
long)u->
Data());
3541 res->data = (
char *)n;
3559 res->data = (
char *)iv;
3566 res->data = (
char *)bim;
3575 ring
r=(ring)u->
Data();
3579 char name_buffer[100];
3580 static int ending=1000000;
3582 sprintf(name_buffer,
"PYTHON_RING_VAR%d",ending);
3606 l->m[0].data=(
void *)
m;
3607 l->m[1].data=(
void *)iv;
3608 res->data = (
char *)
l;
3628 number n=(number)u->
CopyD();
3652 number n=(number) tmp.
data;
3667 res->data = (
char *)(
long)
rChar((ring)
v->Data());
3677 res->data = (
char *)(
long)((
bigintmat*)(
v->Data()))->cols();
3682 res->data = (
char *)(
long)((
intvec*)(
v->Data()))->cols();
3690 res->data = (
char *)
p;
3700 res->data = (
char *)(
long)
nSize((number)
v->Data());
3717 res->data = (
char *)(
long)((
intvec*)(
v->Data()))->length();
3722 ring
r=(ring)
v->Data();
3728 extern int ipower (
int b,
int n );
3729 elems=
ipower(
r->cf->ch,
r->cf->extRing->pFDeg(
r->cf->extRing->qideal->m[0],
r->cf->extRing));
3731 res->data = (
char *)(
long)elems;
3739 else res->data=(
char *)-1;
3744 ideal I=(ideal)u->
Data();
3750 res->data = (
char *)(
long)d;
3759 PrintS(
"// NOTE: computation of degree is being performed for\n");
3760 PrintS(
"// generic fibre, that is, over Q\n");
3779 else if (
v->rtyp!=0)
res->data=(
void *)(-1);
3787 number n =
reinterpret_cast<number
>(
v->Data());
3796 number n =
reinterpret_cast<number
>(
v->Data());
3813 res ->data = (
char *)
p;
3820 i=
m->rows();
j=
m->cols();
3825 Werror(
"det of %d x %d bigintmat",
i,
j);
3836 i=
m->rows();
j=
m->cols();
3840 r->cf=
m->basecoeffs();
3845 Werror(
"det of %d x %d cmatrix",
i,
j);
3856 i=
m->rows();
j=
m->cols();
3861 Werror(
"det of %d x %d intmat",
i,
j);
3868 ideal I=(ideal)
v->Data();
3879 res->data = (
char *)
p;
3887 Warn(
"dim(%s) may be wrong because the mixed monomial ordering",
v->Name());
3892 ideal vid = (ideal)
v->Data();
3896 res->data = (
char *)-1L;
3918 for(
unsigned ii=0;ii<(unsigned)
IDELEMS(vv);ii++)
3927 for(
unsigned jj = 0;jj<(unsigned)
IDELEMS(vc)-1;jj++)
3929 if((vc->m[jj]!=
NULL)
3950 res->data = (
char *)d;
3966 Werror(
"cannot dump to `%s`",
s);
3975 int co=(int)(
long)
v->Data();
3981 else WerrorS(
"argument of gen must be positive");
3986 char * d = (
char *)
v->Data();
3987 char *
s = (
char *)
omAlloc(strlen(d) + 13);
3988 strcpy(
s, (
char *)d);
3989 strcat(
s,
"\n;RETURN();\n");
4026 WarnS(
"no factorization implemented");
4030 res->data=(
void *)L;
4043 l->m[0].data=(
void *)
f;
4045 l->m[1].data=(
void *)
v;
4046 res->data=(
void *)
l;
4057 Werror(
"cannot get dump from `%s`",
s);
4066 ideal I=(ideal)
v->Data();
4075 ideal I=(ideal)
v->Data();
4089 WerrorS(
"module must be zero-dimensional");
4090 if (delete_w)
delete w;
4113 if (delete_w)
delete w;
4114 res->data=(
void *)po;
4122 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
4123 PrintS(
"// performed for generic fibre, that is, over Q\n");
4137 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
4138 PrintS(
"// performed for generic fibre, that is, over Q\n");
4147 ideal v_id=(ideal)
v->Data();
4155 char *s_isHomog=
omStrDup(
"isHomog");
4161 else if (
w!=
NULL)
delete w;
4198 res->data=(
char *)mat;
4208 res->data=(
char *)I;
4215 ring q=(ring)
v->Data();
4218 if (q->qideal==
NULL)
4225 WerrorS(
"can only get ideal from identical qring");
4251 WarnS(
"interred: this command is experimental over the integers");
4270 res->data = (
char *)0;
4282 res->data = (
char *)
i;
4289 WerrorS(
"differentiation not defined in the coefficient ring");
4292 number n = (number) u->
Data();
4293 number
k = (number)
v->Data();
4306 ideal
id = (ideal)
a->Data();
4316 for(
int i = 0;
i < W;
i++,
p++, q++ )
4368 res->data=(
char *)iv;
4382 res->data = (
char*) lm;
4394 res->data=(
char *)
r;
4402 memset(&tmp, 0,
sizeof(tmp));
4418 WerrorS(
"matrix must be constant");
4432 res->data=(
char*)ll;
4443 switch(((
int)(
long)
v->Data()))
4458 res->data = (
char *)0;
4462 res->data = (
char *)0;
4477 l->m[0].data=(
char *)
r;
4480 l->m[1].data=(
char *)
m;
4481 res->data=(
char *)
l;
4497 res->data=(
char *)tmp;
4506 number n,
i;
i=(number)
v->Data();
4511 res->data=(
void *)n;
4541 res->data=(
char*)(
long)((long)
v->Data()==0 ? 1 : 0);
4546 res->data = (
char *)(
long)(((ring)(
v->Data()))->N);
4563 int i=(int)(
long)
v->Data();
4566 if ((0<
i) && (
i<=
p))
4572 Werror(
"par number %d out of range 1..%d",
i,
p);
4579 number nn=(number)
v->Data();
4590 int i=(int)(
long)
v->Data();
4596 Werror(
"par number %d out of range 1..%d",
i,
p);
4607 WerrorS(
"poly must be constant");
4616 res->data=(
void *)n;
4627 WerrorS(
"poly must be constant");
4641 int i =
IsPrime((
int)(
long)(
v->Data()));
4642 res->data = (
char *)(
long)(
i > 1 ?
i : 2);
4648 ideal v_id=(ideal)
v->Data();
4653 WarnS(
"wrong weights");
4682 res->data = (
char *)n;
4687 char *
s= (
char *)
v->Data();
4693 res->data = (
char *)1;
4704 res->data =(
char *)(
long)rank;
4723 ring
r=(ring)
v->Data();
4737 ring
r=(ring)
v->Data();
4744 ideal
i = (ideal)
v->Data();
4745 res->data = (
char *)
i->rank;
4750 res->data = (
char *)(
long)((
bigintmat*)(
v->Data()))->rows();
4755 res->data = (
char *)(
long)((
intvec*)(
v->Data()))->rows();
4760 res->data = (
char *)(
long)
rPar(((ring)
v->Data()));
4768 const bool bIsSCA =
false;
4773 WerrorS(
"qring not supported by slimgb at the moment");
4778 WerrorS(
"ordering must be global for slimgb");
4783 ideal u_id=(ideal)u->
Data();
4788 WarnS(
"wrong weights");
4810 ideal v_id=(ideal)
v->Data();
4817 WarnS(
"wrong weights");
4836 ideal v_id=(ideal)
v->Data();
4843 WarnS(
"wrong weights");
4862 ideal v_id=(ideal)
v->Data();
4869 WarnS(
"wrong weights");
4888 ideal v_id=(ideal)
v->Data();
4895 WarnS(
"wrong weights");
4913 res->data = (
char *)
idSort((ideal)
v->Data());
4926 l->m[0].data=(
void *)
f;
4928 l->m[1].data=(
void *)
v;
4929 res->data=(
void *)
l;
4946 ideal v_id=(ideal)
v->Data();
4948 int add_row_shift=0;
4952 add_row_shift=
w->min_in();
4953 (*w)-=add_row_shift;
4978 res->data = (
char *)(((
bigintmat*)(
v->Data()))->transpose());
4989 ring
r = (ring)
a->Data();
4997 WarnS(
"opposite only for global orderings");
5004 ring
r = (ring)
a->Data();
5016 else res->data=(ideal)
a->CopyD();
5025 int t=(int)(
long)
v->data;
5073 int i=(int)(
long)
v->Data();
5074 if ((0<
i) && (i<=currRing->
N))
5079 res->data=(
char *)
p;
5095 int i=(int)(
long)
v->Data();
5096 if ((0<
i) && (i<=currRing->
N))
5123 res->data = (
void*)(
long)
i;
5136 for(
int nfinished = 0; nfinished < Lforks->
nr+1; nfinished++)
5152 res->data = (
void*)(
long)
j;
5162 #ifdef HAVE_DYNAMIC_LOADING 5169 Werror(
"%s: unknown type",
s);
5187 Werror(
"can not create package `%s`",plib);
5193 package savepack=currPack;
5209 #ifdef HAVE_DYNAMIC_LOADING 5212 WerrorS(
"Dynamic modules are not supported by this version of Singular");
5230 Print(
"loading of >%s< failed\n",
s);
5238 res->data = (
char *)strlen((
char *)
v->Data());
5248 res->data = (
char *)(
long)
idElem((ideal)
v->Data());
5336 number n=(number)u->
CopyD();
5343 number n=(number)u->
Data();
5352 char *
s= (
char *)u->
Data();
5353 int r = (int)(
long)
v->Data();
5354 int c = (int)(
long)
w->Data();
5357 if ( (
r<1) || (
r>
l) || (c<0) )
5363 sprintf((
char *)
res->data,
"%-*.*s",c,c,
s+
r-1);
5369 int r = (int)(
long)
v->Data();
5370 int c = (int)(
long)
w->Data();
5371 if ((
r<1)||(
r>iv->
rows())||(c<1)||(c>iv->
cols()))
5373 Werror(
"wrong range[%d,%d] in intmat %s(%d x %d)",
5386 while (
h->next!=
NULL)
h=
h->next;
5396 int r = (int)(
long)
v->Data();
5397 int c = (int)(
long)
w->Data();
5398 if ((
r<1)||(
r>bim->
rows())||(c<1)||(c>bim->
cols()))
5400 Werror(
"wrong range[%d,%d] in bigintmat %s(%d x %d)",
5414 while (
h->next!=
NULL)
h=
h->next;
5424 int r = (int)(
long)
v->Data();
5425 int c = (int)(
long)
w->Data();
5443 while (
h->next!=
NULL)
h=
h->next;
5461 WerrorS(
"cannot build expression lists from unnamed objects");
5464 memcpy(&ut,u,
sizeof(ut));
5465 memset(&t,0,
sizeof(t));
5469 t.
data=(
char *)(
long)((*iv)[
l]);
5479 memcpy(u,&ut,
sizeof(ut));
5511 WerrorS(
"cannot build expression lists from unnamed objects");
5514 memcpy(&ut,u,
sizeof(ut));
5515 memset(&t,0,
sizeof(t));
5519 t.
data=(
char *)(
long)((*iv)[
l]);
5529 memcpy(u,&ut,
sizeof(ut));
5562 WerrorS(
"cannot build expression lists from unnamed objects");
5565 memcpy(&ut,u,
sizeof(ut));
5566 memset(&t1,0,
sizeof(
sleftv));
5567 memset(&t2,0,
sizeof(
sleftv));
5570 for (vl=0;vl< vv->
length(); vl++)
5572 t1.
data=(
char *)(
long)((*vv)[vl]);
5573 for (wl=0;wl< wv->
length(); wl++)
5575 t2.
data=(
char *)(
long)((*wv)[wl]);
5585 memcpy(u,&ut,
sizeof(ut));
5625 int k=(int)(
long)
w->Data();
5632 l->m[0].data=(
void *)
m;
5633 l->m[1].data=(
void *)iv;
5640 l->m[0].data=(
void *)
m;
5642 res->data = (
char *)
l;
5649 WerrorS(
"3rd argument must be a name of a matrix");
5652 ideal
i=(ideal)u->
Data();
5653 int rank=(int)
i->rank;
5662 (ideal)(
v->Data()),(
poly)(
w->Data()));
5669 WerrorS(
"3rd argument must be a name of a matrix");
5677 memset(&t,0,
sizeof(t));
5707 int n=(int)(
long)
w->Data();
5708 char *where=(
char *)u->
Data();
5709 char *what=(
char *)
v->Data();
5711 if ((1>n)||(n>(
int)strlen(where)))
5713 Werror(
"start position %d out of range",n);
5716 found = strchr(where+n-1,*what);
5717 if (*(what+1)!=
'\0')
5719 while((
found !=
NULL) && (strncmp(
found+1,what+1,strlen(what+1))!=0))
5726 res->data=(
char *)((
found-where)+1);
5732 if ((
int)(
long)
w->Data()==0)
5744 Werror(
"weight vector must have size %d, not %d",
5751 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
5752 PrintS(
"// performed for generic fibre, that is, over Q\n");
5758 switch((
int)(long)
v->Data())
5761 res->data=(
void *)iv;
5787 WerrorS(
"variable must have weight 1");
5805 WerrorS(
"variable must have weight 1");
5810 intvec* im=
new intvec((
int)(
long)
v->Data(),(int)(
long)
w->Data(), 0);
5816 (*im)[
i] = (*arg)[
i];
5819 res->data = (
char *)im;
5833 WerrorS(
"2nd argument must be a unit");
5849 WerrorS(
"2nd argument must be a diagonal matrix of units");
5896 Werror(
"`%s` is undefined",
v->Fullname());
5912 const int mk = (
const int)(
long)u->
Data();
5913 bool noIdeal =
true;
bool noK =
true;
bool noAlgorithm =
true;
5914 bool noCacheMinors =
true;
bool noCacheMonomials =
true;
5915 ideal IasSB;
int k;
char* algorithm;
int cacheMinors;
int cacheMonomials;
5931 noAlgorithm =
false;
5936 noCacheMinors =
false;
5942 noCacheMonomials =
false;
5956 noAlgorithm =
false;
5961 noCacheMinors =
false;
5966 noCacheMonomials =
false;
5973 algorithm = (
char*)u->
next->
Data();
5974 noAlgorithm =
false;
5978 noCacheMinors =
false;
5983 noCacheMonomials =
false;
5991 if (strcmp(algorithm,
"bareiss") == 0)
5992 algorithm = (
char*)
"Bareiss";
5993 if (strcmp(algorithm,
"laplace") == 0)
5994 algorithm = (
char*)
"Laplace";
5995 if (strcmp(algorithm,
"cache") == 0)
5996 algorithm = (
char*)
"Cache";
6005 if ((!noK) && (
k == 0))
6007 WerrorS(
"Provided number of minors to be computed is zero.");
6010 if ((!noAlgorithm) && (strcmp(algorithm,
"Bareiss") != 0)
6011 && (strcmp(algorithm,
"Laplace") != 0)
6012 && (strcmp(algorithm,
"Cache") != 0))
6014 WerrorS(
"Expected as algorithm one of 'B/bareiss', 'L/laplace', or 'C/cache'.");
6017 if ((!noAlgorithm) && (strcmp(algorithm,
"Bareiss") == 0)
6020 Werror(
"Bareiss algorithm not defined over coefficient rings %s",
6021 "with zero divisors.");
6025 if ((mk < 1) || (mk >
m->rows()) || (mk >
m->cols()))
6034 if ((!noAlgorithm) && (strcmp(algorithm,
"Cache") == 0)
6035 && (noCacheMinors || noCacheMonomials))
6038 cacheMonomials = 100000;
6044 (noIdeal ? 0 : IasSB),
false);
6045 else if (strcmp(algorithm,
"Cache") == 0)
6047 (noIdeal ? 0 : IasSB), 3, cacheMinors,
6048 cacheMonomials,
false);
6051 (noIdeal ? 0 : IasSB),
false);
6061 (
const char *)
w->Data());
6075 WerrorS(
"2nd/3rd arguments must have names");
6079 const char *ring_name=u->
Name();
6086 if ((preim_ring==
NULL)
6089 Werror(
"preimage ring `%s` is not the basering",mapping->preimage);
6105 Werror(
"`%s` is not defined in `%s`",
v->
name,ring_name);
6109 if (kernel_cmd) image=
idInit(1,1);
6126 Werror(
"`%s` is not defined in `%s`",
w->name,ring_name);
6133 WarnS(
"preimage in local qring may be wrong: use Ring::preimageLoc instead");
6142 int i=(int)(
long)u->
Data();
6143 int r=(int)(
long)
v->Data();
6144 int c=(int)(
long)
w->Data();
6145 if ((
r<=0) || (c<=0))
return TRUE;
6161 res->data = (
char *)iv;
6171 Werror(
"no random function defined for coeff %d",
cf->type);
6177 number2 nn=(number2)
omAlloc(
sizeof(*nn));
6187 int &ringvar,
poly &monomexpr)
6189 monomexpr=(
poly)
w->Data();
6194 Werror(
"`%s` substitutes a ringvar only by a term",
6199 if ((ringvar=
pVar(
p))==0)
6208 WerrorS(
"ringvar/par expected");
6219 if (nok)
return TRUE;
6245 if (nok)
return TRUE;
6246 ideal
id=(ideal)u->
Data();
6250 if (monomexpr!=
NULL)
6265 Warn(
"possible OVERFLOW in subst, max exponent is %ld",
currRing->bitmask/2);
6295 memset(&tmp,0,
sizeof(tmp));
6304 int mi=(int)(
long)
v->Data();
6305 int ni=(int)(
long)
w->Data();
6308 Werror(
"converting ideal to matrix: dimensions must be positive(%dx%d)",mi,ni);
6319 memcpy(
m->m,I->m,
i*
sizeof(
poly));
6320 memset(I->m,0,
i*
sizeof(
poly));
6322 res->data = (
char *)
m;
6327 int mi=(int)(
long)
v->Data();
6328 int ni=(int)(
long)
w->Data();
6331 Werror(
"converting module to matrix: dimensions must be positive(%dx%d)",mi,ni);
6340 int mi=(int)(
long)
v->Data();
6341 int ni=(int)(
long)
w->Data();
6344 Werror(
"converting matrix to matrix: dimensions must be positive(%dx%d)",mi,ni);
6361 res->data = (
char *)
m;
6385 &(hw->data.uideal));
6394 Werror(
"`%s` must be 0-dimensional",
v->Name());
6406 Werror(
"`%s` must be 0-dimensional",
v->Name());
6417 0,(int)(
long)
w->Data());
6424 0,(int)(
long)
w->Data());
6430 int maxl=(int)
v->Data();
6431 ideal u_id=(ideal)u->
Data();
6447 WarnS(
"wrong weights");
6475 yes = (strcmp((
char *)
res->data, (
char *)
w->Data()) == 0);
6477 res->data = (
void *)(
long)yes;
6491 ideal u_id=(ideal)(u->
Data());
6496 WarnS(
"wrong weights");
6537 lineno=(int)(
long)
v->
next->Data();
6599 WarnS(
"<module>,<module>,<int>[,<intvec>] expected!");
6606 ideal
P=(ideal)w1.
Data();
6607 ideal
Q=(ideal)w2.
Data();
6609 int n=(int)(
long)v3->
Data();
6616 while( (
i > 0) && ((*w0) > 0) )
6622 WarnS(
"not all weights are positive!");
6636 L->
m[1].
rtyp=v1->Typ();
6641 L->
m[1].
data=(
void *)
R->m[0];
6705 number n=
nInit((
int)(
long)
h->Data());
6719 number
b=(number)
h->Data();
6775 res->data=(
char *)
id;
6780 ring
r=(ring)u->
Data();
6788 WerrorS(
"fetch(<ring>,<name>[,<intvec>[,<intvec>])");
6793 if (perm_par_l!=
NULL)
6802 int par_perm_size=0;
6815 par_perm_size=
rPar(
r);
6823 par_perm_size=
rPar(
r);
6825 if (par_perm_size!=0)
6826 par_perm=(
int *)
omAlloc0(par_perm_size*
sizeof(
int));
6828 if (perm_par_l==
NULL)
6830 if (par_perm_size!=0)
6835 if (par_perm_size==0)
WarnS(
"source ring has no parameters");
6840 if (i<perm_par_v->length()) par_perm[
i]=(*perm_par_v)[
i];
6844 Warn(
"invalid entry for par %d: %d\n",
i,par_perm[
i]);
6852 if (i<perm_var_v->length()) perm[
i+1]=(*perm_var_v)[
i];
6856 Warn(
"invalid entry for var %d: %d\n",
i,perm[
i]);
6865 Print(
"// var nr %d: %s -> var %s\n",
i,
r->names[
i-1],
currRing->names[perm[
i]-1]);
6871 if (par_perm[
i-1]<0)
6872 Print(
"// par nr %d: %s -> par %s\n",
6874 else if (par_perm[
i-1]>0)
6875 Print(
"// par nr %d: %s -> var %s\n",
6881 memset(&tmpW,0,
sizeof(
sleftv));
6885 perm,par_perm,par_perm_size,nMap)))
6903 Werror(
"no identity map from %s (%s -> %s)",u->
Fullname(),s1,s2);
6910 int l=
v->listLength();
6941 WerrorS(
"cannot convert to ideal or module");
6952 r[
i]=(ideal)
h->Data();
6996 matrix iMat;
int invertible;
7002 int rr = aMat->
rows();
7003 int cc = aMat->
cols();
7006 Werror(
"given matrix (%d x %d) is not quadratic, hence not invertible", rr, cc);
7011 WerrorS(
"matrix must be constant");
7021 int rr = uMat->
rows();
7022 int cc = uMat->
cols();
7025 Werror(
"third matrix (%d x %d) is not quadratic, hence not invertible",
7034 WerrorS(
"matricesx must be constant");
7041 Werror(
"expected either one or three matrices");
7059 res->data=(
char*)ll;
7083 WerrorS(
"expected exactly three matrices and one vector as input");
7093 Werror(
"first matrix (%d x %d) is not quadratic",
7099 Werror(
"second matrix (%d x %d) is not quadratic",
7105 Werror(
"second matrix (%d x %d) and third matrix (%d x %d) do not fit",
7111 Werror(
"third matrix (%d x %d) and vector (%d x 1) do not fit",
7120 WerrorS(
"matrices must be constant");
7140 res->data=(
char*)ll;
7154 (*iv)[
i]=(int)(
long)
h->Data();
7173 res->data=(
char *)iv;
7190 WerrorS(
"2nd argument must be a unit");
7203 WerrorS(
"2nd argument must be a diagonal matrix of units");
7208 (
int)(long)u3->
Data(),
7217 Werror(
"%s(`poly`,`poly`,`int`,`intvec`) exppected",
7235 else if (
w->next==
NULL)
7262 && ((strcmp(u->
Name(),
"real")==0) || (strcmp(u->
Name(),
"complex")==0)))
7265 memset(u,0,
sizeof(
sleftv));
7283 Werror(
"`int` expected while building `%s(`",u->
name);
7288 sprintf(nn,
"%s(%d",u->
name,(
int)(
long)
v->Data());
7292 while (*
s!=
'\0')
s++;
7296 Werror(
"`int` expected while building `%s`",nn);
7300 sprintf(
s,
",%d",(
int)(
long)
v->Data());
7302 while (*
s!=
'\0')
s++;
7323 ideal I=(ideal)u->
Data();
7336 Werror(
"%s(`ideal`,`ideal`,`matrix`,`string`)\n" 7337 "or (`module`,`module`,`matrix`,`string`)expected",
7355 ideal I=(ideal)u->
Data();
7362 &(hw->data.uideal),alg);
7368 Werror(
"%s(`ideal`,`ideal`,`matrix`,`string`)\n" 7369 "or (`module`,`module`,`matrix`,`string`)expected",
7377 if (
v!=
NULL) sl =
v->listLength();
7381 int add_row_shift = 0;
7383 if (weights!=
NULL) add_row_shift=weights->
min_in();
7410 Werror(
"`%s` is undefined",
h->Fullname());
7416 ((ring)L->
m[
i].
data)->ref++;
7422 res->data=(
char *)L;
7469 WerrorS(
"2nd argument must be a diagonal matrix of units");
7477 (
int)(long)u4->
Data()
7488 WerrorS(
"2nd argument must be a unit");
7517 WerrorS(
"2nd argument must be a diagonal matrix of units");
7525 (
int)(long)u4->
Data(),
7537 WerrorS(
"2nd argument must be a unit");
7548 Werror(
"%s(`ideal`,`ideal`,`matrix`,`int`,`intvec`) exppected",
7560 for(
i=0;
i<nCount;
i++)
7581 int n =
v->listLength();
7584 res->data =
v->String();
7588 char** slist = (
char**)
omAlloc(n*
sizeof(
char*));
7593 slist[
i] =
v->String();
7595 j+=strlen(slist[
i]);
7597 char*
s = (
char*)
omAlloc((
j+1)*
sizeof(char));
7601 strcat(
s, slist[
i]);
7621 #if defined(__alpha) && !defined(linux) 7624 void usleep(
unsigned long usec);
7653 leftv u =
v;
int factorsGiven = 0;
7656 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
7663 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
7666 else d = (int)(
long)u->
Data();
7672 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
7687 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
7692 xIndex = (int)(
long)u->
Data();
7693 yIndex = (int)(
long)u->
next->
Data();
7699 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
7706 WerrorS(
"expected non-constant polynomial argument(s)");
7710 if ((xIndex < 1) || (n < xIndex))
7712 Werror(
"index for variable x (%d) out of range [1..%d]", xIndex, n);
7715 if ((yIndex < 1) || (n < yIndex))
7717 Werror(
"index for variable y (%d) out of range [1..%d]", yIndex, n);
7720 if (xIndex == yIndex)
7722 WerrorS(
"expected distinct indices for variables x and y");
7727 if (factorsGiven == 0)
7741 WerrorS(
"expected h(0,y) to have exactly two distinct monic factors");
7756 res->data = (
char*)L;
7767 #if defined(HAVE_USLEEP) 7768 if (((
long)
res->data) == 0L)
7777 #elif defined(HAVE_SLEEP) 7778 if (((
int)
res->data) == 0)
7783 si_sleep((is - 1)/1000000 + 1);
7802 if ((rest!=
NULL) && (!
b))
7807 memset(&tmp_res,0,
sizeof(tmp_res));
7809 memcpy(
res,&tmp_res,
sizeof(tmp_res));
7824 WerrorS(
"expected (matrix, number, number, number) as arguments");
7829 (number)(
v->Data()),
7830 (number)(
w->Data()),
7831 (number)(
x->Data()));
7841 ideal i1=(ideal)(u->
Data());
7847 WerrorS(
"expected `std(`ideal/module`,`poly/vector`,`intvec`,`intvec`)");
7862 i0->m[0]=(
poly)
v->Data();
7867 i0=(ideal)
v->Data();
7871 WerrorS(
"expected `std(`ideal/module`,`poly/vector`,`intvec`,`intvec`)");
7888 WarnS(
"wrong weights");
7922 WerrorS(
"expected `cring` [ `id` ... ]");
7928 char **n=(
char**)
omAlloc0(
N*
sizeof(
char*));
7929 for(
int i=0;
i<
N;
i++,names=names->
next)
7931 n[
i]=(
char *)names->Name();
7943 r->start =(int)(
long)e->
Data();
7947 #define NULL_VAL NULL 7951 #include "iparith.inc" 7970 while (dA2[
i].cmd==op)
7972 if ((at==dA2[
i].arg1)
7973 && (bt==dA2[
i].arg2))
7990 if ((call_failed=dA2[
i].
p(
res,
a,
b)))
8010 while (dA2[
i].cmd==op)
8037 || (call_failed=dA2[
i].
p(
res,an,bn)));
8076 Werror(
"`%s` is not defined",
s);
8083 Werror(
"%s(`%s`,`%s`) failed" 8088 Werror(
"`%s` %s `%s` failed" 8093 while (dA2[
i].cmd==op)
8095 if(((at==dA2[
i].arg1)||(bt==dA2[
i].arg2))
8100 Werror(
"expected %s(`%s`,`%s`)" 8103 Werror(
"expected `%s` %s `%s`" 8141 memcpy(&d->arg1,
a,
sizeof(
sleftv));
8143 memcpy(&d->arg2,
b,
sizeof(
sleftv));
8147 res->data=(
char *)d;
8160 if (!bb->blackbox_Op2(op,
res,
a,
b))
return FALSE;
8166 else if ((bt>
MAX_TOK)&&(op!=
'('))
8171 if(!bb->blackbox_Op2(op,
res,
a,
b))
return FALSE;
8199 while (dA1[
i].cmd==op)
8218 if ((call_failed=dA1[
i].
p(
res,
a)))
8222 if (
a->Next()!=
NULL)
8238 while (dA1[
i].cmd==op)
8262 || (call_failed=dA1[
i].
p(
res,an)));
8293 Werror(
"`%s` is not defined",
a->Fullname());
8303 while (dA1[
i].cmd==op)
8307 Werror(
"expected %s(`%s`)" 8330 memcpy(&d->arg1,
a,
sizeof(
sleftv));
8334 res->data=(
char *)d;
8347 res->data=bb->blackbox_Init(bb);
8348 if(!bb->blackbox_Assign(
res,
a))
return FALSE;
8358 if(!bb->blackbox_Op1(op,
res,
a))
return FALSE;
8378 const struct sValCmd3* dA3,
int at,
int bt,
int ct,
8390 while (dA3[
i].cmd==op)
8392 if ((at==dA3[
i].arg1)
8393 && (bt==dA3[
i].arg2)
8394 && (ct==dA3[
i].arg3))
8402 Print(
"call %s(%s,%s,%s)\n",
8404 if ((call_failed=dA3[
i].
p(
res,
a,
b,c)))
8425 while (dA3[
i].cmd==op)
8441 Print(
"call %s(%s,%s,%s)\n",
8447 || (call_failed=dA3[
i].
p(
res,an,bn,cn)));
8496 Werror(
"`%s` is not defined",
s);
8502 Werror(
"%s(`%s`,`%s`,`%s`) failed" 8506 while (dA3[
i].cmd==op)
8508 if(((at==dA3[
i].arg1)
8510 ||(ct==dA3[
i].arg3))
8513 Werror(
"expected %s(`%s`,`%s`,`%s`)" 8542 memcpy(&d->arg1,
a,
sizeof(
sleftv));
8544 memcpy(&d->arg2,
b,
sizeof(
sleftv));
8546 memcpy(&d->arg3,c,
sizeof(
sleftv));
8550 res->data=(
char *)d;
8562 if(!bb->blackbox_Op3(op,
res,
a,
b,c))
return FALSE;
8611 if(
v==
NULL)
return failed;
8633 res->data=(
char *)d;
8636 d->argc=
a->listLength();
8638 memcpy(&d->arg1,
a,
sizeof(
sleftv));
8642 memcpy(&d->arg3,
a->next->next,
sizeof(
sleftv));
8643 a->next->next->Init();
8646 memcpy(&d->arg2,
a->next,
sizeof(
sleftv));
8648 a->next->next=d->arg2.next;
8653 a->next=d->arg1.next;
8656 if (d->argc>3)
a->next=
NULL;
8673 if(!bb->blackbox_OpM(op,
res,
a))
return FALSE;
8680 if (
a!=
NULL) args=
a->listLength();
8687 if ((args==
dArithM[
i].number_of_args)
8689 || ((
dArithM[
i].number_of_args==-2)&&(args>0)))
8702 if (
a!=
NULL)
a->CleanUp();
8711 if ((args>0) && (
a->rtyp==0) && (
a->Name()!=
sNoName_fe))
8713 Werror(
"`%s` is not defined",
a->Fullname());
8723 if (
a!=
NULL)
a->CleanUp();
8787 Warn(
"outdated identifier `%s` used - please change your code",
8838 if (op==dArithTab[
p].cmd)
return dArithTab[
p].start;
8839 if (op<dArithTab[
p].cmd) e=
p-1;
8857 if (tok==
ANY_TYPE)
return "any_type";
8858 if (tok==
COMMAND)
return "command";
8859 if (tok==
NONE)
return "nothing";
8866 if (tok==
IDHDL)
return "identifier";
8902 cmdnames *pCmdL = (cmdnames*)
a;
8903 cmdnames *pCmdR = (cmdnames*)
b;
8908 if(pCmdL->name==
NULL)
return 1;
8909 if(pCmdR->name==
NULL)
return -1;
8912 if(strcmp(pCmdL->name,
"$INVALID$")==0)
return -1;
8913 if(strcmp(pCmdR->name,
"$INVALID$")==0)
return 1;
8916 if (pCmdL->tokval==-1)
8918 if (pCmdR->tokval==-1)
8919 return strcmp(pCmdL->name, pCmdR->name);
8924 if(pCmdR->tokval==-1)
return -1;
8926 return strcmp(pCmdL->name, pCmdR->name);
9034 if(nPos<0)
return NULL;
9043 if(szName==
NULL)
return -1;
9048 Print(
"'%s' not found (%d)\n", szName, nIndex);
9091 if(szName==
NULL)
return -1;
9095 Print(
"'%s' already exists at %d\n", szName, nIndex);
9133 WerrorS(
"not implemented for non-commutative rings");
9149 WerrorS(
"not implemented for rings with rings as coeffients");
9156 WerrorS(
"domain required as coeffients");
9162 WarnS(
"considering the image in Q[...]");
9174 int return_type=c->
m[0].
Typ();
9190 for (
unsigned i=0;
i<=(unsigned)c->
nr;
i++)
9195 if (bo) {
Werror(
"chinrem failed for list entry %d",
i+1);
break;}
9205 WerrorS(
"poly/ideal/module/matrix/list expected");
9222 ideal *
x=(ideal *)
omAlloc(rl*
sizeof(ideal));
9228 for(
i=rl-1;
i>=0;
i--)
9230 if (c->
m[
i].
Typ()!=return_type)
9255 xx=(number *)
omAlloc(rl*
sizeof(number));
9256 for(
i=rl-1;
i>=0;
i--)
9268 Werror(
"bigint expected at pos %d",
i+1);
9275 number *q=(number *)
omAlloc(rl*
sizeof(number));
9278 for(
i=rl-1;
i>=0;
i--)
9285 for(
i=rl-1;
i>=0;
i--)
9297 Werror(
"bigint expected at pos %d",
i+1);
9313 res->data=(
char *)n;
9328 for(
i=rl-1;
i>=0;
i--)
9333 res->rtyp=return_type;
9343 for (
unsigned i=0;
i<=(unsigned)c->
nr;
i++)
9348 if (bo) {
Werror(
"farey failed for list entry %d",
i+1);
break;}
9361 if (at < bt)
return -1;
9362 if (at > bt)
return 1;
9363 int tab_pos=
iiTabIndex(dArithTab2,JJTAB2LEN,
'<');
9365 memset(&tmp,0,
sizeof(
sleftv));
9371 unsigned long ad=(
unsigned long)
a->Data();
9372 unsigned long bd=(
unsigned long)
b->Data();
9373 if (ad<bd)
return -1;
9374 else if (ad==bd)
return 0;
9385 unsigned long ad=(
unsigned long)
a->Data();
9386 unsigned long bd=(
unsigned long)
b->Data();
9387 if (ad<bd)
return -1;
9388 else if (ad==bd)
return 0;
9419 for(
j=
i;
j<len;
j++)
l->m[
j]=
l->m[
j+1];
9420 memset(&(
l->m[len]),0,
sizeof(
sleftv));
BOOLEAN rHasLocalOrMixedOrdering(const ring r)
static BOOLEAN jjINTMAT3(leftv res, leftv u, leftv v, leftv w)
#define idPosConstant(I)
index of generator with leading term in ground ring (if any); otherwise -1
static FORCE_INLINE number n_Sub(number a, number b, const coeffs r)
return the difference of 'a' and 'b', i.e., a-b
int iiInitArithmetic()
initialisation of arithmetic structured data
matrix idDiff(matrix i, int k)
static BOOLEAN jjBREAK0(leftv, leftv)
static BOOLEAN jjPLUS_I(leftv res, leftv u, leftv v)
static BOOLEAN jjE(leftv res, leftv v)
static BOOLEAN jjPAR1(leftv res, leftv v)
static BOOLEAN jjRANK2(leftv res, leftv u, leftv v)
static BOOLEAN jjIDEAL_PL(leftv res, leftv v)
poly pOppose(ring Rop_src, poly p, const ring Rop_dst)
opposes a vector p from Rop to currRing (dst!)
ideal singclap_sqrfree(poly f, intvec **v, int with_exps, const ring r)
static void jjEQUAL_REST(leftv res, leftv u, leftv v)
CanonicalForm map(const CanonicalForm &primElem, const Variable &alpha, const CanonicalForm &F, const Variable &beta)
map from to such that is mapped onto
static BOOLEAN jjDET_S(leftv res, leftv v)
BOOLEAN yyInRingConstruction
ideal scKBase(int deg, ideal s, ideal Q, intvec *mv)
static BOOLEAN jjPLUSMINUS_Gen(leftv res, leftv u, leftv v)
ideal getMinorIdeal(const matrix mat, const int minorSize, const int k, const char *algorithm, const ideal iSB, const bool allDifferent)
Returns the specified set of minors (= subdeterminantes) of the given matrix.
static BOOLEAN jjTIMES_ID(leftv res, leftv u, leftv v)
static FORCE_INLINE number n_IntMod(number a, number b, const coeffs r)
for r a field, return n_Init(0,r) always: n_Div(a,b,r)*b+n_IntMod(a,b,r)==a n_IntMod(a,b,r) >=0
matrix mp_CoeffProc(poly f, poly vars, const ring R)
static FORCE_INLINE number n_GetNumerator(number &n, const coeffs r)
return the numerator of n (if elements of r are by nature not fractional, result is n) ...
static BOOLEAN jjBI2IM(leftv res, leftv u)
static BOOLEAN jjOP_BI_BIM(leftv res, leftv u, leftv v)
void id_Normalize(ideal I, const ring r)
normialize all polys in id
static FORCE_INLINE number n_Gcd(number a, number b, const coeffs r)
in Z: return the gcd of 'a' and 'b' in Z/nZ, Z/2^kZ: computed as in the case Z in Z/pZ...
static BOOLEAN jjFAC_P(leftv res, leftv u)
#define idMaxIdeal(D)
initialise the maximal ideal (at 0)
const CanonicalForm int s
void id_DelDiv(ideal id, const ring r)
delete id[j], if LT(j) == coeff*mon*LT(i) and vice versa, i.e., delete id[i], if LT(i) == coeff*mon*L...
This file provides miscellaneous functionality.
static BOOLEAN jjCALL2ARG(leftv res, leftv u)
resolvente syResolvente(ideal arg, int maxlength, int *length, intvec ***weights, BOOLEAN minim)
static BOOLEAN iiExprArith3TabIntern(leftv res, int op, leftv a, leftv b, leftv c, const struct sValCmd3 *dA3, int at, int bt, int ct, const struct sConvertTypes *dConvertTypes)
syStrategy syKosz(ideal arg, int *length)
int iiTestConvert(int inputType, int outputType)
static BOOLEAN jjREPART(leftv res, leftv v)
ideal id_FreeModule(int i, const ring r)
the free module of rank i
static BOOLEAN jjRING3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjRSUM(leftv res, leftv u, leftv v)
ideal id_Transp(ideal a, const ring rRing)
transpose a module
static BOOLEAN jjVAR1(leftv res, leftv v)
bool luSolveViaLUDecomp(const matrix pMat, const matrix lMat, const matrix uMat, const matrix bVec, matrix &xVec, matrix &H)
Solves the linear system A * x = b, where A is an (m x n)-matrix which is given by its LU-decompositi...
poly nc_p_Bracket_qq(poly p, const poly q, const ring r)
returns [p,q], destroys p
poly pSubstPoly(poly p, int var, poly image)
Class used for (list of) interpreter objects.
static BOOLEAN jjTEST(leftv, leftv v)
poly kNF(ideal F, ideal Q, poly p, int syzComp, int lazyReduce)
ideal id_Homogen(ideal h, int varnum, const ring r)
static int _gentable_sort_cmds(const void *a, const void *b)
compares to entry of cmdsname-list
static FORCE_INLINE BOOLEAN n_IsUnit(number n, const coeffs r)
TRUE iff n has a multiplicative inverse in the given coeff field/ring r.
static BOOLEAN jjPARDEG(leftv res, leftv v)
static BOOLEAN jjRING_2(leftv res, leftv u, leftv v, leftv w)
number ntDiff(number a, number d, const coeffs cf)
static BOOLEAN jjTIMES_I(leftv res, leftv u, leftv v)
static BOOLEAN jjLOAD_E(leftv, leftv v, leftv u)
static BOOLEAN jjJET_ID_M(leftv res, leftv u, leftv v, leftv w)
BOOLEAN rIsLikeOpposite(ring rBase, ring rCandidate)
checks whether rings rBase and rCandidate could be opposite to each other returns TRUE if it is so ...
static BOOLEAN jjCOMPARE_S(leftv res, leftv u, leftv v)
static BOOLEAN jjnInt(leftv res, leftv u)
static BOOLEAN jjLIFT(leftv res, leftv u, leftv v)
BOOLEAN jjSORTLIST(leftv, leftv arg)
void omPrintInfo(FILE *fd)
bigintmat * bimSub(bigintmat *a, bigintmat *b)
static BOOLEAN jjPLUS_MA(leftv res, leftv u, leftv v)
#define TEST_OPT_DEGBOUND
static BOOLEAN jjKERNEL(leftv res, leftv u, leftv v)
static BOOLEAN jjCOMPARE_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjPLUS_BIM(leftv res, leftv u, leftv v)
static BOOLEAN jjSQR_FREE(leftv res, leftv u)
static BOOLEAN jjPFAC1(leftv res, leftv v)
static BOOLEAN jjTIMES_MA_BI2(leftv res, leftv u, leftv v)
static BOOLEAN jjKBASE2(leftv res, leftv u, leftv v)
static BOOLEAN jjHILBERT2(leftv res, leftv u, leftv v)
static BOOLEAN idHomIdeal(ideal id, ideal Q=NULL)
static BOOLEAN jjJET_P_IV(leftv res, leftv u, leftv v, leftv w)
ideal id_Subst(ideal id, int n, poly e, const ring r)
ideal idSubstPar(ideal id, int n, poly e)
static BOOLEAN jjMULT(leftv res, leftv v)
static BOOLEAN jjSUBST_Id_I(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjPlural_mat_mat(leftv res, leftv a, leftv b)
static BOOLEAN jjPOWER_ID(leftv res, leftv u, leftv v)
#define idDelete(H)
delete an ideal
static BOOLEAN rField_is_Zp_a(const ring r)
static BOOLEAN jjFACSTD(leftv res, leftv v)
static BOOLEAN jjTRANSP_IV(leftv res, leftv v)
static BOOLEAN jjCALL3ARG(leftv res, leftv u)
static BOOLEAN jjN2BI(leftv res, leftv v)
static BOOLEAN jjCOUNT_N(leftv res, leftv v)
static BOOLEAN jjGETDUMP(leftv, leftv v)
static BOOLEAN jjINTVEC_PL(leftv res, leftv v)
static BOOLEAN jjP2BI(leftv res, leftv v)
ideal_list kStdfac(ideal F, ideal Q, tHomog h, intvec **w, ideal D)
static BOOLEAN jjTIMES_MA_P2(leftv res, leftv u, leftv v)
void idLiftW(ideal P, ideal Q, int n, matrix &T, ideal &R, short *w)
ideal interpolation(const std::vector< ideal > &L, intvec *v)
intvec * scIndIntvec(ideal S, ideal Q)
void henselFactors(const int xIndex, const int yIndex, const poly h, const poly f0, const poly g0, const int d, poly &f, poly &g)
Computes a factorization of a polynomial h(x, y) in K[[x]][y] up to a certain degree in x...
BOOLEAN mpKoszul(leftv res, leftv c, leftv b, leftv id)
const struct sConvertTypes dConvertTypes[]
static BOOLEAN jjCOUNT_M(leftv res, leftv v)
BOOLEAN iiExprArith1(leftv res, leftv a, int op)
static int WerrorS_dummy_cnt
static int si_min(const int a, const int b)
static BOOLEAN jjRANDOM(leftv res, leftv u, leftv v)
static BOOLEAN jjOP_REST(leftv res, leftv u, leftv v)
unsigned nCmdAllocated
number of commands-slots allocated
static BOOLEAN jjFAREY_BI(leftv res, leftv u, leftv v)
matrix mp_InitP(int r, int c, poly p, const ring R)
make it a p * unit matrix
Compatiblity layer for legacy polynomial operations (over currRing)
static BOOLEAN jjDIVMOD_I(leftv res, leftv u, leftv v)
BOOLEAN iiConvert(int inputType, int outputType, int index, leftv input, leftv output, const struct sConvertTypes *dConvertTypes)
static BOOLEAN jjBRACK_Ma_I_IV(leftv res, leftv u, leftv v, leftv w)
ideal kSba(ideal F, ideal Q, tHomog h, intvec **w, int sbaOrder, int arri, intvec *hilb, int syzComp, int newIdeal, intvec *vw)
poly p_Homogen(poly p, int varnum, const ring r)
static BOOLEAN jjL2R(leftv res, leftv v)
static BOOLEAN jjOpenClose(leftv, leftv v)
static BOOLEAN jjMEMORY(leftv res, leftv v)
BOOLEAN jjWAIT1ST1(leftv res, leftv u)
int exprlist_length(leftv v)
ideal id_Copy(ideal h1, const ring r)
copy an ideal
short * iv2array(intvec *iv, const ring R)
static int rPar(const ring r)
(r->cf->P)
static BOOLEAN jjCOEFFS_Id(leftv res, leftv u, leftv v)
BOOLEAN iiExprArith3(leftv res, int op, leftv a, leftv b, leftv c)
static BOOLEAN jjCOLS(leftv res, leftv v)
matrix mp_Coeffs(ideal I, int var, const ring R)
corresponds to Maple's coeffs: var has to be the number of a variable
#define nPower(a, b, res)
#define pLmCmp(p, q)
returns 0|1|-1 if p=q|p>q|p<q w.r.t monomial ordering
static BOOLEAN jjKLAMMER_rest(leftv res, leftv u, leftv v)
lists syConvRes(syStrategy syzstr, BOOLEAN toDel, int add_row_shift)
static BOOLEAN jjALIGN_M(leftv res, leftv u, leftv v)
static BOOLEAN jjHOMOG1(leftv res, leftv v)
static BOOLEAN jjCHINREM_BI(leftv res, leftv u, leftv v)
void omPrintBinStats(FILE *fd)
static BOOLEAN jjPLUS_MA_P(leftv res, leftv u, leftv v)
poly sm_CallDet(ideal I, const ring R)
BOOLEAN idTestHomModule(ideal m, ideal Q, intvec *w)
static BOOLEAN jjGCD_N(leftv res, leftv u, leftv v)
static BOOLEAN jjrVarStr(leftv res, leftv v)
static BOOLEAN jjPRIME(leftv res, leftv v)
static BOOLEAN jjMODULO(leftv res, leftv u, leftv v)
ideal id_ChineseRemainder(ideal *xx, number *q, int rl, const ring r)
static BOOLEAN jjROWS(leftv res, leftv v)
static BOOLEAN jjDET_BI(leftv res, leftv v)
static BOOLEAN jjDUMP(leftv, leftv v)
static BOOLEAN jjPLUS_S(leftv res, leftv u, leftv v)
BOOLEAN iiTryLoadLib(leftv v, const char *id)
leftv slRead(si_link l, leftv a)
static BOOLEAN jjBRACK_Bim(leftv res, leftv u, leftv v, leftv w)
poly mp_Trace(matrix a, const ring R)
static BOOLEAN jjCOEF(leftv res, leftv u, leftv v)
static BOOLEAN jjREDUCE3_ID(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjTIMES_MA_I2(leftv res, leftv u, leftv v)
static BOOLEAN jjJACOB_M(leftv res, leftv a)
static BOOLEAN jjnlInt(leftv res, leftv u)
static BOOLEAN jjIS_RINGVAR0(leftv res, leftv)
static BOOLEAN jjINTERRED(leftv res, leftv v)
static BOOLEAN jjMINUS_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjSTD_1(leftv res, leftv u, leftv v)
static BOOLEAN jjDOTDOT(leftv res, leftv u, leftv v)
void id_Norm(ideal id, const ring r)
ideal id = (id[i]), result is leadcoeff(id[i]) = 1
static BOOLEAN jjNULL(leftv, leftv)
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
#define pIsUnit(p)
return true if the Lm is a constant <>0
static BOOLEAN jjCONTENT(leftv res, leftv v)
static BOOLEAN jjFAC_P2(leftv res, leftv u, leftv dummy)
#define omFreeSize(addr, size)
static BOOLEAN jjREAD2(leftv res, leftv u, leftv v)
static BOOLEAN jjKLAMMER_IV(leftv res, leftv u, leftv v)
#define idSimpleAdd(A, B)
matrix idDiffOp(ideal I, ideal J, BOOLEAN multiply)
int singclap_det_i(intvec *m, const ring)
static BOOLEAN jjpHead(leftv res, leftv v)
static BOOLEAN jjSYZ_2(leftv res, leftv u, leftv v)
static BOOLEAN jjCOLON(leftv res, leftv u, leftv v)
static BOOLEAN jjPARSTR2(leftv res, leftv u, leftv v)
static BOOLEAN jjBI2N(leftv res, leftv u)
static BOOLEAN jjUMINUS_MA(leftv res, leftv u)
static BOOLEAN jjSUBST_Id_N(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjDIV_P(leftv res, leftv u, leftv v)
static short rVar(const ring r)
#define rVar(r) (r->N)
BOOLEAN jjPROC(leftv res, leftv u, leftv v)
poly singclap_gcd(poly f, poly g, const ring r)
destroys f and g
void id_Delete(ideal *h, ring r)
deletes an ideal/module/matrix
intvec * ivCopy(const intvec *o)
struct sValCmd1 * psValCmd1
static BOOLEAN jjDEGREE(leftv res, leftv v)
bigintmat * bimAdd(bigintmat *a, bigintmat *b)
Matrix-Add/-Sub/-Mult so oder mit operator+/-/* ? : NULL as a result means an error (non-compatible m...
static BOOLEAN jjINTERSECT_PL(leftv res, leftv v)
static BOOLEAN jjBREAK1(leftv, leftv v)
static BOOLEAN jjEXTGCD_I(leftv res, leftv u, leftv v)
ideal getMinorIdealCache(const matrix mat, const int minorSize, const int k, const ideal iSB, const int cacheStrategy, const int cacheN, const int cacheW, const bool allDifferent)
Returns the specified set of minors (= subdeterminantes) of the given matrix.
static BOOLEAN jjPlural_mat_poly(leftv res, leftv a, leftv b)
static BOOLEAN jjNEWSTRUCT3(leftv, leftv u, leftv v, leftv w)
static BOOLEAN jjTRACE_IV(leftv res, leftv v)
#define pLmDelete(p)
assume p != NULL, deletes Lm(p)->coef and Lm(p)
const struct sValCmd2 dArith2[]
static BOOLEAN jjGT_I(leftv res, leftv u, leftv v)
static BOOLEAN jjidFreeModule(leftv res, leftv v)
static BOOLEAN rField_is_Q_a(const ring r)
static BOOLEAN jjINTERPOLATION(leftv res, leftv l, leftv v)
lists qrDoubleShift(const matrix A, const number tol1, const number tol2, const number tol3, const ring r=currRing)
Computes all eigenvalues of a given real quadratic matrix with multiplicites.
lib_types type_of_LIB(const char *newlib, char *libnamebuf)
static BOOLEAN jjMINUS_I(leftv res, leftv u, leftv v)
static BOOLEAN jjDUMMY(leftv res, leftv u)
ideal kStd(ideal F, ideal Q, tHomog h, intvec **w, intvec *hilb, int syzComp, int newIdeal, intvec *vw, s_poly_proc_t sp)
syStrategy syResolution(ideal arg, int maxlength, intvec *w, BOOLEAN minim)
BOOLEAN maApplyFetch(int what, map theMap, leftv res, leftv w, ring preimage_r, int *perm, int *par_perm, int P, nMapFunc nMap)
ideal idMultSect(resolvente arg, int length)
static BOOLEAN jjHILBERT_IV(leftv res, leftv v)
static long p_Totaldegree(poly p, const ring r)
intvec * ivSub(intvec *a, intvec *b)
int syDim(syStrategy syzstr)
static BOOLEAN rField_is_Domain(const ring r)
static BOOLEAN jjEQUAL_BI(leftv res, leftv u, leftv v)
static FORCE_INLINE void n_Normalize(number &n, const coeffs r)
inplace-normalization of n; produces some canonical representation of n;
poly iiHighCorner(ideal I, int ak)
static BOOLEAN jjTIMES_MA_BI1(leftv res, leftv u, leftv v)
static BOOLEAN jjWEDGE(leftv res, leftv u, leftv v)
BOOLEAN iiExprArithM(leftv res, leftv a, int op)
poly singclap_det(const matrix m, const ring s)
static BOOLEAN jjPROC1(leftv res, leftv u)
intvec * ivTranp(intvec *o)
static BOOLEAN jjDEG_M(leftv res, leftv u)
static BOOLEAN jjDIM_R(leftv res, leftv v)
void WerrorS(const char *s)
static BOOLEAN jjPROC3(leftv res, leftv u, leftv v, leftv w)
void omPrintStats(FILE *fd)
static BOOLEAN jjJanetBasis2(leftv res, leftv u, leftv v)
static BOOLEAN jjOP_BIM_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjBRACK_Im(leftv res, leftv u, leftv v, leftv w)
ideal idModulo(ideal h2, ideal h1, tHomog hom, intvec **w)
static BOOLEAN jjDIV_Ma(leftv res, leftv u, leftv v)
static intvec * idSort(ideal id, BOOLEAN nolex=TRUE)
static BOOLEAN jjNAMES0(leftv res, leftv)
static BOOLEAN rField_is_GF(const ring r)
static char const ** rParameter(const ring r)
(r->cf->parameter)
static BOOLEAN jjTIMES_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjSTD(leftv res, leftv v)
static BOOLEAN jjJACOB_P(leftv res, leftv v)
static BOOLEAN jjpLength(leftv res, leftv v)
const char * slStatus(si_link l, const char *request)
#define pLmFreeAndNext(p)
assumes p != NULL, deletes p, returns pNext(p)
const struct sValCmdM dArithM[]
BOOLEAN iiExprArith2Tab(leftv res, leftv a, int op, const struct sValCmd2 *dA2, int at, const struct sConvertTypes *dConvertTypes)
apply an operation 'op' to arguments a and a->next return TRUE on failure
static BOOLEAN jjJET_P(leftv res, leftv u, leftv v)
syStrategy syConvList(lists li)
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy ...
static BOOLEAN jjGE_BI(leftv res, leftv u, leftv v)
#define pEqualPolys(p1, p2)
static FORCE_INLINE int n_ParDeg(number n, const coeffs r)
BOOLEAN jjLOAD(const char *s, BOOLEAN autoexport)
load lib/module given in v
static BOOLEAN jjP2N(leftv res, leftv v)
ideal idMinEmbedding(ideal arg, BOOLEAN inPlace, intvec **w)
static BOOLEAN jjGCD_I(leftv res, leftv u, leftv v)
poly singclap_pdivide(poly f, poly g, const ring r)
static BOOLEAN jjFAREY_LI(leftv res, leftv u, leftv v)
static BOOLEAN jjOPPOSE(leftv res, leftv a, leftv b)
static BOOLEAN jjSUBST_Id(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjPRUNE(leftv res, leftv v)
static BOOLEAN jjOP_I_BIM(leftv res, leftv u, leftv v)
ideal idQuot(ideal h1, ideal h2, BOOLEAN h1IsStb, BOOLEAN resultIsIdeal)
BOOLEAN slOpen(si_link l, short flag, leftv h)
static BOOLEAN iiExprArith2TabIntern(leftv res, leftv a, int op, leftv b, BOOLEAN proccall, const struct sValCmd2 *dA2, int at, int bt, const struct sConvertTypes *dConvertTypes)
long(* pLDegProc)(poly p, int *length, ring r)
static BOOLEAN jjINDEX_P_IV(leftv res, leftv u, leftv v)
#define pGetComp(p)
Component.
static BOOLEAN jjPARSTR1(leftv res, leftv v)
static BOOLEAN jjHOMOG1_W(leftv res, leftv v, leftv u)
static BOOLEAN jjGE_I(leftv res, leftv u, leftv v)
static int iiTabIndex(const jjValCmdTab dArithTab, const int len, const int op)
#define SI_LINK_SET_CLOSE_P(l)
BOOLEAN iiExport(leftv v, int toLev)
newstruct_desc newstructFromString(const char *s)
static BOOLEAN jjWAIT1ST2(leftv res, leftv u, leftv v)
ideal idOppose(ring Rop_src, ideal I, const ring Rop_dst)
opposes a module I from Rop to currRing(dst)
poly redNF(poly h, int &max_ind, int nonorm, kStrategy strat)
static BOOLEAN jjMAP(leftv res, leftv u, leftv v)
static BOOLEAN jjKoszul_Id(leftv res, leftv u, leftv v)
static BOOLEAN jjMINUS_N(leftv res, leftv u, leftv v)
static BOOLEAN idIsZeroDim(ideal i)
static BOOLEAN jjCOMPARE_MA(leftv res, leftv u, leftv v)
ideal idMinBase(ideal h1)
void monitor(void *F, int mode)
matrix idCoeffOfKBase(ideal arg, ideal kbase, poly how)
static BOOLEAN jjTIMES_MA_I1(leftv res, leftv u, leftv v)
static BOOLEAN jjP2I(leftv res, leftv v)
ideal id_JetW(ideal i, int d, intvec *iv, const ring R)
static BOOLEAN jjMINOR_M(leftv res, leftv v)
static BOOLEAN jjEXPORTTO(leftv, leftv u, leftv v)
int iiRegularity(lists L)
static FORCE_INLINE number n_Random(siRandProc p, number p1, number p2, const coeffs cf)
static BOOLEAN jjUMINUS_BI(leftv res, leftv u)
static BOOLEAN jjTIMES_BIM(leftv res, leftv u, leftv v)
static BOOLEAN jjCOUNT_RES(leftv res, leftv v)
static BOOLEAN jjJanetBasis(leftv res, leftv v)
void printBlackboxTypes()
list all defined type (for debugging)
static FORCE_INLINE number n_Param(const int iParameter, const coeffs r)
return the (iParameter^th) parameter as a NEW number NOTE: parameter numbering: 1..n_NumberOfParameters(...)
static BOOLEAN jjVARSTR2(leftv res, leftv u, leftv v)
static BOOLEAN jjLE_N(leftv res, leftv u, leftv v)
static BOOLEAN jjROWS_IV(leftv res, leftv v)
int rSum(ring r1, ring r2, ring &sum)
static BOOLEAN jjEQUAL_Ma(leftv res, leftv u, leftv v)
static BOOLEAN jjBAREISS(leftv res, leftv v)
static BOOLEAN idHomModule(ideal m, ideal Q, intvec **w)
matrix mp_Transp(matrix a, const ring R)
static FORCE_INLINE number n_Mult(number a, number b, const coeffs r)
return the product of 'a' and 'b', i.e., a*b
static BOOLEAN jjWAITALL2(leftv res, leftv u, leftv v)
static int jjCOMPARE_ALL(const void *aa, const void *bb)
int scMultInt(ideal S, ideal Q)
static BOOLEAN jjSetRing(leftv, leftv u)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
#define pGetExp(p, i)
Exponent.
static BOOLEAN jjBRACK_Ma_IV_IV(leftv res, leftv u, leftv v, leftv w)
static void WerrorS_dummy(const char *)
static BOOLEAN jjCOUNT_IV(leftv res, leftv v)
static BOOLEAN jjRES3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjTIMES_MA_N1(leftv res, leftv u, leftv v)
static BOOLEAN jjRINGLIST_C(leftv res, leftv v)
static BOOLEAN jjSTATUS2L(leftv res, leftv u, leftv v)
const struct sValCmd3 dArith3[]
static BOOLEAN check_valid(const int p, const int op)
static BOOLEAN jjPLUS_P(leftv res, leftv u, leftv v)
char * iiArithGetCmd(int nPos)
idhdl enterid(const char *s, int lev, int t, idhdl *root, BOOLEAN init, BOOLEAN search)
static BOOLEAN jjrCharStr(leftv res, leftv v)
static BOOLEAN jjKoszul(leftv res, leftv u, leftv v)
static BOOLEAN jjBRACKET(leftv res, leftv a, leftv b)
const char * Tok2Cmdname(int tok)
static BOOLEAN jjINDEX_P(leftv res, leftv u, leftv v)
void luDecomp(const matrix aMat, matrix &pMat, matrix &lMat, matrix &uMat, const ring R)
LU-decomposition of a given (m x n)-matrix.
void id_Shift(ideal M, int s, const ring r)
long p_DegW(poly p, const short *w, const ring R)
static BOOLEAN jjOP_BIM_I(leftv res, leftv u, leftv v)
int r_IsRingVar(const char *n, char **names, int N)
ideal idSect(ideal h1, ideal h2)
static BOOLEAN jjREDUCE3_CID(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjIDEAL_Map(leftv res, leftv v)
static BOOLEAN jjSUBST_Test(leftv v, leftv w, int &ringvar, poly &monomexpr)
static BOOLEAN jjIm2Iv(leftv res, leftv v)
static BOOLEAN jjSUBST_M(leftv res, leftv u)
static BOOLEAN jjLU_INVERSE(leftv res, leftv v)
static BOOLEAN jjHIGHCORNER_M(leftv res, leftv v)
static BOOLEAN jjINDEPSET2(leftv res, leftv u, leftv v)
intvec * bim2iv(bigintmat *b)
Coefficient rings, fields and other domains suitable for Singular polynomials.
static BOOLEAN jjLT_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjIMPART(leftv res, leftv v)
static BOOLEAN jjLOAD1(leftv, leftv v)
ideal idSeries(int n, ideal M, matrix U, intvec *w)
ideal idElimination(ideal h1, poly delVar, intvec *hilb)
static BOOLEAN jjSUBST_Id_X(leftv res, leftv u, leftv v, leftv w, int input_type)
static BOOLEAN jjREDUCE_ID(leftv res, leftv u, leftv v)
BOOLEAN jjWAITALL1(leftv res, leftv u)
void id_DelMultiples(ideal id, const ring r)
ideal id = (id[i]), c any unit if id[i] = c*id[j] then id[j] is deleted for j > i ...
long id_RankFreeModule(ideal s, ring lmRing, ring tailRing)
return the maximal component number found in any polynomial in s
void id_DelLmEquals(ideal id, const ring r)
Delete id[j], if Lm(j) == Lm(i) and both LC(j), LC(i) are units and j > i.
static FORCE_INLINE long n_Int(number &n, const coeffs r)
conversion of n to an int; 0 if not possible in Z/pZ: the representing int lying in (-p/2 ...
const char * iiTwoOps(int t)
const CanonicalForm CFMap CFMap & N
static BOOLEAN jjUMINUS_I(leftv res, leftv u)
matrix mp_Wedge(matrix a, int ar, const ring R)
static BOOLEAN jjWRONG(leftv, leftv)
static BOOLEAN jjLIFT_4(leftv res, leftv U)
static BOOLEAN jjMATRIX_Ma(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjMSTD(leftv res, leftv v)
BOOLEAN jjANY2LIST(leftv res, leftv v, int cnt)
int iiArithRemoveCmd(char *szName)
static BOOLEAN jjUMINUS_P(leftv res, leftv u)
static BOOLEAN jjCOEFFS2_KB(leftv res, leftv u, leftv v)
static BOOLEAN jjmpTrace(leftv res, leftv v)
lists ipNameListLev(idhdl root, int lev)
static BOOLEAN jjALIGN_V(leftv res, leftv u, leftv v)
bigintmat * bimMult(bigintmat *a, bigintmat *b)
void pSetDegProcs(ring r, pFDegProc new_FDeg, pLDegProc new_lDeg)
static BOOLEAN jjEQUAL_R(leftv res, leftv u, leftv v)
static BOOLEAN jjKLAMMER(leftv res, leftv u, leftv v)
static long pTotaldegree(poly p)
static BOOLEAN jjHOMOG_P_W(leftv res, leftv u, leftv v, leftv)
BOOLEAN setOption(leftv res, leftv v)
static BOOLEAN jjDIFF_ID(leftv res, leftv u, leftv v)
int scMult0Int(ideal S, ideal Q, const ring tailRing)
static BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
poly pSubstPar(poly p, int par, poly image)
The main handler for Singular numbers which are suitable for Singular polynomials.
static FORCE_INLINE number n_Add(number a, number b, const coeffs r)
return the sum of 'a' and 'b', i.e., a+b
static BOOLEAN jjRPAR(leftv res, leftv v)
static BOOLEAN jjERROR(leftv, leftv u)
static BOOLEAN jjVDIM(leftv res, leftv v)
static BOOLEAN jjEQUAL_N(leftv res, leftv u, leftv v)
static BOOLEAN jjJET4(leftv res, leftv u)
void scDegree(ideal S, intvec *modulweight, ideal Q)
static BOOLEAN jjOP_IM_I(leftv res, leftv u, leftv v)
static BOOLEAN jjLEADEXP(leftv res, leftv v)
int scDimInt(ideal S, ideal Q)
BOOLEAN slPrepClose(si_link l)
static BOOLEAN jjSLIM_GB(leftv res, leftv u)
matrix mp_MultI(matrix a, int f, const ring R)
c = f*a
#define pLmInit(p)
like pInit, except that expvector is initialized to that of p, p must be != NULL
static BOOLEAN jjDIVISION4(leftv res, leftv v)
static BOOLEAN jjKBASE(leftv res, leftv v)
number(* nMapFunc)(number a, const coeffs src, const coeffs dst)
maps "a", which lives in src, into dst
static FORCE_INLINE BOOLEAN n_DivBy(number a, number b, const coeffs r)
test whether 'a' is divisible 'b'; for r encoding a field: TRUE iff 'b' does not represent zero in Z:...
static FORCE_INLINE number n_ChineseRemainderSym(number *a, number *b, int rl, BOOLEAN sym, CFArray &inv_cache, const coeffs r)
static BOOLEAN jjVARSTR1(leftv res, leftv v)
static BOOLEAN jjREDUCE5(leftv res, leftv u)
static BOOLEAN jjELIMIN(leftv res, leftv u, leftv v)
static BOOLEAN jjLIFTSTD_4(leftv res, leftv U)
static BOOLEAN jjSTD_HILB_W(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjLIFT3(leftv res, leftv u, leftv v, leftv w)
BOOLEAN sm_CheckDet(ideal I, int d, BOOLEAN sw, const ring r)
static BOOLEAN jjMONOM(leftv res, leftv v)
const char feNotImplemented[]
void id_DelEquals(ideal id, const ring r)
ideal id = (id[i]) if id[i] = id[j] then id[j] is deleted for j > i
static BOOLEAN jjTIMES_N(leftv res, leftv u, leftv v)
BOOLEAN jjUNIQLIST(leftv, leftv arg)
static BOOLEAN jjMOD_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjBRACK_Ma_IV_I(leftv res, leftv u, leftv v, leftv w)
long kHomModDeg(poly p, ring r)
static FORCE_INLINE char * nCoeffName(const coeffs cf)
static BOOLEAN jjPREIMAGE(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjKLAMMER_PL(leftv res, leftv u)
ideal kInterRed(ideal F, ideal Q)
ideal id_Power(ideal given, int exp, const ring r)
BOOLEAN(* proc3)(leftv, leftv, leftv, leftv)
ideal t_rep_gb(const ring r, ideal arg_I, int syz_comp, BOOLEAN F4_mode)
static BOOLEAN jjSTATUS_M(leftv res, leftv v)
static BOOLEAN jjDEG_M_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjDET(leftv res, leftv v)
BOOLEAN jjLOAD_TRY(const char *s)
static BOOLEAN jjSUBST_P(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjLIFTSTD(leftv res, leftv u, leftv v)
static BOOLEAN jjRES(leftv res, leftv u, leftv v)
static BOOLEAN jjINDEX_V_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjSTRING_PL(leftv res, leftv v)
static BOOLEAN jjRANK1(leftv res, leftv v)
static BOOLEAN jjHOMOG_P(leftv res, leftv u, leftv v)
static BOOLEAN jjDIV_N(leftv res, leftv u, leftv v)
BOOLEAN idInsertPoly(ideal h1, poly h2)
insert h2 into h1 (if h2 is not the zero polynomial) return TRUE iff h2 was indeed inserted ...
static BOOLEAN jjEXTGCD_P(leftv res, leftv u, leftv v)
static BOOLEAN jjLEADCOEF(leftv res, leftv v)
static BOOLEAN jjSBA_2(leftv res, leftv v, leftv u, leftv t)
void atSet(idhdl root, char *name, void *data, int typ)
struct sValCmd2 * psValCmd2
BOOLEAN rSamePolyRep(ring r1, ring r2)
returns TRUE, if r1 and r2 represents the monomials in the same way FALSE, otherwise this is an analo...
static FORCE_INLINE number n_InpNeg(number n, const coeffs r)
in-place negation of n MUST BE USED: n = n_InpNeg(n) (no copy is returned)
#define pIsConstant(p)
like above, except that Comp might be != 0
static BOOLEAN jjSBA(leftv res, leftv v)
static BOOLEAN jjREGULARITY(leftv res, leftv v)
BOOLEAN jjStdJanetBasis(leftv res, leftv v, int flag)
flag: 0: JB, 1: SB
matrix pMultMp(poly p, matrix a, const ring R)
static BOOLEAN jjDEFINED(leftv res, leftv v)
static BOOLEAN jjidVec2Ideal(leftv res, leftv v)
struct sValCmdM * psValCmdM
static int si_max(const int a, const int b)
static BOOLEAN jjGE_N(leftv res, leftv u, leftv v)
static FORCE_INLINE BOOLEAN nCoeff_is_transExt(const coeffs r)
TRUE iff r represents a transcendental extension field.
static BOOLEAN jjREDUCE_P(leftv res, leftv u, leftv v)
FILE * feFopen(const char *path, const char *mode, char *where, short useWerror, short path_only)
static BOOLEAN jjMINUS_P(leftv res, leftv u, leftv v)
int p_Compare(const poly a, const poly b, const ring R)
BOOLEAN assumeStdFlag(leftv h)
static BOOLEAN jjOP_I_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjFAREY_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjRESERVED0(leftv, leftv)
ring rInit(leftv pn, leftv rv, leftv ord)
static BOOLEAN jjENVELOPE(leftv res, leftv a)
static BOOLEAN jjPFAC2(leftv res, leftv u, leftv v)
void PrintS(const char *s)
static BOOLEAN jjDEG_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjRINGLIST(leftv res, leftv v)
lists ipNameList(idhdl root)
static BOOLEAN rField_is_Q(const ring r)
static BOOLEAN jjCALL1ARG(leftv res, leftv v)
static BOOLEAN jjLOAD2(leftv, leftv, leftv v)
static BOOLEAN jjidTransp(leftv res, leftv v)
int iiArithAddCmd(const char *szName, short nAlias, short nTokval, short nToktype, short nPos=-1)
lists rDecompose(const ring r)
static long p_MinComp(poly p, ring lmRing, ring tailRing)
BOOLEAN load_builtin(const char *newlib, BOOLEAN autoexport, SModulFunc_t init)
static BOOLEAN jjSTD_HILB(leftv res, leftv u, leftv v)
static BOOLEAN jjidMinBase(leftv res, leftv v)
syStrategy sySchreyer(ideal arg, int maxlength)
BOOLEAN sdb_set_breakpoint(const char *pp, int given_lineno)
static BOOLEAN jjBI2P(leftv res, leftv u)
idhdl rFindHdl(ring r, idhdl n)
matrix id_Module2Matrix(ideal mod, const ring R)
resolvente sySchreyerResolvente(ideal arg, int maxlength, int *length, BOOLEAN isMonomial=FALSE, BOOLEAN notReplace=FALSE)
static BOOLEAN jjDIM2(leftv res, leftv v, leftv w)
static BOOLEAN jjPOWER_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjUMINUS_N(leftv res, leftv u)
ring rDefault(const coeffs cf, int N, char **n, int ord_size, rRingOrder_t *ord, int *block0, int *block1, int **wvhdl)
int sySize(syStrategy syzstr)
static BOOLEAN jjDIVISION(leftv res, leftv u, leftv v)
static BOOLEAN jjFWALK(leftv res, leftv u, leftv v)
static BOOLEAN jjREDUCE3_CP(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjINTERSECT(leftv res, leftv u, leftv v)
static unsigned pLength(poly a)
static BOOLEAN jjREDUCE3_P(leftv res, leftv u, leftv v, leftv w)
#define pHead(p)
returns newly allocated copy of Lm(p), coef is copied, next=NULL, p might be NULL ...
static BOOLEAN jjmpTransp(leftv res, leftv v)
static BOOLEAN jjTYPEOF(leftv res, leftv v)
static BOOLEAN jjINDEX_I(leftv res, leftv u, leftv v)
static FORCE_INLINE BOOLEAN n_IsZero(number n, const coeffs r)
TRUE iff 'n' represents the zero element.
static BOOLEAN jjFactModD_M(leftv res, leftv v)
static FORCE_INLINE nMapFunc n_SetMap(const coeffs src, const coeffs dst)
set the mapping function pointers for translating numbers from src to dst
lists scIndIndset(ideal S, BOOLEAN all, ideal Q)
void(* WerrorS_callback)(const char *s)
void idSkipZeroes(ideal ide)
gives an ideal/module the minimal possible size
void iiMakeResolv(resolvente r, int length, int rlen, char *name, int typ0, intvec **weights)
static BOOLEAN jjPLUS_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjLISTRING(leftv res, leftv v)
static BOOLEAN jjOPTION_PL(leftv res, leftv v)
BOOLEAN rHasMixedOrdering(const ring r)
poly p_Series(int n, poly p, poly u, intvec *w, const ring R)
static BOOLEAN jjDENOMINATOR(leftv res, leftv v)
Return the denominator of the input number NOTE: the input number is normalized as a side effect...
static BOOLEAN jjIS_RINGVAR_P(leftv res, leftv v)
static BOOLEAN jjrOrdStr(leftv res, leftv v)
static BOOLEAN jjNAMES(leftv res, leftv v)
bool luInverse(const matrix aMat, matrix &iMat, const ring R)
This code first computes the LU-decomposition of aMat, and then calls the method for inverting a matr...
static BOOLEAN jjGCD_BI(leftv res, leftv u, leftv v)
ideal idLiftStd(ideal h1, matrix *ma, tHomog hi, ideal *syz, GbVariant alg)
static BOOLEAN jjBRACK_S(leftv res, leftv u, leftv v, leftv w)
void pRestoreDegProcs(ring r, pFDegProc old_FDeg, pLDegProc old_lDeg)
static FORCE_INLINE number n_ImPart(number i, const coeffs cf)
void rChangeCurrRing(ring r)
static BOOLEAN jjFIND2(leftv res, leftv u, leftv v)
static BOOLEAN jjFETCH_M(leftv res, leftv u)
static BOOLEAN jjMOD_N(leftv res, leftv u, leftv v)
static BOOLEAN rField_is_Zp(const ring r)
static FORCE_INLINE number n_Farey(number a, number b, const coeffs r)
ideal idSyzygies(ideal h1, tHomog h, intvec **w, BOOLEAN setSyzComp, BOOLEAN setRegularity, int *deg, GbVariant alg)
intvec * ivMult(intvec *a, intvec *b)
ideal idSubstPoly(ideal id, int n, poly e)
static BOOLEAN jjBAREISS3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjSIMPL_P(leftv res, leftv u, leftv v)
void p_Shift(poly *p, int i, const ring r)
shifts components of the vector p by i
static BOOLEAN jjDIM(leftv res, leftv v)
INLINE_THIS void Init(int l=0)
static BOOLEAN jjCOEFFS3_KB(leftv res, leftv u, leftv v, leftv w)
BOOLEAN(* proc2)(leftv, leftv, leftv)
matrix mpNew(int r, int c)
create a r x c zero-matrix
#define TEST_OPT_RETURN_SB
static void p_Delete(poly *p, const ring r)
matrix mp_MultP(matrix a, poly p, const ring R)
multiply a matrix 'a' by a poly 'p', destroy the args
static BOOLEAN jjOP_IV_I(leftv res, leftv u, leftv v)
static BOOLEAN jjTIMES_MA_P1(leftv res, leftv u, leftv v)
static BOOLEAN jjINDEX_V(leftv res, leftv u, leftv v)
static FORCE_INLINE number n_ExtGcd(number a, number b, number *s, number *t, const coeffs r)
beware that ExtGCD is only relevant for a few chosen coeff. domains and may perform something unexpec...
static BOOLEAN jjNEWSTRUCT2(leftv, leftv u, leftv v)
#define SI_RESTORE_OPT2(A)
static BOOLEAN jjCOMPARE_P(leftv res, leftv u, leftv v)
static BOOLEAN jjSQR_FREE2(leftv res, leftv u, leftv dummy)
ideal idInit(int idsize, int rank)
initialise an ideal / module
static BOOLEAN jjGCD_P(leftv res, leftv u, leftv v)
BOOLEAN nc_CallPlural(matrix cc, matrix dd, poly cn, poly dn, ring r, bool bSetupQuotient, bool bCopyInput, bool bBeQuiet, ring curr, bool dummy_ring=false)
returns TRUE if there were errors analyze inputs, check them for consistency detects nc_type...
const Variable & v
< [in] a sqrfree bivariate poly
static BOOLEAN jjEXECUTE(leftv, leftv v)
#define pSeries(n, p, u, w)
BOOLEAN iiMake_proc(idhdl pn, package pack, leftv sl)
static BOOLEAN jjidMaxIdeal(leftv res, leftv v)
unsigned nLastIdentifier
valid indentifieres are slot 1..nLastIdentifier
matrix mp_Mult(matrix a, matrix b, const ring R)
int singclap_factorize_retry
static BOOLEAN jjMINRES_R(leftv res, leftv v)
static BOOLEAN jjPlural_num_mat(leftv res, leftv a, leftv b)
static BOOLEAN jjCOEFFS3_P(leftv res, leftv u, leftv v, leftv w)
void * atGet(idhdl root, const char *name, int t, void *defaultReturnValue)
void mp_Coef2(poly v, poly mon, matrix *c, matrix *m, const ring R)
corresponds to Macauley's coef: the exponent vector of vars has to contain the variables, eg 'xy'; then the poly f is searched for monomials in x and y, these monimials are written to the first row of the matrix co. the second row of co contains the respective factors in f. Thus f = sum co[1,i]*co[2,i], i = 1..cols, rows equals 2.
static BOOLEAN jjRING_LIST(leftv res, leftv v)
ideal getMinorIdealHeuristic(const matrix mat, const int minorSize, const int k, const ideal iSB, const bool allDifferent)
Returns the specified set of minors (= subdeterminantes) of the given matrix.
void maFindPerm(char const *const *const preim_names, int preim_n, char const *const *const preim_par, int preim_p, char const *const *const names, int n, char const *const *const par, int nop, int *perm, int *par_perm, n_coeffType ch)
static FORCE_INLINE void n_Power(number a, int b, number *res, const coeffs r)
fill res with the power a^b
static BOOLEAN jjPLUS_N(leftv res, leftv u, leftv v)
ideal id_Jet(ideal i, int d, const ring R)
static BOOLEAN jjJET_ID_IV(leftv res, leftv u, leftv v, leftv w)
BOOLEAN jjLIST_PL(leftv res, leftv v)
BOOLEAN iiExprArith3Tab(leftv res, leftv a, int op, const struct sValCmd3 *dA3, int at, const struct sConvertTypes *dConvertTypes)
apply an operation 'op' to arguments a, a->next and a->next->next return TRUE on failure ...
static BOOLEAN jjTIMES_MA(leftv res, leftv u, leftv v)
void mp_Monomials(matrix c, int r, int var, matrix m, const ring R)
static BOOLEAN rField_is_Ring(const ring r)
matrix mp_Add(matrix a, matrix b, const ring R)
static BOOLEAN jjJET_ID(leftv res, leftv u, leftv v)
int ipower(int b, int m)
int ipower ( int b, int m )
int slStatusSsiL(lists L, int timeout)
matrix id_Module2formatedMatrix(ideal mod, int rows, int cols, const ring R)
ring rCompose(const lists L, const BOOLEAN check_comp=TRUE)
static BOOLEAN jjHILBERT(leftv, leftv v)
ideal id_Farey(ideal x, number N, const ring r)
static BOOLEAN jjIS_RINGVAR_S(leftv res, leftv v)
static BOOLEAN jjGT_N(leftv res, leftv u, leftv v)
lists primeFactorisation(const number n, const int pBound)
Factorises a given bigint number n into its prime factors less than or equal to a given bound...
static BOOLEAN jjLT_I(leftv res, leftv u, leftv v)
GbVariant syGetAlgorithm(char *n, const ring r, const ideal)
static BOOLEAN jjPOWER_P(leftv res, leftv u, leftv v)
SModulFunc_t iiGetBuiltinModInit(const char *libname)
static BOOLEAN jjQUOT(leftv res, leftv u, leftv v)
ideal sm_CallSolv(ideal I, const ring R)
used for all algebraic extensions, i.e., the top-most extension in an extension tower is algebraic ...
static BOOLEAN jjCOEF_M(leftv, leftv v)
ideal walkProc(leftv first, leftv second)
LINLINE void nlDelete(number *a, const coeffs r)
static FORCE_INLINE number n_Div(number a, number b, const coeffs r)
return the quotient of 'a' and 'b', i.e., a/b; raises an error if 'b' is not invertible in r exceptio...
long(* pFDegProc)(poly p, ring r)
intvec * hSecondSeries(intvec *hseries1)
ideal kMin_std(ideal F, ideal Q, tHomog h, intvec **w, ideal &M, intvec *hilb, int syzComp, int reduced)
BOOLEAN iiCheckTypes(leftv args, const short *type_list, int report)
check a list of arguemys against a given field of types return TRUE if the types match return FALSE (...
int luRank(const matrix aMat, const bool isRowEchelon, const ring R)
Computes the rank of a given (m x n)-matrix.
static BOOLEAN jjPLUS_P_MA(leftv res, leftv u, leftv v)
bool luInverseFromLUDecomp(const matrix pMat, const matrix lMat, const matrix uMat, matrix &iMat, const ring R)
This code computes the inverse by inverting lMat and uMat, and then performing two matrix multiplicat...
static BOOLEAN rField_is_Ring_Z(const ring r)
static BOOLEAN jjCOUNT_RG(leftv res, leftv v)
static BOOLEAN jjUMINUS_IV(leftv res, leftv u)
void pNorm(poly p, const ring R=currRing)
static BOOLEAN jjTIMES_IV(leftv res, leftv u, leftv v)
unsigned nCmdUsed
number of commands used
static BOOLEAN jjMONITOR1(leftv res, leftv v)
static BOOLEAN jjMINUS_BIM(leftv res, leftv u, leftv v)
static BOOLEAN jjQRDS(leftv res, leftv INPUT)
void show(int mat=0, int spaces=0) const
ideal fractalWalkProc(leftv first, leftv second)
#define pInit()
allocates a new monomial and initializes everything to 0
static BOOLEAN jjPREIMAGE_R(leftv res, leftv v)
int blackboxIsCmd(const char *n, int &tok)
used by scanner: returns ROOT_DECL for known types (and the type number in tok)
static BOOLEAN jjPLUS_BI(leftv res, leftv u, leftv v)
ideal id_Head(ideal h, const ring r)
returns the ideals of initial terms
static BOOLEAN jjTIMES_MA_N2(leftv res, leftv u, leftv v)
static BOOLEAN jjNAMES_I(leftv res, leftv v)
static BOOLEAN jjEQUAL_P(leftv res, leftv u, leftv v)
number singclap_det_bi(bigintmat *m, const coeffs cf)
static BOOLEAN jjEXTGCD_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjNAMEOF(leftv res, leftv v)
static BOOLEAN jjGT_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjNVARS(leftv res, leftv v)
static BOOLEAN jjCOLCOL(leftv res, leftv u, leftv v)
BOOLEAN singclap_extgcd(poly f, poly g, poly &res, poly &pa, poly &pb, const ring r)
BOOLEAN mp_IsDiagUnit(matrix U, const ring R)
static BOOLEAN jjRING_PL(leftv res, leftv a)
static SArithBase sArithBase
Base entry for arithmetic.
int iiArithFindCmd(const char *szName)
static FORCE_INLINE number n_GetDenom(number &n, const coeffs r)
return the denominator of n (if elements of r are by nature not fractional, result is 1) ...
static bool rIsSCA(const ring r)
static BOOLEAN jjHOMOG_ID_W(leftv res, leftv u, leftv v, leftv)
static BOOLEAN jjUMINUS_BIM(leftv res, leftv u)
void CleanUp(ring r=currRing)
static FORCE_INLINE number n_RePart(number i, const coeffs cf)
int(* SModulFunc_t)(SModulFunctions *)
static BOOLEAN jjMONITOR2(leftv res, leftv u, leftv v)
static Subexpr jjMakeSub(leftv e)
void Clean(ring r=currRing)
static BOOLEAN jjLU_DECOMP(leftv res, leftv v)
static BOOLEAN jjFWALK3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjCOUNT_BI(leftv res, leftv v)
static BOOLEAN jjrParStr(leftv res, leftv v)
static BOOLEAN jjCOLS_BIM(leftv res, leftv v)
static FORCE_INLINE BOOLEAN n_Equal(number a, number b, const coeffs r)
TRUE iff 'a' and 'b' represent the same number; they may have different representations.
static BOOLEAN jjLE_I(leftv res, leftv u, leftv v)
static BOOLEAN jjSYZYGY(leftv res, leftv v)
lists rDecompose_list_cf(const ring r)
static BOOLEAN jjLIFTSTD3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjCHINREM_ID(leftv res, leftv u, leftv v)
BOOLEAN slDump(si_link l)
BOOLEAN mp_Equal(matrix a, matrix b, const ring R)
static BOOLEAN jjDIFF_ID_ID(leftv res, leftv u, leftv v)
matrix mp_Copy(matrix a, const ring r)
copies matrix a (from ring r to r)
static BOOLEAN jjDIFF_P(leftv res, leftv u, leftv v)
static BOOLEAN jjELIMIN_IV(leftv res, leftv u, leftv v)
void newBuffer(char *s, feBufferTypes t, procinfo *pi, int lineno)
void sm_CallBareiss(ideal I, int x, int y, ideal &M, intvec **iv, const ring R)
static FORCE_INLINE number n_SubringGcd(number a, number b, const coeffs r)
static BOOLEAN jjBAREISS_BIM(leftv res, leftv v)
static BOOLEAN jjRING_1(leftv res, leftv u, leftv v)
static BOOLEAN jjCALL1MANY(leftv res, leftv u)
static BOOLEAN jjTIMES_P(leftv res, leftv u, leftv v)
static BOOLEAN jjROWS_BIM(leftv res, leftv v)
static BOOLEAN jjLE_BI(leftv res, leftv u, leftv v)
ideal maGetPreimage(ring theImageRing, map theMap, ideal id, const ring dst_r)
static BOOLEAN jjINDEX_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjSBA_1(leftv res, leftv v, leftv u)
static BOOLEAN jjMINUS_IV(leftv res, leftv u, leftv v)
static BOOLEAN jjPOWER_N(leftv res, leftv u, leftv v)
cmdnames * sCmds
array of existing commands
int idElem(const ideal F)
count non-zero elements
static FORCE_INLINE BOOLEAN nCoeff_is_Extension(const coeffs r)
static BOOLEAN jjMATRIX_Mo(leftv res, leftv u, leftv v, leftv w)
LINLINE number nlInit(long i, const coeffs r)
static BOOLEAN jjidHead(leftv res, leftv v)
void newstruct_setup(const char *n, newstruct_desc d)
static BOOLEAN jjOP_I_IM(leftv res, leftv u, leftv v)
static BOOLEAN jjSort_Id(leftv res, leftv v)
int mp_Compare(matrix a, matrix b, const ring R)
static BOOLEAN jjJET_P_P(leftv res, leftv u, leftv v, leftv w)
newstruct_desc newstructChildFromString(const char *parent, const char *s)
leftv iiMap(map theMap, const char *what)
int n_IsParam(const number m, const ring r)
TODO: rewrite somehow...
static BOOLEAN jjPOWER_I(leftv res, leftv u, leftv v)
static BOOLEAN jjCOMPARE_IV_I(leftv res, leftv u, leftv v)
static BOOLEAN jjPLUSPLUS(leftv, leftv u)
BOOLEAN iiLoadLIB(FILE *fp, const char *libnamebuf, const char *newlib, idhdl pl, BOOLEAN autoexport, BOOLEAN tellerror)
const struct sValCmd1 dArith1[]
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete 'p'
char * rCharStr(const ring r)
TODO: make it a virtual method of coeffs, together with: Decompose & Compose, rParameter & rPar...
static BOOLEAN jjFACSTD2(leftv res, leftv v, leftv w)
static FORCE_INLINE BOOLEAN n_GreaterZero(number n, const coeffs r)
ordered fields: TRUE iff 'n' is positive; in Z/pZ: TRUE iff 0 < m <= roundedBelow(p/2), where m is the long representing n in C: TRUE iff (Im(n) != 0 and Im(n) >= 0) or (Im(n) == 0 and Re(n) >= 0) in K(a)/<p(a)>: TRUE iff (n != 0 and (LC(n) > 0 or deg(n) > 0)) in K(t_1, ..., t_n): TRUE iff (LC(numerator(n) is a constant and > 0) or (LC(numerator(n) is not a constant) in Z/2^kZ: TRUE iff 0 < n <= 2^(k-1) in Z/mZ: TRUE iff the internal mpz is greater than zero in Z: TRUE iff n > 0
const char * getBlackboxName(const int t)
return the name to the type given by t (r/o)
ideal idLift(ideal mod, ideal submod, ideal *rest, BOOLEAN goodShape, BOOLEAN isSB, BOOLEAN divide, matrix *unit, GbVariant alg)
ideal singclap_factorize(poly f, intvec **v, int with_exps, const ring r)
ideal idAdd(ideal h1, ideal h2)
h1 + h2
static BOOLEAN jjREDUCE4(leftv res, leftv u)
static BOOLEAN jjUNIVARIATE(leftv res, leftv v)
static BOOLEAN jjIDEAL_Ma(leftv res, leftv v)
static BOOLEAN jjSTATUS3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjIDEAL_R(leftv res, leftv v)
intvec * hFirstSeries(ideal S, intvec *modulweight, ideal Q, intvec *wdegree, ring tailRing)
ideal id_Vec2Ideal(poly vec, const ring R)
matrix mp_Sub(matrix a, matrix b, const ring R)
static BOOLEAN jjDEG(leftv res, leftv v)
static FORCE_INLINE char * nCoeffString(const coeffs cf)
TODO: make it a virtual method of coeffs, together with: Decompose & Compose, rParameter & rPar...
BOOLEAN slClose(si_link l)
void hLookSeries(ideal S, intvec *modulweight, ideal Q, intvec *wdegree, ring tailRing)
static BOOLEAN jjCOUNT_L(leftv res, leftv v)
static BOOLEAN jjMATRIX_Id(leftv res, leftv u, leftv v, leftv w)
BOOLEAN slGetDump(si_link l)
static int iin_Int(number &n, coeffs cf)
static BOOLEAN jjOR_I(leftv res, leftv u, leftv v)
static BOOLEAN jjMINUS_MA(leftv res, leftv u, leftv v)
#define omFreeBin(addr, bin)
static BOOLEAN jjLU_SOLVE(leftv res, leftv v)
BOOLEAN rDecompose_CF(leftv res, const coeffs C)
BOOLEAN(* proc1)(leftv, leftv)
static BOOLEAN jjpMaxComp(leftv res, leftv v)
char * iiConvName(const char *libname)
syStrategy syHilb(ideal arg, int *length)
static BOOLEAN jjBRACK_Ma(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjPlural_num_poly(leftv res, leftv a, leftv b)
static BOOLEAN jjNUMERATOR(leftv res, leftv v)
Return the numerator of the input number NOTE: the input number is normalized as a side effect...
static BOOLEAN jjNOT(leftv res, leftv v)
#define IMATELEM(M, I, J)
BOOLEAN iiExprArith2(leftv res, leftv a, int op, leftv b, BOOLEAN proccall)
static BOOLEAN jjHOMOG_ID(leftv res, leftv u, leftv v)
#define omRealloc(addr, size)
poly p_Cleardenom(poly p, const ring r)
#define pSetCoeff(p, n)
deletes old coeff before setting the new one
void syMake(leftv v, const char *id, package pa)
static BOOLEAN jjRESERVEDNAME(leftv res, leftv v)
#define SI_RESTORE_OPT1(A)
static BOOLEAN jjINDEPSET(leftv res, leftv v)
BOOLEAN load_modules(const char *newlib, char *fullname, BOOLEAN autoexport)
static FORCE_INLINE int n_Size(number n, const coeffs r)
return a non-negative measure for the complexity of n; return 0 only when n represents zero; (used fo...
static BOOLEAN jjDET_I(leftv res, leftv v)
ideal id_Matrix2Module(matrix mat, const ring R)
static BOOLEAN jjTRANSP_BIM(leftv res, leftv v)
static BOOLEAN jjOPPOSITE(leftv res, leftv a)
static BOOLEAN jjCONTRACT(leftv res, leftv u, leftv v)
static BOOLEAN jjHIGHCORNER(leftv res, leftv v)
static ideal idMult(ideal h1, ideal h2)
hh := h1 * h2
struct sValCmd3 * psValCmd3
void Werror(const char *fmt,...)
static BOOLEAN jjAND_I(leftv res, leftv u, leftv v)
BOOLEAN iiExprArith1Tab(leftv res, leftv a, int op, const struct sValCmd1 *dA1, int at, const struct sConvertTypes *dConvertTypes)
apply an operation 'op' to an argument a return TRUE on failure
syStrategy syLaScala3(ideal arg, int *length)
static BOOLEAN jjREAD(leftv res, leftv v)
static BOOLEAN jjCHAR(leftv res, leftv v)
const char * lastreserved
static BOOLEAN jjEQUAL_I(leftv res, leftv u, leftv v)
static BOOLEAN jjLEADMONOM(leftv res, leftv v)
static BOOLEAN jjPLUS_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjSIMPL_ID(leftv res, leftv u, leftv v)
static BOOLEAN jjELIMIN_HILB(leftv res, leftv u, leftv v, leftv w)
intvec * ivAdd(intvec *a, intvec *b)
static BOOLEAN jjstrlen(leftv res, leftv v)
static BOOLEAN jjFETCH(leftv res, leftv u, leftv v)
ideal syMinBase(ideal arg)
static BOOLEAN jjTWOSTD(leftv res, leftv a)
static BOOLEAN jjSTD_HILB_WP(leftv res, leftv INPUT)
static BOOLEAN jjDIFF_COEF(leftv res, leftv u, leftv v)
static BOOLEAN jjSTATUS2(leftv res, leftv u, leftv v)
static BOOLEAN jjORD(leftv res, leftv v)
static BOOLEAN jjFIND3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjDIV_BI(leftv res, leftv u, leftv v)
static BOOLEAN jjCOLS_IV(leftv res, leftv v)
syStrategy syMinimize(syStrategy syzstr)
#define pCopy(p)
return a copy of the poly
#define MATELEM(mat, i, j)
blackbox * getBlackboxStuff(const int t)
return the structure to the type given by t
static BOOLEAN jjCOMPARE_BIM(leftv res, leftv u, leftv v)
int IsCmd(const char *n, int &tok)
static BOOLEAN jjHILBERT3(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjRANDOM_Im(leftv res, leftv u, leftv v, leftv w)
static BOOLEAN jjLT_N(leftv res, leftv u, leftv v)
static BOOLEAN jjidElem(leftv res, leftv v)
static BOOLEAN jjCOEFFS3_Id(leftv res, leftv u, leftv v, leftv w)
ideal twostd(ideal I)
Compute two-sided GB: