Functions | Variables
rintegers.cc File Reference
#include <misc/auxiliary.h>
#include <omalloc/omalloc.h>
#include <factory/factory.h>
#include <misc/mylimits.h>
#include <reporter/reporter.h>
#include "coeffs.h"
#include "numbers.h"
#include "si_gmp.h"
#include "mpr_complex.h"
#include "rintegers.h"
#include "rmodulon.h"
#include "longrat.h"
#include <string.h>

Go to the source code of this file.

Functions

number nrzCopy (number a, const coeffs r)
 
int nrzSize (number a, const coeffs r)
 
void nrzDelete (number *a, const coeffs r)
 
BOOLEAN nrzGreaterZero (number k, const coeffs r)
 
number nrzMult (number a, number b, const coeffs r)
 
number nrzInit (long i, const coeffs r)
 
long nrzInt (number &n, const coeffs r)
 
number nrzAdd (number a, number b, const coeffs r)
 
number nrzSub (number a, number b, const coeffs r)
 
void nrzPower (number a, int i, number *result, const coeffs r)
 
BOOLEAN nrzIsZero (number a, const coeffs r)
 
BOOLEAN nrzIsOne (number a, const coeffs r)
 
BOOLEAN nrzIsMOne (number a, const coeffs r)
 
BOOLEAN nrzIsUnit (number a, const coeffs r)
 
number nrzGetUnit (number a, const coeffs r)
 
number nrzDiv (number a, number b, const coeffs r)
 
number nrzExactDiv (number a, number b, const coeffs r)
 
number nrzIntMod (number a, number b, const coeffs r)
 
number nrzNeg (number c, const coeffs r)
 
number nrzInvers (number c, const coeffs r)
 
BOOLEAN nrzGreater (number a, number b, const coeffs r)
 
BOOLEAN nrzDivBy (number a, number b, const coeffs r)
 
int nrzDivComp (number a, number b, const coeffs r)
 
BOOLEAN nrzEqual (number a, number b, const coeffs r)
 
number nrzLcm (number a, number b, const coeffs r)
 
number nrzGcd (number a, number b, const coeffs r)
 
number nrzExtGcd (number a, number b, number *s, number *t, const coeffs r)
 
nMapFunc nrzSetMap (const coeffs src, const coeffs dst)
 
void nrzWrite (number &a, const coeffs r)
 
const char * nrzRead (const char *s, number *a, const coeffs r)
 
char * nrzName (number n, const coeffs r)
 
void nrzCoeffWrite (const coeffs r, BOOLEAN details)
 
BOOLEAN nrzDBTest (number a, const char *f, const int l, const coeffs r)
 
void nrzSetExp (int c, coeffs r)
 
void nrzInitExp (int c, coeffs r)
 
coeffs nrzQuot1 (number c, const coeffs r)
 
number nrzMapQ (number from, const coeffs src, const coeffs dst)
 
number nrzMapMachineInt (number from, const coeffs, const coeffs)
 
number nrzMapZp (number from, const coeffs, const coeffs)
 
static const char * nlEatLongC (char *s, mpz_ptr i)
 
static CanonicalForm nrzConvSingNFactoryN (number n, BOOLEAN setChar, const coeffs)
 
static number nrzConvFactoryNSingN (const CanonicalForm n, const coeffs r)
 
static char * nrzCoeffString (const coeffs)
 
BOOLEAN nrzInitChar (coeffs r, void *)
 

Variables

static const n_coeffType ID = n_Z
 Our Type! More...
 
omBin gmp_nrz_bin = omGetSpecBin(sizeof(mpz_t))
 

Function Documentation

static const char* nlEatLongC ( char *  s,
mpz_ptr  i 
)
static

Definition at line 400 of file rintegers.cc.

