82 ch[0]=c->op;ch[1]=
'\0';
85 ::Print(
"##command %d(%s), %d args\n",
88 c->arg1.Print(
NULL,spaces+2);
92 c->arg2.Print(
NULL,spaces+2);
94 c->arg3.Print(
NULL,spaces+2);
101 const char *n=
Name();
139 ((
intvec *)d)->show(t,spaces);
144 const ring
r = (
const ring)d;
292 if (bb!=
NULL) { bb->blackbox_Print(bb,d); }
293 else {
::Print(
"Print: blackbox %d(bb=NULL)",t); }
298 if ((store!=
NULL)&&(store!=
this))
431 return (
void*)n2Copy((number2)d);
433 return (
void*)p2Copy((poly2)d);
445 return (
void *)
idCopy((ideal)d);
458 return (
void *)
nCopy((number)d);
489 if (b!=
NULL)
return b->blackbox_Copy(b,d);
493 Warn(
"s_internalCopy: cannot copy type %s(%d)",
523 number2 n=(number2)d;
609 Print(
"currRing? ref=%d\n",R->ref);
622 if (cmd->arg1.rtyp!=0) cmd->arg1.CleanUp(r);
623 if (cmd->arg2.rtyp!=0) cmd->arg2.CleanUp(r);
624 if (cmd->arg3.rtyp!=0) cmd->arg3.CleanUp(r);
656 if (b!=
NULL) b->blackbox_destroy(b,d);
660 Warn(
"s_internalDelete: cannot delete type %s(%d)",
677 else if (e->next==
NULL)
699 void *d=source->
Data();
728 x=(
void *)
p_Copy(A->qideal->m[0], A);
764 if (((
command)data)->arg1.rtyp!=0)
766 if (((
command)data)->arg2.rtyp!=0)
768 if (((
command)data)->arg3.rtyp==0)
785 sprintf(s,
"int(%d)",(
int)(
long)d);
790 sprintf(s,
"%d",(
int)(
long)d);
802 s = (
char*)
omAlloc(strlen((
char*) d) + 3);
803 sprintf(s,
"\"%s\"", (
char*) d);
816 s = (
char*)
omAlloc(strlen(ps) + 10);
817 sprintf(s,
"%s(%s)", (t ==
POLY_CMD ?
"poly" :
"vector"), ps);
830 return n2String((number2)d,typed);
864 char* ns = (
char*)
omAlloc(strlen(s) + 40);
865 sprintf(ns,
"matrix(ideal(%s),%d,%d)", s,
881 char* ns = (
char*)
omAlloc(strlen(s) + 10);
882 sprintf(ns,
"%s(%s)", (t==
MODUL_CMD ?
"module" :
"ideal"), s);
898 ns = (
char*)
omAlloc(strlen(s) + 40);
899 sprintf(ns,
"intmat(intvec(%s),%d,%d)", s, v->
rows(), v->
cols());
903 ns = (
char*)
omAlloc(strlen(s) + 10);
904 sprintf(ns,
"intvec(%s)", s);
919 char* ns = (
char*)
omAlloc0(strlen(s) + 40);
920 sprintf(ns,
"bigintmat(bigintvec(%s),%d,%d)", s, bim->
rows(), bim->
cols());
939 ns = (
char*)
omAlloc(strlen(s) + strlen(
id) + 20);
940 sprintf(ns,
"\"%s\";%sideal(%s)", s,(dim == 2 ?
"\n" :
" "),
id);
944 ns = (
char*)
omAlloc(strlen(s) + 4);
945 sprintf(ns,
"\"%s\"", s);
964 s = (pi->
data.s.body);
969 char* ns = (
char*)
omAlloc(strlen(s) + 4);
970 sprintf(ns,
"\"%s\"", s);
981 char* ns = (
char*)
omAlloc(strlen(s) + 10);
982 sprintf(ns,
"link(\"%s\")", s);
996 if (bb!=
NULL)
return bb->blackbox_String(bb,d);
1088 if ((0<
e->start)&&(
e->start<=l->
nr+1))
1090 Subexpr tmp=l->
m[
e->start-1].
e;
1091 l->
m[
e->start-1].
e=
e->next;
1092 r=l->
m[
e->start-1].
Typ();
1093 e->next=l->
m[
e->start-1].
e;
1094 l->
m[
e->start-1].
e=tmp;
1124 if ((0<
e->start)&&(
e->start<=l->
nr+1))
1126 l->
m[
e->start-1].
e=
e->next;
1127 r=l->
m[
e->start-1].
LTyp();
1143 static snumber2 iiNumber2Data[4];
1144 static int iiCmatrix_index=0;
1178 return (
void *)A->qideal->m[0];
1181 return (
void *)
currRing->cf->nNULL;
1215 if ((index<1)||(index>iv->
length()))
1218 Werror(
"wrong range[%d] in intvec %s(%d)",index,this->
Name(),iv->
length());
1221 r=(
char *)(
long)((*iv)[index-1]);
1228 ||(index>iv->
rows())
1229 ||(
e->next->start<1)
1230 ||(
e->next->start>iv->
cols()))
1233 Werror(
"wrong range[%d,%d] in intmat %s(%dx%d)",index,
e->next->start,
1234 this->Name(),iv->
rows(),iv->
cols());
1237 r=(
char *)(
long)(
IMATELEM((*iv),index,
e->next->start));
1245 ||(
e->next->start<1)
1246 ||(
e->next->start>m->
cols()))
1249 Werror(
"wrong range[%d,%d] in bigintmat %s(%dx%d)",index,
e->next->start,
1262 ||(
e->next->start<1)
1263 ||(
e->next->start>m->
cols()))
1266 Werror(
"wrong range[%d,%d] in matrix %s(%dx%d)",index,
e->next->start,
1271 iiNumber2Data[iiCmatrix_index].cf=m->
basecoeffs();
1272 iiNumber2Data[iiCmatrix_index].n=
BIMATELEM((*m),index,
e->next->start);
1273 r=(
char*)&iiNumber2Data[iiCmatrix_index];
1274 iiCmatrix_index=(iiCmatrix_index+1) % 4;
1284 if ((index<1)||(index>
IDELEMS(I)))
1290 r=(
char *)I->m[index-1];
1302 if ((index>0)&& (index<=(int)strlen((
char *)d)))
1304 r[0]=*(((
char *)d)+index-1);
1319 memcpy(
this,&tmp,
sizeof(tmp));
1339 ||(
e->next->start<1)
1343 Werror(
"wrong range[%d,%d] in matrix %s(%dx%d)",
1344 index,
e->next->start,
1362 if ((0<index)&&(index<=l->
nr+1))
1368 char *dd=(
char *)l->
m[index-1].
data;
1369 int j=
e->next->start-1;
1371 if ((
j>=0) && (
j<(
int)strlen(dd)))
1383 Subexpr tmp=l->
m[index-1].
e;
1384 l->
m[index-1].
e=
e->next;
1385 r=(
char *)l->
m[index-1].
Data();
1386 e->next=l->
m[index-1].
e;
1387 l->
m[index-1].
e=tmp;
1391 Werror(
"wrong range[%d] in list %s(%d)",index,this->
Name(),l->
nr+1);
1439 if ((0>=
e->start)||(
e->start>l->
nr+1))
1443 l->
m[
e->start-1].
e=
e->next;
1448 return &(l->
m[
e->start-1]);
1455 leftv sleftv::LHdl()
1467 if ((0>=
e->start)||(
e->start>l->
nr+1))
1471 l->
m[
e->start-1].
e=
e->next;
1476 return &(l->
m[
e->start-1]);
1497 Warn(
"%s is no standard basis",h->
Name());
1526 if ((*
id<
' ')||(*
id>(
char)126))
1528 Print(
"wrong id :%s:\n",
id);
1545 if (!isdigit(
id[0]))
1547 if (strcmp(
id,
"basering")==0)
1561 else if (strcmp(
id,
"Current")==0)
1602 v->
data = (
void *)p;
1613 if (ok && (p!=
NULL))
1740 if (strcmp(
id,
"_")==0)
1743 v->
Copy(&sLastPrinted);
1765 v->
data = (
char *)h;
1791 char *what=(
char *)(d->arg1.Data());
1809 else if (d->op==
'=')
1817 const char *n=d->arg1.name;
1818 nok=(n ==
NULL) || d->arg2.Eval();
1821 int save_typ=d->arg1.rtyp;
1823 if (d->arg1.rtyp!=
IDHDL)
1826 if (d->arg1.rtyp==
IDHDL)
1841 memcpy(&d->arg1,&t,
sizeof(
sleftv));
1843 nok=nok||
iiAssign(&d->arg1,&d->arg2);
1848 memset(&d->arg1,0,
sizeof(
sleftv));
1860 if ((toktype==
CMD_M)
1866 if (d->argc>=1) nok=d->arg1.Eval();
1867 if ((!nok) && (d->argc>=2))
1871 memcpy(d->arg1.next,&d->arg2,
sizeof(
sleftv));
1874 if ((!nok) && (d->argc==3))
1878 memcpy(d->arg1.next->next,&d->arg3,
sizeof(
sleftv));
1892 else if (d->argc==1)
1900 nok=nok||d->arg2.Eval();
1906 nok=nok||d->arg2.Eval();
1907 nok=nok||d->arg3.Eval();
1908 nok=nok||
iiExprArith3(&tmp,d->op,&d->arg1,&d->arg2,&d->arg3);
1920 memcpy(
this,&tmp,
sizeof(tmp));
1948 ideal
id=(ideal)
Data();
1950 int i=
id->ncols*
id->nrows-1;
1951 for(;i>=0;i--)
pTest(id->m[i]);
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)
#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.
BOOLEAN iiMake_proc(idhdl pn, package pack, sleftv *sl)
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)
char * String(int dim=2) const
void paPrint(const char *n, package p)
BOOLEAN iiCheckRing(int i)
const Variable & v
< [in] a sqrfree bivariate poly
void jjNormalizeQRingId(leftv I)
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)
coeffs basecoeffs() const
char * String()
IO: String returns a singular string containing the matrix, needs freeing afterwards.
void CleanUp(ring r=currRing)
void Clean(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
const char * iiSleftv2name(leftv v)
void Werror(const char *fmt,...)
void syKillComputation(syStrategy syzstr, ring r=currRing)
void PrintNSpaces(const int n)
idhdl ggetid(const char *n, BOOLEAN, idhdl *packhdl)
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)