56 while((i<currRing->
N)&&(perm[i]==0)) i++;
63 if (perm[prev_nonnull] > perm[i])
67 Warn(
"imap not usable for permuting variables, use map (%s <-> %s)",
currRing->names[prev_nonnull-1],
currRing->names[i-1]);
79 int N = preimage_r->N;
82 if (perm!=
NULL)
for(i=1;i<=
N;i++)
Print(
"%d -> %d ",i,perm[i]);
85 if (par_perm!=
NULL)
for(i=0;i<P;i++)
Print(
"%d -> %d ",i,par_perm[i]);
106 number a = nMap((number)data, preimage_r->cf,
currRing->cf);
148 p_Test((poly)data,preimage_r);
149 res->
data=(
void*)
maMapPoly((poly)data,preimage_r,(ideal)theMap,currRing,nMap);
160 int C=((
matrix)data)->cols();
163 else R=((
matrix)data)->rows();
168 tmpR=((
map)data)->preimage;
171 if ((what==
FETCH_CMD)&& (preimage_r->cf == currRing->cf))
173 for (i=R*C-1;i>=0;i--)
175 m->
m[
i]=
prCopyR(((ideal)data)->m[i], preimage_r, currRing);
181 for (i=R*C-1;i>=0;i--)
183 m->
m[
i]=
p_PermPoly(((ideal)data)->m[i],perm,preimage_r,currRing,
184 nMap,par_perm,P,use_mult);
192 for (i=R*C-1;i>=0;i--)
194 m->
m[
i]=
maEval(theMap, ((ideal)data)->m[i], preimage_r, nMap, (ideal)s, currRing);
201 for (i=R*C-1;i>=0;i--)
209 ((
map)data)->preimage=tmpR;
226 for(i=0;i<=l->
nr;i++)
232 preimage_r,perm,par_perm,P,nMap))
245 res->
data=(
char *)ml;
CanonicalForm map(const CanonicalForm &primElem, const Variable &alpha, const CanonicalForm &F, const Variable &beta)
map from to such that is mapped onto
const CanonicalForm int s
poly prCopyR(poly p, ring src_r, ring dest_r)
#define idDelete(H)
delete an ideal
int maMaxDeg_Ma(ideal a, ring preimage_r)
BOOLEAN maApplyFetch(int what, map theMap, leftv res, leftv w, ring preimage_r, int *perm, int *par_perm, int P, nMapFunc nMap)
static FORCE_INLINE void n_Normalize(number &n, const coeffs r)
inplace-normalization of n; produces some canonical representation of n;
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
poly maMapPoly(const poly map_p, const ring map_r, const ideal image_id, const ring image_r, const nMapFunc nMap)
polynomial map for poly (vector) map_p: the poly (vector) to map map_r: the base ring for map_p image...
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)
static FORCE_INLINE BOOLEAN nCoeff_is_algExt(const coeffs r)
TRUE iff r represents an algebraic extension field.
const CanonicalForm CFMap CFMap & N
static BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
#define n_Test(a, r)
BOOLEAN n_Test(number a, const coeffs r)
void PrintS(const char *s)
INLINE_THIS void Init(int l=0)
matrix mpNew(int r, int c)
create a r x c zero-matrix
poly p_MinPolyNormalize(poly p, const ring r)
poly n_PermNumber(const number z, const int *par_perm, const int, const ring src, const ring dst)
const char * Tok2Cmdname(int tok)
void Clean(ring r=currRing)
poly sBucketPeek(sBucket_pt b)
static FORCE_INLINE BOOLEAN nCoeff_is_Extension(const coeffs r)
#define omFreeBin(addr, bin)
poly maEval(map theMap, poly p, ring preimage_r, nMapFunc nMap, ideal s, const ring dst_r)