My Project
Loading...
Searching...
No Matches
Functions
gen_maps.h File Reference

Go to the source code of this file.

Functions

ideal maMapIdeal (const ideal map_id, const ring map_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 image_id: the image of the variables image_r: the base ring for image_id nMap: map for coefficients
 
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_id: the image of the variables image_r: the base ring for image_id nMap: map for coefficients
 
poly p_SubstPoly (poly p, int var, poly image, const ring preimage_r, const ring image_r, const nMapFunc nMap, matrix cache=NULL)
 
ideal id_SubstPoly (ideal id, int var, poly image, const ring preimage_r, const ring image_r, const nMapFunc nMap)
 
number maEvalAt (const poly p, const number *pt, const ring r)
 evaluate the polynomial p at the pt given by the array pt
 

Function Documentation

◆ id_SubstPoly()

ideal id_SubstPoly ( ideal  id,
int  var,
poly  image,
const ring  preimage_r,
const ring  image_r,
const nMapFunc  nMap 
)

Definition at line 71 of file subst_maps.cc.

72{
74 int k=MATROWS((matrix)id)*MATCOLS((matrix)id);
76 res->rank = id->rank;
77 for(k--;k>=0;k--)
78 {
80 }
82 return res;
83}
int k
Definition cfEzgcd.cc:99
poly * m
Definition matpol.h:18
CanonicalForm res
Definition facAbsFact.cc:60
int maMaxDeg_Ma(ideal a, ring preimage_r)
Definition maps.cc:360
matrix mpNew(int r, int c)
create a r x c zero-matrix
Definition matpol.cc:37
#define MATROWS(i)
Definition matpol.h:26
#define MATCOLS(i)
Definition matpol.h:27
void id_Delete(ideal *h, ring r)
deletes an ideal/module/matrix
poly p_SubstPoly(poly p, int var, poly image, const ring preimage_r, const ring image_r, const nMapFunc nMap, matrix cache)
Definition subst_maps.cc:39

◆ maEvalAt()

number maEvalAt ( const poly  p,
const number pt,
const ring  r 
)

evaluate the polynomial p at the pt given by the array pt

Definition at line 167 of file gen_maps.cc.

168{
169 ideal map=idInit(r->N,1);
170 for(int i=r->N-1;i>=0;i--)
171 {
172 map->m[i]=p_NSet(n_Copy(pt[i],r->cf),r);
173 }
174 poly v=maMapPoly(p,r,map,r,ndCopyMap);
175 id_Delete(&map,r);
176 number vv;
177 if (v==NULL)
178 vv=n_Init(0,r->cf);
179 else
180 {
181 vv=pGetCoeff(v);
182 p_LmFree(&v,r);
183 }
184 return vv;
185}
int i
Definition cfEzgcd.cc:132
int p
Definition cfModGcd.cc:4079
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'
Definition coeffs.h:448
number ndCopyMap(number a, const coeffs src, const coeffs dst)
Definition numbers.cc:291
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
Definition coeffs.h:535
const Variable & v
< [in] a sqrfree bivariate poly
Definition facBivar.h:39
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...
Definition gen_maps.cc:159
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy
Definition monomials.h:44
#define NULL
Definition omList.c:12
poly p_NSet(number n, const ring r)
returns the poly representing the number n, destroys n
Definition p_polys.cc:1473
static void p_LmFree(poly p, ring)
Definition p_polys.h:683
ideal idInit(int idsize, int rank)
initialise an ideal / module

◆ maMapIdeal()

ideal maMapIdeal ( const ideal  map_id,
const ring  map_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 image_id: the image of the variables image_r: the base ring for image_id nMap: map for coefficients

Definition at line 87 of file gen_maps.cc.

88{
89 if(!rIsNCRing(image_r))
90 {
91 // heuristic:
92 // is the map a permutation ?
94 if (m!=NULL)
95 {
96 if (TEST_OPT_PROT) PrintS("map is a permutation\n");
97 return (ideal)m;
98 }
99 // ----------------------------------------------------------
100 // is it a substitution of one variable ?
101 {
102 poly p;
103 int var;
105 if (var!=0)
106 {
108 }
109 }
110 // ----------------------------------------------------------
111 // long polys in the image ?: possibility of many common subexpressions
112 if ((nMap==ndCopyMap) /* and !rIsPluralRing(image_r) */
113 && (map_id->nrows==1) /* i.e. only for ideal/map */
114 && (map_id->rank==1))
115 {
116 int sz=IDELEMS(map_id);
117 int sz_l=0;
118 int sz_more=0;
119 int t,i;
120 for(i=sz-1;i>=0;i--)
121 {
122 sz_l+=pLength(map_id->m[i]);
123 }
124 for(i=IDELEMS(image_id)-1;i>=0;i--)
125 {
126 t=pLength(image_id->m[i]);
127 if ((t==0) || (t>1)) sz_more++;
128 }
129 if (((sz_l > sz*2) && (sz_more != 1))||(sz<5))
130 {
131 if (TEST_OPT_PROT) PrintS("map via common subexpressions\n");
133 }
134 }
135 }
136 // ----------------------------------------------------------
137 // otherwise: try the generic method (generic map with cache)
138 if (TEST_OPT_PROT) PrintS("map with cache\n");
139 int C=((matrix)map_id)->cols();
140 int R=((matrix)map_id)->rows();
141 matrix m=mpNew(R,C);
142 int N = preimage_r->N;
144 int i;
145 for (i=R*C-1;i>=0;i--)
146 {
147 if (map_id->m[i]!=NULL)
148 {
150 p_Test(m->m[i],image_r);
151 }
152 }
153 idDelete((ideal *)&cache);
154 ideal ii=(ideal)m;
155 ii->rank=((ideal)map_id)->rank;
156 return (ideal)m;
157}
const CanonicalForm CFMap CFMap & N
Definition cfEzgcd.cc:56
int m
Definition cfEzgcd.cc:128
ideal fast_map_common_subexp(const ideal map_id, const ring map_r, const ideal image_id, const ring image_r)
Definition fast_maps.cc:354
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...
Definition find_perm.cc:69
static void find_subst_for_map(const ring preimage_r, const ring image_r, const ideal image, int &var, poly &p)
Definition gen_maps.cc:16
ideal id_SubstPoly(ideal id, int var, poly image, const ring preimage_r, const ring image_r, const nMapFunc nMap)
Definition subst_maps.cc:71
#define idDelete(H)
delete an ideal
Definition ideals.h:29
poly maEval(map theMap, poly p, ring preimage_r, nMapFunc nMap, ideal s, const ring dst_r)
Definition maps.cc:115
ip_smatrix * matrix
Definition matpol.h:43
#define TEST_OPT_PROT
Definition options.h:103
static int pLength(poly a)
Definition p_polys.h:190
#define p_Test(p, r)
Definition p_polys.h:161
void PrintS(const char *s)
Definition reporter.cc:284
static BOOLEAN rIsNCRing(const ring r)
Definition ring.h:426
#define IDELEMS(i)
#define R
Definition sirandom.c:27

◆ maMapPoly()

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_id: the image of the variables image_r: the base ring for image_id nMap: map for coefficients

Definition at line 159 of file gen_maps.cc.

160{
164 return p;
165}
const CanonicalForm int s
Definition facAbsFact.cc:51
int maMaxDeg_P(poly p, ring preimage_r)
Definition maps.cc:398

◆ p_SubstPoly()

poly p_SubstPoly ( poly  p,
int  var,
poly  image,
const ring  preimage_r,
const ring  image_r,
const nMapFunc  nMap,
matrix  cache = NULL 
)

Definition at line 39 of file subst_maps.cc.

40{
41 if (p==NULL) return NULL;
42
43 if (rIsNCRing(image_r))
44 {
47 {
48 WerrorS("not implemented");
49 return NULL;
50 }
51 return pSubst(pCopy(p),var,image);
52 }
55
56 poly result = NULL;
58 while (p != NULL)
59 {
61 pIter(p);
62 if (q!=NULL) sBucket_Add_p(bucket,q,pLength(q));
63 }
64 int l_dummy;
66 /*if no cache was passed,it is a local cache: */
68 return result;
69}
return result
void WerrorS(const char *s)
Definition feFopen.cc:24
#define pIter(p)
Definition monomials.h:37
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition polys.cc:13
#define pSubst(p, n, e)
Definition polys.h:365
#define pCopy(p)
return a copy of the poly
Definition polys.h:185
void sBucket_Add_p(sBucket_pt bucket, poly p, int length)
adds poly p to bucket destroys p!
Definition sbuckets.cc:203
sBucket_pt sBucketCreate(const ring r)
Definition sbuckets.cc:96
void sBucketDestroyAdd(sBucket_pt bucket, poly *p, int *length)
Definition sbuckets.h:68
static poly p_SubstMon(poly p, int var, poly image, const ring preimage_r, const ring image_r, const nMapFunc nMap, matrix cache)
Definition subst_maps.cc:8