 |
My Project
debian-1:4.1.1-p2+ds-4build3
|
Go to the documentation of this file.
13 #define TRANSEXT_PRIVATES
75 #ifdef HAVE_GETTIMEOFDAY
111 #if HAVE_CAN_SHORT_OUT
124 cf->extRing->ShortOut = shortOut;
126 cf =
cf->extRing->cf;
139 number one =
nInit(1);
140 number nn=
nMult(n,one);
174 Werror(
"type %d too complex...set minpoly before",
IDTYP(
h));
break;
182 WarnS(
"Set minpoly over non-transcendental ground field to 0?!");
191 WarnS(
"Trying to set minpoly over non-transcendental ground field...");
194 WerrorS(
"cannot set minpoly for these coeffients");
201 WerrorS(
"only univarite minpoly allowed");
208 redefine_from_algext=(
currRing->cf->extRing->qideal!=
NULL);
213 WarnS(
"no minpoly allowed if there are local objects belonging to the basering: ");
234 WarnS(
"minpoly is already 0...");
238 WarnS(
"cannot set minpoly to 0 / alg. extension?");
246 Warn(
"killing a local object due to minpoly change: %s",
IDID(
currRing->idroot));
259 WerrorS(
"Could not construct the alg. extension: minpoly==0");
264 if (!redefine_from_algext && (DEN((fraction)(
p)) !=
NULL))
266 poly n=DEN((fraction)(
p));
269 WarnS(
"denominator must be constant - ignoring it");
272 DEN((fraction)(
p))=
NULL;
275 if (redefine_from_algext) q->m[0]=(poly)
p;
276 else q->m[0] = NUM((fraction)
p);
280 PrintS(
"\nTrying to conver the currRing into an algebraic field: ");
281 PrintS(
"Ground poly. ring: \n");
283 PrintS(
"\nGiven MinPOLY: ");
290 if (!redefine_from_algext)
293 NUM((fractionObject *)
p) =
NULL;
300 WerrorS(
"Could not construct the alg. extension: llegal minpoly?");
365 Werror(
"index[%d] must be positive",
i+1);
374 (*iv1)[
i]=(int)((
long)(a->
Data()));
378 res->data=(
void *)ivn;
381 (*iv)[
i]=(int)((
long)(a->
Data()));
385 int c=e->next->start;
386 if ((
i>=iv->
rows())||(c<1)||(c>iv->
cols()))
388 Werror(
"wrong range [%d,%d] in intmat %s(%d,%d)",
i+1,c,
res->Name(),iv->
rows(),iv->
cols());
414 number2 nn=(number2)
res->data;
425 Werror(
"index[%d] must be positive",
i+1);
431 WerrorS(
"only one index given");
436 int c=e->next->start;
437 if ((
i>=iv->
rows())||(c<1)||(c>iv->
cols()))
439 Werror(
"wrong range [%d,%d] in cmatrix %s(%d,%d)",
i+1,c,
res->Name(),iv->
rows(),iv->
cols());
463 number2 nn=(number2)
res->data;
464 number2 n=n2Init((
long)a->
Data(),nn->cf);
470 WerrorS(
"no Ring avialable for conversion from int");
479 Werror(
"index[%d] must be positive",
i+1);
485 WerrorS(
"only one index given");
490 int c=e->next->start;
491 if ((
i>=iv->
rows())||(c<1)||(c>iv->
cols()))
493 Werror(
"wrong range [%d,%d] in cmatrix %s(%d,%d)",
i+1,c,
res->Name(),iv->
rows(),iv->
cols());
511 number2 nn=(number2)
res->data;
512 number2 n=(number2)
omAlloc(
sizeof(*n));
520 number2 n=(number2)
omAlloc(
sizeof(*n));
536 poly2 nn=(poly2)
res->data;
547 Werror(
"index[%d] must be positive",
i+1);
562 poly2 nn=(poly2)
res->data;
563 poly2 n=(poly2)
omAlloc(
sizeof(*n));
571 poly2 n=(poly2)
omAlloc(
sizeof(*n));
594 Werror(
"index[%d] must be positive",
i+1);
600 WerrorS(
"only one index given");
605 int c=e->next->start;
606 if ((
i>=iv->
rows())||(c<1)||(c>iv->
cols()))
608 Werror(
"wrong range [%d,%d] in bigintmat %s(%d,%d)",
i+1,c,
res->Name(),iv->
rows(),iv->
cols());
625 int add_row_shift = 0;
627 if (weights!=
NULL) add_row_shift=weights->
min_in();
676 Werror(
"index[%d] must be positive",
j);
707 if ((am->
rows()!=1) || (am->
cols()!=1))
716 int j=e->next->start;
738 int j=e->next->start;
750 void* tmp =
res->data;
757 char *
s=(
char *)
res->data;
758 if ((e->start>0)&&(e->start<=(int)strlen(
s)))
759 s[e->start-1]=(char)(*((
char *)a->
Data()));
762 Werror(
"string index %d out of range 1..%d",e->start,(
int)strlen(
s));
771 const char *procname,
int line,
883 res->data = (
void *)
l;
912 char *rn=
f->preimage;
930 ring old_ring=(ring)
res->Data();
933 ideal
id = (ideal)a->
Data();
947 if (
qr->cf != newcf )
961 int *perm = (
int *)
omAlloc0((
qr->N+1)*
sizeof(int));
1004 Warn(
"%s is no twosided standard basis",a->
Name());
1031 ring r=(ring)a->
Data();
1043 if (e==
NULL)
res->data=(
char *)r;
1062 res->data=(
void *)0;
1078 #define NULL_VAL NULL
1103 WarnS(
"right side is not a datum, assignment ignored");
1128 else if (
l->name!=
NULL)
1153 WerrorS(
"error in assign: left side is not an l-value");
1159 #ifdef BLACKBOX_DEVEL
1160 Print(
"bb-assign: bb=%lx\n",bb);
1162 return (bb==
NULL) || bb->blackbox_Assign(
l,r);
1227 Werror(
"`%s`(%s) = `%s` is not supported",
1230 Werror(
"`%s` = `%s` is not supported"
1239 Werror(
"expected `%s` = `%s`"
1307 Werror(
"`%s` = `%s` is not supported"
1316 Werror(
"expected `%s` = `%s`"
1334 memset(&t,0,
sizeof(
sleftv));
1338 t.
data=(
char *)(
long)(*iv)[
i];
1343 if (nok)
return TRUE;
1360 memset(&t,0,
sizeof(
sleftv));
1370 t.
data=(
char *)I->m[
i];
1420 Werror(
"`%s` is undefined",
h->Fullname());
1468 Warn(
"expression list length(%d) does not match intmat size(%d)",
1475 (*iv)[
i++] = (int)((
long)(hh->
Data()));
1484 (*iv)[
i++] = (*ivv)[ll++];
1518 Warn(
"expression list length(%d) does not match bigintmat size(%d x %d)",
1531 bim->
set(
i++, (number)(hh->
Data()));
1570 sl += strlen((
char *)hh->
Data());
1578 t=(
char *)hh->
Data();
1599 memset(&t,0,
sizeof(
sleftv));
1605 while ((
i<mxn )&&(
l!=
NULL))
1631 WarnS(
"list length mismatch in assign (l>r)");
1638 WarnS(
"list length mismatch in assign (l<r)");
1676 char *
s=(
char *)r->
Data();
1679 memset(&t,0,
sizeof(
sleftv));
1681 while ((
i<sl)&&(
l!=
NULL))
1703 int i=
l->e->start-1;
1706 Werror(
"index[%d] must be positive",
i+1);
1709 if(
l->attribute!=
NULL)
1731 memset(&(li->
m[li->
nr+1]),0,(
i-li->
nr)*
sizeof(
sleftv));
1741 memset(&tmp,0,
sizeof(
sleftv));
1744 && (ld->
Typ()!=r->
Typ()))
1749 memcpy(ld,&tmp,
sizeof(
sleftv));
1751 else if ((ld->
e==
NULL)
1759 memcpy(ld,&tmp,
sizeof(
sleftv));
1764 if (
l->e!=
NULL)
l->e->next=ld->
e;
1787 }
while ((!
b)&&(
l!=
NULL));
1795 int ll=
l->listLength();
1802 Werror(
"`%s` is read-only",
l->Name());
1812 else if (
l->attribute!=
NULL)
1840 if(bb->blackbox_CheckAssign(bb,
l,r))
return TRUE;
1843 if((!
b) && (like_lists==2))
1867 #ifdef BLACKBOX_DEVEL
1868 Print(
"bb-assign: bb=%lx\n",bb);
1870 return (bb==
NULL) || bb->blackbox_Assign(
l,r);
1958 Werror(
"length of lists in assignment does not match (l:%d,r:%d)",
1993 WerrorS(
"expected ring-name");
1999 WerrorS(
"expected image ideal");
2019 char *pr=((
map)olm)->preimage;
2036 Warn(
"expression list length(%d) does not match matrix size(%d)",el,
num);
2086 for(
k=0;
k<
j;
k++,
i++)
2109 if (module_assign) lm->rank=rk;
2110 else if (map_assign) ((
map)lm)->preimage=pr;
2128 Werror(
"cannot assign to %s",
l->Fullname());
2146 ideal I0=(ideal)I->
Data();
2191 char *vn=(
char *)
v->Name();
2198 WarnS(
"source and destination packages are identical");
2210 memset(&h_expr,0,
sizeof(h_expr));
2214 return iiAssign(&tmp_expr,&h_expr);
2218 Werror(
"`%s` not found in `%s`",
v->Name(), u->
Name());
BOOLEAN iiConvert(int inputType, int outputType, int index, leftv input, leftv output, const struct sConvertTypes *dConvertTypes)
static int si_min(const int a, const int b)
static BOOLEAN jiA_PROC(leftv res, leftv a, Subexpr)
static BOOLEAN jiA_LIST(leftv res, leftv a, Subexpr)
static BOOLEAN jiA_PACKAGE(leftv res, leftv a, Subexpr)
int idElem(const ideal F)
count non-zero elements
static ideal idVec2Ideal(poly vec)
static BOOLEAN jiAssign_1(leftv l, leftv r, BOOLEAN toplevel)
const struct sValAssign dAssign[]
#define pGetComp(p)
Component.
static BOOLEAN jiA_INTVEC_L(leftv l, leftv r)
#define idDelete(H)
delete an ideal
static BOOLEAN jiA_LINK(leftv res, leftv a, Subexpr)
void * idrecDataInit(int t)
static void jiAssignAttr(leftv l, leftv r)
#define MATELEM(mat, i, j)
static BOOLEAN jiA_1x1MATRIX(leftv res, leftv a, Subexpr e)
static BOOLEAN jiA_MODUL_P(leftv res, leftv a, Subexpr)
void pEnlargeSet(poly **p, int l, int increment)
CanonicalForm map(const CanonicalForm &primElem, const Variable &alpha, const CanonicalForm &F, const Variable &beta)
map from to such that is mapped onto
static BOOLEAN jiA_INT(leftv res, leftv a, Subexpr e)
static BOOLEAN jiA_RESOLUTION(leftv res, leftv a, Subexpr)
static BOOLEAN jiA_INTVEC(leftv res, leftv a, Subexpr)
int iiDeclCommand(leftv sy, leftv name, int lev, int t, idhdl *root, BOOLEAN isring, BOOLEAN init_b)
static BOOLEAN length(leftv result, leftv arg)
static BOOLEAN jjA_L_STRING(leftv l, leftv r)
static BOOLEAN jjA_L_INTVEC(leftv l, leftv r, intvec *iv)
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete 'p'
coeffs basecoeffs() const
coeffs nInitChar(n_coeffType t, void *parameter)
one-time initialisations for new coeffs in case of an error return NULL
static FORCE_INLINE BOOLEAN n_IsZero(number n, const coeffs r)
TRUE iff 'n' represents the zero element.
static BOOLEAN jiA_POLY(leftv res, leftv a, Subexpr e)
Class used for (list of) interpreter objects.
static BOOLEAN jiA_VECTOR_L(leftv l, leftv r)
static FORCE_INLINE void n_Normalize(number &n, const coeffs r)
inplace-normalization of n; produces some canonical representation of n;
static BOOLEAN jjCOLMAX(leftv, leftv a)
static BOOLEAN jjRTIMER(leftv, leftv a)
static void jjMINPOLY_red(idhdl h)
static BOOLEAN jiA_BIGINT(leftv res, leftv a, Subexpr e)
static BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
static BOOLEAN jiA_STRING(leftv res, leftv a, Subexpr e)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
static short rVar(const ring r)
#define rVar(r) (r->N)
#define TEST_V_ASSIGN_NONE
void id_Delete(ideal *h, ring r)
deletes an ideal/module/matrix
struct for passing initialization parameters to naInitChar
poly p_PermPoly(poly p, const int *perm, const ring oldRing, const ring dst, nMapFunc nMap, const int *par_perm, int OldPar, BOOLEAN use_mult)
number(* nMapFunc)(number a, const coeffs src, const coeffs dst)
maps "a", which lives in src, into dst
static BOOLEAN jiAssign_list(leftv l, leftv r)
void PrintS(const char *s)
void set(int i, int j, number n, const coeffs C=NULL)
replace an entry with a copy (delete old + copy new!). NOTE: starts at [1,1]
static FORCE_INLINE BOOLEAN nCoeff_is_algExt(const coeffs r)
TRUE iff r represents an algebraic extension field.
void killhdl2(idhdl h, idhdl *ih, ring r)
static BOOLEAN iiAssign_sys(leftv l, leftv r)
BOOLEAN slInit(si_link l, char *istr)
void idSkipZeroes(ideal ide)
gives an ideal/module the minimal possible size
static BOOLEAN rField_is_Ring(const ring r)
BOOLEAN lRingDependend(lists L)
static BOOLEAN jjNOETHER(leftv, leftv a)
BOOLEAN piKill(procinfov pi)
void p_Write(poly p, ring lmRing, ring tailRing)
static BOOLEAN jiA_STRING_L(leftv l, leftv r)
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
void killhdl(idhdl h, package proot)
void ipMoveId(idhdl tomove)
int iiTestConvert(int inputType, int outputType)
static FORCE_INLINE BOOLEAN nCoeff_is_Extension(const coeffs r)
void CleanUp(ring r=currRing)
static BOOLEAN jiA_RING(leftv res, leftv a, Subexpr e)
static BOOLEAN jjTIMER(leftv, leftv a)
poly kNF(ideal F, ideal Q, poly p, int syzComp, int lazyReduce)
static FORCE_INLINE BOOLEAN nCoeff_is_transExt(const coeffs r)
TRUE iff r represents a transcendental extension field.
matrix mpNew(int r, int c)
create a r x c zero-matrix
static BOOLEAN jiA_IDEAL_M(leftv res, leftv a, Subexpr)
poly p_MinPolyNormalize(poly p, const ring r)
void jjNormalizeQRingId(leftv I)
int exprlist_length(leftv v)
void rDelete(ring r)
unconditionally deletes fields in r
static BOOLEAN jjECHO(leftv, leftv a)
#define IMATELEM(M, I, J)
procinfo * iiInitSingularProcinfo(procinfov pi, const char *libname, const char *procname, int, long pos, BOOLEAN pstatic)
static void p_Delete(poly *p, const ring r)
BOOLEAN jjIMPORTFROM(leftv, leftv u, leftv v)
void rWrite(ring r, BOOLEAN details)
const struct sValAssign_sys dAssign_sys[]
static BOOLEAN jiA_MAP_ID(leftv res, leftv a, Subexpr)
static int si_max(const int a, const int b)
static BOOLEAN jjA_L_BIGINTMAT(leftv l, leftv r, bigintmat *bim)
static BOOLEAN jiA_IDEAL(leftv res, leftv a, Subexpr)
static BOOLEAN jjMAXDEG(leftv, leftv a)
void * atGet(idhdl root, const char *name, int t, void *defaultReturnValue)
void Werror(const char *fmt,...)
#define omreallocSize(addr, o_size, size)
ideal idInit(int idsize, int rank)
initialise an ideal / module
BOOLEAN assumeStdFlag(leftv h)
void WerrorS(const char *s)
static BOOLEAN jjSHORTOUT(leftv, leftv a)
static BOOLEAN jjMINPOLY(leftv, leftv a)
static BOOLEAN jiA_CRING(leftv res, leftv a, Subexpr)
static BOOLEAN jiA_MAP(leftv res, leftv a, Subexpr)
#define BIMATELEM(M, I, J)
static si_link slCopy(si_link l)
static BOOLEAN jiA_DEF(leftv res, leftv, Subexpr)
static BOOLEAN jiA_MATRIX_L(leftv l, leftv r)
void slCleanUp(si_link l)
const Variable & v
< [in] a sqrfree bivariate poly
static BOOLEAN jiA_NUMBER(leftv res, leftv a, Subexpr)
INLINE_THIS void Init(int l=0)
static BOOLEAN jjA_L_LIST(leftv l, leftv r)
static BOOLEAN p_IsConstantPoly(const poly p, const ring r)
#define idSimpleAdd(A, B)
const CanonicalForm int s
static BOOLEAN jiA_QRING(leftv res, leftv a, Subexpr e)
const char * Tok2Cmdname(int tok)
static BOOLEAN jiAssign_rec(leftv l, leftv r)
void jjNormalizeQRingP(poly &p)
bool nc_SetupQuotient(ring rGR, const ring rG=NULL, bool bCopy=false)
static FORCE_INLINE nMapFunc n_SetMap(const coeffs src, const coeffs dst)
set the mapping function pointers for translating numbers from src to dst
lists syConvRes(syStrategy syzstr, BOOLEAN toDel, int add_row_shift)
static bool rIsSCA(const ring r)
#define omFreeBin(addr, bin)
blackbox * getBlackboxStuff(const int t)
return the structure to the type given by t
static BOOLEAN jiA_LIST_RES(leftv res, leftv a, Subexpr)
BOOLEAN iiAssign(leftv l, leftv r, BOOLEAN toplevel)
static FORCE_INLINE coeffs n_CoeffRingQuot1(number c, const coeffs r)
static BOOLEAN jiA_BIGINTMAT(leftv res, leftv a, Subexpr)
intvec * ivAdd(intvec *a, intvec *b)
static BOOLEAN jjPRINTLEVEL(leftv, leftv a)
void syKillComputation(syStrategy syzstr, ring r=currRing)
void id_Normalize(ideal I, const ring r)
normialize all polys in id
void nKillChar(coeffs r)
undo all initialisations
#define idPosConstant(I)
index of generator with leading term in ground ring (if any); otherwise -1
ideal idrCopyR(ideal id, ring src_r, ring dest_r)
@ n_algExt
used for all algebraic extensions, i.e., the top-most extension in an extension tower is algebraic
static BOOLEAN jjTRACE(leftv, leftv a)
static BOOLEAN jjMAXMULT(leftv, leftv a)
void Clean(ring r=currRing)
static BOOLEAN jiA_1x1INTMAT(leftv res, leftv a, Subexpr e)