401 {
402  const char * start=s;
403 
404  if (*s<'0' || *s>'9')
405  {
406  mpz_set_si(i,1);
407  return s;
408  }
409  while (*s >= '0' && *s <= '9') s++;
410  if (*s=='\0')
411  {
412  mpz_set_str(i,start,10);
413  }
414  else
415  {
416  char c=*s;
417  *s='\0';
418  mpz_set_str(i,start,10);
419  *s=c;
420  }
421  return s;
422 }
const CanonicalForm int s
Definition: facAbsFact.cc:55
int i
Definition: cfEzgcd.cc:123
number nrzAdd ( number  a,
number  b,
const coeffs  r 
)

Definition at line 190 of file rintegers.cc.

191 {
192  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
193  mpz_init(erg);
194  mpz_add(erg, (mpz_ptr) a, (mpz_ptr) b);
195  return (number) erg;
196 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
const poly a
Definition: syzextra.cc:212
omBin gmp_nrz_bin
Definition: rintegers.cc:80
const poly b
Definition: syzextra.cc:213
static char* nrzCoeffString ( const coeffs  )
static

Definition at line 464 of file rintegers.cc.

465 {
466  return omStrDup("integer");
467 }
#define omStrDup(s)
Definition: omAllocDecl.h:263
void nrzCoeffWrite ( const coeffs  r,
BOOLEAN  details 
)

Definition at line 459 of file rintegers.cc.

460 {
461  PrintS("// coeff. ring is : Integers\n");
462 }
void PrintS(const char *s)
Definition: reporter.cc:294
static number nrzConvFactoryNSingN ( const CanonicalForm  n,
const coeffs  r 
)
static

Definition at line 436 of file rintegers.cc.

437 {
438  if (n.isImm())
439  return nrzInit(n.intval(),r);
440  else
441  {
442  mpz_ptr m = (mpz_ptr) omAllocBin(gmp_nrz_bin);
443  gmp_numerator(n,m);
444  return (number) m;
445  }
446 }
void gmp_numerator(const CanonicalForm &f, mpz_ptr result)
Definition: singext.cc:20
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
omBin gmp_nrz_bin
Definition: rintegers.cc:80
long intval() const
conversion functions
const ring r
Definition: syzextra.cc:208
int m
Definition: cfEzgcd.cc:119
bool isImm() const
Definition: canonicalform.h:97
number nrzInit(long i, const coeffs r)
Definition: rintegers.cc:146
static CanonicalForm nrzConvSingNFactoryN ( number  n,
BOOLEAN  setChar,
const coeffs   
)
static

Definition at line 425 of file rintegers.cc.

426 {
427  if (setChar) setCharacteristic( 0 );
428 
430  mpz_t num;
431  mpz_init_set(num, *((mpz_t*)n));
432  term = make_cf(num);
433  return term;
434 }
CanonicalForm num(const CanonicalForm &f)
Definition: int_poly.h:36
const CanonicalForm CFMap CFMap int &both_non_zero int n
Definition: cfEzgcd.cc:52
factory's main class
Definition: canonicalform.h:72
void setCharacteristic(int c)
Definition: cf_char.cc:23
CanonicalForm make_cf(const mpz_ptr n)
Definition: singext.cc:67
number nrzCopy ( number  a,
const coeffs  r 
)

Definition at line 161 of file rintegers.cc.

162 {
163  if (a==NULL) return NULL;
164  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
165  mpz_init_set(erg, (mpz_ptr) a);
166  return (number) erg;
167 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
const poly a
Definition: syzextra.cc:212
omBin gmp_nrz_bin
Definition: rintegers.cc:80
#define NULL
Definition: omList.c:10
BOOLEAN nrzDBTest ( number  a,
const char *  f,
const int  l,
const coeffs  r 
)

Definition at line 374 of file rintegers.cc.

375 {
376  return TRUE;//TODO
377 }
#define TRUE
Definition: auxiliary.h:144
void nrzDelete ( number *  a,
const coeffs  r 
)

Definition at line 153 of file rintegers.cc.

154 {
155  if (*a == NULL) return;
156  mpz_clear((mpz_ptr) *a);
158  *a = NULL;
159 }
const poly a
Definition: syzextra.cc:212
omBin gmp_nrz_bin
Definition: rintegers.cc:80
void * ADDRESS
Definition: auxiliary.h:161
#define NULL
Definition: omList.c:10
#define omFreeBin(addr, bin)
Definition: omAllocDecl.h:259
number nrzDiv ( number  a,
number  b,
const coeffs  r 
)

Definition at line 262 of file rintegers.cc.

263 {
264  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
265  mpz_init(erg);
266  mpz_ptr r = (mpz_ptr) omAllocBin(gmp_nrz_bin);
267  mpz_init(r);
268  mpz_tdiv_qr(erg, r, (mpz_ptr) a, (mpz_ptr) b);
269  //if (!nrzIsZero((number) r, R))
270  //{
271  // WerrorS("Division by non divisible element.");
272  // WerrorS("Result is without remainder.");
273  //}
274  mpz_clear(r);
276  return (number) erg;
277 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
const poly a
Definition: syzextra.cc:212
omBin gmp_nrz_bin
Definition: rintegers.cc:80
#define omFreeBin(addr, bin)
Definition: omAllocDecl.h:259
const poly b
Definition: syzextra.cc:213
BOOLEAN nrzDivBy ( number  a,
number  b,
const coeffs  r 
)

Definition at line 257 of file rintegers.cc.

258 {
259  return mpz_divisible_p((mpz_ptr) a, (mpz_ptr) b) != 0;
260 }
const poly a
Definition: syzextra.cc:212
const poly b
Definition: syzextra.cc:213
int nrzDivComp ( number  a,
number  b,
const coeffs  r 
)

Definition at line 246 of file rintegers.cc.

247 {
248  if (nrzDivBy(a, b, r))
249  {
250  if (nrzDivBy(b, a, r)) return 2;
251  return -1;
252  }
253  if (nrzDivBy(b, a, r)) return 1;
254  return 0;
255 }
const poly a
Definition: syzextra.cc:212
BOOLEAN nrzDivBy(number a, number b, const coeffs r)
Definition: rintegers.cc:257
const poly b
Definition: syzextra.cc:213
BOOLEAN nrzEqual ( number  a,
number  b,
const coeffs  r 
)

Definition at line 231 of file rintegers.cc.

232 {
233  return 0 == mpz_cmp((mpz_ptr) a, (mpz_ptr) b);
234 }
const poly a
Definition: syzextra.cc:212
const poly b
Definition: syzextra.cc:213
number nrzExactDiv ( number  a,
number  b,
const coeffs  r 
)

Definition at line 279 of file rintegers.cc.

280 {
281  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
282  mpz_init(erg);
283  mpz_tdiv_q(erg, (mpz_ptr) a, (mpz_ptr) b);
284  return (number) erg;
285 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
const poly a
Definition: syzextra.cc:212
omBin gmp_nrz_bin
Definition: rintegers.cc:80
const poly b
Definition: syzextra.cc:213
number nrzExtGcd ( number  a,
number  b,
number *  s,
number *  t,
const coeffs  r 
)

Definition at line 121 of file rintegers.cc.

122 {
123  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
124  mpz_ptr bs = (mpz_ptr) omAllocBin(gmp_nrz_bin);
125  mpz_ptr bt = (mpz_ptr) omAllocBin(gmp_nrz_bin);
126  mpz_init(erg);
127  mpz_init(bs);
128  mpz_init(bt);
129  mpz_gcdext(erg, bs, bt, (mpz_ptr) a, (mpz_ptr) b);
130  *s = (number) bs;
131  *t = (number) bt;
132  return (number) erg;
133 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
const CanonicalForm int s
Definition: facAbsFact.cc:55
const poly a
Definition: syzextra.cc:212
omBin gmp_nrz_bin
Definition: rintegers.cc:80
const poly b
Definition: syzextra.cc:213
number nrzGcd ( number  a,
number  b,
const coeffs  r 
)

Definition at line 109 of file rintegers.cc.

110 {
111  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
112  mpz_init(erg);
113  mpz_gcd(erg, (mpz_ptr) a, (mpz_ptr) b);
114  return (number) erg;
115 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
const poly a
Definition: syzextra.cc:212
omBin gmp_nrz_bin
Definition: rintegers.cc:80
const poly b
Definition: syzextra.cc:213
number nrzGetUnit ( number  a,
const coeffs  r 
)

Definition at line 206 of file rintegers.cc.

207 {
208  return nrzInit(1, r);
209 }
number nrzInit(long i, const coeffs r)
Definition: rintegers.cc:146
BOOLEAN nrzGreater ( number  a,
number  b,
const coeffs  r 
)

Definition at line 236 of file rintegers.cc.

237 {
238  return 0 < mpz_cmp((mpz_ptr) a, (mpz_ptr) b);
239 }
const poly a
Definition: syzextra.cc:212
const poly b
Definition: syzextra.cc:213
BOOLEAN nrzGreaterZero ( number  k,
const coeffs  r 
)

Definition at line 241 of file rintegers.cc.

242 {
243  return 0 < mpz_cmp_si((mpz_ptr) k, 0);
244 }
int k
Definition: cfEzgcd.cc:93
number nrzInit ( long  i,
const coeffs  r 
)

Definition at line 146 of file rintegers.cc.

147 {
148  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
149  mpz_init_set_si(erg, i);
150  return (number) erg;
151 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
omBin gmp_nrz_bin
Definition: rintegers.cc:80
int i
Definition: cfEzgcd.cc:123
BOOLEAN nrzInitChar ( coeffs  r,
void *   
)

Definition at line 482 of file rintegers.cc.

483 {
484  assume( getCoeffType(r) == ID );
485 
486  r->is_field=FALSE;
487  r->is_domain=TRUE;
488  r->rep=n_rep_gmp;
489 
490  //r->nCoeffIsEqual = ndCoeffIsEqual;
491  r->cfCoeffString = nrzCoeffString;
492  //r->cfKillChar = ndKillChar;
493  r->cfMult = nrzMult;
494  r->cfSub = nrzSub;
495  r->cfAdd = nrzAdd;
496  r->cfDiv = nrzDiv;
497  r->cfIntMod= nrzIntMod;
498  r->cfExactDiv= nrzExactDiv;
499  r->cfInit = nrzInit;
500  r->cfSize = nrzSize;
501  r->cfInt = nrzInt;
502  //#ifdef HAVE_RINGS
503  r->cfDivComp = nrzDivComp; // only for ring stuff
504  r->cfIsUnit = nrzIsUnit; // only for ring stuff
505  r->cfGetUnit = nrzGetUnit; // only for ring stuff
506  r->cfExtGcd = nrzExtGcd; // only for ring stuff
507  r->cfDivBy = nrzDivBy; // only for ring stuff
508  //#endif
509  r->cfInpNeg = nrzNeg;
510  r->cfInvers= nrzInvers;
511  r->cfCopy = nrzCopy;
512  r->cfWriteLong = nrzWrite;
513  r->cfRead = nrzRead;
514  r->cfGreater = nrzGreater;
515  r->cfEqual = nrzEqual;
516  r->cfIsZero = nrzIsZero;
517  r->cfIsOne = nrzIsOne;
518  r->cfIsMOne = nrzIsMOne;
519  r->cfGreaterZero = nrzGreaterZero;
520  r->cfPower = nrzPower;
521  r->cfGcd = nrzGcd;
522  r->cfLcm = nrzLcm;
523  r->cfDelete= nrzDelete;
524  r->cfSetMap = nrzSetMap;
525  r->cfCoeffWrite = nrzCoeffWrite;
526  r->cfQuot1 = nrzQuot1;
527  r->convSingNFactoryN=nrzConvSingNFactoryN;
528  r->convFactoryNSingN=nrzConvFactoryNSingN;
529  // debug stuff
530 
531 #ifdef LDEBUG
532  r->cfDBTest=nrzDBTest;
533 #endif
534 
535  r->nNULL = 0;
536  r->ch = 0;
537  r->has_simple_Alloc=FALSE;
538  r->has_simple_Inverse=FALSE;
539  return FALSE;
540 }
static char * nrzCoeffString(const coeffs)
Definition: rintegers.cc:464
number nrzGetUnit(number a, const coeffs r)
Definition: rintegers.cc:206
number nrzIntMod(number a, number b, const coeffs r)
Definition: rintegers.cc:287
void nrzDelete(number *a, const coeffs r)
Definition: rintegers.cc:153
#define FALSE
Definition: auxiliary.h:140
int nrzDivComp(number a, number b, const coeffs r)
Definition: rintegers.cc:246
number nrzMult(number a, number b, const coeffs r)
Definition: rintegers.cc:86
number nrzLcm(number a, number b, const coeffs r)
Definition: rintegers.cc:97
void nrzWrite(number &a, const coeffs r)
Definition: rintegers.cc:380
BOOLEAN nrzEqual(number a, number b, const coeffs r)
Definition: rintegers.cc:231
#define TRUE
Definition: auxiliary.h:144
nMapFunc nrzSetMap(const coeffs src, const coeffs dst)
Definition: rintegers.cc:338
BOOLEAN nrzDivBy(number a, number b, const coeffs r)
Definition: rintegers.cc:257
number nrzDiv(number a, number b, const coeffs r)
Definition: rintegers.cc:262
BOOLEAN nrzGreaterZero(number k, const coeffs r)
Definition: rintegers.cc:241
BOOLEAN nrzGreater(number a, number b, const coeffs r)
Definition: rintegers.cc:236
void nrzPower(number a, int i, number *result, const coeffs r)
Definition: rintegers.cc:135
const char * nrzRead(const char *s, number *a, const coeffs r)
Definition: rintegers.cc:448
number nrzCopy(number a, const coeffs r)
Definition: rintegers.cc:161
number nrzNeg(number c, const coeffs r)
Definition: rintegers.cc:309
int nrzSize(number a, const coeffs r)
Definition: rintegers.cc:176
BOOLEAN nrzIsOne(number a, const coeffs r)
Definition: rintegers.cc:221
number nrzGcd(number a, number b, const coeffs r)
Definition: rintegers.cc:109
#define assume(x)
Definition: mod2.h:405
number nrzInvers(number c, const coeffs r)
Definition: rintegers.cc:299
number nrzExtGcd(number a, number b, number *s, number *t, const coeffs r)
Definition: rintegers.cc:121
number nrzSub(number a, number b, const coeffs r)
Definition: rintegers.cc:198
static CanonicalForm nrzConvSingNFactoryN(number n, BOOLEAN setChar, const coeffs)
Definition: rintegers.cc:425
coeffs nrzQuot1(number c, const coeffs r)
Definition: rintegers.cc:469
void nrzCoeffWrite(const coeffs r, BOOLEAN details)
Definition: rintegers.cc:459
(mpz_ptr), see rmodulon,h
Definition: coeffs.h:113
static FORCE_INLINE n_coeffType getCoeffType(const coeffs r)
Returns the type of coeffs domain.
Definition: coeffs.h:421
static const n_coeffType ID
Our Type!
Definition: rintegers.cc:32
number nrzInit(long i, const coeffs r)
Definition: rintegers.cc:146
number nrzAdd(number a, number b, const coeffs r)
Definition: rintegers.cc:190
number nrzExactDiv(number a, number b, const coeffs r)
Definition: rintegers.cc:279
BOOLEAN nrzIsMOne(number a, const coeffs r)
Definition: rintegers.cc:226
BOOLEAN nrzDBTest(number a, const char *f, const int l, const coeffs r)
Definition: rintegers.cc:374
BOOLEAN nrzIsUnit(number a, const coeffs r)
Definition: rintegers.cc:211
static number nrzConvFactoryNSingN(const CanonicalForm n, const coeffs r)
Definition: rintegers.cc:436
BOOLEAN nrzIsZero(number a, const coeffs r)
Definition: rintegers.cc:216
long nrzInt(number &n, const coeffs r)
Definition: rintegers.cc:185
void nrzInitExp ( int  c,
coeffs  r 
)

Definition at line 369 of file rintegers.cc.

370 {
371 }
long nrzInt ( number &  n,
const coeffs  r 
)

Definition at line 185 of file rintegers.cc.

186 {
187  return mpz_get_si( (mpz_ptr)n);
188 }
const CanonicalForm CFMap CFMap int &both_non_zero int n
Definition: cfEzgcd.cc:52
number nrzIntMod ( number  a,
number  b,
const coeffs  r 
)

Definition at line 287 of file rintegers.cc.

288 {
289  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
290  mpz_init(erg);
291  mpz_ptr r = (mpz_ptr) omAllocBin(gmp_nrz_bin);
292  mpz_init(r);
293  mpz_tdiv_qr(erg, r, (mpz_ptr) a, (mpz_ptr) b);
294  mpz_clear(erg);
295  omFreeBin(erg, gmp_nrz_bin);
296  return (number) r;
297 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
const poly a
Definition: syzextra.cc:212
omBin gmp_nrz_bin
Definition: rintegers.cc:80
const ring r
Definition: syzextra.cc:208
#define omFreeBin(addr, bin)
Definition: omAllocDecl.h:259
const poly b
Definition: syzextra.cc:213
number nrzInvers ( number  c,
const coeffs  r 
)

Definition at line 299 of file rintegers.cc.

300 {
301  if (!nrzIsUnit((number) c, r))
302  {
303  WerrorS("Non invertible element.");
304  return (number)0; //TODO
305  }
306  return nrzCopy(c,r);
307 }
void WerrorS(const char *s)
Definition: feFopen.cc:23
number nrzCopy(number a, const coeffs r)
Definition: rintegers.cc:161
BOOLEAN nrzIsUnit(number a, const coeffs r)
Definition: rintegers.cc:211
BOOLEAN nrzIsMOne ( number  a,
const coeffs  r 
)

Definition at line 226 of file rintegers.cc.

227 {
228  return (a!=NULL) && (0 == mpz_cmp_si((mpz_ptr) a, -1));
229 }
const poly a
Definition: syzextra.cc:212
#define NULL
Definition: omList.c:10
BOOLEAN nrzIsOne ( number  a,
const coeffs  r 
)

Definition at line 221 of file rintegers.cc.

222 {
223  return (a!=NULL) && (0 == mpz_cmp_si((mpz_ptr) a, 1));
224 }
const poly a
Definition: syzextra.cc:212
#define NULL
Definition: omList.c:10
BOOLEAN nrzIsUnit ( number  a,
const coeffs  r 
)

Definition at line 211 of file rintegers.cc.

212 {
213  return 0 == mpz_cmpabs_ui((mpz_ptr) a, 1);
214 }
const poly a
Definition: syzextra.cc:212
BOOLEAN nrzIsZero ( number  a,
const coeffs  r 
)

Definition at line 216 of file rintegers.cc.

217 {
218  return 0 == mpz_cmpabs_ui((mpz_ptr) a, 0);
219 }
const poly a
Definition: syzextra.cc:212
number nrzLcm ( number  a,
number  b,
const coeffs  r 
)

Definition at line 97 of file rintegers.cc.

98 {
99  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
100  mpz_init(erg);
101  mpz_lcm(erg, (mpz_ptr) a, (mpz_ptr) b);
102  return (number) erg;
103 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
const poly a
Definition: syzextra.cc:212
omBin gmp_nrz_bin
Definition: rintegers.cc:80
const poly b
Definition: syzextra.cc:213
number nrzMapMachineInt ( number  from,
const coeffs  ,
const coeffs   
)

Definition at line 316 of file rintegers.cc.

317 {
318  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
319  mpz_init_set_ui(erg, (unsigned long) from);
320  return (number) erg;
321 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
omBin gmp_nrz_bin
Definition: rintegers.cc:80
number nrzMapQ ( number  from,
const coeffs  src,
const coeffs  dst 
)

Definition at line 330 of file rintegers.cc.

331 {
332  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
333  mpz_init(erg);
334  nlGMP(from, (number) erg, src); // FIXME? TODO? // extern void nlGMP(number &i, number n, const coeffs r); // to be replaced with n_MPZ(erg, from, src); // ?
335  return (number) erg;
336 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
omBin gmp_nrz_bin
Definition: rintegers.cc:80
void nlGMP(number &i, number n, const coeffs r)
Definition: longrat.cc:1397
number nrzMapZp ( number  from,
const coeffs  ,
const coeffs   
)

Definition at line 323 of file rintegers.cc.

324 {
325  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
326  mpz_init_set_si(erg, (long) from);
327  return (number) erg;
328 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
omBin gmp_nrz_bin
Definition: rintegers.cc:80
number nrzMult ( number  a,
number  b,
const coeffs  r 
)

Definition at line 86 of file rintegers.cc.

87 {
88  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
89  mpz_init(erg);
90  mpz_mul(erg, (mpz_ptr) a, (mpz_ptr) b);
91  return (number) erg;
92 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
const poly a
Definition: syzextra.cc:212
omBin gmp_nrz_bin
Definition: rintegers.cc:80
const poly b
Definition: syzextra.cc:213
char* nrzName ( number  n,
const coeffs  r 
)
number nrzNeg ( number  c,
const coeffs  r 
)

Definition at line 309 of file rintegers.cc.

310 {
311 // nNeg inplace !!!
312  mpz_mul_si((mpz_ptr) c, (mpz_ptr) c, -1);
313  return c;
314 }
void mpz_mul_si(mpz_ptr r, mpz_srcptr s, long int si)
Definition: longrat.cc:179
void nrzPower ( number  a,
int  i,
number *  result,
const coeffs  r 
)

Definition at line 135 of file rintegers.cc.

136 {
137  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
138  mpz_init(erg);
139  mpz_pow_ui(erg, (mpz_ptr) a, i);
140  *result = (number) erg;
141 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
const poly a
Definition: syzextra.cc:212
omBin gmp_nrz_bin
Definition: rintegers.cc:80
int i
Definition: cfEzgcd.cc:123
return result
Definition: facAbsBiFact.cc:76
coeffs nrzQuot1 ( number  c,
const coeffs  r 
)

Definition at line 469 of file rintegers.cc.

470 {
471  long ch = r->cfInt(c, r);
472  mpz_ptr dummy;
473  dummy = (mpz_ptr) omAlloc(sizeof(mpz_t));
474  mpz_init_set_ui(dummy, ch);
475  ZnmInfo info;
476  info.base = dummy;
477  info.exp = (unsigned long) 1;
478  coeffs rr = nInitChar(n_Zn, (void*)&info);
479  return(rr);
480 }
mpz_ptr base
Definition: rmodulon.h:18
only used if HAVE_RINGS is defined: ?
Definition: coeffs.h:42
#define omAlloc(size)
Definition: omAllocDecl.h:210
The main handler for Singular numbers which are suitable for Singular polynomials.
unsigned long exp
Definition: rmodulon.h:18
#define info
Definition: libparse.cc:1254
coeffs nInitChar(n_coeffType t, void *parameter)
one-time initialisations for new coeffs in case of an error return NULL
Definition: numbers.cc:316
const char * nrzRead ( const char *  s,
number *  a,
const coeffs  r 
)

Definition at line 448 of file rintegers.cc.

449 {
450  mpz_ptr z = (mpz_ptr) omAllocBin(gmp_nrz_bin);
451  {
452  mpz_init(z);
453  s = nlEatLongC((char *) s, z);
454  }
455  *a = (number) z;
456  return s;
457 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
const CanonicalForm int s
Definition: facAbsFact.cc:55
const poly a
Definition: syzextra.cc:212
omBin gmp_nrz_bin
Definition: rintegers.cc:80
static const char * nlEatLongC(char *s, mpz_ptr i)
Definition: rintegers.cc:400
void nrzSetExp ( int  c,
coeffs  r 
)

Definition at line 365 of file rintegers.cc.

366 {
367 }
nMapFunc nrzSetMap ( const coeffs  src,
const coeffs  dst 
)

Definition at line 338 of file rintegers.cc.

339 {
340  /* dst = currRing */
342  {
343  return ndCopyMap; //nrzCopyMap;
344  }
345  if (nCoeff_is_Ring_2toM(src))
346  {
347  return nrzMapMachineInt;
348  }
349  if (nCoeff_is_Zp(src))
350  {
351  return nrzMapZp;
352  }
353  if (getCoeffType(src)==n_Q /*nCoeff_is_Q(src) or coeffs_BIGINT*/)
354  {
355  return nrzMapQ;
356  }
357  return NULL; // default
358 }
static FORCE_INLINE BOOLEAN nCoeff_is_Ring_ModN(const coeffs r)
Definition: coeffs.h:742
static FORCE_INLINE BOOLEAN nCoeff_is_Zp(const coeffs r)
Definition: coeffs.h:816
number ndCopyMap(number a, const coeffs aRing, const coeffs r)
Definition: numbers.cc:228
rational (GMP) numbers
Definition: coeffs.h:30
static FORCE_INLINE BOOLEAN nCoeff_is_Ring_Z(const coeffs r)
Definition: coeffs.h:748
static FORCE_INLINE BOOLEAN nCoeff_is_Ring_2toM(const coeffs r)
Definition: coeffs.h:739
number nrzMapQ(number from, const coeffs src, const coeffs dst)
Definition: rintegers.cc:330
number nrzMapZp(number from, const coeffs, const coeffs)
Definition: rintegers.cc:323
static FORCE_INLINE BOOLEAN nCoeff_is_Ring_PtoM(const coeffs r)
Definition: coeffs.h:745
static FORCE_INLINE n_coeffType getCoeffType(const coeffs r)
Returns the type of coeffs domain.
Definition: coeffs.h:421
number nrzMapMachineInt(number from, const coeffs, const coeffs)
Definition: rintegers.cc:316
#define NULL
Definition: omList.c:10
int nrzSize ( number  a,
const coeffs  r 
)

Definition at line 176 of file rintegers.cc.

177 {
178  if (a == NULL) return 0;
179  return ((mpz_ptr)a)->_mp_alloc;
180 }
const poly a
Definition: syzextra.cc:212
#define NULL
Definition: omList.c:10
number nrzSub ( number  a,
number  b,
const coeffs  r 
)

Definition at line 198 of file rintegers.cc.

199 {
200  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
201  mpz_init(erg);
202  mpz_sub(erg, (mpz_ptr) a, (mpz_ptr) b);
203  return (number) erg;
204 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
const poly a
Definition: syzextra.cc:212
omBin gmp_nrz_bin
Definition: rintegers.cc:80
const poly b
Definition: syzextra.cc:213
void nrzWrite ( number &  a,
const coeffs  r 
)

Definition at line 380 of file rintegers.cc.

381 {
382  char *s,*z;
383  if (a==NULL)
384  {
385  StringAppendS("o");
386  }
387  else
388  {
389  int l=mpz_sizeinbase((mpz_ptr) a, 10) + 2;
390  s=(char*)omAlloc(l);
391  z=mpz_get_str(s,10,(mpz_ptr) a);
392  StringAppendS(z);
393  omFreeSize((ADDRESS)s,l);
394  }
395 }
const CanonicalForm int s
Definition: facAbsFact.cc:55
const poly a
Definition: syzextra.cc:212
#define omFreeSize(addr, size)
Definition: omAllocDecl.h:260
void * ADDRESS
Definition: auxiliary.h:161
#define omAlloc(size)
Definition: omAllocDecl.h:210
void StringAppendS(const char *st)
Definition: reporter.cc:107
#define NULL
Definition: omList.c:10
int l
Definition: cfEzgcd.cc:94

Variable Documentation

omBin gmp_nrz_bin = omGetSpecBin(sizeof(mpz_t))

Definition at line 80 of file rintegers.cc.

const n_coeffType ID = n_Z
static

Our Type!

Definition at line 32 of file rintegers.cc.