78 ch[0]=c->op;ch[1]=
'\0';
81 ::Print(
"##command %d(%s), %d args\n",
84 c->arg1.Print(
NULL,spaces+2);
88 c->arg2.Print(
NULL,spaces+2);
90 c->arg3.Print(
NULL,spaces+2);
151 ((
intvec *)d)->show(t,spaces);
156 const ring r = (
const ring)d;
299 l->m[
i].Print(
NULL,spaces+3);
311 if (bb!=
NULL) { bb->blackbox_Print(bb,d); }
312 else {
::Print(
"Print: blackbox %d(bb=NULL)",t); }
317 if ((store!=
NULL)&&(store!=
this))
448 return (
void*)n2Copy((number2)d);
450 return (
void*)p2Copy((poly2)d);
465 return (
void *)
idCopy((ideal)d);
474 return (
void *)
pCopy((poly)d);
478 return (
void *)
nCopy((number)d);
509 if (
b!=
NULL)
return b->blackbox_Copy(
b,d);
513 Warn(
"s_internalCopy: cannot copy type %s(%d)",
541 number2 n=(number2)d;
634 Print(
"currRing? ref=%d\n",
R->ref);
647 if (cmd->arg1.rtyp!=0) cmd->arg1.CleanUp(r);
648 if (cmd->arg2.rtyp!=0) cmd->arg2.CleanUp(r);
649 if (cmd->arg3.rtyp!=0) cmd->arg3.CleanUp(r);
681 if (
b!=
NULL)
b->blackbox_destroy(
b,d);
685 Warn(
"s_internalDelete: cannot delete type %s(%d)",
702 else if (e->next==
NULL)
724 void *d=source->
Data();
816 sprintf(
s,
"int(%d)",(
int)(
long)d);
821 sprintf(
s,
"%d",(
int)(
long)d);
833 s = (
char*)
omAlloc(strlen((
char*) d) + 3);
834 sprintf(
s,
"\"%s\"", (
char*) d);
847 s = (
char*)
omAlloc(strlen(ps) + 10);
848 sprintf(
s,
"%s(%s)", (t ==
POLY_CMD ?
"poly" :
"vector"), ps);
859 return n2String((number2)d,typed);
894 char* ns = (
char*)
omAlloc(strlen(
s) + 40);
895 sprintf(ns,
"matrix(ideal(%s),%d,%d)",
s,
912 char* ns = (
char*)
omAlloc(strlen(
s) + 10);
914 sprintf(ns,
"ideal(%s)",
s);
916 sprintf(ns,
"module(%s)",
s);
933 ns = (
char*)
omAlloc(strlen(
s) + 40);
934 sprintf(ns,
"intmat(intvec(%s),%d,%d)",
s,
v->rows(),
v->cols());
938 ns = (
char*)
omAlloc(strlen(
s) + 10);
939 sprintf(ns,
"intvec(%s)",
s);
954 char* ns = (
char*)
omAlloc0(strlen(
s) + 40);
955 sprintf(ns,
"bigintmat(bigintvec(%s),%d,%d)",
s, bim->
rows(), bim->
cols());
974 ns = (
char*)
omAlloc(strlen(
s) + strlen(
id) + 20);
975 sprintf(ns,
"\"%s\";%sideal(%s)",
s,(
dim == 2 ?
"\n" :
" "),
id);
979 ns = (
char*)
omAlloc(strlen(
s) + 4);
980 sprintf(ns,
"\"%s\"",
s);
999 s = (
pi->data.s.body);
1004 char* ns = (
char*)
omAlloc(strlen(
s) + 4);
1005 sprintf(ns,
"\"%s\"",
s);
1016 char* ns = (
char*)
omAlloc(strlen(
s) + 10);
1017 sprintf(ns,
"link(\"%s\")",
s);
1031 if (bb!=
NULL)
return bb->blackbox_String(bb,d);
1050 return ((
idhdl)
h->data.ustring)->typ;
1124 if ((0<
e->start)&&(
e->start<=
l->nr+1))
1126 Subexpr tmp=
l->m[
e->start-1].e;
1127 l->m[
e->start-1].e=
e->next;
1128 r=
l->m[
e->start-1].Typ();
1129 e->next=
l->m[
e->start-1].e;
1130 l->m[
e->start-1].e=tmp;
1160 if ((0<
e->start)&&(
e->start<=
l->nr+1))
1162 l->m[
e->start-1].e=
e->next;
1163 r=
l->m[
e->start-1].LTyp();
1179 static snumber2 iiNumber2Data[4];
1180 static int iiCmatrix_index=0;
1193 return ((
idhdl)
h->data.ustring)->
data.ustring;
1214 return (
void *)
A->qideal->m[0];
1217 return (
void *)
nInit(0);
1257 r=(
char *)(
long)((*iv)[
index-1]);
1265 ||(
e->next->start<1)
1266 ||(
e->next->start>iv->
cols()))
1269 Werror(
"wrong range[%d,%d] in intmat %s(%dx%d)",
index,
e->next->start,
1270 this->Name(),iv->
rows(),iv->
cols());
1281 ||(
e->next->start<1)
1282 ||(
e->next->start>
m->cols()))
1285 Werror(
"wrong range[%d,%d] in bigintmat %s(%dx%d)",
index,
e->next->start,
1286 this->Name(),
m->rows(),
m->cols());
1298 ||(
e->next->start<1)
1299 ||(
e->next->start>
m->cols()))
1302 Werror(
"wrong range[%d,%d] in matrix %s(%dx%d)",
index,
e->next->start,
1303 this->Name(),
m->rows(),
m->cols());
1307 iiNumber2Data[iiCmatrix_index].cf=
m->basecoeffs();
1309 r=(
char*)&iiNumber2Data[iiCmatrix_index];
1310 iiCmatrix_index=(iiCmatrix_index+1) % 4;
1326 r=(
char *)I->m[
index-1];
1336 if ((
index>0)&& (index<=I->rank)
1338 && ((c=
e->next->start)>0) &&(c<=
IDELEMS(I)))
1352 memcpy(
this,&tmp,
sizeof(tmp));
1377 if ((
index>0)&& (
index<=(int)strlen((
char *)d)))
1379 r[0]=*(((
char *)d)+
index-1);
1394 memcpy(
this,&tmp,
sizeof(tmp));
1414 ||(
e->next->start<1)
1418 Werror(
"wrong range[%d,%d] in matrix %s(%dx%d)",
1443 char *dd=(
char *)
l->m[
index-1].data;
1444 int j=
e->next->start-1;
1446 if ((
j>=0) && (
j<(
int)strlen(dd)))
1458 Subexpr tmp=
l->m[
index-1].e;
1460 r=(
char *)
l->m[
index-1].Data();
1485 return &(
v->attribute);
1514 if ((0>=
e->start)||(
e->start>
l->nr+1))
1518 l->m[
e->start-1].e=
e->next;
1519 leftv r=
l->m[
e->start-1].LData();
1523 return &(
l->m[
e->start-1]);
1530 leftv sleftv::LHdl()
1542 if ((0>=
e->start)||(
e->start>
l->nr+1))
1546 l->m[
e->start-1].e=
e->next;
1547 leftv r=
l->m[
e->start-1].LHdl();
1551 return &(
l->m[
e->start-1]);
1572 Warn(
"%s is no standard basis",
h->Name());
1601 if ((*
id<
' ')||(*
id>(
char)126))
1603 Print(
"wrong id :%s:\n",
id);
1610 v->req_packhdl = pa;
1620 if (!isdigit(
id[0]))
1622 if (strcmp(
id,
"basering")==0)
1636 else if (strcmp(
id,
"Current")==0)
1652 h=
v->req_packhdl->idroot->get(
id,
myynest);
1677 v->data = (
void *)
p;
1688 if (ok && (
p!=
NULL))
1715 v->data = (
void *)
nInit(0);
1753 v->data = (
void *)
nInit(0);
1810 if (strcmp(
id,
"_")==0)
1835 v->data = (
char *)
h;
1861 char *what=(
char *)(d->arg1.Data());
1879 else if (d->op==
'=')
1887 const char *n=d->arg1.name;
1888 nok=(n ==
NULL) || d->arg2.Eval();
1891 int save_typ=d->arg1.rtyp;
1893 if (d->arg1.rtyp!=
IDHDL)
1896 if (d->arg1.rtyp==
IDHDL)
1911 memcpy(&d->arg1,&t,
sizeof(
sleftv));
1913 nok=nok||
iiAssign(&d->arg1,&d->arg2);
1918 memset(&d->arg1,0,
sizeof(
sleftv));
1930 if ((toktype==
CMD_M)
1936 if (d->argc>=1) nok=d->arg1.Eval();
1937 if ((!nok) && (d->argc>=2))
1941 memcpy(d->arg1.next,&d->arg2,
sizeof(
sleftv));
1944 if ((!nok) && (d->argc==3))
1948 memcpy(d->arg1.next->next,&d->arg3,
sizeof(
sleftv));
1962 else if (d->argc==1)
1970 nok=nok||d->arg2.Eval();
1976 nok=nok||d->arg2.Eval();
1977 nok=nok||d->arg3.Eval();
1978 nok=nok||
iiExprArith3(&tmp,d->op,&d->arg1,&d->arg2,&d->arg3);
1990 memcpy(
this,&tmp,
sizeof(tmp));
2018 ideal
id=(ideal)
Data();
2020 int i=
id->ncols*
id->nrows-1;
CanonicalForm map(const CanonicalForm &primElem, const Variable &alpha, const CanonicalForm &F, const Variable &beta)
map from to such that is mapped onto
BOOLEAN yyInRingConstruction
static FORCE_INLINE char const ** n_ParameterNames(const coeffs r)
Returns a (const!) pointer to (const char*) names of parameters.
void * slInternalCopy(leftv source, const int t, void *d, Subexpr e)
const CanonicalForm int s
void jjNormalizeQRingP(poly &p)
idhdl ggetid(const char *n)
#define omCheckAddrSize(addr, size)
Class used for (list of) interpreter objects.
void killAll(const ring r)
BOOLEAN iiExprArith1(leftv res, leftv a, int op)
Compatiblity layer for legacy polynomial operations (over currRing)
ideal id_Copy(ideal h1, const ring r)
copy an ideal
BOOLEAN iiExprArith3(leftv res, int op, leftv a, leftv b, leftv c)
lists syConvRes(syStrategy syzstr, BOOLEAN toDel, int add_row_shift)
#define omCheckIf(cond, test)
void id_Delete(ideal *h, ring r)
deletes an ideal/module/matrix
intvec * ivCopy(const intvec *o)
void sBucketPrint(sBucket_pt bucket)
BOOLEAN iiExprArithM(leftv res, leftv a, int op)
void syPrint(syStrategy syzstr, const char *currRingName)
procinfov piCopy(procinfov pi)
static BOOLEAN rField_is_GF(const ring r)
const char * slStatus(si_link l, const char *request)
char * lString(lists l, BOOLEAN typed, int dim)
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy
BOOLEAN piKill(procinfov pi)
void Print(leftv store=NULL, int spaces=0)
Called by type_cmd (e.g. "r;") or as default in jPRINT.
#define SMATELEM(A, i, j, R)
static poly p_Copy(poly p, const ring r)
returns a copy of p
void iiWriteMatrix(matrix im, const char *n, int dim, const ring r, int spaces)
set spaces to zero by default
char * String(void *d=NULL, BOOLEAN typed=FALSE, int dim=1)
Called for conversion to string (used by string(..), write(..),..)
static FORCE_INLINE int n_NumberOfParameters(const coeffs r)
Returns the number of parameters.
void nfShowMipo(const coeffs r)
Show the mininimal polynom.... NOTE: this is used by char * sleftv::String(void *d,...
int r_IsRingVar(const char *n, char **names, int N)
static si_link slCopy(si_link l)
static FORCE_INLINE BOOLEAN nCoeff_is_algExt(const coeffs r)
TRUE iff r represents an algebraic extension field.
const char * iiTwoOps(int t)
const char * piProcinfo(procinfov pi, const char *request)
bigintmat * bimCopy(const bigintmat *b)
same as copy constructor - apart from it being able to accept NULL as input
#define omFreeBinAddr(addr)
The main handler for Singular numbers which are suitable for Singular polynomials.
void StringSetS(const char *st)
void StringAppendS(const char *st)
static FORCE_INLINE void n_Write(number n, const coeffs r, const BOOLEAN bShortOut=TRUE)
complex floating point (GMP) numbers
static FORCE_INLINE char * nCoeffName(const coeffs cf)
void ipPrint_MA0(matrix m, const char *name)
#define n_Test(a, r)
BOOLEAN n_Test(number a, const coeffs r)
void s_internalDelete(const int t, void *d, const ring r)
#define pIsConstant(p)
like above, except that Comp might be != 0
package paCopy(package pack)
BOOLEAN assumeStdFlag(leftv h)
void PrintS(const char *s)
matrix id_Module2Matrix(ideal mod, const ring R)
void rWrite(ring r, BOOLEAN details)
static FORCE_INLINE BOOLEAN nCoeff_is_GF(const coeffs r)
static void * s_internalCopy(const int t, void *d)
static int index(p_Length length, p_Ord ord)
#define BIMATELEM(M, I, J)
int iiDeclCommand(leftv sy, leftv name, int lev, int t, idhdl *root, BOOLEAN isring, BOOLEAN init_b)
static void p_Delete(poly *p, const ring r)
#define omGetSpecBin(size)
void paPrint(const char *n, package p)
BOOLEAN iiCheckRing(int i)
const Variable & v
< [in] a sqrfree bivariate poly
void jjNormalizeQRingId(leftv I)
BOOLEAN iiMake_proc(idhdl pn, package pack, leftv sl)
static FORCE_INLINE number n_Copy(number n, const coeffs r)
return a copy of 'n'
syStrategy syCopy(syStrategy syzstr)
const char * Tok2Cmdname(int tok)
void killhdl(idhdl h, package proot)
char * String()
IO: String returns a singular string containing the matrix, needs freeing afterwards.
char * sBucketString(sBucket_pt bucket)
void sBucketDeleteAndDestroy(sBucket_pt *bucket_pt)
void CleanUp(ring r=currRing)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
poly sBucketPeek(sBucket_pt b)
static void pLmFree(poly p)
frees the space of the monomial m, assumes m != NULL coef is not freed, m is not advanced
matrix mp_Copy(matrix a, const ring r)
copies matrix a (from ring r to r)
map maCopy(map theMap, const ring r)
#define omCheckAddr(addr)
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete 'p'
static FORCE_INLINE char * nCoeffString(const coeffs cf)
TODO: make it a virtual method of coeffs, together with: Decompose & Compose, rParameter & rPar.
#define omFreeBin(addr, bin)
static char * slString(si_link l)
#define IMATELEM(M, I, J)
char * iiStringMatrix(matrix im, int dim, const ring r, char ch)
BOOLEAN iiExprArith2(leftv res, leftv a, int op, leftv b, BOOLEAN proccall)
void syMake(leftv v, const char *id, package pa)
BOOLEAN lRingDependend(lists L)
void nKillChar(coeffs r)
undo all initialisations
void Werror(const char *fmt,...)
void syKillComputation(syStrategy syzstr, ring r=currRing)
void PrintNSpaces(const int n)
static omBin size_two_bin
#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
BOOLEAN iiAssign(leftv l, leftv r, BOOLEAN toplevel)
sBucket_pt sBucketCopy(const sBucket_pt bucket)
Copy sBucket non-intrusive!!!