Typedefs | Functions
prCopy.h File Reference

Go to the source code of this file.

Typedefs

typedef polyrec * poly
 
typedef number(* nMapFunc) (number a, const coeffs src, const coeffs dst)
 

Functions

poly prMoveR_NoSort (poly &p, ring r, ring dest_r)
 
poly prMoveR (poly &p, ring r, ring dest_r)
 
poly prCopyR_NoSort (poly p, ring r, ring dest_r)
 
poly prCopyR (poly p, ring r, ring dest_r)
 
poly prShallowCopyR_NoSort (poly p, ring r, ring dest_t)
 
poly prShallowCopyR (poly p, ring r, ring dest_t)
 
poly prHeadR (poly p, ring r, ring dest_rg)
 
ideal idrMoveR_NoSort (ideal &id, ring r, ring dest_r)
 
ideal idrMoveR (ideal &id, ring r, ring dest_r)
 
ideal idrCopyR_NoSort (ideal id, ring r, ring dest_r)
 
ideal idrCopyR (ideal id, ring r, ring dest_r)
 
ideal idrShallowCopyR_NoSort (ideal id, ring r, ring dest_r)
 
ideal idrShallowCopyR (ideal id, ring r, ring dest_r)
 
ideal idrHeadR (ideal id, ring r, ring dest_r)
 Copy leading terms of id[i] via prHeeadR into dest_r. More...
 
poly prMapR (poly src, nMapFunc nMap, ring src_r, ring dest_r)
 

Typedef Documentation

typedef number(* nMapFunc) (number a, const coeffs src, const coeffs dst)

Definition at line 17 of file prCopy.h.

typedef polyrec* poly

Definition at line 10 of file prCopy.h.

Function Documentation

ideal idrCopyR ( ideal  id,
ring  r,
ring  dest_r 
)

Definition at line 192 of file prCopy.cc.

193 {
194  assume(src_r->cf==dest_r->cf);
195  ideal res;
196  prCopyProc_t prproc;
197  if (rField_has_simple_Alloc(dest_r))
198  prproc = pr_Copy_NoREqual_NSimple_Sort;
199  else
200  prproc = pr_Copy_NoREqual_NoNSimple_Sort;
201  res = idrCopy(id, src_r, dest_r, prproc);
202  return res;
203 }
static BOOLEAN rField_has_simple_Alloc(const ring r)
Z/p, GF(p,n), R: nCopy, nNew, nDelete are dummies.
Definition: ring.h:492
static ideal idrCopy(ideal id, ring src_r, ring dest_r, prCopyProc_t prproc)
Definition: prCopy.cc:175
const ideal
Definition: gb_hack.h:42
poly res
Definition: myNF.cc:322
#define assume(x)
Definition: mod2.h:405
poly(* prCopyProc_t)(poly &src_p, ring src_r, ring dest_r)
Definition: prCopy.cc:124
ideal idrCopyR_NoSort ( ideal  id,
ring  r,
ring  dest_r 
)

Definition at line 205 of file prCopy.cc.

206 {
207  assume(src_r->cf==dest_r->cf);
208  ideal res;
209  prCopyProc_t prproc;
210  if (rField_has_simple_Alloc(dest_r))
211  prproc = pr_Copy_NoREqual_NSimple_NoSort;
212  else
213  prproc = pr_Copy_NoREqual_NoNSimple_NoSort;
214  res = idrCopy(id, src_r, dest_r, prproc);
215  return res;
216 }
static BOOLEAN rField_has_simple_Alloc(const ring r)
Z/p, GF(p,n), R: nCopy, nNew, nDelete are dummies.
Definition: ring.h:492
static ideal idrCopy(ideal id, ring src_r, ring dest_r, prCopyProc_t prproc)
Definition: prCopy.cc:175
const ideal
Definition: gb_hack.h:42
poly res
Definition: myNF.cc:322
#define assume(x)
Definition: mod2.h:405
poly(* prCopyProc_t)(poly &src_p, ring src_r, ring dest_r)
Definition: prCopy.cc:124
ideal idrHeadR ( ideal  id,
ring  r,
ring  dest_r 
)

