14 #include <factory/factory.h> 101 #define PLURAL_MASK 0 106 #define ZERODIVISOR_MASK 8 109 #define ZERODIVISOR_MASK 0 111 #define ALLOW_PLURAL 1 113 #define COMM_PLURAL 2 116 #define NO_ZERODIVISOR 8 117 #define ALLOW_ZERODIVISOR 0 119 #define ALLOW_ZZ (ALLOW_RING|NO_ZERODIVISOR) 125 #define NO_CONVERSION 32 183 short number_of_args;
212 extern int iiArithAddCmd(
const char *szName,
short nAlias,
short nTokval,
213 short nToktype,
short nPos=-1);
223 #define ii_div_by_0 "div. by 0" 232 if ((
long)i==
l)
return l;
244 if (sArithBase.
sCmds[
i].tokval==op)
245 return sArithBase.
sCmds[
i].toktype;
257 int bb = (int)(
long)(v->
Data());
262 case '+': cc=
bimAdd(aa,bb);
break;
263 case '-': cc=
bimSub(aa,bb);
break;
264 case '*': cc=
bimMult(aa,bb);
break;
266 res->
data=(
char *)cc;
276 number bb = (number)(v->
Data());
283 res->
data=(
char *)cc;
293 int bb = (int)(
long)(v->
Data());
297 case '+': (*aa) += bb;
break;
298 case '-': (*aa) -= bb;
break;
299 case '*': (*aa) *= bb;
break;
302 case '%': (*aa) %= bb;
break;
304 res->
data=(
char *)aa;
314 int bb = (int)(
long)(v->
Data());
318 case '+':
for (;i>0;i--)
IMATELEM(*aa,i,i) += bb;
320 case '-':
for (;i>0;i--)
IMATELEM(*aa,i,i) -= bb;
323 res->
data=(
char *)aa;
332 int l=(int)(
long)v->
Data();
335 int d=(int)(
long)u->
Data();
338 for(i=l-1;i>=0;i--) { (*vv)[
i]=d; }
339 res->
data=(
char *)vv;
357 res->
data = (
char *) (r<0);
360 res->
data = (
char *) (r>0);
363 res->
data = (
char *) (r<=0);
366 res->
data = (
char *) (r>=0);
370 res->
data = (
char *) (r==0);
374 if(r==-2) {
WerrorS(
"size incompatible");
return TRUE; }
385 res->
data = (
char *) (r<0);
388 res->
data = (
char *) (r>0);
391 res->
data = (
char *) (r<=0);
394 res->
data = (
char *) (r>=0);
398 res->
data = (
char *) (r==0);
402 if(r==-2) {
WerrorS(
"size incompatible");
return TRUE; }
408 int b = (int)(
long)(v->
Data());
413 res->
data = (
char *) (r<0);
416 res->
data = (
char *) (r>0);
419 res->
data = (
char *) (r<=0);
422 res->
data = (
char *) (r>=0);
426 res->
data = (
char *) (r==0);
441 res->
data = (
char *) (
long)(r < 0);
444 res->
data = (
char *) (
long)(r > 0);
447 res->
data = (
char *) (
long)(r <= 0);
450 res->
data = (
char *) (
long)(r >= 0);
454 res->
data = (
char *)(
long) (r == 0);
468 res->
data = (
char *) (r < 0);
471 res->
data = (
char *) (r > 0);
474 res->
data = (
char *) (r <= 0);
477 res->
data = (
char *) (r >= 0);
489 char*
a = (
char * )(u->
Data());
490 char*
b = (
char * )(v->
Data());
495 res->
data = (
char *) (result < 0);
498 res->
data = (
char *) (result > 0);
501 res->
data = (
char *) (result <= 0);
504 res->
data = (
char *) (result >= 0);
508 res->
data = (
char *) (result == 0);
532 int b=(int)(
long)u->
Data();
533 int e=(int)(
long)v->
Data();
542 else if ((e==0)||(b==1))
560 if(rc/b!=oldrc) overflow=
TRUE;
564 WarnS(
"int overflow(^), result may be wrong");
566 res->
data = (
char *)((
long)rc);
572 WerrorS(
"exponent must be non-negative");
578 int e=(int)(
long)v->
Data();
579 number n=(number)u->
Data();
586 WerrorS(
"exponent must be non-negative");
594 int e=(int)(
long)v->
Data();
595 number n=(number)u->
Data();
612 int v_i=(int)(
long)v->
Data();
615 WerrorS(
"exponent must be non-negative");
623 Werror(
"OVERFLOW in power(d=%ld, e=%d, max=%ld)",
707 if(isupper(u->
name[0]))
709 const char *c=u->
name+1;
710 while((*c!=
'\0')&&(islower(*c)||(isdigit(*c)))) c++;
715 Print(
"%s of type 'ANY'. Trying load.\n", u->
name);
731 package pa=(package)u->Data();
745 WerrorS(
"reserved name with ::");
750 memcpy(res, v,
sizeof(
sleftv));
751 memset(v, 0,
sizeof(
sleftv));
757 WerrorS(
"<package>::<id> expected");
764 unsigned int a=(
unsigned int)(
unsigned long)u->
Data();
765 unsigned int b=(
unsigned int)(
unsigned long)v->
Data();
767 res->
data = (
char *)((
long)c);
770 WarnS(
"int overflow(+), result may be wrong");
794 WerrorS(
"intmat size not compatible");
804 WerrorS(
"bigintmat/cmatrix not compatible");
815 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
838 char*
a = (
char * )(u->
Data());
839 char*
b = (
char * )(v->
Data());
840 char*
r = (
char * )
omAlloc(strlen(a) + strlen(b) + 1);
853 void *ap=u->
Data();
void *bp=v->
Data();
854 int aa=(int)(
long)ap;
855 int bb=(int)(
long)bp;
857 unsigned int a=(
unsigned int)(
unsigned long)ap;
858 unsigned int b=(
unsigned int)(
unsigned long)bp;
862 WarnS(
"int overflow(-), result may be wrong");
864 res->
data = (
char *)((
long)cc);
887 WerrorS(
"intmat size not compatible");
897 WerrorS(
"bigintmat/cmatrix not compatible");
908 Werror(
"matrix size not compatible(%dx%d, %dx%d)",
917 int a=(int)(
long)u->
Data();
918 int b=(int)(
long)v->
Data();
920 if ((c>INT_MAX)||(c<INT_MIN))
921 WarnS(
"int overflow(*), result may be wrong");
922 res->
data = (
char *)((
long)((int)c));
937 number n=(number)res->
data;
957 Warn(
"possible OVERFLOW in mult(d=%ld, d=%ld, max=%ld)",
969 Warn(
"possible OVERFLOW in mult(d=%ld, d=%ld, max=%ld)",
1004 WerrorS(
"intmat size not compatible");
1016 WerrorS(
"bigintmat/cmatrix not compatible");
1030 res->
data = (
char *)I;
1044 res->
data = (
char *)I;
1054 res->
data = (
char *)I;
1085 Werror(
"matrix size not compatible(%dx%d, %dx%d) in *",
1103 res->
data = (
char *)(
long)((int)((
long)u->
Data()) >= (
int)((long)v->
Data()));
1121 res->
data = (
char *)(
long)((int)((
long)u->
Data()) > (
int)((long)v->
Data()));
1135 res->
data = (
char *)(
long)((int)((
long)u->
Data()) <= (
int)((long)v->
Data()));
1148 res->
data = (
char *)(
long)((int)((
long)u->
Data()) < (
int)((long)v->
Data()));
1158 int a= (int)(
long)u->
Data();
1159 int b= (int)(
long)v->
Data();
1173 r=((a-c) /b);
break;
1175 res->
data=(
void *)((
long)
r);
1180 number q=(number)v->
Data();
1188 res->
data = (
char *)q;
1193 number q=(number)v->
Data();
1201 res->
data = (
char *)q;
1240 I->m[
i]=
pAdd(I->m[i],p);
1246 for(i=comps-1;i>=0;i--)
1256 res->
data=(
void *)p;
1265 WerrorS(
"division only defined over coefficient domains");
1270 WerrorS(
"division over a coefficient domain only implemented for terms");
1306 res->
data=(
char *)mm;
1317 res->
data = (
char *)((
int)((long)u->
Data()) == (
int)((long)v->
Data()));
1362 res->
data = (
char *)((
long)u->
Data() && (long)v->
Data());
1367 res->
data = (
char *)((
long)u->
Data() || (long)v->
Data());
1380 while (sh->next !=
NULL) sh=sh->next;
1396 WerrorS(
"indexed object must have a name");
1403 memset(&t,0,
sizeof(t));
1405 for (i=0;i<iv->
length(); i++)
1407 t.
data=(
char *)((
long)(*iv)[
i]);
1431 int i=(int)(
long)v->
Data();
1452 for(i=iv->
length()-1;i>=0;i--)
1455 while ((p!=
NULL) && (sum>0))
1458 for(i=iv->
length()-1;i>=0;i--)
1471 res->
data=(
char *)r;
1479 int i=(int)(
long)v->
Data();
1484 if (r==p) r=
pNext(p);
1501 res->
data=(
char *)r;
1515 for(i=0;i<iv->
length();i++)
1535 res->
data=(
char *)r;
1543 char * nn = (
char *)
omAlloc(strlen(u->
name) + 14);
1544 sprintf(nn,
"%s(%d)",u->
name,(
int)(
long)v->
Data());
1558 long slen = strlen(u->
name) + 14;
1559 char *n = (
char*)
omAlloc(slen);
1561 for (i=0;i<iv->
length(); i++)
1572 sprintf(n,
"%s(%d)",u->
name,(*iv)[i]);
1584 memset(tmp,0,
sizeof(
sleftv));
1610 tmp_proc->
id=
"_auto";
1614 d=u->
data; u->
data=(
void *)tmp_proc;
1631 if (sl)
return TRUE;
1650 memcpy(res,sl,
sizeof(
sleftv));
1658 memset(v,0,
sizeof(
sleftv));
1668 number *
x=(number *)
omAlloc(rl*
sizeof(number));
1669 number *q=(number *)
omAlloc(rl*
sizeof(number));
1671 for(i=rl-1;i>=0;i--)
1678 for(i=rl-1;i>=0;i--)
1684 res->
data=(
char *)n;
1694 number *
x=(number *)
omAlloc(rl*
sizeof(number));
1695 number *q=(number *)
omAlloc(rl*
sizeof(number));
1697 for(i=rl-1;i>=0;i--)
1703 for(i=rl-1;i>=0;i--)
1707 Werror(
"poly expected at pos %d",i+1);
1708 for(i=rl-1;i>=0;i--)
1717 else if (
pLmCmp(r,h)==-1) r=h;
1720 for(i=rl-1;i>=0;i--)
1732 number n=n_ChineseRemainder(x,q,rl,
currRing->cf);
1733 for(i=rl-1;i>=0;i--)
1739 result=
pAdd(result,h);
1741 for(i=rl-1;i>=0;i--)
1746 res->
data=(
char *)result;
1753 int s=(int)(
long)v->
Data();
1762 ideal
M=(ideal)u->
CopyD();
1763 int s=(int)(
long)v->
Data();
1802 (ideal)(v->
Data()), p);
1814 ideal I=(ideal)u->
Data();
1819 res->
data = (
char *)((
long)d);
1830 res->
data = (
char *)(d);
1833 res->
data=(
char *)(
long)(-1);
1868 Warn(
"dim(%s,...) may be wrong because the mixed monomial ordering",v->
Name());
1879 ideal vid = (ideal)v->
Data();
1883 res->
data = (
char *)-1;
1892 if (i != -1)
pDelete(&vv->m[i]);
1895 res->
data = (
char *)d;
1914 ideal vi=(ideal)v->
Data();
1916 ideal ui=(ideal)u->
Data();
1950 res->
data=(
char *)L;
1987 number uu=(number)u->
Data();number vv=(number)v->
Data();
1996 res->
data=(
char *)L;
2001 int uu=(int)(
long)u->
Data();
int vv=(int)(
long)v->
Data();
2002 int p0=
ABS(uu),p1=
ABS(vv);
2003 int f0 = 1, f1 = 0, g0 = 0, g1 = 1, q,
r;
2025 res->
data=(
char *)L;
2032 if (ret)
return TRUE;
2035 res->
data=(
char *)L;
2036 L->
m[0].
data=(
void *)r;
2038 L->
m[1].
data=(
void *)pa;
2040 L->
m[2].
data=(
void *)pb;
2048 int sw=(int)(
long)dummy->
Data();
2050 if ((sw<0)||(sw>2)) fac_sw=1;
2051 singclap_factorize_retry=0;
2063 l->
m[0].
data=(
void *)f;
2065 l->
m[1].
data=(
void *)v;
2066 res->
data=(
void *)l;
2071 res->
data=(
void *)f;
2084 res->
data=(
void *)p;
2098 while (p!=NULL) { p=p->next;l++; }
2104 L->
m[
l].
data=(
char *)h->d;
2111 res->
data=(
void *)L;
2118 number uu=(number)u->
Data();
2119 number vv=(number)v->
Data();
2127 ideal uu=(ideal)u->
Data();
2128 number vv=(number)v->
Data();
2135 ring
r=(ring)u->
Data();
2144 int par_perm_size=0;
2157 par_perm_size=
rPar(r);
2166 perm=(
int *)
omAlloc0((r->N+1)*
sizeof(int));
2167 if (par_perm_size!=0)
2168 par_perm=(
int *)
omAlloc0(par_perm_size*
sizeof(
int));
2173 char ** r_par_names=
NULL;
2174 if (r->cf->extRing!=
NULL)
2176 r_par=r->cf->extRing->N;
2177 r_par_names=r->cf->extRing->names;
2180 char ** c_par_names=
NULL;
2184 c_par_names=
currRing->cf->extRing->names;
2186 maFindPerm(r->names, r->N, r_par_names, r_par,
2188 perm,par_perm,
currRing->cf->type);
2193 if (par_perm_size!=0)
2203 Print(
"// var nr %d: %s -> %s\n",i,r->names[i],
currRing->names[i]);
2207 Print(
"// par nr %d: %s -> %s\n",
2213 memset(&tmpW,0,
sizeof(
sleftv));
2217 perm,par_perm,par_perm_size,nMap)))
2245 char *where=(
char *)u->
Data();
2246 char *what=(
char *)v->
Data();
2247 char *
found = strstr(where,what);
2250 res->
data=(
char *)((found-where)+1);
2263 int uu=(int)(
long)u->
Data();
int vv=(int)(
long)v->
Data();
2264 int p0=
ABS(uu),p1=
ABS(vv);
2272 res->
data=(
char *)(
long)p0;
2277 number n1 = (number) u->
Data();
2278 number n2 = (number) v->
Data();
2284 number
a=(number) u->
Data();
2285 number
b=(number) v->
Data();
2311 ring tempR =
rCopy(origR);
2316 ideal uid = (ideal)u->
Data();
2319 sleftv uuAsLeftv; memset(&uuAsLeftv, 0,
sizeof(uuAsLeftv));
2324 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
2325 PrintS(
"// performed for generic fibre, that is, over Q\n");
2328 int returnWithTrue = 1;
2329 switch((
int)(
long)v->
Data())
2332 res->
data=(
void *)iv;
2347 if (returnWithTrue)
return TRUE;
else return FALSE;
2353 switch((
int)(long)v->
Data())
2356 res->
data=(
void *)iv;
2381 WerrorS(
"variable must have weight 1");
2403 WerrorS(
"variable must have weight 1");
2410 ideal v_id=(ideal)v->
Data();
2419 currRing->pLexOrder=save_pLexOrder;
2423 if (w!=
NULL)
delete w;
2442 const int n = L->
nr;
assume (n >= 0);
2443 std::vector<ideal> V(n + 1);
2445 for(
int i = n;
i >= 0;
i--) V[
i] = (ideal)(L->
m[
i].
Data());
2496 memset(&h,0,
sizeof(
sleftv));
2527 char *
s=(
char *)u->
Data();
2528 if(strcmp(s,
"with")==0)
2530 if (strcmp(s,
"try")==0)
2532 WerrorS(
"invalid second argument");
2533 WerrorS(
"load(\"libname\" [,option]);");
2555 ideal u_id=(ideal)u->
Data();
2556 ideal v_id=(ideal)v->
Data();
2559 if ((*w_u).compare((w_v))!=0)
2561 WarnS(
"incompatible weights");
2562 delete w_u; w_u=
NULL;
2570 WarnS(
"wrong weights");
2571 delete w_u; w_u=
NULL;
2587 number q=(number)v->
Data();
2598 number q=(number)v->
Data();
2615 char *opt=(
char *)v->
Data();
2627 if(strcmp(l->m->type,
"ASCII")!=0)
2629 Werror(
"ASCII link required, not `%s`",l->m->type);
2634 if ( l->name[0]!=
'\0')
2638 if (v==
NULL) opt=(
const char*)
"i";
2639 else opt=(
const char *)v->
Data();
2646 monitor((FILE *)l->data,mode);
2674 if(err) {
pDelete(&p);
WerrorS(
"no negative exponent allowed"); }
2688 int i=(
int)(long)v->
Data();
2696 Werror(
"par number %d out of range 1..%d",
i,p);
2706 WerrorS(
"basering must NOT be a qring!");
2726 WerrorS(
"basering must NOT be a qring!");
2746 WerrorS(
"basering must NOT be a qring!");
2766 WerrorS(
"basering must NOT be a qring!");
2804 ring
r = (ring)a->
Data();
2813 Werror(
"%s is not an opposite ring to current ring",a->
Fullname());
2819 int argtype =
IDTYP(w);
2826 res->
rtyp = argtype;
2834 res->
rtyp = argtype;
2842 res->
rtyp = argtype;
2855 res->
rtyp = argtype;
2860 WerrorS(
"unsupported type in oppose");
2884 int i=(int)(
long)u->
Data();
2885 int j=(int)(
long)v->
Data();
2886 if (j-i <0) {
WerrorS(
"invalid range for random");
return TRUE;}
2887 res->
data =(
char *)(
long)((i >
j) ? i : (
siRand() % (j-i+1)) +
i);
2893 int isRowEchelon = (int)(
long)v->
Data();
2894 if (isRowEchelon != 1) isRowEchelon = 0;
2895 int rank =
luRank(m, isRowEchelon);
2896 res->
data =(
char *)(
long)rank;
2906 if ((l!=
NULL)&&(l->name!=
NULL)) s=l->name;
2908 Werror(
"cannot read from `%s`",s);
2911 memcpy(res,r,
sizeof(
sleftv));
2917 ideal vi=(ideal)v->
Data();
2925 ideal ui=(ideal)u->
Data();
2926 ideal vi=(ideal)v->
Data();
2935 int maxl=(int)(
long)v->
Data();
2938 WerrorS(
"length for res must not be negative");
2946 ideal u_id=(ideal)u->
Data();
2955 "full resolution in a qring may be infinite, setting max length to %d",
2969 int add_row_shift=0;
2973 add_row_shift = ww->
min_in();
2974 (*ww) -= add_row_shift;
2994 (
"`lres` not implemented for inhomogeneous input or qring");
3006 (
"`kres` not implemented for inhomogeneous input or qring");
3018 (
"`hres` not implemented for inhomogeneous input or qring");
3026 res->
data=(
void *)r;
3030 if (weights!=
NULL) (*w) += add_row_shift;
3046 if (ww!=
NULL) {
delete ww; ww=
NULL; }
3052 int maxl=(int)(
long)v->
Data();
3055 WerrorS(
"length for res must not be negative");
3061 ideal u_id=(ideal)u->
Data();
3070 "full resolution in a qring may be infinite, setting max length to %d",
3084 int add_row_shift=0;
3088 add_row_shift = ww->
min_in();
3089 (*ww) -= add_row_shift;
3105 (
"`lres` not implemented for inhomogeneous input or qring");
3109 WarnS(
"the current implementation of `lres` may not work in the case of a single variable");
3119 (
"`kres` not implemented for inhomogeneous input or qring");
3131 (
"`hres` not implemented for inhomogeneous input or qring");
3134 ideal u_id_copy=
idCopy(u_id);
3136 r=
syHilb(u_id_copy,&dummy);
3142 res->
data=(
void *)r;
3143 if ((weights!=
NULL) && (ww!=
NULL)) {
delete ww; ww=
NULL; }
3147 if (weights!=
NULL) (*ww) += add_row_shift;
3177 n1 = (number)u->
CopyD();
3181 i = (int)(
long)u->
Data();
3189 i = (int)(
long)v->
Data();
3193 res->
data = (
char*)l;
3200 res->
data = (
char *)r;
3203 #define SIMPL_LMDIV 32 3204 #define SIMPL_LMEQ 16 3205 #define SIMPL_MULT 8 3207 #define SIMPL_NULL 2 3208 #define SIMPL_NORM 1 3211 int sw = (int)(
long)v->
Data();
3238 res->
data = (
char * )
id;
3245 int sw=(int)(
long)dummy->
Data();
3248 singclap_factorize_retry=0;
3260 l->
m[0].
data=(
void *)f;
3262 l->
m[1].
data=(
void *)v;
3263 res->
data=(
void *)l;
3268 res->
data=(
void *)f;
3281 res->
data=(
void *)p;
3302 int sw = (int)(
long)v->
Data();
3309 res->
data = (
char * )p;
3317 ideal u_id=(ideal)(u->
Data());
3333 res->
data = (
char *)result;
3342 ideal i1=(ideal)(u->
Data());
3380 res->
data = (
char *)result;
3384 i0=(ideal)v->
CopyD();
3423 res->
data = (
char *)result;
3431 int i=(
int)(long)v->
Data();
3452 int t = (int)(
long)v->
Data();
3462 res->
data = (
void*)(
long)
i;
3477 int timeout = 1000*(int)(
long)v->
Data();
3485 for(
unsigned nfinished = 0; nfinished < ((unsigned)Lforks->
nr)+1; nfinished++)
3510 res->
data = (
void*)(
long)ret;
3518 #define jjWRONG2 (proc2)jjWRONG 3519 #define jjWRONG3 (proc3)jjWRONG 3564 res->
data = (
char *)n;
3569 res->
data = (
char *)(-(
long)u->
Data());
3576 res->
data = (
char *)n;
3594 res->
data = (
char *)iv;
3601 res->
data = (
char *)bim;
3619 l->m[0].data=(
void *)m;
3620 l->m[1].data=(
void *)iv;
3621 res->
data = (
char *)l;
3641 number n=(number)u->
CopyD();
3665 number n=(number) tmp.
data;
3703 res->
data = (
char *)p;
3735 ring
r=(ring)v->
Data();
3741 extern int ipower (
int b,
int n );
3742 elems=
ipower(r->cf->ch,r->cf->extRing->pFDeg(r->cf->extRing->qideal->m[0],r->cf->extRing));
3744 res->
data = (
char *)(
long)elems;
3752 else res->
data=(
char *)-1;
3757 ideal I=(ideal)u->
Data();
3763 res->
data = (
char *)(
long)d;
3772 ring tempR =
rCopy(origR);
3777 ideal vid = (ideal)v->
Data();
3780 sleftv vvAsLeftv; memset(&vvAsLeftv, 0,
sizeof(vvAsLeftv));
3785 PrintS(
"// NOTE: computation of degree is being performed for\n");
3786 PrintS(
"// generic fibre, that is, over Q\n");
3809 else if (v->
rtyp!=0) res->
data=(
void *)(-1);
3817 number n =
reinterpret_cast<number
>(v->
Data());
3826 number n =
reinterpret_cast<number
>(v->
Data());
3843 res ->
data = (
char *)p;
3855 Werror(
"det of %d x %d bigintmat",i,j);
3864 number2
r=(number2)
omAlloc0(
sizeof(*r));
3875 Werror(
"det of %d x %d cmatrix",i,j);
3891 Werror(
"det of %d x %d intmat",i,j);
3898 ideal I=(ideal)v->
Data();
3909 res->
data = (
char *)p;
3917 Warn(
"dim(%s) may be wrong because the mixed monomial ordering",v->
Name());
3921 ideal vid = (ideal)v->
Data();
3925 res->
data = (
char *)-1L;
3947 for(
unsigned ii=0;ii<(unsigned)
IDELEMS(vv);ii++)
3956 for(
unsigned jj = 0;jj<(unsigned)
IDELEMS(vc)-1;jj++)
3958 if((vc->m[jj]!=
NULL)
3966 if (j != -1)
pDelete(&vc->m[j]);
3979 res->
data = (
char *)d;
3992 if ((l!=
NULL)&&(l->name!=
NULL)) s=l->name;
3994 Werror(
"cannot dump to `%s`",s);
4003 int co=(int)(
long)v->
Data();
4009 else WerrorS(
"argument of gen must be positive");
4014 char * d = (
char *)v->
Data();
4015 char *
s = (
char *)
omAlloc(strlen(d) + 13);
4016 strcpy( s, (
char *)d);
4017 strcat( s,
"\n;RETURN();\n");
4038 while (p!=
NULL) { p=p->next;l++; }
4043 L->
m[
l].
data=(
char *)h->d;
4054 WarnS(
"no factorization implemented");
4058 res->
data=(
void *)L;
4064 singclap_factorize_retry=0;
4071 l->
m[0].
data=(
void *)f;
4073 l->
m[1].
data=(
void *)v;
4074 res->
data=(
void *)l;
4083 if ((l!=
NULL)&&(l->name!=
NULL)) s=l->name;
4085 Werror(
"cannot get dump from `%s`",s);
4094 ideal I=(ideal)v->
Data();
4103 ideal I=(ideal)v->
Data();
4117 WerrorS(
"module must be zero-dimensional");
4118 if (delete_w)
delete w;
4141 if (delete_w)
delete w;
4142 res->
data=(
void *)po;
4150 ring tempR =
rCopy(origR);
4155 ideal vid = (ideal)v->
Data();
4158 sleftv vvAsLeftv; memset(&vvAsLeftv, 0,
sizeof(vvAsLeftv));
4163 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
4164 PrintS(
"// performed for generic fibre, that is, over Q\n");
4183 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
4184 PrintS(
"// performed for generic fibre, that is, over Q\n");
4192 ideal v_id=(ideal)v->
Data();
4200 char *s_isHomog=
omStrDup(
"isHomog");
4206 else if (w!=
NULL)
delete w;
4243 res->
data=(
char *)mat;
4253 res->
data=(
char *)I;
4260 ring q=(ring)v->
Data();
4263 if (q->qideal==
NULL)
4270 WerrorS(
"can only get ideal from identical qring");
4295 Warn(
"interred: this command is experimental over the integers");
4313 res->
data = (
char *)0;
4323 i->m[k-1]=
pDiff(p,k);
4325 res->
data = (
char *)i;
4332 WerrorS(
"differentiation not defined in the coefficient ring");
4335 number n = (number) u->
Data();
4336 number
k = (number) v->
Data();
4349 ideal
id = (ideal)a->
Data();
4354 poly *
p = result->m;
4356 for(
int v = 1; v <=
currRing->N; v++ )
4359 for(
int i = 0;
i < W;
i++, p++, q++ )
4360 *p =
pDiff( *q, v );
4364 res->
data = (
char *)result;
4411 res->
data=(
char *)iv;
4425 res->
data = (
char*) lm;
4437 res->
data=(
char *)r;
4445 memset(&tmp, 0,
sizeof(tmp));
4461 WerrorS(
"matrix must be constant");
4475 res->
data=(
char*)ll;
4486 switch(((
int)(
long)v->
Data()))
4501 res->
data = (
char *)0;
4505 res->
data = (
char *)0;
4520 l->m[0].data=(
char *)r;
4523 l->m[1].data=(
char *)m;
4524 res->
data=(
char *)l;
4540 res->
data=(
char *)tmp;
4549 number n,
i; i=(number)v->
Data();
4554 res->
data=(
void *)n;
4578 res->
data=(
char*)(
long)((long)v->
Data()==0 ? 1 : 0);
4583 res->
data = (
char *)(
long)(((ring)(v->
Data()))->N);
4600 int i=(int)(
long)v->
Data();
4603 if ((0<i) && (i<=p))
4609 Werror(
"par number %d out of range 1..%d",i,p);
4616 number nn=(number)v->
Data();
4627 int i=(int)(
long)v->
Data();
4633 Werror(
"par number %d out of range 1..%d",i,p);
4644 WerrorS(
"poly must be constant");
4653 res->
data=(
void *)n;
4664 WerrorS(
"poly must be constant");
4679 res->
data = (
char *)(
long)(i > 1 ? i : 2);
4685 ideal v_id=(ideal)v->
Data();
4690 WarnS(
"wrong weights");
4719 res->
data = (
char *)n;
4724 char *
s= (
char *)v->
Data();
4728 if (strcmp(s, sArithBase.
sCmds[
i].name) == 0)
4730 res->
data = (
char *)1;
4741 res->
data =(
char *)(
long)rank;
4760 ring
r=(ring)v->
Data();
4774 ring
r=(ring)v->
Data();
4781 ideal
i = (ideal)v->
Data();
4782 res->
data = (
char *)i->rank;
4805 const bool bIsSCA =
false;
4810 WerrorS(
"qring not supported by slimgb at the moment");
4815 WerrorS(
"ordering must be global for slimgb");
4820 ideal u_id=(ideal)u->
Data();
4825 WarnS(
"wrong weights");
4847 ideal v_id=(ideal)v->
Data();
4854 WarnS(
"wrong weights");
4865 res->
data = (
char *)result;
4873 ideal v_id=(ideal)v->
Data();
4880 WarnS(
"wrong weights");
4891 res->
data = (
char *)result;
4899 ideal v_id=(ideal)v->
Data();
4906 WarnS(
"wrong weights");
4917 res->
data = (
char *)result;
4925 ideal v_id=(ideal)v->
Data();
4932 WarnS(
"wrong weights");
4943 res->
data = (
char *)result;
4955 singclap_factorize_retry=0;
4963 l->
m[0].
data=(
void *)f;
4965 l->
m[1].
data=(
void *)v;
4966 res->
data=(
void *)l;
4974 if (w!=
NULL)
delete w;
4983 ideal v_id=(ideal)v->
Data();
4985 int add_row_shift=0;
4989 add_row_shift=w->
min_in();
4990 (*w)-=add_row_shift;
5026 ring
r = (ring)a->
Data();
5034 WarnS(
"opposite only for global orderings");
5041 ring
r = (ring)a->
Data();
5062 int t=(int)(
long)v->
data;
5110 int i=(int)(
long)v->
Data();
5111 if ((0<i) && (i<=currRing->
N))
5116 res->
data=(
char *)p;
5132 int i=(int)(
long)v->
Data();
5133 if ((0<i) && (i<=currRing->
N))
5160 res->
data = (
void*)(
long)
i;
5173 for(
int nfinished = 0; nfinished < Lforks->
nr+1; nfinished++)
5189 res->
data = (
void*)(
long)
j;
5199 #ifdef HAVE_DYNAMIC_LOADING 5206 Werror(
"%s: unknown type", s);
5209 Werror(
"cannot open %s", s);
5224 Werror(
"can not create package `%s`",plib);
5228 package savepack=currPack;
5231 char libnamebuf[256];
5244 #ifdef HAVE_DYNAMIC_LOADING 5247 WerrorS(
"Dynamic modules are not supported by this version of Singular");
5256 WerrorS_dummy_cnt++;
5262 WerrorS_dummy_cnt=0;
5265 Print(
"loading of >%s< failed\n",s);
5273 res->
data = (
char *)strlen((
char *)v->
Data());
5371 number n=(number)u->
CopyD();
5378 number n=(number)u->
Data();
5387 char *s= (
char *)u->
Data();
5388 int r = (int)(
long)v->
Data();
5389 int c = (int)(
long)w->
Data();
5392 if ( (r<1) || (r>l) || (c<0) )
5398 sprintf((
char *)res->
data,
"%-*.*s",c,c,s+r-1);
5404 int r = (int)(
long)v->
Data();
5405 int c = (int)(
long)w->
Data();
5406 if ((r<1)||(r>iv->
rows())||(c<1)||(c>iv->
cols()))
5408 Werror(
"wrong range[%d,%d] in intmat %s(%d x %d)",
5417 if (u->
e==
NULL) res->
e=e;
5421 while (h->next!=
NULL) h=h->next;
5431 int r = (int)(
long)v->
Data();
5432 int c = (int)(
long)w->
Data();
5433 if ((r<1)||(r>bim->
rows())||(c<1)||(c>bim->
cols()))
5435 Werror(
"wrong range[%d,%d] in bigintmat %s(%d x %d)",
5449 while (h->next!=
NULL) h=h->next;
5459 int r = (int)(
long)v->
Data();
5460 int c = (int)(
long)w->
Data();
5464 Werror(
"wrong range[%d,%d] in matrix %s(%d x %d)",r,c,u->
Fullname(),
5478 while (h->next!=
NULL) h=h->next;
5496 WerrorS(
"cannot build expression lists from unnamed objects");
5499 memcpy(&ut,u,
sizeof(ut));
5500 memset(&t,0,
sizeof(t));
5502 for (l=0;l< iv->
length(); l++)
5504 t.
data=(
char *)(
long)((*iv)[
l]);
5514 memcpy(u,&ut,
sizeof(ut));
5546 WerrorS(
"cannot build expression lists from unnamed objects");
5549 memcpy(&ut,u,
sizeof(ut));
5550 memset(&t,0,
sizeof(t));
5552 for (l=0;l< iv->
length(); l++)
5554 t.
data=(
char *)(
long)((*iv)[
l]);
5564 memcpy(u,&ut,
sizeof(ut));
5597 WerrorS(
"cannot build expression lists from unnamed objects");
5600 memcpy(&ut,u,
sizeof(ut));
5601 memset(&t1,0,
sizeof(
sleftv));
5602 memset(&t2,0,
sizeof(
sleftv));
5605 for (vl=0;vl< vv->
length(); vl++)
5607 t1.
data=(
char *)(
long)((*vv)[vl]);
5608 for (wl=0;wl< wv->
length(); wl++)
5610 t2.
data=(
char *)(
long)((*wv)[wl]);
5620 memcpy(u,&ut,
sizeof(ut));
5640 memset(w,0,
sizeof(
sleftv));
5647 memset(v,0,
sizeof(
sleftv));
5650 memset(w,0,
sizeof(
sleftv));
5660 int k=(int)(
long)w->
Data();
5667 l->
m[0].
data=(
void *)m;
5668 l->
m[1].
data=(
void *)iv;
5675 l->
m[0].
data=(
void *)m;
5677 res->
data = (
char *)l;
5684 WerrorS(
"3rd argument must be a name of a matrix");
5687 ideal
i=(ideal)u->
Data();
5688 int rank=(int)i->rank;
5704 WerrorS(
"3rd argument must be a name of a matrix");
5712 memset(&t,0,
sizeof(t));
5742 int n=(int)(
long)w->
Data();
5743 char *where=(
char *)u->
Data();
5744 char *what=(
char *)v->
Data();
5746 if ((1>n)||(n>(
int)strlen(where)))
5748 Werror(
"start position %d out of range",n);
5751 found = strchr(where+n-1,*what);
5752 if (*(what+1)!=
'\0')
5754 while((found !=
NULL) && (strncmp(found+1,what+1,strlen(what+1))!=0))
5756 found=strchr(found+1,*what);
5761 res->
data=(
char *)((found-where)+1);
5767 if ((
int)(
long)w->
Data()==0)
5779 Werror(
"weight vector must have size %d, not %d",
5786 ring tempR =
rCopy(origR);
5791 ideal uid = (ideal)u->
Data();
5794 sleftv uuAsLeftv; memset(&uuAsLeftv, 0,
sizeof(uuAsLeftv));
5799 PrintS(
"// NOTE: computation of Hilbert series etc. is being\n");
5800 PrintS(
"// performed for generic fibre, that is, over Q\n");
5803 int returnWithTrue = 1;
5804 switch((
int)(
long)v->
Data())
5807 res->
data=(
void *)iv;
5822 if (returnWithTrue)
return TRUE;
else return FALSE;
5827 switch((
int)(long)v->
Data())
5830 res->
data=(
void *)iv;
5856 WerrorS(
"variable must have weight 1");
5874 WerrorS(
"variable must have weight 1");
5885 (*im)[
i] = (*arg)[
i];
5888 res->
data = (
char *)im;
5902 WerrorS(
"2nd argument must be a unit");
5918 WerrorS(
"2nd argument must be a diagonal matrix of units");
5989 const int mk = (
const int)(
long)u->
Data();
5990 bool noIdeal =
true;
bool noK =
true;
bool noAlgorithm =
true;
5991 bool noCacheMinors =
true;
bool noCacheMonomials =
true;
5992 ideal IasSB;
int k;
char* algorithm;
int cacheMinors;
int cacheMonomials;
6008 noAlgorithm =
false;
6013 noCacheMinors =
false;
6019 noCacheMonomials =
false;
6033 noAlgorithm =
false;
6038 noCacheMinors =
false;
6043 noCacheMonomials =
false;
6050 algorithm = (
char*)u->
next->
Data();
6051 noAlgorithm =
false;
6055 noCacheMinors =
false;
6060 noCacheMonomials =
false;
6068 if (strcmp(algorithm,
"bareiss") == 0)
6069 algorithm = (
char*)
"Bareiss";
6070 if (strcmp(algorithm,
"laplace") == 0)
6071 algorithm = (
char*)
"Laplace";
6072 if (strcmp(algorithm,
"cache") == 0)
6073 algorithm = (
char*)
"Cache";
6082 if ((!noK) && (k == 0))
6084 WerrorS(
"Provided number of minors to be computed is zero.");
6087 if ((!noAlgorithm) && (strcmp(algorithm,
"Bareiss") != 0)
6088 && (strcmp(algorithm,
"Laplace") != 0)
6089 && (strcmp(algorithm,
"Cache") != 0))
6091 WerrorS(
"Expected as algorithm one of 'B/bareiss', 'L/laplace', or 'C/cache'.");
6094 if ((!noAlgorithm) && (strcmp(algorithm,
"Bareiss") == 0)
6097 Werror(
"Bareiss algorithm not defined over coefficient rings %s",
6098 "with zero divisors.");
6102 if ((mk < 1) || (mk > m->
rows()) || (mk > m->
cols()))
6111 if ((!noAlgorithm) && (strcmp(algorithm,
"Cache") == 0)
6112 && (noCacheMinors || noCacheMonomials))
6115 cacheMonomials = 100000;
6121 (noIdeal ? 0 : IasSB),
false);
6122 else if (strcmp(algorithm,
"Cache") == 0)
6124 (noIdeal ? 0 : IasSB), 3, cacheMinors,
6125 cacheMonomials,
false);
6128 (noIdeal ? 0 : IasSB),
false);
6138 (
const char *)w->
Data());
6152 WerrorS(
"2nd/3rd arguments must have names");
6156 const char *ring_name=u->
Name();
6163 if ((preim_ring==
NULL)
6166 Werror(
"preimage ring `%s` is not the basering",mapping->preimage);
6182 Werror(
"`%s` is not defined in `%s`",v->
name,ring_name);
6186 if (kernel_cmd) image=
idInit(1,1);
6203 Werror(
"`%s` is not defined in `%s`",w->
name,ring_name);
6210 WarnS(
"preimage in local qring may be wrong: use Ring::preimageLoc instead");
6219 int i=(int)(
long)u->
Data();
6220 int r=(int)(
long)v->
Data();
6221 int c=(int)(
long)w->
Data();
6222 if ((r<=0) || (c<=0))
return TRUE;
6233 for (k=0; k<iv->
length(); k++)
6235 (*iv)[
k] = ((
siRand() % di) - i);
6238 res->
data = (
char *)iv;
6246 if ((cf==
NULL) ||(cf->cfRandom==
NULL))
6248 Werror(
"no random function defined for coeff %d",cf->type);
6254 number2 nn=(number2)
omAlloc(
sizeof(*nn));
6264 int &ringvar,
poly &monomexpr)
6271 Werror(
"`%s` substitutes a ringvar only by a term",
6276 if ((ringvar=
pVar(p))==0)
6285 WerrorS(
"ringvar/par expected");
6296 if (nok)
return TRUE;
6322 if (nok)
return TRUE;
6323 ideal
id=(ideal)u->
Data();
6327 if (monomexpr!=
NULL)
6342 Warn(
"possible OVERFLOW in subst, max exponent is %ld",
currRing->bitmask/2);
6372 memset(&tmp,0,
sizeof(tmp));
6381 int mi=(int)(
long)v->
Data();
6382 int ni=(int)(
long)w->
Data();
6385 Werror(
"converting ideal to matrix: dimensions must be positive(%dx%d)",mi,ni);
6396 memcpy(m->
m,I->m,i*
sizeof(
poly));
6397 memset(I->m,0,i*
sizeof(
poly));
6399 res->
data = (
char *)m;
6404 int mi=(int)(
long)v->
Data();
6405 int ni=(int)(
long)w->
Data();
6408 Werror(
"converting module to matrix: dimensions must be positive(%dx%d)",mi,ni);
6417 int mi=(int)(
long)v->
Data();
6418 int ni=(int)(
long)w->
Data();
6421 Werror(
"converting matrix to matrix: dimensions must be positive(%dx%d)",mi,ni);
6438 res->
data = (
char *)m;
6462 &(hw->data.uideal));
6471 Werror(
"`%s` must be 0-dimensional",v->
Name());
6483 Werror(
"`%s` must be 0-dimensional",v->
Name());
6494 0,(int)(
long)w->
Data());
6501 0,(int)(
long)w->
Data());
6507 int maxl=(int)v->
Data();
6508 ideal u_id=(ideal)u->
Data();
6524 WarnS(
"wrong weights");
6552 yes = (strcmp((
char *) res->
data, (
char *) w->
Data()) == 0);
6554 res->
data = (
void *)(
long)yes;
6568 ideal u_id=(ideal)(u->
Data());
6573 WarnS(
"wrong weights");
6590 res->
data = (
char *)result;
6676 WarnS(
"<module>,<module>,<int>[,<intvec>] expected!");
6683 ideal
P=(ideal)w1.
Data();
6684 ideal
Q=(ideal)w2.
Data();
6686 int n=(int)(
long)v3->
Data();
6693 while( (i > 0) && ((*w0) > 0) )
6699 WarnS(
"not all weights are positive!");
6713 L->
m[1].
rtyp=v1->Typ();
6718 L->
m[1].
data=(
void *)R->m[0];
6727 L->
m[1].
data=(
void *)R;
6730 L->
m[0].
data=(
char *)T;
6796 number
b=(number)h->
Data();
6852 res->
data=(
char *)
id;
6857 ring
r=(ring)u->
Data();
6865 WerrorS(
"fetch(<ring>,<name>[,<intvec>[,<intvec>])");
6870 if (perm_par_l!=
NULL)
6879 int par_perm_size=0;
6892 par_perm_size=
rPar(r);
6900 par_perm_size=
rPar(r);
6902 if (par_perm_size!=0)
6903 par_perm=(
int *)
omAlloc0(par_perm_size*
sizeof(
int));
6905 if (perm_par_l==
NULL)
6907 if (par_perm_size!=0)
6912 if (par_perm_size==0)
WarnS(
"source ring has no parameters");
6915 for(i=
rPar(r)-1;i>=0;i--)
6917 if (i<perm_par_v->length()) par_perm[
i]=(*perm_par_v)[
i];
6921 Warn(
"invalid entry for par %d: %d\n",i,par_perm[i]);
6927 for(i=
rVar(r)-1;i>=0;i--)
6929 if (i<perm_var_v->length()) perm[i+1]=(*perm_var_v)[
i];
6933 Warn(
"invalid entry for var %d: %d\n",i,perm[i]);
6942 Print(
"// var nr %d: %s -> var %s\n",i,r->names[i-1],
currRing->names[perm[i]-1]);
6948 if (par_perm[i-1]<0)
6949 Print(
"// par nr %d: %s -> par %s\n",
6951 else if (par_perm[i-1]>0)
6952 Print(
"// par nr %d: %s -> var %s\n",
6958 memset(&tmpW,0,
sizeof(
sleftv));
6962 perm,par_perm,par_perm_size,nMap)))
7017 WerrorS(
"cannot convert to ideal or module");
7028 r[
i]=(ideal)h->
Data();
7040 r[
i]=(ideal)tmp.
Data();
7072 matrix iMat;
int invertible;
7078 int rr = aMat->
rows();
7079 int cc = aMat->
cols();
7082 Werror(
"given matrix (%d x %d) is not quadratic, hence not invertible", rr, cc);
7087 WerrorS(
"matrix must be constant");
7097 int rr = uMat->
rows();
7098 int cc = uMat->
cols();
7101 Werror(
"third matrix (%d x %d) is not quadratic, hence not invertible",
7110 WerrorS(
"matricesx must be constant");
7117 Werror(
"expected either one or three matrices");
7135 res->
data=(
char*)ll;
7159 WerrorS(
"expected exactly three matrices and one vector as input");
7169 Werror(
"first matrix (%d x %d) is not quadratic",
7175 Werror(
"second matrix (%d x %d) is not quadratic",
7181 Werror(
"second matrix (%d x %d) and third matrix (%d x %d) do not fit",
7187 Werror(
"third matrix (%d x %d) and vector (%d x 1) do not fit",
7196 WerrorS(
"matrices must be constant");
7216 res->
data=(
char*)ll;
7230 (*iv)[
i]=(int)(
long)h->
Data();
7249 res->
data=(
char *)iv;
7266 WerrorS(
"2nd argument must be a unit");
7279 WerrorS(
"2nd argument must be a diagonal matrix of units");
7284 (
int)(long)u3->
Data(),
7293 Werror(
"%s(`poly`,`poly`,`int`,`intvec`) exppected",
7329 memset(res,0,
sizeof(
sleftv));
7338 && ((strcmp(u->
Name(),
"real")==0) || (strcmp(u->
Name(),
"complex")==0)))
7340 memcpy(res,u,
sizeof(
sleftv));
7341 memset(u,0,
sizeof(
sleftv));
7359 Werror(
"`int` expected while building `%s(`",u->
name);
7364 sprintf(nn,
"%s(%d",u->
name,(
int)(
long)v->
Data());
7368 while (*s!=
'\0') s++;
7372 Werror(
"`int` expected while building `%s`",nn);
7376 sprintf(s,
",%d",(
int)(
long)v->
Data());
7378 while (*s!=
'\0') s++;
7394 int add_row_shift = 0;
7396 if (weights!=
NULL) add_row_shift=weights->
min_in();
7429 ((ring)L->
m[i].
data)->ref++;
7435 res->
data=(
char *)L;
7482 WerrorS(
"2nd argument must be a diagonal matrix of units");
7490 (
int)(long)u4->
Data()
7501 WerrorS(
"2nd argument must be a unit");
7530 WerrorS(
"2nd argument must be a diagonal matrix of units");
7538 (
int)(long)u4->
Data(),
7550 WerrorS(
"2nd argument must be a unit");
7561 Werror(
"%s(`ideal`,`ideal`,`matrix`,`int`,`intvec`) exppected",
7569 unsigned nCount = (sArithBase.
nCmdUsed-1)/3;
7570 if((3*nCount)<sArithBase.
nCmdUsed) nCount++;
7573 for(i=0; i<nCount; i++)
7577 Print(
"%-20s",sArithBase.
sCmds[i+1+nCount].name);
7578 if(i+1+2*nCount<sArithBase.
nCmdUsed)
7579 Print(
"%-20s",sArithBase.
sCmds[i+1+2*nCount].name);
7601 char** slist = (
char**)
omAlloc(n*
sizeof(
char*));
7604 for (i=0, j=0; i<n; i++, v = v ->
next)
7606 slist[
i] = v->String();
7608 j+=strlen(slist[i]);
7610 char* s = (
char*)
omAlloc((j+1)*
sizeof(char));
7614 strcat(s, slist[i]);
7634 #if defined(__alpha) && !defined(linux) 7637 void usleep(
unsigned long usec);
7666 leftv u =
v;
int factorsGiven = 0;
7669 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
7676 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
7679 else d = (int)(
long)u->
Data();
7685 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
7700 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
7705 xIndex = (int)(
long)u->
Data();
7706 yIndex = (int)(
long)u->
next->
Data();
7712 WerrorS(
"expected arguments (poly, int [, poly, poly] [, int, int])");
7719 WerrorS(
"expected non-constant polynomial argument(s)");
7723 if ((xIndex < 1) || (n < xIndex))
7725 Werror(
"index for variable x (%d) out of range [1..%d]", xIndex, n);
7728 if ((yIndex < 1) || (n < yIndex))
7730 Werror(
"index for variable y (%d) out of range [1..%d]", yIndex, n);
7733 if (xIndex == yIndex)
7735 WerrorS(
"expected distinct indices for variables x and y");
7740 if (factorsGiven == 0)
7754 WerrorS(
"expected h(0,y) to have exactly two distinct monic factors");
7769 res->
data = (
char*)L;
7780 #if defined(HAVE_USLEEP) 7781 if (((
long) res->
data) == 0L)
7790 #elif defined(HAVE_SLEEP) 7791 if (((
int) res->
data) == 0)
7796 si_sleep((is - 1)/1000000 + 1);
7815 if ((rest!=
NULL) && (!b))
7820 memset(&tmp_res,0,
sizeof(tmp_res));
7822 memcpy(res,&tmp_res,
sizeof(tmp_res));
7837 WerrorS(
"expected (matrix, number, number, number) as arguments");
7842 (number)(v->
Data()),
7843 (number)(w->
Data()),
7844 (number)(x->
Data()));
7854 ideal i1=(ideal)(u->
Data());
7860 WerrorS(
"expected `std(`ideal/module`,`poly/vector`,`intvec`,`intvec`)");
7880 i0=(ideal)v->
Data();
7884 WerrorS(
"expected `std(`ideal/module`,`poly/vector`,`intvec`,`intvec`)");
7901 WarnS(
"wrong weights");
7924 res->
data = (
char *)result;
7935 WerrorS(
"expected `cring` [ `id` ... ]");
7941 char **n=(
char**)
omAlloc0(N*
sizeof(
char*));
7942 for(
int i=0;
i<
N;
i++,names=names->
next)
7944 n[
i]=(
char *)names->Name();
7956 r->start =(int)(
long)e->
Data();
7960 #define NULL_VAL NULL 7964 #include "iparith.inc" 7976 memset(res,0,
sizeof(
sleftv));
7983 while (dA2[i].
cmd==op)
7985 if ((at==dA2[i].arg1)
7986 && (bt==dA2[i].arg2))
8003 if ((call_failed=dA2[i].
p(res,a,b)))
8023 while (dA2[i].
cmd==op)
8048 failed= ((
iiConvert(at,dA2[i].arg1,ai,a,an))
8050 || (call_failed=dA2[i].
p(res,an,bn)));
8089 Werror(
"`%s` is not defined",s);
8096 Werror(
"%s(`%s`,`%s`) failed" 8101 Werror(
"`%s` %s `%s` failed" 8106 while (dA2[i].
cmd==op)
8108 if(((at==dA2[i].arg1)||(bt==dA2[i].arg2))
8113 Werror(
"expected %s(`%s`,`%s`)" 8116 Werror(
"expected `%s` %s `%s`" 8145 memset(res,0,
sizeof(
sleftv));
8154 memcpy(&d->arg1,a,
sizeof(
sleftv));
8156 memcpy(&d->arg2,b,
sizeof(
sleftv));
8160 res->
data=(
char *)d;
8173 if (!bb->blackbox_Op2(op,res,a,b))
return FALSE;
8179 else if ((bt>
MAX_TOK)&&(op!=
'('))
8184 if(!bb->blackbox_Op2(op,res,a,b))
return FALSE;
8204 memset(res,0,
sizeof(
sleftv));
8212 while (dA1[i].
cmd==op)
8231 if ((call_failed=dA1[i].
p(res,a)))
8251 while (dA1[i].
cmd==op)
8274 failed= ((
iiConvert(at,dA1[i].arg,ai,a,an,dConvertTypes))
8275 || (call_failed=dA1[i].
p(res,an)));
8317 while (dA1[i].
cmd==op)
8321 Werror(
"expected %s(`%s`)" 8335 memset(res,0,
sizeof(
sleftv));
8344 memcpy(&d->arg1,a,
sizeof(
sleftv));
8348 res->
data=(
char *)d;
8361 res->
data=bb->blackbox_Init(bb);
8362 if(!bb->blackbox_Assign(res,a))
return FALSE;
8372 if(!bb->blackbox_Op1(op,res,a))
return FALSE;
8392 const struct sValCmd3* dA3,
int at,
int bt,
int ct,
8395 memset(res,0,
sizeof(
sleftv));
8404 while (dA3[i].
cmd==op)
8406 if ((at==dA3[i].arg1)
8407 && (bt==dA3[i].arg2)
8408 && (ct==dA3[i].arg3))
8416 Print(
"call %s(%s,%s,%s)\n",
8418 if ((call_failed=dA3[i].
p(res,a,b,c)))
8439 while (dA3[i].
cmd==op)
8455 Print(
"call %s(%s,%s,%s)\n",
8458 failed= ((
iiConvert(at,dA3[i].arg1,ai,a,an,dConvertTypes))
8459 || (
iiConvert(bt,dA3[i].arg2,bi,b,bn,dConvertTypes))
8460 || (
iiConvert(ct,dA3[i].arg3,ci,c,cn,dConvertTypes))
8461 || (call_failed=dA3[i].
p(res,an,bn,cn)));
8513 Werror(
"`%s` is not defined",s);
8519 Werror(
"%s(`%s`,`%s`,`%s`) failed" 8523 while (dA3[i].
cmd==op)
8525 if(((at==dA3[i].arg1)
8527 ||(ct==dA3[i].arg3))
8530 Werror(
"expected %s(`%s`,`%s`,`%s`)" 8550 memset(res,0,
sizeof(
sleftv));
8559 memcpy(&d->arg1,a,
sizeof(
sleftv));
8561 memcpy(&d->arg2,b,
sizeof(
sleftv));
8563 memcpy(&d->arg3,c,
sizeof(
sleftv));
8567 res->
data=(
char *)d;
8579 if(!bb->blackbox_Op3(op,res,a,b,c))
return FALSE;
8628 if(v==
NULL)
return failed;
8640 memset(res,0,
sizeof(
sleftv));
8650 res->
data=(
char *)d;
8655 memcpy(&d->arg1,a,
sizeof(
sleftv));
8690 if(!bb->blackbox_OpM(op,res,a))
return FALSE;
8704 if ((args==
dArithM[i].number_of_args)
8705 || (
dArithM[i].number_of_args==-1)
8706 || ((
dArithM[i].number_of_args==-2)&&(args>0)))
8735 Werror(
"%s(...) failed",s);
8757 if (strcmp(n, sArithBase.
sCmds[an].name) == 0)
8762 else if ((an!=en) && (strcmp(n, sArithBase.
sCmds[en].name) == 0))
8775 if (*n < *(sArithBase.
sCmds[i].name))
8779 else if (*n > *(sArithBase.
sCmds[i].name))
8785 int v=strcmp(n,sArithBase.
sCmds[i].name);
8801 tok=sArithBase.
sCmds[
i].tokval;
8802 if(sArithBase.
sCmds[i].alias==2)
8804 Warn(
"outdated identifier `%s` used - please change your code",
8805 sArithBase.
sCmds[i].name);
8806 sArithBase.
sCmds[
i].alias=1;
8843 return sArithBase.
sCmds[
i].toktype;
8855 if (op==dArithTab[p].
cmd)
return dArithTab[
p].start;
8856 if (op<dArithTab[p].cmd) e=p-1;
8872 return sArithBase.
sCmds[0].name;
8874 if (tok==
ANY_TYPE)
return "any_type";
8875 if (tok==
COMMAND)
return "command";
8876 if (tok==
NONE)
return "nothing";
8883 if (tok==
IDHDL)
return "identifier";
8886 for(i=0; i<sArithBase.
nCmdUsed; i++)
8889 if ((sArithBase.
sCmds[i].tokval == tok)&&
8890 (sArithBase.
sCmds[i].alias==0))
8892 return sArithBase.
sCmds[
i].name;
8896 for(i=0; i<sArithBase.
nCmdUsed; i++)
8898 if (sArithBase.
sCmds[i].tokval == tok)
8900 return sArithBase.
sCmds[
i].name;
8903 return sArithBase.
sCmds[0].name;
8919 cmdnames *pCmdL = (cmdnames*)a;
8920 cmdnames *pCmdR = (cmdnames*)b;
8925 if(pCmdL->name==
NULL)
return 1;
8926 if(pCmdR->name==
NULL)
return -1;
8929 if(strcmp(pCmdL->name,
"$INVALID$")==0)
return -1;
8930 if(strcmp(pCmdR->name,
"$INVALID$")==0)
return 1;
8933 if (pCmdL->tokval==-1)
8935 if (pCmdR->tokval==-1)
8936 return strcmp(pCmdL->name, pCmdR->name);
8941 if(pCmdR->tokval==-1)
return -1;
8943 return strcmp(pCmdL->name, pCmdR->name);
8957 memset(&sArithBase, 0,
sizeof(sArithBase));
9000 if (strcmp(szName, sArithBase.
sCmds[an].name) == 0)
9005 else if (strcmp(szName, sArithBase.
sCmds[en].name) == 0)
9017 if (*szName < *(sArithBase.
sCmds[i].name))
9021 else if (*szName > *(sArithBase.
sCmds[i].name))
9027 v=strcmp(szName,sArithBase.
sCmds[i].name);
9051 if(nPos<0)
return NULL;
9053 return sArithBase.
sCmds[nPos].name;
9060 if(szName==
NULL)
return -1;
9063 if(nIndex<0 || nIndex>=(
int)sArithBase.
nCmdUsed)
9065 Print(
"'%s' not found (%d)\n", szName, nIndex);
9070 qsort(sArithBase.
sCmds, sArithBase.
nCmdUsed,
sizeof(cmdnames),
9100 sArithBase.
sCmds[nPos].alias = nAlias;
9101 sArithBase.
sCmds[nPos].tokval = nTokval;
9102 sArithBase.
sCmds[nPos].toktype = nToktype;
9108 if(szName==
NULL)
return -1;
9112 Print(
"'%s' already exists at %d\n", szName, nIndex);
9131 qsort(sArithBase.
sCmds, sArithBase.
nCmdUsed,
sizeof(cmdnames),
9150 WerrorS(
"not implemented for non-commutative rings");
9153 else if ((p & PLURAL_MASK)==2 )
9165 WerrorS(
"not implemented for rings with rings as coeffients");
9172 WerrorS(
"domain required as coeffients");
9178 WarnS(
"considering the image in Q[...]");
9189 int return_type=c->
m[0].
Typ();
9205 for (
unsigned i=0;
i<=(unsigned)c->
nr;
i++)
9210 if (bo) {
Werror(
"chinrem failed for list entry %d",
i+1);
break;}
9220 WerrorS(
"poly/ideal/module/matrix/list expected");
9237 ideal *
x=(ideal *)
omAlloc(rl*
sizeof(ideal));
9243 for(i=rl-1;i>=0;i--)
9245 if (c->
m[i].
Typ()!=return_type)
9270 xx=(number *)
omAlloc(rl*
sizeof(number));
9271 for(i=rl-1;i>=0;i--)
9283 Werror(
"bigint expected at pos %d",i+1);
9290 number *q=(number *)
omAlloc(rl*
sizeof(number));
9293 for(i=rl-1;i>=0;i--)
9300 for(i=rl-1;i>=0;i--)
9312 Werror(
"bigint expected at pos %d",i+1);
9328 res->
data=(
char *)n;
9336 res->
data=(
char *)result->m[0];
9341 res->
data=(
char *)result;
9343 for(i=rl-1;i>=0;i--)
9348 res->
rtyp=return_type;
9349 return result==
NULL;
9358 for (
unsigned i=0;
i<=(unsigned)c->
nr;
i++)
9363 if (bo) {
Werror(
"farey failed for list entry %d",
i+1);
break;}
9376 if (at < bt)
return -1;
9377 if (at > bt)
return 1;
9378 int tab_pos=
iiTabIndex(dArithTab2,JJTAB2LEN,
'<');
9380 memset(&tmp,0,
sizeof(
sleftv));
9386 unsigned long ad=(
unsigned long)a->
Data();
9387 unsigned long bd=(
unsigned long)b->
Data();
9388 if (ad<bd)
return -1;
9389 else if (ad==bd)
return 0;
9400 unsigned long ad=(
unsigned long)a->
Data();
9401 unsigned long bd=(
unsigned long)b->
Data();
9402 if (ad<bd)
return -1;
9403 else if (ad==bd)
return 0;
9434 for(j=i; j<len;j++) l->
m[j]=l->
m[j+1];
9435 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
int compare(const intvec *o) const
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)
void atSet(idhdl root, const char *name, void *data, int typ)
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)
number det()
det (via LaPlace in general, hnf for euc. rings)
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 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 BOOLEAN rField_is_Ring_PtoM(const ring r)
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
ideal t_rep_gb(ring r, ideal arg_I, int syz_comp, BOOLEAN F4_mode)
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)
static BOOLEAN rField_is_Ring_ModN(const ring r)
matrix mp_Coeffs(ideal I, int var, const ring R)
corresponds to Maple's coeffs: var has to be the number of a variable
#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 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)
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)
struct sValCmd1 dArith1[]
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)
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)
idhdl get(const char *s, int lev)
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)
char * String(void *d=NULL, BOOLEAN typed=FALSE, int dim=1)
Called for conversion to string (used by string(..), write(..),..)
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)
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)
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)
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)
BOOLEAN iiMake_proc(idhdl pn, package pack, sleftv *sl)
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)
BOOLEAN rComplete(ring r, int force)
this needs to be called whenever a new ring is created: new fields in ring are created (like VarOffse...
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 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)
struct sValCmd3 dArith3[]
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)
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)
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)
void hnf()
transforms INPLACE to HNF
ring rDefault(const coeffs cf, int N, char **n, int ord_size, int *ord, int *block0, int *block1, int **wvhdl)
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)
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)
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)
struct sValCmd2 dArith2[]
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)
static BOOLEAN jjBRACK_S(leftv res, leftv u, leftv v, leftv w)
struct sValCmdM dArithM[]
void pRestoreDegProcs(ring r, pFDegProc old_FDeg, pLDegProc old_lDeg)
#define rHasLocalOrMixedOrdering_currRing()
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)
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)
ideal idMult(ideal h1, ideal h2)
hh := h1 * h2
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)
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_2toM(const ring r)
static BOOLEAN rField_is_Ring(const ring r)
matrix mp_Add(matrix a, matrix b, const ring R)
BOOLEAN idHomIdeal(ideal id, ideal Q=NULL)
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)
void rDelete(ring r)
unconditionally deletes fields in r
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...
coeffs basecoeffs() const
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)
ideal idLiftStd(ideal h1, matrix *ma, tHomog hi, ideal *syz)
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)
ideal idrCopyR(ideal id, ring src_r, ring dest_r)
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)
ideal idLift(ideal mod, ideal submod, ideal *rest, BOOLEAN goodShape, BOOLEAN isSB, BOOLEAN divide, matrix *unit)
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)
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 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 currRingIsOverIntegralDomain()
static BOOLEAN jjBRACK_Ma(leftv res, leftv u, leftv v, leftv w)
int compare(const bigintmat *op) const
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...
ideal idSyzygies(ideal h1, tHomog h, intvec **w, BOOLEAN setSyzComp, BOOLEAN setRegularity, int *deg)
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)
void nKillChar(coeffs r)
undo all initialisations
static BOOLEAN jjOPPOSITE(leftv res, leftv a)
static BOOLEAN jjCONTRACT(leftv res, leftv u, leftv v)
static BOOLEAN jjHIGHCORNER(leftv res, leftv v)
struct sValCmd3 * psValCmd3
BOOLEAN idHomModule(ideal m, ideal Q, intvec **w)
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
coeffs nInitChar(n_coeffType t, void *parameter)
one-time initialisations for new coeffs in case of an error return NULL
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: