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 406 of file rintegers.cc.

407 {
408  const char * start=s;
409 
410  if (*s<'0' || *s>'9')
411  {
412  mpz_set_si(i,1);
413  return s;
414  }
415  while (*s >= '0' && *s <= '9') s++;
416  if (*s=='\0')
417  {
418  mpz_set_str(i,start,10);
419  }
420  else
421  {
422  char c=*s;
423  *s='\0';
424  mpz_set_str(i,start,10);
425  *s=c;
426  }
427  return s;
428 }
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 470 of file rintegers.cc.

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

Definition at line 465 of file rintegers.cc.

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

Definition at line 442 of file rintegers.cc.

443 {
444  if (n.isImm())
445  return nrzInit(n.intval(),r);
446  else
447  {
448  mpz_ptr m = (mpz_ptr) omAllocBin(gmp_nrz_bin);
449  gmp_numerator(n,m);
450  return (number) m;
451  }
452 }
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
number nrzInit(long i, const coeffs r)
Definition: rintegers.cc:146
static CanonicalForm nrzConvSingNFactoryN ( number  n,
BOOLEAN  setChar,
const coeffs   
)
static

Definition at line 431 of file rintegers.cc.

432 {
433  if (setChar) setCharacteristic( 0 );
434 
436  mpz_t num;
437  mpz_init_set(num, *((mpz_t*)n));
438  term = make_cf(num);
439  return term;
440 }
CanonicalForm num(const CanonicalForm &f)
Definition: int_poly.h:36
factory&#39;s main class
Definition: canonicalform.h:75
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 380 of file rintegers.cc.

381 {
382  return TRUE;//TODO
383 }
#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 488 of file rintegers.cc.

489 {
490  assume( getCoeffType(r) == ID );
491 
492  r->is_field=FALSE;
493  r->is_domain=TRUE;
494  r->rep=n_rep_gmp;
495 
496  //r->nCoeffIsEqual = ndCoeffIsEqual;
497  r->cfCoeffString = nrzCoeffString;
498  //r->cfKillChar = ndKillChar;
499  r->cfMult = nrzMult;
500  r->cfSub = nrzSub;
501  r->cfAdd = nrzAdd;
502  r->cfDiv = nrzDiv;
503  r->cfIntMod= nrzIntMod;
504  r->cfExactDiv= nrzExactDiv;
505  r->cfInit = nrzInit;
506  r->cfSize = nrzSize;
507  r->cfInt = nrzInt;
508  //#ifdef HAVE_RINGS
509  r->cfDivComp = nrzDivComp; // only for ring stuff
510  r->cfIsUnit = nrzIsUnit; // only for ring stuff
511  r->cfGetUnit = nrzGetUnit; // only for ring stuff
512  r->cfExtGcd = nrzExtGcd; // only for ring stuff
513  r->cfDivBy = nrzDivBy; // only for ring stuff
514  //#endif
515  r->cfInpNeg = nrzNeg;
516  r->cfInvers= nrzInvers;
517  r->cfCopy = nrzCopy;
518  r->cfWriteLong = nrzWrite;
519  r->cfRead = nrzRead;
520  r->cfGreater = nrzGreater;
521  r->cfEqual = nrzEqual;
522  r->cfIsZero = nrzIsZero;
523  r->cfIsOne = nrzIsOne;
524  r->cfIsMOne = nrzIsMOne;
525  r->cfGreaterZero = nrzGreaterZero;
526  r->cfPower = nrzPower;
527  r->cfGcd = nrzGcd;
528  r->cfLcm = nrzLcm;
529  r->cfDelete= nrzDelete;
530  r->cfSetMap = nrzSetMap;
531  r->cfCoeffWrite = nrzCoeffWrite;
532  r->cfQuot1 = nrzQuot1;
533  r->convSingNFactoryN=nrzConvSingNFactoryN;
534  r->convFactoryNSingN=nrzConvFactoryNSingN;
535  // debug stuff
536 
537 #ifdef LDEBUG
538  r->cfDBTest=nrzDBTest;
539 #endif
540 
541  r->nNULL = 0;
542  r->ch = 0;
543  r->has_simple_Alloc=FALSE;
544  r->has_simple_Inverse=FALSE;
545  return FALSE;
546 }
static char * nrzCoeffString(const coeffs)
Definition: rintegers.cc:470
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
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:454
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
void nrzWrite(number a, const coeffs r)
Definition: rintegers.cc:386
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:431
coeffs nrzQuot1(number c, const coeffs r)
Definition: rintegers.cc:475
void nrzCoeffWrite(const coeffs r, BOOLEAN details)
Definition: rintegers.cc:465
(mpz_ptr), see rmodulon,h
Definition: coeffs.h:114
static FORCE_INLINE n_coeffType getCoeffType(const coeffs r)
Returns the type of coeffs domain.
Definition: coeffs.h:422
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:380
BOOLEAN nrzIsUnit(number a, const coeffs r)
Definition: rintegers.cc:211
static number nrzConvFactoryNSingN(const CanonicalForm n, const coeffs r)
Definition: rintegers.cc:442
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 375 of file rintegers.cc.

376 {
377 }
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 }
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:24
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:1410
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:181
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 475 of file rintegers.cc.

476 {
477  long ch = r->cfInt(c, r);
478  mpz_ptr dummy;
479  dummy = (mpz_ptr) omAlloc(sizeof(mpz_t));
480  mpz_init_set_ui(dummy, ch);
481  ZnmInfo info;
482  info.base = dummy;
483  info.exp = (unsigned long) 1;
484  coeffs rr = nInitChar(n_Zn, (void*)&info);
485  return(rr);
486 }
mpz_ptr base
Definition: rmodulon.h:18
only used if HAVE_RINGS is defined: ?
Definition: coeffs.h:43
#define omAlloc(size)
Definition: omAllocDecl.h:210
The main handler for Singular numbers which are suitable for Singular polynomials.
const ExtensionInfo & info
< [in] sqrfree poly
unsigned long exp
Definition: rmodulon.h:18
coeffs nInitChar(n_coeffType t, void *parameter)
one-time initialisations for new coeffs in case of an error return NULL
Definition: numbers.cc:327
const char * nrzRead ( const char *  s,
number *  a,
const coeffs  r 
)

Definition at line 454 of file rintegers.cc.

455 {
456  mpz_ptr z = (mpz_ptr) omAllocBin(gmp_nrz_bin);
457  {
458  mpz_init(z);
459  s = nlEatLongC((char *) s, z);
460  }
461  *a = (number) z;
462  return s;
463 }
#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:406
void nrzSetExp ( int  c,
coeffs  r 
)

Definition at line 371 of file rintegers.cc.

372 {
373 }
nMapFunc nrzSetMap ( const coeffs  src,
const coeffs  dst 
)

Definition at line 338 of file rintegers.cc.

339 {
340  /* dst = currRing */
341  /* dst = nrn */
342  if ((src->rep==n_rep_gmp)
343  && (nCoeff_is_Ring_Z(src) || nCoeff_is_Ring_ModN(src) || nCoeff_is_Ring_PtoM(src)))
344  {
345  return ndCopyMap; //nrzCopyMap;
346  }
347  if ((src->rep==n_rep_gap_gmp) /*&& nCoeff_is_Ring_Z(src)*/)
348  {
349  return ndCopyMap; //nrzCopyMap;
350  }
351  if (nCoeff_is_Ring_2toM(src))
352  {
353  return nrzMapMachineInt;
354  }
355  if (nCoeff_is_Zp(src))
356  {
357  return nrzMapZp;
358  }
359  if (getCoeffType(src)==n_Q /*nCoeff_is_Q(src) or coeffs_BIGINT*/)
360  {
361  return nrzMapQ;
362  }
363  return NULL; // default
364 }
static FORCE_INLINE BOOLEAN nCoeff_is_Ring_ModN(const coeffs r)
Definition: coeffs.h:744
static FORCE_INLINE BOOLEAN nCoeff_is_Zp(const coeffs r)
Definition: coeffs.h:818
number ndCopyMap(number a, const coeffs aRing, const coeffs r)
Definition: numbers.cc:239
rational (GMP) numbers
Definition: coeffs.h:31
static FORCE_INLINE BOOLEAN nCoeff_is_Ring_Z(const coeffs r)
Definition: coeffs.h:750
static FORCE_INLINE BOOLEAN nCoeff_is_Ring_2toM(const coeffs r)
Definition: coeffs.h:741
(), see rinteger.h, new impl.
Definition: coeffs.h:111
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:747
(mpz_ptr), see rmodulon,h
Definition: coeffs.h:114
static FORCE_INLINE n_coeffType getCoeffType(const coeffs r)
Returns the type of coeffs domain.
Definition: coeffs.h:422
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 386 of file rintegers.cc.

387 {
388  char *s,*z;
389  if (a==NULL)
390  {
391  StringAppendS("o");
392  }
393  else
394  {
395  int l=mpz_sizeinbase((mpz_ptr) a, 10) + 2;
396  s=(char*)omAlloc(l);
397  z=mpz_get_str(s,10,(mpz_ptr) a);
398  StringAppendS(z);
399  omFreeSize((ADDRESS)s,l);
400  }
401 }
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.