Functions
rmodulo2m.h File Reference
#include <misc/auxiliary.h>

Go to the source code of this file.

Functions

BOOLEAN nr2mInitChar (coeffs r, void *)
 
number nr2mMapZp (number from, const coeffs, const coeffs dst)
 

Function Documentation

§ nr2mInitChar()

BOOLEAN nr2mInitChar ( coeffs  r,
void *   
)

Definition at line 162 of file rmodulo2m.cc.

163 {
164  assume( getCoeffType(r) == n_Z2m );
165  nr2mInitExp((int)(long)(p), r);
166 
167  r->is_field=FALSE;
168  r->is_domain=FALSE;
169  r->rep=n_rep_int;
170 
171  //r->cfKillChar = ndKillChar; /* dummy*/
172  r->nCoeffIsEqual = nr2mCoeffIsEqual;
173  r->cfCoeffString = nr2mCoeffString;
174 
175  r->modBase = (mpz_ptr) omAllocBin (gmp_nrz_bin);
176  mpz_init_set_si (r->modBase, 2L);
177  r->modNumber= (mpz_ptr) omAllocBin (gmp_nrz_bin);
178  mpz_init (r->modNumber);
179  mpz_pow_ui (r->modNumber, r->modBase, r->modExponent);
180 
181  /* next cast may yield an overflow as mod2mMask is an unsigned long */
182  r->ch = (int)r->mod2mMask + 1;
183 
184  r->cfInit = nr2mInit;
185  //r->cfCopy = ndCopy;
186  r->cfInt = nr2mInt;
187  r->cfAdd = nr2mAdd;
188  r->cfSub = nr2mSub;
189  r->cfMult = nr2mMult;
190  r->cfDiv = nr2mDiv;
191  r->cfAnn = nr2mAnn;
192  r->cfIntMod = nr2mMod;
193  r->cfExactDiv = nr2mDiv;
194  r->cfInpNeg = nr2mNeg;
195  r->cfInvers = nr2mInvers;
196  r->cfDivBy = nr2mDivBy;
197  r->cfDivComp = nr2mDivComp;
198  r->cfGreater = nr2mGreater;
199  r->cfEqual = nr2mEqual;
200  r->cfIsZero = nr2mIsZero;
201  r->cfIsOne = nr2mIsOne;
202  r->cfIsMOne = nr2mIsMOne;
203  r->cfGreaterZero = nr2mGreaterZero;
204  r->cfWriteLong = nr2mWrite;
205  r->cfRead = nr2mRead;
206  r->cfPower = nr2mPower;
207  r->cfSetMap = nr2mSetMap;
208 // r->cfNormalize = ndNormalize; // default
209  r->cfLcm = nr2mLcm;
210  r->cfGcd = nr2mGcd;
211  r->cfIsUnit = nr2mIsUnit;
212  r->cfGetUnit = nr2mGetUnit;
213  r->cfExtGcd = nr2mExtGcd;
214  r->cfCoeffWrite = nr2mCoeffWrite;
215  r->cfQuot1 = nr2mQuot1;
216 #ifdef LDEBUG
217  r->cfDBTest = nr2mDBTest;
218 #endif
219  r->has_simple_Alloc=TRUE;
220  return FALSE;
221 }
void nr2mInitExp(int c, const coeffs r)
Definition: rmodulo2m.cc:807
number nr2mGcd(number a, number b, const coeffs r)
Definition: rmodulo2m.cc:260
long nr2mInt(number &n, const coeffs r)
Definition: rmodulo2m.cc:345
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
number nr2mLcm(number a, number b, const coeffs r)
Definition: rmodulo2m.cc:237
nMapFunc nr2mSetMap(const coeffs src, const coeffs dst)
Definition: rmodulo2m.cc:742
number nr2mInit(long i, const coeffs r)
Definition: rmodulo2m.cc:328
number nr2mAdd(number a, number b, const coeffs r)
Definition: rmodulo2m.cc:355
number nr2mSub(number a, number b, const coeffs r)
Definition: rmodulo2m.cc:360
static number nr2mAnn(number b, const coeffs r)
Definition: rmodulo2m.cc:646
number nr2mMult(number a, number b, const coeffs r)
Definition: rmodulo2m.cc:226
const char * nr2mRead(const char *s, number *a, const coeffs r)
Definition: rmodulo2m.cc:848
only used if HAVE_RINGS is defined
Definition: coeffs.h:46
#define FALSE
Definition: auxiliary.h:97
return P p
Definition: myNF.cc:203
BOOLEAN nr2mGreaterZero(number k, const coeffs r)
Definition: rmodulo2m.cc:462
number nr2mGetUnit(number a, const coeffs r)
Definition: rmodulo2m.cc:370
#define TRUE
Definition: auxiliary.h:101
number nr2mMod(number a, number b, const coeffs r)
Definition: rmodulo2m.cc:572
BOOLEAN nr2mIsMOne(number a, const coeffs r)
Definition: rmodulo2m.cc:388
number nr2mDiv(number a, number b, const coeffs r)
Definition: rmodulo2m.cc:549
BOOLEAN nr2mGreater(number a, number b, const coeffs r)
Definition: rmodulo2m.cc:398
void nr2mWrite(number a, const coeffs r)
Definition: rmodulo2m.cc:823
coeffs nr2mQuot1(number c, const coeffs r)
Definition: rmodulo2m.cc:119
number nr2mInvers(number c, const coeffs r)
Definition: rmodulo2m.cc:667
number nr2mNeg(number c, const coeffs r)
Definition: rmodulo2m.cc:677
#define LDEBUG
Definition: mod2.h:321
int nr2mDivComp(number a, number b, const coeffs r)
Definition: rmodulo2m.cc:434
#define assume(x)
Definition: mod2.h:403
BOOLEAN nr2mDBTest(number a, const char *f, const int l, const coeffs r)
Definition: rmodulo2m.cc:815
static char * nr2mCoeffString(const coeffs r)
Definition: rmodulo2m.cc:107
static FORCE_INLINE n_coeffType getCoeffType(const coeffs r)
Returns the type of coeffs domain.
Definition: coeffs.h:425
BOOLEAN nr2mDivBy(number a, number b, const coeffs r)
Definition: rmodulo2m.cc:406
BOOLEAN nr2mIsUnit(number a, const coeffs r)
Definition: rmodulo2m.cc:365
BOOLEAN nr2mIsZero(number a, const coeffs r)
Definition: rmodulo2m.cc:378
number nr2mExtGcd(number a, number b, number *s, number *t, const coeffs r)
Definition: rmodulo2m.cc:284
void nr2mCoeffWrite(const coeffs r, BOOLEAN details)
Definition: rmodulo2m.cc:90
omBin gmp_nrz_bin
Definition: rintegers.cc:76
(int), see modulop.h
Definition: coeffs.h:110
BOOLEAN nr2mEqual(number a, number b, const coeffs r)
Definition: rmodulo2m.cc:393
BOOLEAN nr2mIsOne(number a, const coeffs r)
Definition: rmodulo2m.cc:383
void nr2mPower(number a, int i, number *result, const coeffs r)
Definition: rmodulo2m.cc:308
BOOLEAN nr2mCoeffIsEqual(const coeffs r, n_coeffType n, void *p)
Definition: rmodulo2m.cc:96

§ nr2mMapZp()

number nr2mMapZp ( number  from,
const coeffs  ,
const coeffs  dst 
)

Definition at line 695 of file rmodulo2m.cc.

696 {
697  unsigned long j = (unsigned long)1;
698  long ii = (long)from;
699  if (ii < 0) { j = dst->mod2mMask; ii = -ii; }
700  unsigned long i = (unsigned long)ii;
701  i = i & dst->mod2mMask;
702  /* now we have: from = j * i mod 2^m */
703  return (number)nr2mMult((number)i, (number)j, dst);
704 }
number nr2mMult(number a, number b, const coeffs r)
Definition: rmodulo2m.cc:226
int j
Definition: myNF.cc:70
int i
Definition: cfEzgcd.cc:123