Copy leading terms of id[i] via prHeeadR into dest_r.

Definition at line 156 of file prCopy.cc.

157 {
158  if (id == NULL) return NULL;
159 
160  prCopyProc_t prproc = pr_Copy_NoREqual_NoNSimple_NoSort;
161  if (rField_has_simple_Alloc(dest_r))
162  prproc = pr_Copy_NoREqual_NSimple_NoSort;
163 
164  const int N = IDELEMS(id);
165  ideal res = idInit(N, id->rank);
166 
167  for (int i = N - 1; i >= 0; i--)
168  res->m[i] = prHeadR(id->m[i], r, dest_r, prproc); // !!!
169 
170  return res;
171 }
static BOOLEAN rField_has_simple_Alloc(const ring r)
Z/p, GF(p,n), R: nCopy, nNew, nDelete are dummies.
Definition: ring.h:492
poly prHeadR(poly p, ring src_r, ring dest_r, prCopyProc_t prproc)
Definition: prCopy.cc:126
const ideal
Definition: gb_hack.h:42
poly res
Definition: myNF.cc:322
const ring r
Definition: syzextra.cc:208
const CanonicalForm CFMap CFMap & N
Definition: cfEzgcd.cc:49
int i
Definition: cfEzgcd.cc:123
#define IDELEMS(i)
Definition: simpleideals.h:19
ideal idInit(int idsize, int rank)
Definition: simpleideals.cc:40
#define NULL
Definition: omList.c:10
poly(* prCopyProc_t)(poly &src_p, ring src_r, ring dest_r)
Definition: prCopy.cc:124
ideal idrMoveR ( ideal id,
ring  r,
ring  dest_r 
)

Definition at line 248 of file prCopy.cc.

249 {
250  assume(src_r->cf==dest_r->cf);
251  prCopyProc_t prproc;
252  ideal res;
253  if (rField_has_simple_Alloc(dest_r))
254  prproc = pr_Move_NoREqual_NSimple_Sort;
255  else
256  prproc = pr_Move_NoREqual_NoNSimple_Sort;
257  res = idrMove(id, src_r, dest_r, prproc);
258  return res;
259 }
static BOOLEAN rField_has_simple_Alloc(const ring r)
Z/p, GF(p,n), R: nCopy, nNew, nDelete are dummies.
Definition: ring.h:492
const ideal
Definition: gb_hack.h:42
poly res
Definition: myNF.cc:322
#define assume(x)
Definition: mod2.h:405
poly(* prCopyProc_t)(poly &src_p, ring src_r, ring dest_r)
Definition: prCopy.cc:124
static ideal idrMove(ideal &id, ring src_r, ring dest_r, prCopyProc_t prproc)
Definition: prCopy.cc:233
ideal idrMoveR_NoSort ( ideal id,
ring  r,
ring  dest_r 
)

Definition at line 261 of file prCopy.cc.

262 {
263  assume(src_r->cf==dest_r->cf);
264  prCopyProc_t prproc;
265  ideal res;
266  if (rField_has_simple_Alloc(dest_r))
267  prproc = pr_Move_NoREqual_NSimple_NoSort;
268  else
269  prproc = pr_Move_NoREqual_NoNSimple_NoSort;
270  res = idrMove(id, src_r, dest_r, prproc);
271  return res;
272 }
static BOOLEAN rField_has_simple_Alloc(const ring r)
Z/p, GF(p,n), R: nCopy, nNew, nDelete are dummies.
Definition: ring.h:492
const ideal
Definition: gb_hack.h:42
poly res
Definition: myNF.cc:322
#define assume(x)
Definition: mod2.h:405
poly(* prCopyProc_t)(poly &src_p, ring src_r, ring dest_r)
Definition: prCopy.cc:124
static ideal idrMove(ideal &id, ring src_r, ring dest_r, prCopyProc_t prproc)
Definition: prCopy.cc:233
ideal idrShallowCopyR ( ideal  id,
ring  r,
ring  dest_r 
)

Definition at line 220 of file prCopy.cc.

