77 ch[0]=c->op;ch[1]=
'\0';
80 ::Print(
"##command %d(%s), %d args\n",
83 c->arg1.Print(
NULL,spaces+2);
87 c->arg2.Print(
NULL,spaces+2);
89 c->arg3.Print(
NULL,spaces+2);
132 ((
intvec *)d)->show(t,spaces);
137 const ring r = (
const ring)d;
285 if (bb!=
NULL) { bb->blackbox_Print(bb,d); }
286 else {
::Print(
"Print: blackbox %d(bb=NULL)",t); }
291 if ((store!=
NULL)&&(store!=
this))
422 return (
void*)n2Copy((number2)d);
424 return (
void*)p2Copy((poly2)d);
436 return (
void *)
idCopy((ideal)d);
445 return (
void *)
pCopy((poly)d);
449 return (
void *)
nCopy((number)d);
480 if (b!=
NULL)
return b->blackbox_Copy(b,d);
484 Warn(
"s_internalCopy: cannot copy type %s(%d)",
512 number2 n=(number2)d;
598 Print(
"currRing? ref=%d\n",R->ref);
611 if (cmd->arg1.rtyp!=0) cmd->arg1.CleanUp(r);
612 if (cmd->arg2.rtyp!=0) cmd->arg2.CleanUp(r);
613 if (cmd->arg3.rtyp!=0) cmd->arg3.CleanUp(r);
645 if (b!=
NULL) b->blackbox_destroy(b,d);
649 Warn(
"s_internalDelete: cannot delete type %s(%d)",
666 else if (e->next==
NULL)
688 void *d=source->
Data();
717 x=(
void *)
p_Copy(A->qideal->m[0], A);
753 if (((
command)data)->arg1.rtyp!=0)
755 if (((
command)data)->arg2.rtyp!=0)
757 if (((
command)data)->arg3.rtyp==0)
774 sprintf(s,
"int(%d)",(
int)(
long)d);
779 sprintf(s,
"%d",(
int)(
long)d);
791 s = (
char*)
omAlloc(strlen((
char*) d) + 3);
792 sprintf(s,
"\"%s\"", (
char*) d);
805 s = (
char*)
omAlloc(strlen(ps) + 10);
806 sprintf(s,
"%s(%s)", (t ==
POLY_CMD ?
"poly" :
"vector"), ps);
817 return n2String((number2)d,typed);
851 char* ns = (
char*)
omAlloc(strlen(s) + 40);
852 sprintf(ns,
"matrix(ideal(%s),%d,%d)", s,
868 char* ns = (
char*)
omAlloc(strlen(s) + 10);
869 sprintf(ns,
"%s(%s)", (t==
MODUL_CMD ?
"module" :
"ideal"), s);
886 ns = (
char*)
omAlloc(strlen(s) + 40);
887 sprintf(ns,
"intmat(intvec(%s),%d,%d)", s, v->
rows(), v->
cols());
891 ns = (
char*)
omAlloc(strlen(s) + 10);
892 sprintf(ns,
"intvec(%s)", s);
907 char* ns = (
char*)
omAlloc0(strlen(s) + 40);
908 sprintf(ns,
"bigintmat(bigintvec(%s),%d,%d)", s, bim->
rows(), bim->
cols());
927 ns = (
char*)
omAlloc(strlen(s) + strlen(
id) + 20);
928 sprintf(ns,
"\"%s\";%sideal(%s)", s,(dim == 2 ?
"\n" :
" "),
id);
932 ns = (
char*)
omAlloc(strlen(s) + 4);
933 sprintf(ns,
"\"%s\"", s);
952 s = (pi->
data.s.body);
957 char* ns = (
char*)
omAlloc(strlen(s) + 4);
958 sprintf(ns,
"\"%s\"", s);
969 char* ns = (
char*)
omAlloc(strlen(s) + 10);
970 sprintf(ns,
"link(\"%s\")", s);
984 if (bb!=
NULL)
return bb->blackbox_String(bb,d);
1076 if ((0<
e->start)&&(
e->start<=l->
nr+1))
1078 Subexpr tmp=l->
m[
e->start-1].
e;
1079 l->
m[
e->start-1].
e=
e->next;
1080 r=l->
m[
e->start-1].
Typ();
1081 e->next=l->
m[
e->start-1].
e;
1082 l->
m[
e->start-1].
e=tmp;
1112 if ((0<
e->start)&&(
e->start<=l->
nr+1))
1114 l->
m[
e->start-1].
e=
e->next;
1115 r=l->
m[
e->start-1].
LTyp();
1131 static snumber2 iiNumber2Data[4];
1132 static int iiCmatrix_index=0;
1166 return (
void *)A->qideal->m[0];
1169 return (
void *)
nInit(0);
1203 if ((index<1)||(index>iv->
length()))
1206 Werror(
"wrong range[%d] in intvec %s(%d)",index,this->
Name(),iv->
length());
1209 r=(
char *)(
long)((*iv)[index-1]);
1216 ||(index>iv->
rows())
1217 ||(
e->next->start<1)
1218 ||(
e->next->start>iv->
cols()))
1221 Werror(
"wrong range[%d,%d] in intmat %s(%dx%d)",index,
e->next->start,
1222 this->Name(),iv->
rows(),iv->
cols());
1225 r=(
char *)(
long)(
IMATELEM((*iv),index,
e->next->start));
1233 ||(
e->next->start<1)
1234 ||(
e->next->start>m->
cols()))
1237 Werror(
"wrong range[%d,%d] in bigintmat %s(%dx%d)",index,
e->next->start,
1250 ||(
e->next->start<1)
1251 ||(
e->next->start>m->
cols()))
1254 Werror(
"wrong range[%d,%d] in matrix %s(%dx%d)",index,
e->next->start,
1259 iiNumber2Data[iiCmatrix_index].cf=m->
basecoeffs();
1260 iiNumber2Data[iiCmatrix_index].n=
BIMATELEM((*m),index,
e->next->start);
1261 r=(
char*)&iiNumber2Data[iiCmatrix_index];
1262 iiCmatrix_index=(iiCmatrix_index+1) % 4;
1272 if ((index<1)||(index>
IDELEMS(I)))
1278 r=(
char *)I->m[index-1];
1290 if ((index>0)&& (index<=(int)strlen((
char *)d)))
1292 r[0]=*(((
char *)d)+index-1);
1307 memcpy(
this,&tmp,
sizeof(tmp));
1327 ||(
e->next->start<1)
1331 Werror(
"wrong range[%d,%d] in matrix %s(%dx%d)",
1332 index,
e->next->start,
1350 if ((0<index)&&(index<=l->
nr+1))
1356 char *dd=(
char *)l->
m[index-1].
data;
1357 int j=
e->next->start-1;
1359 if ((
j>=0) && (
j<(
int)strlen(dd)))
1371 Subexpr tmp=l->
m[index-1].
e;
1372 l->
m[index-1].
e=
e->next;
1373 r=(
char *)l->
m[index-1].
Data();
1374 e->next=l->
m[index-1].
e;
1375 l->
m[index-1].
e=tmp;
1379 Werror(
"wrong range[%d] in list %s(%d)",index,this->
Name(),l->
nr+1);
1427 if ((0>=
e->start)||(
e->start>l->
nr+1))
1431 l->
m[
e->start-1].
e=
e->next;
1436 return &(l->
m[
e->start-1]);
1443 leftv sleftv::LHdl()
1455 if ((0>=
e->start)||(
e->start>l->
nr+1))
1459 l->
m[
e->start-1].
e=
e->next;
1460 leftv r=l->
m[
e->start-1].LHdl();
1464 return &(l->
m[
e->start-1]);
1485 Warn(
"%s is no standard basis",h->
Name());
1514 if ((*
id<
' ')||(*
id>(
char)126))
1516 Print(
"wrong id :%s:\n",
id);
1533 if (!isdigit(
id[0]))
1535 if (strcmp(
id,
"basering")==0)
1549 else if (strcmp(
id,
"Current")==0)
1590 v->
data = (
void *)p;
1601 if (ok && (p!=
NULL))
1723 if (strcmp(
id,
"_")==0)
1726 v->
Copy(&sLastPrinted);
1748 v->
data = (
char *)h;
1774 char *what=(
char *)(d->arg1.Data());
1792 else if (d->op==
'=')
1800 const char *n=d->arg1.name;
1801 nok=(n ==
NULL) || d->arg2.Eval();
1804 int save_typ=d->arg1.rtyp;
1806 if (d->arg1.rtyp!=
IDHDL)
1809 if (d->arg1.rtyp==
IDHDL)
1824 memcpy(&d->arg1,&t,
sizeof(
sleftv));
1826 nok=nok||
iiAssign(&d->arg1,&d->arg2);
1831 memset(&d->arg1,0,
sizeof(
sleftv));
1843 if ((toktype==
CMD_M)
1849 if (d->argc>=1) nok=d->arg1.Eval();
1850 if ((!nok) && (d->argc>=2))
1854 memcpy(d->arg1.next,&d->arg2,
sizeof(
sleftv));
1857 if ((!nok) && (d->argc==3))
1861 memcpy(d->arg1.next->next,&d->arg3,
sizeof(
sleftv));
1875 else if (d->argc==1)
1883 nok=nok||d->arg2.Eval();
1889 nok=nok||d->arg2.Eval();
1890 nok=nok||d->arg3.Eval();
1891 nok=nok||
iiExprArith3(&tmp,d->op,&d->arg1,&d->arg2,&d->arg3);
1903 memcpy(
this,&tmp,
sizeof(tmp));
1931 ideal
id=(ideal)
Data();
1933 int i=
id->ncols*
id->nrows-1;
1934 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)
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
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, BOOLEAN typed, int dim) (from Singular/subexpr.cc) for printing minpoly.
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)
#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)
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)
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)
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)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
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)