My Project  debian-1:4.1.1-p2+ds-4
Functions
units.h File Reference

Go to the source code of this file.

Functions

ideal redNF (ideal N, ideal M, matrix U=NULL, int d=-1, intvec *w=NULL)
 
poly redNF (ideal N, poly p, poly u=NULL, int d=-1, intvec *w=NULL)
 

Function Documentation

◆ redNF() [1/2]

ideal redNF ( ideal  N,
ideal  M,
matrix  U = NULL,
int  d = -1,
intvec w = NULL 
)

Definition at line 18 of file units.cc.

19 {
20  matrix U0=NULL;
21  if(U!=NULL)
22  {
23  U0=mp_Copy(U,currRing);
24  number u0;
25  for(int i=IDELEMS(M)-1;i>=0;i--)
26  {
27  u0=nInvers(pGetCoeff(MATELEM(U0,i+1,i+1)));
28  MATELEM(U0,i+1,i+1)=__p_Mult_nn(MATELEM(U0,i+1,i+1),u0,currRing);
29  M->m[i]=__p_Mult_nn(M->m[i],u0,currRing);
30  }
31  }
32  ideal M0=idInit(IDELEMS(M),M->rank);
33  ideal M1=kNF(N,currRing->qideal,M,0,KSTD_NF_ECART);
34  while(idElem(M1)>0&&(d==-1||id_MinDegW(M1,w,currRing)<=d))
35  {
36  for(int i=IDELEMS(M)-1;i>=0;i--)
37  {
38  M0->m[i]=pAdd(M0->m[i],pHead(pCopy(M1->m[i])));
39  if(U0!=NULL)
40  M->m[i]=pSub(M->m[i],pMult(pHead(pCopy(M1->m[i])),
41  pCopy(MATELEM(U0,i+1,i+1))));
42  else
43  M->m[i]=pSub(M->m[i],pHead(pCopy(M1->m[i])));
44  }
45  idDelete(&M1);
46  M1=kNF(N,currRing->qideal,M,0,KSTD_NF_ECART);
47  }
48  idDelete(&M1);
49  idDelete(&N);
50  idDelete(&M);
51  if(U0!=NULL)
52  idDelete((ideal*)&U0);
53  return M0;
54 }

◆ redNF() [2/2]

poly redNF ( ideal  N,
poly  p,
poly  u = NULL,
int  d = -1,
intvec w = NULL 
)

Definition at line 56 of file units.cc.

57 {
58  ideal M=idInit(1,pGetComp(p));
59  M->m[0]=p;
60  ideal M0;
61  if(u==NULL)
62  M0=redNF(N,M,NULL,d,w);
63  else
64  {
65  matrix U=mpNew(1,1);
66  MATELEM(U,1,1)=u;
67  M0=redNF(N,M,U,d,w);
68  idDelete((ideal*)&U);
69  }
70  poly p0=M0->m[0];
71  M0->m[0]=NULL;
72  idDelete(&M0);
73  return p0;
74 }
idElem
int idElem(const ideal F)
count non-zero elements
Definition: simpleideals.cc:209
ip_smatrix
Definition: matpol.h:13
pGetComp
#define pGetComp(p)
Component.
Definition: polys.h:36
idDelete
#define idDelete(H)
delete an ideal
Definition: ideals.h:28
MATELEM
#define MATELEM(mat, i, j)
Definition: matpol.h:28
N
const CanonicalForm CFMap CFMap & N
Definition: cfEzgcd.cc:48
KSTD_NF_ECART
#define KSTD_NF_ECART
Definition: kstd1.h:18
pMult
#define pMult(p, q)
Definition: polys.h:186
w
const CanonicalForm & w
Definition: facAbsFact.cc:55
__p_Mult_nn
#define __p_Mult_nn(p, n, r)
Definition: p_polys.h:912
currRing
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition: polys.cc:13
i
int i
Definition: cfEzgcd.cc:125
M
#define M
Definition: sirandom.c:24
redNF
ideal redNF(ideal N, ideal M, matrix U, int d, intvec *w)
Definition: units.cc:18
kNF
poly kNF(ideal F, ideal Q, poly p, int syzComp, int lazyReduce)
Definition: kstd1.cc:2812
mpNew
matrix mpNew(int r, int c)
create a r x c zero-matrix
Definition: matpol.cc:35
pAdd
#define pAdd(p, q)
Definition: polys.h:182
nInvers
#define nInvers(a)
Definition: numbers.h:33
idInit
ideal idInit(int idsize, int rank)
initialise an ideal / module
Definition: simpleideals.cc:36
NULL
#define NULL
Definition: omList.c:9
id_MinDegW
int id_MinDegW(ideal M, intvec *w, const ring r)
Definition: simpleideals.cc:1610
p
int p
Definition: cfModGcd.cc:4019
pCopy
#define pCopy(p)
return a copy of the poly
Definition: polys.h:165
IDELEMS
#define IDELEMS(i)
Definition: simpleideals.h:24
pHead
#define pHead(p)
returns newly allocated copy of Lm(p), coef is copied, next=NULL, p might be NULL
Definition: polys.h:65
pGetCoeff
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy
Definition: monomials.h:48
mp_Copy
matrix mp_Copy(matrix a, const ring r)
copies matrix a (from ring r to r)
Definition: matpol.cc:62
pSub
#define pSub(a, b)
Definition: polys.h:261