221 {
222  return idrCopy(id, src_r, dest_r, pr_Copy_NoREqual_NSimple_Sort);
223 }
static ideal idrCopy(ideal id, ring src_r, ring dest_r, prCopyProc_t prproc)
Definition: prCopy.cc:175
ideal idrShallowCopyR_NoSort ( ideal  id,
ring  r,
ring  dest_r 
)

Definition at line 225 of file prCopy.cc.

226 {
227  return idrCopy(id, src_r, dest_r, pr_Copy_NoREqual_NSimple_NoSort);
228 }
static ideal idrCopy(ideal id, ring src_r, ring dest_r, prCopyProc_t prproc)
Definition: prCopy.cc:175
poly prCopyR ( poly  p,
ring  r,
ring  dest_r 
)

Definition at line 36 of file prCopy.cc.

37 {
38  poly res;
39  if (rField_has_simple_Alloc(dest_r))
40  res = pr_Copy_NoREqual_NSimple_Sort(p, src_r, dest_r);
41  else
42  res = pr_Copy_NoREqual_NoNSimple_Sort(p, src_r, dest_r);
43  p_Test(res, dest_r);
44  return res;
45 }
static BOOLEAN rField_has_simple_Alloc(const ring r)
Z/p, GF(p,n), R: nCopy, nNew, nDelete are dummies.
Definition: ring.h:492
return P p
Definition: myNF.cc:203
poly res
Definition: myNF.cc:322
polyrec * poly
Definition: hilb.h:10
#define p_Test(p, r)
Definition: p_polys.h:160
poly prCopyR_NoSort ( poly  p,
ring  r,
ring  dest_r 
)

Definition at line 77 of file prCopy.cc.

78 {
79  poly res;
80  if (rField_has_simple_Alloc(dest_r))
81  res = pr_Copy_NoREqual_NSimple_NoSort(p, src_r, dest_r);
82  else
83  res = pr_Copy_NoREqual_NoNSimple_NoSort(p, src_r, dest_r);
84  p_Test(res, dest_r);
85  return res;
86 }
static BOOLEAN rField_has_simple_Alloc(const ring r)
Z/p, GF(p,n), R: nCopy, nNew, nDelete are dummies.
Definition: ring.h:492
return P p
Definition: myNF.cc:203
poly res
Definition: myNF.cc:322
polyrec * poly
Definition: hilb.h:10
#define p_Test(p, r)
Definition: p_polys.h:160
poly prHeadR ( poly  p,
ring  r,
ring  dest_rg 
)

Definition at line 141 of file prCopy.cc.

142 {
143  prCopyProc_t prproc;
144  if (rField_has_simple_Alloc(dest_r))
145  prproc = pr_Copy_NoREqual_NSimple_NoSort;
146  else
147  prproc = pr_Copy_NoREqual_NoNSimple_NoSort;
148 
149  const poly res = prHeadR(p, src_r, dest_r, prproc);
150  p_Test(res, dest_r);
151  return res;
152 }
static BOOLEAN rField_has_simple_Alloc(const ring r)
Z/p, GF(p,n), R: nCopy, nNew, nDelete are dummies.
Definition: ring.h:492
poly prHeadR(poly p, ring src_r, ring dest_r, prCopyProc_t prproc)
Definition: prCopy.cc:126
return P p
Definition: myNF.cc:203
poly res
Definition: myNF.cc:322
polyrec * poly
Definition: hilb.h:10
#define p_Test(p, r)
Definition: p_polys.h:160
poly(* prCopyProc_t)(poly &src_p, ring src_r, ring dest_r)
Definition: prCopy.cc:124
poly prMapR ( poly  src,
nMapFunc  nMap,
ring  src_r,
ring  dest_r 
)

Definition at line 47 of file prCopy.cc.

