16static void find_subst_for_map(
const ring preimage_r,
const ring image_r,
const ideal image,
int &var,poly &
p)
23 if (image->m[
i]!=
NULL)
87ideal
maMapIdeal(
const ideal map_id,
const ring preimage_r,
const ideal image_id,
const ring image_r,
const nMapFunc nMap)
113 && (map_id->
nrows==1)
114 && (map_id->
rank==1))
127 if ((t==0) || (t>1)) sz_more++;
129 if (((sz_l > sz*2) && (sz_more != 1))||(sz<5))
139 int C=((
matrix)map_id)->cols();
140 int R=((
matrix)map_id)->rows();
142 int N = preimage_r->N;
145 for (
i=
R*C-1;
i>=0;
i--)
147 if (map_id->m[
i]!=
NULL)
149 m->m[
i]=
maEval((
map)image_id, map_id->m[
i], preimage_r, nMap, (ideal)cache, image_r);
155 ii->rank=((ideal)map_id)->rank;
159poly
maMapPoly(
const poly map_p,
const ring map_r,
const ideal image_id,
const ring image_r,
const nMapFunc nMap)
162 poly
p=
maEval((
map)image_id, map_p, map_r, nMap, (ideal)
s, image_r);
167number
maEvalAt(
const poly
p,
const number* pt,
const ring r)
170 for(
int i=r->N-1;
i>=0;
i--)
static int si_min(const int a, const int b)
const CanonicalForm CFMap CFMap & N
CanonicalForm map(const CanonicalForm &primElem, const Variable &alpha, const CanonicalForm &F, const Variable &beta)
map from to such that is mapped onto
static FORCE_INLINE number n_Copy(number n, const coeffs r)
return a copy of 'n'
number ndCopyMap(number a, const coeffs src, const coeffs dst)
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
number(* nMapFunc)(number a, const coeffs src, const coeffs dst)
maps "a", which lives in src, into dst
static FORCE_INLINE BOOLEAN n_IsOne(number n, const coeffs r)
TRUE iff 'n' represents the one element.
const CanonicalForm int s
const Variable & v
< [in] a sqrfree bivariate poly
ideal fast_map_common_subexp(const ideal map_id, const ring map_r, const ideal image_id, const ring image_r)
matrix ma_ApplyPermForMap(const matrix to_map, const ring preimage_r, const ideal image, const ring image_r, const nMapFunc nMap)
helper function for maMapIdeal mapping ideal/matrix/module for the case of a permutation: maps the id...
ideal maMapIdeal(const ideal map_id, const ring preimage_r, const ideal image_id, const ring image_r, const nMapFunc nMap)
polynomial map for ideals/module/matrix map_id: the ideal to map map_r: the base ring for map_id imag...
static void find_subst_for_map(const ring preimage_r, const ring image_r, const ideal image, int &var, poly &p)
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...
number maEvalAt(const poly p, const number *pt, const ring r)
evaluate the polynomial p at the pt given by the array pt
ideal id_SubstPoly(ideal id, int var, poly image, const ring preimage_r, const ring image_r, const nMapFunc nMap)
#define idDelete(H)
delete an ideal
poly maEval(map theMap, poly p, ring preimage_r, nMapFunc nMap, ideal s, const ring dst_r)
int maMaxDeg_P(poly p, ring preimage_r)
int maMaxDeg_Ma(ideal a, ring preimage_r)
matrix mpNew(int r, int c)
create a r x c zero-matrix
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy
int p_IsUnivariate(poly p, const ring r)
return i, if poly depends only on var(i)
poly p_NSet(number n, const ring r)
returns the poly representing the number n, destroys n
static int pLength(poly a)
static long p_GetExp(const poly p, const unsigned long iBitmask, const int VarOffset)
get a single variable exponent @Note: the integer VarOffset encodes:
static void p_LmFree(poly p, ring)
void PrintS(const char *s)
static BOOLEAN rIsNCRing(const ring r)
ideal idInit(int idsize, int rank)
initialise an ideal / module
void id_Delete(ideal *h, ring r)
deletes an ideal/module/matrix