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)
 
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 nrzInit (long i, const coeffs)
 
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 * nrzCoeffName (const coeffs)
 
static char * nrzCoeffString (const coeffs cf)
 
BOOLEAN nrzInitChar (coeffs r, void *)
 

Variables

omBin gmp_nrz_bin = omGetSpecBin(sizeof(mpz_t))
 

Function Documentation

§ nlEatLongC()

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

Definition at line 402 of file rintegers.cc.

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

§ nrzAdd()

number nrzAdd ( number  a,
number  b,
const coeffs  r 
)

Definition at line 186 of file rintegers.cc.

187 {
188  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
189  mpz_init(erg);
190  mpz_add(erg, (mpz_ptr) a, (mpz_ptr) b);
191  return (number) erg;
192 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
const poly a
Definition: syzextra.cc:212
omBin gmp_nrz_bin
Definition: rintegers.cc:76
const poly b
Definition: syzextra.cc:213

§ nrzCoeffName()

static char* nrzCoeffName ( const coeffs  )
static

Definition at line 470 of file rintegers.cc.

471 {
472 #ifdef SINGULAR_4_1
473  return (char*)"ZZ";
474 #else
475  return (char*)"integer";
476 #endif
477 }

§ nrzCoeffString()

static char* nrzCoeffString ( const coeffs  cf)
static

Definition at line 479 of file rintegers.cc.

480 {
481  return omStrDup(nrzCoeffName(cf));
482 }
static char * nrzCoeffName(const coeffs)
Definition: rintegers.cc:470
#define omStrDup(s)
Definition: omAllocDecl.h:263

§ nrzCoeffWrite()

void nrzCoeffWrite ( const coeffs  r,
BOOLEAN  details 
)

Definition at line 461 of file rintegers.cc.

462 {
463 #ifdef SINGULAR_4_1
464  PrintS("// coeff. ring is : ZZ\n");
465 #else
466  PrintS("// coeff. ring is : integer\n");
467 #endif
468 }
void PrintS(const char *s)
Definition: reporter.cc:284

§ nrzConvFactoryNSingN()

static number nrzConvFactoryNSingN ( const CanonicalForm  n,
const coeffs  r 
)
static

Definition at line 438 of file rintegers.cc.

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

§ nrzConvSingNFactoryN()

static CanonicalForm nrzConvSingNFactoryN ( number  n,
BOOLEAN  setChar,
const coeffs   
)
static

Definition at line 427 of file rintegers.cc.

428 {
429  if (setChar) setCharacteristic( 0 );
430 
432  mpz_t num;
433  mpz_init_set(num, *((mpz_t*)n));
434  term = make_cf(num);
435  return term;
436 }
CanonicalForm num(const CanonicalForm &f)
Definition: int_poly.h:33
factory&#39;s main class
Definition: canonicalform.h:75
CanonicalForm make_cf(const mpz_ptr n)
Definition: singext.cc:67
void setCharacteristic(int c)
Definition: cf_char.cc:23

§ nrzCopy()

number nrzCopy ( number  a,
const coeffs  r 
)

Definition at line 157 of file rintegers.cc.

158 {
159  if (a==NULL) return NULL;
160  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
161  mpz_init_set(erg, (mpz_ptr) a);
162  return (number) erg;
163 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
const poly a
Definition: syzextra.cc:212
omBin gmp_nrz_bin
Definition: rintegers.cc:76
#define NULL
Definition: omList.c:10

§ nrzDBTest()

BOOLEAN nrzDBTest ( number  a,
const char *  f,
const int  l,
const coeffs  r 
)

Definition at line 376 of file rintegers.cc.

377 {
378  return TRUE;//TODO
379 }
#define TRUE
Definition: auxiliary.h:99

§ nrzDelete()

void nrzDelete ( number *  a,
const coeffs  r 
)

Definition at line 149 of file rintegers.cc.

150 {
151  if (*a == NULL) return;
152  mpz_clear((mpz_ptr) *a);
154  *a = NULL;
155 }
const poly a
Definition: syzextra.cc:212
omBin gmp_nrz_bin
Definition: rintegers.cc:76
void * ADDRESS
Definition: auxiliary.h:116
#define NULL
Definition: omList.c:10
#define omFreeBin(addr, bin)
Definition: omAllocDecl.h:259

§ nrzDiv()

number nrzDiv ( number  a,
number  b,
const coeffs  r 
)

Definition at line 258 of file rintegers.cc.

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

§ nrzDivBy()

BOOLEAN nrzDivBy ( number  a,
number  b,
const coeffs  r 
)

Definition at line 253 of file rintegers.cc.

254 {
255  return mpz_divisible_p((mpz_ptr) a, (mpz_ptr) b) != 0;
256 }
const poly a
Definition: syzextra.cc:212
const poly b
Definition: syzextra.cc:213

§ nrzDivComp()

int nrzDivComp ( number  a,
number  b,
const coeffs  r 
)

Definition at line 242 of file rintegers.cc.

243 {
244  if (nrzDivBy(a, b, r))
245  {
246  if (nrzDivBy(b, a, r)) return 2;
247  return -1;
248  }
249  if (nrzDivBy(b, a, r)) return 1;
250  return 0;
251 }
const poly a
Definition: syzextra.cc:212
BOOLEAN nrzDivBy(number a, number b, const coeffs r)
Definition: rintegers.cc:253
const poly b
Definition: syzextra.cc:213

§ nrzEqual()

BOOLEAN nrzEqual ( number  a,
number  b,
const coeffs  r 
)

Definition at line 227 of file rintegers.cc.

228 {
229  return 0 == mpz_cmp((mpz_ptr) a, (mpz_ptr) b);
230 }
const poly a
Definition: syzextra.cc:212
const poly b
Definition: syzextra.cc:213

§ nrzExactDiv()

number nrzExactDiv ( number  a,
number  b,
const coeffs  r 
)

Definition at line 275 of file rintegers.cc.

276 {
277  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
278  mpz_init(erg);
279  mpz_tdiv_q(erg, (mpz_ptr) a, (mpz_ptr) b);
280  return (number) erg;
281 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
const poly a
Definition: syzextra.cc:212
omBin gmp_nrz_bin
Definition: rintegers.cc:76
const poly b
Definition: syzextra.cc:213

§ nrzExtGcd()

number nrzExtGcd ( number  a,
number  b,
number *  s,
number *  t,
const coeffs  r 
)

Definition at line 117 of file rintegers.cc.

118 {
119  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
120  mpz_ptr bs = (mpz_ptr) omAllocBin(gmp_nrz_bin);
121  mpz_ptr bt = (mpz_ptr) omAllocBin(gmp_nrz_bin);
122  mpz_init(erg);
123  mpz_init(bs);
124  mpz_init(bt);
125  mpz_gcdext(erg, bs, bt, (mpz_ptr) a, (mpz_ptr) b);
126  *s = (number) bs;
127  *t = (number) bt;
128  return (number) erg;
129 }
#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:76
const poly b
Definition: syzextra.cc:213

§ nrzGcd()

number nrzGcd ( number  a,
number  b,
const coeffs  r 
)

Definition at line 105 of file rintegers.cc.

106 {
107  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
108  mpz_init(erg);
109  mpz_gcd(erg, (mpz_ptr) a, (mpz_ptr) b);
110  return (number) erg;
111 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
const poly a
Definition: syzextra.cc:212
omBin gmp_nrz_bin
Definition: rintegers.cc:76
const poly b
Definition: syzextra.cc:213

§ nrzGetUnit()

number nrzGetUnit ( number  a,
const coeffs  r 
)

Definition at line 202 of file rintegers.cc.

203 {
204  return nrzInit(1, r);
205 }
number nrzInit(long i, const coeffs)
Definition: rintegers.cc:142

§ nrzGreater()

BOOLEAN nrzGreater ( number  a,
number  b,
const coeffs  r 
)

Definition at line 232 of file rintegers.cc.

233 {
234  return 0 < mpz_cmp((mpz_ptr) a, (mpz_ptr) b);
235 }
const poly a
Definition: syzextra.cc:212
const poly b
Definition: syzextra.cc:213

§ nrzGreaterZero()

BOOLEAN nrzGreaterZero ( number  k,
const coeffs  r 
)

Definition at line 237 of file rintegers.cc.

238 {
239  return 0 < mpz_cmp_si((mpz_ptr) k, 0);
240 }
int k
Definition: cfEzgcd.cc:93

§ nrzInit()

number nrzInit ( long  i,
const coeffs   
)

Definition at line 142 of file rintegers.cc.

143 {
144  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
145  mpz_init_set_si(erg, i);
146  return (number) erg;
147 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
omBin gmp_nrz_bin
Definition: rintegers.cc:76
int i
Definition: cfEzgcd.cc:123

§ nrzInitChar()

BOOLEAN nrzInitChar ( coeffs  r,
void *   
)

Definition at line 497 of file rintegers.cc.

498 {
499  assume( getCoeffType(r) == n_Z );
500 
501  r->is_field=FALSE;
502  r->is_domain=TRUE;
503  r->rep=n_rep_gmp;
504 
505  //r->nCoeffIsEqual = ndCoeffIsEqual;
506  r->cfCoeffString = nrzCoeffString;
507  r->cfCoeffName = nrzCoeffName;
508  r->cfCoeffWrite = nrzCoeffWrite;
509  //r->cfKillChar = ndKillChar;
510  r->cfMult = nrzMult;
511  r->cfSub = nrzSub;
512  r->cfAdd = nrzAdd;
513  r->cfDiv = nrzDiv;
514  r->cfIntMod= nrzIntMod;
515  r->cfExactDiv= nrzExactDiv;
516  r->cfInit = nrzInit;
517  r->cfSize = nrzSize;
518  r->cfInt = nrzInt;
519  //#ifdef HAVE_RINGS
520  r->cfDivComp = nrzDivComp; // only for ring stuff
521  r->cfIsUnit = nrzIsUnit; // only for ring stuff
522  r->cfGetUnit = nrzGetUnit; // only for ring stuff
523  r->cfExtGcd = nrzExtGcd; // only for ring stuff
524  r->cfDivBy = nrzDivBy; // only for ring stuff
525  //#endif
526  r->cfInpNeg = nrzNeg;
527  r->cfInvers= nrzInvers;
528  r->cfCopy = nrzCopy;
529  r->cfWriteLong = nrzWrite;
530  r->cfRead = nrzRead;
531  r->cfGreater = nrzGreater;
532  r->cfEqual = nrzEqual;
533  r->cfIsZero = nrzIsZero;
534  r->cfIsOne = nrzIsOne;
535  r->cfIsMOne = nrzIsMOne;
536  r->cfGreaterZero = nrzGreaterZero;
537  r->cfPower = nrzPower;
538  r->cfGcd = nrzGcd;
539  r->cfLcm = nrzLcm;
540  r->cfDelete= nrzDelete;
541  r->cfSetMap = nrzSetMap;
542  r->cfQuot1 = nrzQuot1;
543  r->convSingNFactoryN=nrzConvSingNFactoryN;
544  r->convFactoryNSingN=nrzConvFactoryNSingN;
545  // debug stuff
546 
547 #ifdef LDEBUG
548  r->cfDBTest=nrzDBTest;
549 #endif
550 
551  r->nNULL = 0;
552  r->ch = 0;
553  r->has_simple_Alloc=FALSE;
554  r->has_simple_Inverse=FALSE;
555  return FALSE;
556 }
number nrzGetUnit(number a, const coeffs r)
Definition: rintegers.cc:202
number nrzIntMod(number a, number b, const coeffs r)
Definition: rintegers.cc:283
void nrzDelete(number *a, const coeffs r)
Definition: rintegers.cc:149
#define FALSE
Definition: auxiliary.h:95
int nrzDivComp(number a, number b, const coeffs r)
Definition: rintegers.cc:242
number nrzMult(number a, number b, const coeffs r)
Definition: rintegers.cc:82
number nrzLcm(number a, number b, const coeffs r)
Definition: rintegers.cc:93
BOOLEAN nrzEqual(number a, number b, const coeffs r)
Definition: rintegers.cc:227
#define TRUE
Definition: auxiliary.h:99
nMapFunc nrzSetMap(const coeffs src, const coeffs dst)
Definition: rintegers.cc:334
BOOLEAN nrzDivBy(number a, number b, const coeffs r)
Definition: rintegers.cc:253
number nrzDiv(number a, number b, const coeffs r)
Definition: rintegers.cc:258
BOOLEAN nrzGreaterZero(number k, const coeffs r)
Definition: rintegers.cc:237
BOOLEAN nrzGreater(number a, number b, const coeffs r)
Definition: rintegers.cc:232
void nrzPower(number a, int i, number *result, const coeffs r)
Definition: rintegers.cc:131
const char * nrzRead(const char *s, number *a, const coeffs r)
Definition: rintegers.cc:450
number nrzCopy(number a, const coeffs r)
Definition: rintegers.cc:157
number nrzNeg(number c, const coeffs r)
Definition: rintegers.cc:305
int nrzSize(number a, const coeffs r)
Definition: rintegers.cc:172
void nrzWrite(number a, const coeffs r)
Definition: rintegers.cc:382
BOOLEAN nrzIsOne(number a, const coeffs r)
Definition: rintegers.cc:217
number nrzGcd(number a, number b, const coeffs r)
Definition: rintegers.cc:105
#define assume(x)
Definition: mod2.h:403
number nrzInvers(number c, const coeffs r)
Definition: rintegers.cc:295
number nrzExtGcd(number a, number b, number *s, number *t, const coeffs r)
Definition: rintegers.cc:117
number nrzSub(number a, number b, const coeffs r)
Definition: rintegers.cc:194
static CanonicalForm nrzConvSingNFactoryN(number n, BOOLEAN setChar, const coeffs)
Definition: rintegers.cc:427
coeffs nrzQuot1(number c, const coeffs r)
Definition: rintegers.cc:484
only used if HAVE_RINGS is defined
Definition: coeffs.h:43
void nrzCoeffWrite(const coeffs r, BOOLEAN details)
Definition: rintegers.cc:461
(mpz_ptr), see rmodulon,h
Definition: coeffs.h:115
static FORCE_INLINE n_coeffType getCoeffType(const coeffs r)
Returns the type of coeffs domain.
Definition: coeffs.h:425
static char * nrzCoeffName(const coeffs)
Definition: rintegers.cc:470
number nrzInit(long i, const coeffs)
Definition: rintegers.cc:142
number nrzAdd(number a, number b, const coeffs r)
Definition: rintegers.cc:186
number nrzExactDiv(number a, number b, const coeffs r)
Definition: rintegers.cc:275
BOOLEAN nrzIsMOne(number a, const coeffs r)
Definition: rintegers.cc:222
BOOLEAN nrzDBTest(number a, const char *f, const int l, const coeffs r)
Definition: rintegers.cc:376
static char * nrzCoeffString(const coeffs cf)
Definition: rintegers.cc:479
BOOLEAN nrzIsUnit(number a, const coeffs r)
Definition: rintegers.cc:207
static number nrzConvFactoryNSingN(const CanonicalForm n, const coeffs r)
Definition: rintegers.cc:438
BOOLEAN nrzIsZero(number a, const coeffs r)
Definition: rintegers.cc:212
long nrzInt(number &n, const coeffs r)
Definition: rintegers.cc:181

§ nrzInitExp()

void nrzInitExp ( int  c,
coeffs  r 
)

Definition at line 371 of file rintegers.cc.

372 {
373 }

§ nrzInt()

long nrzInt ( number &  n,
const coeffs  r 
)

Definition at line 181 of file rintegers.cc.

182 {
183  return mpz_get_si( (mpz_ptr)n);
184 }

§ nrzIntMod()

number nrzIntMod ( number  a,
number  b,
const coeffs  r 
)

Definition at line 283 of file rintegers.cc.

284 {
285  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
286  mpz_init(erg);
287  mpz_ptr r = (mpz_ptr) omAllocBin(gmp_nrz_bin);
288  mpz_init(r);
289  mpz_tdiv_qr(erg, r, (mpz_ptr) a, (mpz_ptr) b);
290  mpz_clear(erg);
291  omFreeBin(erg, gmp_nrz_bin);
292  return (number) r;
293 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
const poly a
Definition: syzextra.cc:212
omBin gmp_nrz_bin
Definition: rintegers.cc:76
const ring r
Definition: syzextra.cc:208
#define omFreeBin(addr, bin)
Definition: omAllocDecl.h:259
const poly b
Definition: syzextra.cc:213

§ nrzInvers()

number nrzInvers ( number  c,
const coeffs  r 
)

Definition at line 295 of file rintegers.cc.

296 {
297  if (!nrzIsUnit((number) c, r))
298  {
299  WerrorS("Non invertible element.");
300  return (number)0; //TODO
301  }
302  return nrzCopy(c,r);
303 }
void WerrorS(const char *s)
Definition: feFopen.cc:24
number nrzCopy(number a, const coeffs r)
Definition: rintegers.cc:157
BOOLEAN nrzIsUnit(number a, const coeffs r)
Definition: rintegers.cc:207

§ nrzIsMOne()

BOOLEAN nrzIsMOne ( number  a,
const coeffs  r 
)

Definition at line 222 of file rintegers.cc.

223 {
224  return (a!=NULL) && (0 == mpz_cmp_si((mpz_ptr) a, -1));
225 }
const poly a
Definition: syzextra.cc:212
#define NULL
Definition: omList.c:10

§ nrzIsOne()

BOOLEAN nrzIsOne ( number  a,
const coeffs  r 
)

Definition at line 217 of file rintegers.cc.

218 {
219  return (a!=NULL) && (0 == mpz_cmp_si((mpz_ptr) a, 1));
220 }
const poly a
Definition: syzextra.cc:212
#define NULL
Definition: omList.c:10

§ nrzIsUnit()

BOOLEAN nrzIsUnit ( number  a,
const coeffs  r 
)

Definition at line 207 of file rintegers.cc.

208 {
209  return 0 == mpz_cmpabs_ui((mpz_ptr) a, 1);
210 }
const poly a
Definition: syzextra.cc:212

§ nrzIsZero()

BOOLEAN nrzIsZero ( number  a,
const coeffs  r 
)

Definition at line 212 of file rintegers.cc.

213 {
214  return 0 == mpz_cmpabs_ui((mpz_ptr) a, 0);
215 }
const poly a
Definition: syzextra.cc:212

§ nrzLcm()

number nrzLcm ( number  a,
number  b,
const coeffs  r 
)

Definition at line 93 of file rintegers.cc.

94 {
95  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
96  mpz_init(erg);
97  mpz_lcm(erg, (mpz_ptr) a, (mpz_ptr) b);
98  return (number) erg;
99 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
const poly a
Definition: syzextra.cc:212
omBin gmp_nrz_bin
Definition: rintegers.cc:76
const poly b
Definition: syzextra.cc:213

§ nrzMapMachineInt()

number nrzMapMachineInt ( number  from,
const coeffs  ,
const coeffs   
)

Definition at line 312 of file rintegers.cc.

313 {
314  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
315  mpz_init_set_ui(erg, (unsigned long) from);
316  return (number) erg;
317 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
omBin gmp_nrz_bin
Definition: rintegers.cc:76

§ nrzMapQ()

number nrzMapQ ( number  from,
const coeffs  src,
const coeffs  dst 
)

Definition at line 326 of file rintegers.cc.

327 {
328  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
329  mpz_init(erg);
330  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); // ?
331  return (number) erg;
332 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
omBin gmp_nrz_bin
Definition: rintegers.cc:76
void nlGMP(number &i, number n, const coeffs r)
Definition: longrat.cc:1467

§ nrzMapZp()

number nrzMapZp ( number  from,
const coeffs  ,
const coeffs   
)

Definition at line 319 of file rintegers.cc.

320 {
321  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
322  mpz_init_set_si(erg, (long) from);
323  return (number) erg;
324 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
omBin gmp_nrz_bin
Definition: rintegers.cc:76

§ nrzMult()

number nrzMult ( number  a,
number  b,
const coeffs  r 
)

Definition at line 82 of file rintegers.cc.

83 {
84  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
85  mpz_init(erg);
86  mpz_mul(erg, (mpz_ptr) a, (mpz_ptr) b);
87  return (number) erg;
88 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
const poly a
Definition: syzextra.cc:212
omBin gmp_nrz_bin
Definition: rintegers.cc:76
const poly b
Definition: syzextra.cc:213

§ nrzName()

char* nrzName ( number  n,
const coeffs  r 
)

§ nrzNeg()

number nrzNeg ( number  c,
const coeffs  r 
)

Definition at line 305 of file rintegers.cc.

306 {
307 // nNeg inplace !!!
308  mpz_mul_si((mpz_ptr) c, (mpz_ptr) c, -1);
309  return c;
310 }
void mpz_mul_si(mpz_ptr r, mpz_srcptr s, long int si)
Definition: longrat.cc:177

§ nrzPower()

void nrzPower ( number  a,
int  i,
number *  result,
const coeffs  r 
)

Definition at line 131 of file rintegers.cc.

132 {
133  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
134  mpz_init(erg);
135  mpz_pow_ui(erg, (mpz_ptr) a, i);
136  *result = (number) erg;
137 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
const poly a
Definition: syzextra.cc:212
omBin gmp_nrz_bin
Definition: rintegers.cc:76
int i
Definition: cfEzgcd.cc:123
return result
Definition: facAbsBiFact.cc:76

§ nrzQuot1()

coeffs nrzQuot1 ( number  c,
const coeffs  r 
)

Definition at line 484 of file rintegers.cc.

485 {
486  long ch = r->cfInt(c, r);
487  mpz_ptr dummy;
488  dummy = (mpz_ptr) omAlloc(sizeof(mpz_t));
489  mpz_init_set_ui(dummy, ch);
490  ZnmInfo info;
491  info.base = dummy;
492  info.exp = (unsigned long) 1;
493  coeffs rr = nInitChar(n_Zn, (void*)&info);
494  return(rr);
495 }
mpz_ptr base
Definition: rmodulon.h:19
only used if HAVE_RINGS is defined
Definition: coeffs.h:44
#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:19
coeffs nInitChar(n_coeffType t, void *parameter)
one-time initialisations for new coeffs in case of an error return NULL
Definition: numbers.cc:334

§ nrzRead()

const char * nrzRead ( const char *  s,
number *  a,
const coeffs  r 
)

Definition at line 450 of file rintegers.cc.

451 {
452  mpz_ptr z = (mpz_ptr) omAllocBin(gmp_nrz_bin);
453  {
454  mpz_init(z);
455  s = nlEatLongC((char *) s, z);
456  }
457  *a = (number) z;
458  return s;
459 }
#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:76
static const char * nlEatLongC(char *s, mpz_ptr i)
Definition: rintegers.cc:402

§ nrzSetExp()

void nrzSetExp ( int  c,
coeffs  r 
)

Definition at line 367 of file rintegers.cc.

368 {
369 }

§ nrzSetMap()

nMapFunc nrzSetMap ( const coeffs  src,
const coeffs  dst 
)

Definition at line 334 of file rintegers.cc.

335 {
336  /* dst = currRing */
337  /* dst = nrn */
338  if ((src->rep==n_rep_gmp)
339  && (nCoeff_is_Ring_Z(src) || nCoeff_is_Ring_ModN(src) || nCoeff_is_Ring_PtoM(src)))
340  {
341  return ndCopyMap; //nrzCopyMap;
342  }
343  if ((src->rep==n_rep_gap_gmp) /*&& nCoeff_is_Ring_Z(src)*/)
344  {
345  return ndCopyMap; //nrzCopyMap;
346  }
347  if (nCoeff_is_Ring_2toM(src))
348  {
349  return nrzMapMachineInt;
350  }
351  if (nCoeff_is_Zp(src))
352  {
353  return nrzMapZp;
354  }
355  if (getCoeffType(src)==n_Q /*nCoeff_is_Q(src) or coeffs_BIGINT*/)
356  {
357  return nrzMapQ;
358  }
359  return NULL; // default
360 }
static FORCE_INLINE BOOLEAN nCoeff_is_Ring_ModN(const coeffs r)
Definition: coeffs.h:753
static FORCE_INLINE BOOLEAN nCoeff_is_Zp(const coeffs r)
Definition: coeffs.h:834
number ndCopyMap(number a, const coeffs aRing, const coeffs r)
Definition: numbers.cc:244
rational (GMP) numbers
Definition: coeffs.h:31
static FORCE_INLINE BOOLEAN nCoeff_is_Ring_Z(const coeffs r)
Definition: coeffs.h:759
static FORCE_INLINE BOOLEAN nCoeff_is_Ring_2toM(const coeffs r)
Definition: coeffs.h:750
(), see rinteger.h, new impl.
Definition: coeffs.h:112
number nrzMapQ(number from, const coeffs src, const coeffs dst)
Definition: rintegers.cc:326
number nrzMapZp(number from, const coeffs, const coeffs)
Definition: rintegers.cc:319
static FORCE_INLINE BOOLEAN nCoeff_is_Ring_PtoM(const coeffs r)
Definition: coeffs.h:756
(mpz_ptr), see rmodulon,h
Definition: coeffs.h:115
static FORCE_INLINE n_coeffType getCoeffType(const coeffs r)
Returns the type of coeffs domain.
Definition: coeffs.h:425
number nrzMapMachineInt(number from, const coeffs, const coeffs)
Definition: rintegers.cc:312
#define NULL
Definition: omList.c:10

§ nrzSize()

int nrzSize ( number  a,
const coeffs  r 
)

Definition at line 172 of file rintegers.cc.

173 {
174  if (a == NULL) return 0;
175  return ((mpz_ptr)a)->_mp_alloc;
176 }
const poly a
Definition: syzextra.cc:212
#define NULL
Definition: omList.c:10

§ nrzSub()

number nrzSub ( number  a,
number  b,
const coeffs  r 
)

Definition at line 194 of file rintegers.cc.

195 {
196  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
197  mpz_init(erg);
198  mpz_sub(erg, (mpz_ptr) a, (mpz_ptr) b);
199  return (number) erg;
200 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
const poly a
Definition: syzextra.cc:212
omBin gmp_nrz_bin
Definition: rintegers.cc:76
const poly b
Definition: syzextra.cc:213

§ nrzWrite()

void nrzWrite ( number  a,
const coeffs  r 
)

Definition at line 382 of file rintegers.cc.

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

§ gmp_nrz_bin

omBin gmp_nrz_bin = omGetSpecBin(sizeof(mpz_t))

Definition at line 76 of file rintegers.cc.