48 {
49  if (src==NULL) return NULL;
50  int _min = si_min(dest_r->N, src_r->N);
51 
52  spolyrec dest_s;
53 
54  poly dest = &dest_s;
55 
56  while (src != NULL)
57  {
58  poly prev=dest;
59  pNext(dest) = (poly) p_Init(dest_r); pIter(dest);
60 
61  pSetCoeff0(dest, nMap(pGetCoeff(src),src_r->cf,dest_r->cf));
62  prCopyEvector(dest, dest_r, src, src_r, _min);
63  if (n_IsZero(pGetCoeff(dest),dest_r->cf))
64  {
65  p_LmDelete(pNext(prev),dest_r);
66  dest=pNext(prev);
67  }
68  pIter(src);
69  }
70  pNext(dest) = NULL;
71  dest = pNext(&dest_s);
72  dest=p_SortAdd(dest, dest_r);
73  p_Test(dest, dest_r);
74  return dest;
75 }
static int si_min(const int a, const int b)
Definition: auxiliary.h:167
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy ...
Definition: monomials.h:51
#define pIter(p)
Definition: monomials.h:44
static poly p_SortAdd(poly p, const ring r, BOOLEAN revert=FALSE)
Definition: p_polys.h:1147
static void prCopyEvector(poly dest, ring dest_r, poly src, ring src_r, int max)
Definition: prCopy.cc:20
polyrec * poly
Definition: hilb.h:10
static FORCE_INLINE BOOLEAN n_IsZero(number n, const coeffs r)
TRUE iff 'n' represents the zero element.
Definition: coeffs.h:464
#define p_Test(p, r)
Definition: p_polys.h:160
#define NULL
Definition: omList.c:10
#define pNext(p)
Definition: monomials.h:43
#define pSetCoeff0(p, n)
Definition: monomials.h:67
static void p_LmDelete(poly p, const ring r)
Definition: p_polys.h:707
static poly p_Init(const ring r, omBin bin)
Definition: p_polys.h:1248
poly prMoveR ( poly p,
ring  r,
ring  dest_r 
)

Definition at line 90 of file prCopy.cc.

91 {
92  poly res;
93  if (rField_has_simple_Alloc(dest_r))
94  res = pr_Move_NoREqual_NSimple_Sort(p, src_r, dest_r);
95  else
96  res = pr_Move_NoREqual_NoNSimple_Sort(p, src_r, dest_r);
97  p_Test(res, dest_r);
98  return res;
99 }
static BOOLEAN rField_has_simple_Alloc(const ring r)
Z/p, GF(p,n), R: nCopy, nNew, nDelete are dummies.
Definition: ring.h:492
return P p
Definition: myNF.cc:203
poly res
Definition: myNF.cc:322
polyrec * poly
Definition: hilb.h:10
#define p_Test(p, r)
Definition: p_polys.h:160
poly prMoveR_NoSort ( poly p,
ring  r,
ring  dest_r 
)

Definition at line 101 of file prCopy.cc.

102 {
103  poly res;
104  if (rField_has_simple_Alloc(dest_r))
105  res = pr_Move_NoREqual_NSimple_NoSort(p, src_r, dest_r);
106  else
107  res = pr_Move_NoREqual_NoNSimple_NoSort(p, src_r, dest_r);
108  p_Test(res, dest_r);
109  return res;
110 }
static BOOLEAN rField_has_simple_Alloc(const ring r)
Z/p, GF(p,n), R: nCopy, nNew, nDelete are dummies.
Definition: ring.h:492
return P p
Definition: myNF.cc:203
poly res
Definition: myNF.cc:322
polyrec * poly
Definition: hilb.h:10
#define p_Test(p, r)
Definition: p_polys.h:160
poly prShallowCopyR ( poly  p,
ring  r,
ring  dest_t 
)

Definition at line 117 of file prCopy.cc.

118 {
119  return pr_Copy_NoREqual_NSimple_Sort(p, r, dest_r);
120 }
return P p
Definition: myNF.cc:203
const ring r
Definition: syzextra.cc:208
poly prShallowCopyR_NoSort ( poly  p,
ring  r,
ring  dest_t 
)

Definition at line 112 of file prCopy.cc.

113 {
114  return pr_Copy_NoREqual_NSimple_NoSort(p, r, dest_r);
115 }
return P p
Definition: myNF.cc:203
const ring r
Definition: syzextra.cc:208