72 ch[0]=c->op;ch[1]=
'\0';
75 ::Print(
"##command %d(%s), %d args\n",
78 c->arg1.Print(
NULL,spaces+2);
82 c->arg2.Print(
NULL,spaces+2);
84 c->arg3.Print(
NULL,spaces+2);
145 ((
intvec *)d)->show(t,spaces);
150 const ring r = (ring)d;
293 l->m[
i].Print(
NULL,spaces+3);
305 if (bb!=
NULL) { bb->blackbox_Print(bb,d); }
306 else {
::Print(
"Print: blackbox %d(bb=NULL)",t); }
311 if ((store!=
NULL)&&(store!=
this))
442 return (
void*)n2Copy((number2)d);
444 return (
void*)p2Copy((poly2)d);
459 return (
void *)
idCopy((ideal)d);
468 return (
void *)
pCopy((poly)d);
472 return (
void *)
nCopy((number)d);
503 if (
b!=
NULL)
return b->blackbox_Copy(
b,d);
507 Warn(
"s_internalCopy: cannot copy type %s(%d)",
535 number2 n=(number2)d;
628 Print(
"currRing? ref=%d\n",
R->ref);
641 if (cmd->arg1.rtyp!=0) cmd->arg1.CleanUp(r);
642 if (cmd->arg2.rtyp!=0) cmd->arg2.CleanUp(r);
643 if (cmd->arg3.rtyp!=0) cmd->arg3.CleanUp(r);
675 if (
b!=
NULL)
b->blackbox_destroy(
b,d);
679 Warn(
"s_internalDelete: cannot delete type %s(%d)",
689 void *d=source->
Data();
715 WerrorS(
"object from another ring");
793 snprintf(
s,len,
"int(%ld)",(
long)d);
803 snprintf(
s,len,
"%ld",(
long)d);
815 size_t len=strlen((
char*) d) + 3;
817 snprintf(
s,len,
"\"%s\"", (
char*) d);
830 size_t len=strlen(ps) + 10;
832 snprintf(
s,len,
"%s(%s)", (t ==
POLY_CMD ?
"poly" :
"vector"), ps);
843 return n2String((number2)d,typed);
878 size_t len=strlen(
s) + 40;
879 char* ns = (
char*)
omAlloc(len);
880 snprintf(ns,len,
"matrix(ideal(%s),%d,%d)",
s,
897 size_t len=strlen(
s) + 10;
898 char* ns = (
char*)
omAlloc(len);
900 snprintf(ns,len,
"ideal(%s)",
s);
902 snprintf(ns,len,
"module(%s)",
s);
919 size_t len=strlen(
s) + 40;
921 snprintf(ns,len,
"intmat(intvec(%s),%d,%d)",
s,
v->rows(),
v->cols());
925 size_t len=strlen(
s) + 10;
927 snprintf(ns,len,
"intvec(%s)",
s);
942 size_t len=strlen(
s) + 40;
943 char* ns = (
char*)
omAlloc(len);
944 snprintf(ns,len,
"bigintmat(bigintvec(%s),%d,%d)",
s, bim->
rows(), bim->
cols());
962 size_t len=strlen(
s) + strlen(
id) + 20;
964 snprintf(ns,len,
"\"%s\";%sideal(%s)",
s,(
dim == 2 ?
"\n" :
" "),
id);
968 size_t len=strlen(
s) + 4;
970 snprintf(ns,len,
"\"%s\"",
s);
989 s = (
pi->data.s.body);
994 size_t len=strlen(
s) + 4;
995 char* ns = (
char*)
omAlloc(len);
996 snprintf(ns,len,
"\"%s\"",
s);
1006 size_t len=strlen(
s) + 10;
1007 char* ns = (
char*)
omAlloc(len);
1008 snprintf(ns,len,
"link(\"%s\")",
s);
1022 if (bb!=
NULL)
return bb->blackbox_String(bb,d);
1041 return ((
idhdl)
h->data.ustring)->typ;
1115 if ((0<
e->start)&&(
e->start<=
l->nr+1))
1117 Subexpr tmp=
l->m[
e->start-1].e;
1118 l->m[
e->start-1].e=
e->next;
1119 r=
l->m[
e->start-1].Typ();
1120 e->next=
l->m[
e->start-1].e;
1121 l->m[
e->start-1].e=tmp;
1151 if ((0<
e->start)&&(
e->start<=
l->nr+1))
1153 l->m[
e->start-1].e=
e->next;
1154 r=
l->m[
e->start-1].LTyp();
1180 WerrorS(
"object from another ring");
1190 return ((
idhdl)
h->data.ustring)->
data.ustring;
1211 return (
void *)
A->qideal->m[0];
1214 return (
void *)
nInit(0);
1254 r=(
char *)(
long)((*iv)[
index-1]);
1262 ||(
e->next->start<1)
1263 ||(
e->next->start>iv->
cols()))
1266 Werror(
"wrong range[%d,%d] in intmat %s(%dx%d)",
index,
e->next->start,
1267 this->Name(),iv->
rows(),iv->
cols());
1278 ||(
e->next->start<1)
1279 ||(
e->next->start>
m->cols()))
1282 Werror(
"wrong range[%d,%d] in bigintmat %s(%dx%d)",
index,
e->next->start,
1283 this->Name(),
m->rows(),
m->cols());
1295 ||(
e->next->start<1)
1296 ||(
e->next->start>
m->cols()))
1299 Werror(
"wrong range[%d,%d] in matrix %s(%dx%d)",
index,
e->next->start,
1300 this->Name(),
m->rows(),
m->cols());
1304 iiNumber2Data[iiCmatrix_index].cf=
m->basecoeffs();
1306 r=(
char*)&iiNumber2Data[iiCmatrix_index];
1307 iiCmatrix_index=(iiCmatrix_index+1) % 4;
1323 r=(
char *)I->m[
index-1];
1335 && ((c=
e->next->start)>0) &&(c<=
IDELEMS(I)))
1349 memcpy(
this,&tmp,
sizeof(tmp));
1374 if ((
index>0)&& (
index<=(int)strlen((
char *)d)))
1376 r[0]=*(((
char *)d)+
index-1);
1391 memcpy(
this,&tmp,
sizeof(tmp));
1411 ||(
e->next->start<1)
1415 Werror(
"wrong range[%d,%d] in matrix %s(%dx%d)",
1440 char *dd=(
char *)
l->m[
index-1].data;
1441 int j=
e->next->start-1;
1443 if ((
j>=0) && (
j<(
int)strlen(dd)))
1455 Subexpr tmp=
l->m[
index-1].e;
1457 r=(
char *)
l->m[
index-1].Data();
1482 return &(
v->attribute);
1511 if ((0>=
e->start)||(
e->start>
l->nr+1))
1515 l->m[
e->start-1].e=
e->next;
1516 leftv r=
l->m[
e->start-1].LData();
1520 return &(
l->m[
e->start-1]);
1539 if ((0>=
e->start)||(
e->start>
l->nr+1))
1543 l->m[
e->start-1].e=
e->next;
1544 leftv r=
l->m[
e->start-1].LHdl();
1548 return &(
l->m[
e->start-1]);
1569 Warn(
"%s is no standard basis",
h->Name());
1599 if ((*
id<
' ')||(*
id>(
char)126))
1601 Print(
"wrong id :%s:\n",
id);
1608 v->req_packhdl =
pa;
1628 else if ((
id[0]!=
'-')&&(
id[0]>=
'@' ))
1630 if (strcmp(
id,
"basering")==0)
1644 else if (strcmp(
id,
"Current")==0)
1660 h=
v->req_packhdl->idroot->get(
id,
myynest);
1686 v->data = (
void *)
p;
1697 if (ok && (
p!=
NULL))
1719 if (
id[0]==
'-') {
i=1; }
1720 while(isdigit(
id[
i]))
i++;
1726 if (strcmp(tmp,
id)!=0)
1735 v->data=(
void*)(
long)
j;
1752 v->data = (
void *)
nInit(0);
1772 #ifdef HAVE_SHIFTBBA
1799 v->data = (
void *)
nInit(0);
1856 if (strcmp(
id,
"_")==0)
1881 v->data = (
char *)
h;
1887 if (!isdigit(
id[0]))
1889 Print(
"non-digit:%s\n",
id);
1897 if ((*
id<
' ')||(*
id>(
char)126))
1899 Print(
"wrong id :%s:\n",
id);
1916 v->data = (
void *)
nInit(0);
1933 #ifdef HAVE_SHIFTBBA
1955 if (strcmp(
id,
"_")==0)
1990 char *what=(
char *)(d->arg1.Data());
2008 else if (d->op==
'=')
2016 const char *n=d->arg1.name;
2017 nok=(n ==
NULL) || d->arg2.Eval();
2020 int save_typ=d->arg1.rtyp;
2022 if (d->arg1.rtyp!=
IDHDL)
2025 if (d->arg1.rtyp==
IDHDL)
2040 memcpy(&d->arg1,&t,
sizeof(
sleftv));
2042 nok=nok||
iiAssign(&d->arg1,&d->arg2);
2059 if ((toktype==
CMD_M)
2065 if (d->argc>=1) nok=d->arg1.Eval();
2066 if ((!nok) && (d->argc>=2))
2070 memcpy(d->arg1.next,&d->arg2,
sizeof(
sleftv));
2073 if ((!nok) && (d->argc==3))
2077 memcpy(d->arg1.next->next,&d->arg3,
sizeof(
sleftv));
2091 else if (d->argc==1)
2099 nok=nok||d->arg2.Eval();
2105 nok=nok||d->arg2.Eval();
2106 nok=nok||d->arg3.Eval();
2107 nok=nok||
iiExprArith3(&tmp,d->op,&d->arg1,&d->arg2,&d->arg3);
2119 memcpy(
this,&tmp,
sizeof(tmp));
2147 ideal
id=(ideal)
Data();
2149 int i=
id->ncols*
id->nrows-1;
bigintmat * bimCopy(const bigintmat *b)
same as copy constructor - apart from it being able to accept NULL as input
#define BIMATELEM(M, I, J)
blackbox * getBlackboxStuff(const int t)
return the structure to the type given by t
CanonicalForm map(const CanonicalForm &primElem, const Variable &alpha, const CanonicalForm &F, const Variable &beta)
map from to such that is mapped onto
char * String()
IO: String returns a singular string containing the matrix, needs freeing afterwards.
void killAll(const ring r)
Class used for (list of) interpreter objects.
char * String(void *d=NULL, BOOLEAN typed=FALSE, int dim=1)
Called for conversion to string (used by string(..), write(..),..)
void CleanUp(ring r=currRing)
void Print(leftv store=NULL, int spaces=0)
Called by type_cmd (e.g. "r;") or as default in jPRINT.
static FORCE_INLINE number n_Copy(number n, const coeffs r)
return a copy of 'n'
static FORCE_INLINE BOOLEAN nCoeff_is_GF(const coeffs r)
#define n_Test(a, r)
BOOLEAN n_Test(number a, const coeffs r)
@ n_long_C
complex floating point (GMP) numbers
static FORCE_INLINE char * nCoeffString(const coeffs cf)
TODO: make it a virtual method of coeffs, together with: Decompose & Compose, rParameter & rPar.
static FORCE_INLINE char const ** n_ParameterNames(const coeffs r)
Returns a (const!) pointer to (const char*) names of parameters.
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete 'p'
static FORCE_INLINE char * nCoeffName(const coeffs cf)
static FORCE_INLINE int n_NumberOfParameters(const coeffs r)
Returns the number of parameters.
static FORCE_INLINE void n_Write(number n, const coeffs r, const BOOLEAN bShortOut=TRUE)
static FORCE_INLINE BOOLEAN nCoeff_is_algExt(const coeffs r)
TRUE iff r represents an algebraic extension field.
static FORCE_INLINE const char * n_Read(const char *s, number *a, const coeffs r)
!!! Recommendation: This method is too cryptic to be part of the user- !!! interface....
void nKillChar(coeffs r)
undo all initialisations
static BOOLEAN pa(leftv res, leftv args)
const CanonicalForm int s
const Variable & v
< [in] a sqrfree bivariate poly
void WerrorS(const char *s)
VAR char my_yylinebuf[80]
void nfShowMipo(const coeffs r)
Show the mininimal polynom.... NOTE: this is used by char * sleftv::String(void *d,...
const char * iiTwoOps(int t)
const char * Tok2Cmdname(int tok)
VAR BOOLEAN yyInRingConstruction
ideal id_Copy(ideal h1, const ring r)
copy an ideal
intvec * ivCopy(const intvec *o)
#define IMATELEM(M, I, J)
BOOLEAN iiExprArith2(leftv res, leftv a, int op, leftv b, BOOLEAN proccall)
BOOLEAN iiExprArith1(leftv res, leftv a, int op)
BOOLEAN iiExprArithM(leftv res, leftv a, int op)
BOOLEAN iiExprArith3(leftv res, int op, leftv a, leftv b, leftv c)
void jjNormalizeQRingId(leftv I)
BOOLEAN iiAssign(leftv l, leftv r, BOOLEAN toplevel)
VAR omBin sip_command_bin
idhdl ggetid(const char *n)
void killhdl(idhdl h, package proot)
BOOLEAN piKill(procinfov pi)
const char * piProcinfo(procinfov pi, const char *request)
#define jjNormalizeQRingP(p)
package paCopy(package pack)
BOOLEAN iiMake_proc(idhdl pn, package pack, leftv args)
INST_VAR sleftv iiRETURNEXPR
void ipPrint_MA0(matrix m, const char *name)
int iiDeclCommand(leftv sy, leftv name, int lev, int t, idhdl *root, BOOLEAN isring, BOOLEAN init_b)
BOOLEAN iiCheckRing(int i)
lists syConvRes(syStrategy syzstr, BOOLEAN toDel, int add_row_shift)
void paPrint(const char *n, package p)
char * lString(lists l, BOOLEAN typed, int dim)
BOOLEAN lRingDependend(lists L)
map maCopy(map theMap, const ring r)
char * iiStringMatrix(matrix im, int dim, const ring r, char ch)
matrix mp_Copy(matrix a, const ring r)
copies matrix a (from ring r to r)
void iiWriteMatrix(matrix im, const char *n, int dim, const ring r, int spaces)
set spaces to zero by default
#define MATELEM(mat, i, j)
1-based access to matrix
#define SMATELEM(A, i, j, R)
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy
The main handler for Singular numbers which are suitable for Singular polynomials.
#define omCheckAddr(addr)
#define omCheckIf(cond, test)
#define omCheckAddrSize(addr, size)
#define omFreeBin(addr, bin)
#define omFreeBinAddr(addr)
#define omGetSpecBin(size)
static int index(p_Length length, p_Ord ord)
static void p_LmDelete(poly p, const ring r)
static void p_Delete(poly *p, const ring r)
static poly p_Copy(poly p, const ring r)
returns a copy of p
static long p_Totaldegree(poly p, const ring r)
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Compatibility layer for legacy polynomial operations (over currRing)
#define pIsConstant(p)
like above, except that Comp must be 0
static void pLmFree(poly p)
frees the space of the monomial m, assumes m != NULL coef is not freed, m is not advanced
#define pCopy(p)
return a copy of the poly
void StringSetS(const char *st)
void StringAppendS(const char *st)
void PrintNSpaces(const int n)
void PrintS(const char *s)
void Werror(const char *fmt,...)
void rWrite(ring r, BOOLEAN details)
int r_IsRingVar(const char *n, char **names, int N)
static BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
static ring rIncRefCnt(ring r)
static BOOLEAN rField_is_GF(const ring r)
void sBucketPrint(sBucket_pt bucket)
char * sBucketString(sBucket_pt bucket)
void sBucketDeleteAndDestroy(sBucket_pt *bucket_pt)
sBucket_pt sBucketCopy(const sBucket_pt bucket)
Copy sBucket non-intrusive!!!
poly sBucketPeek(sBucket_pt b)
const char * slStatus(si_link l, const char *request)
static si_link slCopy(si_link l)
static char * slString(si_link l)
void id_Delete(ideal *h, ring r)
deletes an ideal/module/matrix
matrix id_Module2Matrix(ideal mod, const ring R)
void syMake(leftv v, const char *id, package pa)
void s_internalDelete(const int t, void *d, const ring r)
STATIC_VAR omBin size_two_bin
INST_VAR sleftv sLastPrinted
static void * s_internalCopy(const int t, void *d)
BOOLEAN assumeStdFlag(leftv h)
void syMakeMonom(leftv v, const char *id)
procinfov piCopy(procinfov pi)
syStrategy syCopy(syStrategy syzstr)
void syKillComputation(syStrategy syzstr, ring r=currRing)
void syPrint(syStrategy syzstr, const char *currRingName)