81 ch[0]=c->op;ch[1]=
'\0';
84 ::Print(
"##command %d(%s), %d args\n",
87 c->arg1.Print(
NULL,spaces+2);
91 c->arg2.Print(
NULL,spaces+2);
93 c->arg3.Print(
NULL,spaces+2);
100 const char *n=
Name();
136 ((
intvec *)d)->show(t,spaces);
141 const ring
r = (
const ring)d;
277 l->m[
i].Print(
NULL,spaces+3);
289 if (bb!=
NULL) { bb->blackbox_Print(bb,d); }
290 else {
::Print(
"Print: blackbox %d(bb=NULL)",t); }
295 if ((store!=
NULL)&&(store!=
this))
426 return (
void*)n2Copy((number2)d);
428 return (
void*)p2Copy((poly2)d);
440 return (
void *)
idCopy((ideal)d);
453 return (
void *)
nCopy((number)d);
484 if (
b!=
NULL)
return b->blackbox_Copy(
b,d);
488 Warn(
"s_internalCopy: cannot copy type %s(%d)",
516 number2 n=(number2)d;
602 Print(
"currRing? ref=%d\n",
R->ref);
615 if (cmd->arg1.rtyp!=0) cmd->arg1.CleanUp(
r);
616 if (cmd->arg2.rtyp!=0) cmd->arg2.CleanUp(
r);
617 if (cmd->arg3.rtyp!=0) cmd->arg3.CleanUp(
r);
649 if (
b!=
NULL)
b->blackbox_destroy(
b,d);
653 Warn(
"s_internalDelete: cannot delete type %s(%d)",
670 else if (e->next==
NULL)
692 void *d=source->
Data();
778 sprintf(
s,
"int(%d)",(
int)(
long)d);
783 sprintf(
s,
"%d",(
int)(
long)d);
795 s = (
char*)
omAlloc(strlen((
char*) d) + 3);
796 sprintf(
s,
"\"%s\"", (
char*) d);
809 s = (
char*)
omAlloc(strlen(ps) + 10);
810 sprintf(
s,
"%s(%s)", (t ==
POLY_CMD ?
"poly" :
"vector"), ps);
821 return n2String((number2)d,typed);
855 char* ns = (
char*)
omAlloc(strlen(
s) + 40);
856 sprintf(ns,
"matrix(ideal(%s),%d,%d)",
s,
872 char* ns = (
char*)
omAlloc(strlen(
s) + 10);
873 sprintf(ns,
"%s(%s)", (t==
MODUL_CMD ?
"module" :
"ideal"),
s);
889 ns = (
char*)
omAlloc(strlen(
s) + 40);
890 sprintf(ns,
"intmat(intvec(%s),%d,%d)",
s,
v->rows(),
v->cols());
894 ns = (
char*)
omAlloc(strlen(
s) + 10);
895 sprintf(ns,
"intvec(%s)",
s);
910 char* ns = (
char*)
omAlloc0(strlen(
s) + 40);
911 sprintf(ns,
"bigintmat(bigintvec(%s),%d,%d)",
s, bim->
rows(), bim->
cols());
930 ns = (
char*)
omAlloc(strlen(
s) + strlen(
id) + 20);
931 sprintf(ns,
"\"%s\";%sideal(%s)",
s,(
dim == 2 ?
"\n" :
" "),
id);
935 ns = (
char*)
omAlloc(strlen(
s) + 4);
936 sprintf(ns,
"\"%s\"",
s);
955 s = (
pi->data.s.body);
960 char* ns = (
char*)
omAlloc(strlen(
s) + 4);
961 sprintf(ns,
"\"%s\"",
s);
972 char* ns = (
char*)
omAlloc(strlen(
s) + 10);
973 sprintf(ns,
"link(\"%s\")",
s);
987 if (bb!=
NULL)
return bb->blackbox_String(bb,d);
1006 return ((
idhdl)
h->data.ustring)->typ;
1079 if ((0<
e->start)&&(
e->start<=
l->nr+1))
1081 Subexpr tmp=
l->m[
e->start-1].e;
1082 l->m[
e->start-1].e=
e->next;
1083 r=
l->m[
e->start-1].Typ();
1084 e->next=
l->m[
e->start-1].e;
1085 l->m[
e->start-1].e=tmp;
1115 if ((0<
e->start)&&(
e->start<=
l->nr+1))
1117 l->m[
e->start-1].e=
e->next;
1118 r=
l->m[
e->start-1].LTyp();
1134 static snumber2 iiNumber2Data[4];
1135 static int iiCmatrix_index=0;
1148 return ((
idhdl)
h->data.ustring)->
data.ustring;
1169 return (
void *)
A->qideal->m[0];
1172 return (
void *)
currRing->cf->nNULL;
1212 r=(
char *)(
long)((*iv)[
index-1]);
1220 ||(
e->next->start<1)
1221 ||(
e->next->start>iv->
cols()))
1224 Werror(
"wrong range[%d,%d] in intmat %s(%dx%d)",
index,
e->next->start,
1225 this->Name(),iv->
rows(),iv->
cols());
1236 ||(
e->next->start<1)
1237 ||(
e->next->start>
m->cols()))
1240 Werror(
"wrong range[%d,%d] in bigintmat %s(%dx%d)",
index,
e->next->start,
1241 this->Name(),
m->rows(),
m->cols());
1253 ||(
e->next->start<1)
1254 ||(
e->next->start>
m->cols()))
1257 Werror(
"wrong range[%d,%d] in matrix %s(%dx%d)",
index,
e->next->start,
1258 this->Name(),
m->rows(),
m->cols());
1262 iiNumber2Data[iiCmatrix_index].cf=
m->basecoeffs();
1264 r=(
char*)&iiNumber2Data[iiCmatrix_index];
1265 iiCmatrix_index=(iiCmatrix_index+1) % 4;
1293 if ((
index>0)&& (
index<=(int)strlen((
char *)d)))
1295 r[0]=*(((
char *)d)+
index-1);
1310 memcpy(
this,&tmp,
sizeof(tmp));
1330 ||(
e->next->start<1)
1334 Werror(
"wrong range[%d,%d] in matrix %s(%dx%d)",
1359 char *dd=(
char *)
l->m[
index-1].data;
1360 int j=
e->next->start-1;
1362 if ((
j>=0) && (
j<(
int)strlen(dd)))
1374 Subexpr tmp=
l->m[
index-1].e;
1376 r=(
char *)
l->m[
index-1].Data();
1401 return &(
v->attribute);
1430 if ((0>=
e->start)||(
e->start>
l->nr+1))
1434 l->m[
e->start-1].e=
e->next;
1439 return &(
l->m[
e->start-1]);
1446 leftv sleftv::LHdl()
1458 if ((0>=
e->start)||(
e->start>
l->nr+1))
1462 l->m[
e->start-1].e=
e->next;
1467 return &(
l->m[
e->start-1]);
1488 Warn(
"%s is no standard basis",
h->Name());
1517 if ((*
id<
' ')||(*
id>(
char)126))
1519 Print(
"wrong id :%s:\n",
id);
1526 v->req_packhdl = pa;
1536 if (!isdigit(
id[0]))
1538 if (strcmp(
id,
"basering")==0)
1552 else if (strcmp(
id,
"Current")==0)
1568 h=
v->req_packhdl->idroot->get(
id,
myynest);
1593 v->data = (
void *)
p;
1604 if (ok && (
p!=
NULL))
1631 v->data = (
void *)
nInit(0);
1669 v->data = (
void *)
nInit(0);
1731 if (strcmp(
id,
"_")==0)
1756 v->data = (
char *)
h;
1782 char *what=(
char *)(d->arg1.Data());
1800 else if (d->op==
'=')
1808 const char *n=d->arg1.name;
1809 nok=(n ==
NULL) || d->arg2.Eval();
1812 int save_typ=d->arg1.rtyp;
1814 if (d->arg1.rtyp!=
IDHDL)
1817 if (d->arg1.rtyp==
IDHDL)
1832 memcpy(&d->arg1,&t,
sizeof(
sleftv));
1834 nok=nok||
iiAssign(&d->arg1,&d->arg2);
1839 memset(&d->arg1,0,
sizeof(
sleftv));
1851 if ((toktype==
CMD_M)
1857 if (d->argc>=1) nok=d->arg1.Eval();
1858 if ((!nok) && (d->argc>=2))
1862 memcpy(d->arg1.next,&d->arg2,
sizeof(
sleftv));
1865 if ((!nok) && (d->argc==3))
1869 memcpy(d->arg1.next->next,&d->arg3,
sizeof(
sleftv));
1883 else if (d->argc==1)
1891 nok=nok||d->arg2.Eval();
1897 nok=nok||d->arg2.Eval();
1898 nok=nok||d->arg3.Eval();
1899 nok=nok||
iiExprArith3(&tmp,d->op,&d->arg1,&d->arg2,&d->arg3);
1911 memcpy(
this,&tmp,
sizeof(tmp));
1939 ideal
id=(ideal)
Data();
1941 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)
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)
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.
static poly p_Copy(poly p, const ring r)
returns a copy of p
real floating point (GMP) numbers
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.
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
void nfShowMipo(const coeffs r)
Show the mininimal polynom.... NOTE: this is used by char * sleftv::String(void *d, BOOLEAN typed, int dim) (from Singular/subexpr.cc) for printing minpoly.
int r_IsRingVar(const char *n, char **names, int N)
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)
#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)
char * slString(si_link l)
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.
void CleanUp(ring r=currRing)
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)
#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
si_link slCopy(si_link l)
#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)