Macros | Typedefs | Functions | Variables
numbers.h File Reference
#include "coeffs/coeffs.h"
#include "omalloc/omalloc.h"

Go to the source code of this file.

Macros

#define nCopy(n)   n_Copy(n, currRing->cf)
 
#define nDelete(n)   n_Delete(n, currRing->cf)
 
#define nMult(n1, n2)   n_Mult(n1, n2, currRing->cf)
 
#define nAdd(n1, n2)   n_Add(n1, n2, currRing->cf)
 
#define nIsZero(n)   n_IsZero(n, currRing->cf)
 
#define nEqual(n1, n2)   n_Equal(n1, n2, currRing->cf)
 
#define nInpNeg(n)   n_InpNeg(n, currRing->cf)
 
#define nSub(n1, n2)   n_Sub(n1, n2, currRing->cf)
 
#define nGetChar()   n_GetChar(currRing->cf)
 
#define nInit(i)   n_Init(i, currRing->cf)
 
#define nIsOne(n)   n_IsOne(n, currRing->cf)
 
#define nIsMOne(n)   n_IsMOne(n, currRing->cf)
 
#define nGreaterZero(n)   n_GreaterZero(n, currRing->cf)
 
#define nGreater(a, b)   n_Greater (a,b,currRing->cf)
 
#define nWrite(n)   n_Write(n, currRing->cf, rShortOut(currRing))
 
#define nNormalize(n)   n_Normalize(n,currRing->cf)
 
#define nGcd(a, b)   n_Gcd(a,b,currRing->cf)
 
#define nDiv(a, b)   n_Div(a,b,currRing->cf)
 
#define nInvers(a)   n_Invers(a,currRing->cf)
 
#define nExactDiv(a, b)   n_ExactDiv(a,b,currRing->cf)
 
#define nTest(a)   n_Test(a,currRing->cf)
 
#define nInpMult(a, b)   n_InpMult(a,b,currRing->cf)
 
#define nPower(a, b, res)   n_Power(a,b,res,currRing->cf)
 
#define nSize(n)   n_Size(n,currRing->cf)
 
#define nGetDenom(N)   n_GetDenom((N),currRing->cf)
 
#define nGetNumerator(N)   n_GetNumerator((N),currRing->cf)
 
#define nSetMap(R)   n_SetMap(R,currRing->cf)
 
#define nPrint(a)   n_Print(a,currRing->cf)
 only for debug, over any initalized currRing More...
 
#define SHORT_REAL_LENGTH   6
 

Typedefs

typedef BOOLEAN(* cfInitCharProc) (coeffs, void *)
 initialize an object of type coeff, return FALSE in case of success More...
 

Functions

number ndGcd (number a, number b, const coeffs)
 
number ndCopyMap (number a, const coeffs src, const coeffs dst)
 
CanonicalForm ndConvSingNFactoryN (number, BOOLEAN, const coeffs)
 
BOOLEAN n_IsZeroDivisor (number a, const coeffs r)
 Test whether a is a zero divisor in r i.e. not coprime with char. of r very inefficient implementation: should ONLY be used for debug stuff /tests. More...
 
n_coeffType nRegister (n_coeffType n, cfInitCharProc p)
 
coeffs nFindCoeffByName (const char *n)
 find an existing coeff by its "CoeffName" More...
 

Variables

const char *const nDivBy0 = "div by 0"
 

Macro Definition Documentation

◆ nAdd

#define nAdd (   n1,
  n2 
)    n_Add(n1, n2, currRing->cf)

Definition at line 19 of file numbers.h.

◆ nCopy

#define nCopy (   n)    n_Copy(n, currRing->cf)

Definition at line 16 of file numbers.h.

◆ nDelete

#define nDelete (   n)    n_Delete(n, currRing->cf)

Definition at line 17 of file numbers.h.

◆ nDiv

#define nDiv (   a,
  b 
)    n_Div(a,b,currRing->cf)

Definition at line 33 of file numbers.h.

◆ nEqual

#define nEqual (   n1,
  n2 
)    n_Equal(n1, n2, currRing->cf)

Definition at line 21 of file numbers.h.

◆ nExactDiv

#define nExactDiv (   a,
  b 
)    n_ExactDiv(a,b,currRing->cf)

Definition at line 35 of file numbers.h.

◆ nGcd

#define nGcd (   a,
  b 
)    n_Gcd(a,b,currRing->cf)

Definition at line 32 of file numbers.h.

◆ nGetChar

#define nGetChar ( )    n_GetChar(currRing->cf)

Definition at line 24 of file numbers.h.

◆ nGetDenom

#define nGetDenom (   N)    n_GetDenom((N),currRing->cf)

Definition at line 41 of file numbers.h.

◆ nGetNumerator

#define nGetNumerator (   N)    n_GetNumerator((N),currRing->cf)

Definition at line 42 of file numbers.h.

◆ nGreater

#define nGreater (   a,
  b 
)    n_Greater (a,b,currRing->cf)

Definition at line 29 of file numbers.h.

◆ nGreaterZero

#define nGreaterZero (   n)    n_GreaterZero(n, currRing->cf)

Definition at line 28 of file numbers.h.

◆ nInit

#define nInit (   i)    n_Init(i, currRing->cf)

Definition at line 25 of file numbers.h.

◆ nInpMult

#define nInpMult (   a,
  b 
)    n_InpMult(a,b,currRing->cf)

Definition at line 38 of file numbers.h.

◆ nInpNeg

#define nInpNeg (   n)    n_InpNeg(n, currRing->cf)

Definition at line 22 of file numbers.h.

◆ nInvers

#define nInvers (   a)    n_Invers(a,currRing->cf)

Definition at line 34 of file numbers.h.

◆ nIsMOne

#define nIsMOne (   n)    n_IsMOne(n, currRing->cf)

Definition at line 27 of file numbers.h.

◆ nIsOne

#define nIsOne (   n)    n_IsOne(n, currRing->cf)

Definition at line 26 of file numbers.h.

◆ nIsZero

#define nIsZero (   n)    n_IsZero(n, currRing->cf)

Definition at line 20 of file numbers.h.

◆ nMult

#define nMult (   n1,
  n2 
)    n_Mult(n1, n2, currRing->cf)

Definition at line 18 of file numbers.h.

◆ nNormalize

#define nNormalize (   n)    n_Normalize(n,currRing->cf)

Definition at line 31 of file numbers.h.

◆ nPower

#define nPower (   a,
  b,
  res 
)    n_Power(a,b,res,currRing->cf)

Definition at line 39 of file numbers.h.

◆ nPrint

#define nPrint (   a)    n_Print(a,currRing->cf)

only for debug, over any initalized currRing

Definition at line 47 of file numbers.h.

◆ nSetMap

#define nSetMap (   R)    n_SetMap(R,currRing->cf)

Definition at line 44 of file numbers.h.

◆ nSize

#define nSize (   n)    n_Size(n,currRing->cf)

Definition at line 40 of file numbers.h.

◆ nSub

#define nSub (   n1,
  n2 
)    n_Sub(n1, n2, currRing->cf)

Definition at line 23 of file numbers.h.

◆ nTest

#define nTest (   a)    n_Test(a,currRing->cf)

Definition at line 36 of file numbers.h.

◆ nWrite

#define nWrite (   n)    n_Write(n, currRing->cf, rShortOut(currRing))

Definition at line 30 of file numbers.h.

◆ SHORT_REAL_LENGTH

#define SHORT_REAL_LENGTH   6

Definition at line 58 of file numbers.h.

Typedef Documentation

◆ cfInitCharProc

typedef BOOLEAN(* cfInitCharProc) (coeffs, void *)

initialize an object of type coeff, return FALSE in case of success

Definition at line 95 of file numbers.h.

Function Documentation

◆ n_IsZeroDivisor()

BOOLEAN n_IsZeroDivisor ( number  a,
const coeffs  r 
)

Test whether a is a zero divisor in r i.e. not coprime with char. of r very inefficient implementation: should ONLY be used for debug stuff /tests.

Definition at line 145 of file numbers.cc.

146 {
147  BOOLEAN ret = n_IsZero(a, r);
148  int c = n_GetChar(r);
149  if (ret || (c==0) || (r->is_field))
150  return ret; /*n_IsZero(a, r)*/
151  number ch = n_Init( c, r );
152  number g = n_Gcd( ch, a, r );
153  ret = !n_IsOne (g, r);
154  n_Delete(&ch, r);
155  n_Delete(&g, r);
156  return ret;
157 }
static FORCE_INLINE number n_Gcd(number a, number b, const coeffs r)
in Z: return the gcd of 'a' and 'b' in Z/nZ, Z/2^kZ: computed as in the case Z in Z/pZ...
Definition: coeffs.h:687
static FORCE_INLINE BOOLEAN n_IsOne(number n, const coeffs r)
TRUE iff 'n' represents the one element.
Definition: coeffs.h:469
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
Definition: coeffs.h:539
static FORCE_INLINE int n_GetChar(const coeffs r)
Return the characteristic of the coeff. domain.
Definition: coeffs.h:445
g
Definition: cfModGcd.cc:4031
static FORCE_INLINE BOOLEAN n_IsZero(number n, const coeffs r)
TRUE iff 'n' represents the zero element.
Definition: coeffs.h:465
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete 'p'
Definition: coeffs.h:456
int BOOLEAN
Definition: auxiliary.h:85

◆ ndConvSingNFactoryN()

CanonicalForm ndConvSingNFactoryN ( number  ,
BOOLEAN  ,
const coeffs   
)

Definition at line 272 of file numbers.cc.

273 {
274  CanonicalForm term(0);
275  WerrorS("no conversion to factory");
276  return term;
277 }
Definition: int_poly.h:33
factory's main class
Definition: canonicalform.h:77
void WerrorS(const char *s)
Definition: feFopen.cc:24

◆ ndCopyMap()

number ndCopyMap ( number  a,
const coeffs  src,
const coeffs  dst 
)

Definition at line 251 of file numbers.cc.

252 {
253  // aRing and r need not be the same, but must be the same representation
254  assume(aRing->rep==r->rep);
256  return a;
257  else
258  return r->cfCopy(a, r);
259 }
#define assume(x)
Definition: mod2.h:390
static FORCE_INLINE BOOLEAN nCoeff_has_simple_Alloc(const coeffs r)
TRUE if n_Delete/n_New are empty operations.
Definition: coeffs.h:920

◆ ndGcd()

number ndGcd ( number  a,
number  b,
const coeffs   
)

Definition at line 161 of file numbers.cc.

161 { return r->cfInit(1,r); }

◆ nFindCoeffByName()

coeffs nFindCoeffByName ( const char *  n)

find an existing coeff by its "CoeffName"

Definition at line 568 of file numbers.cc.

570 {
571  n_Procs_s* n=cf_root;
572  while(n!=NULL)
573  {
574  if ((n->cfCoeffName!=NULL)
575  && (strcmp(cf_name,n->cfCoeffName(n))==0)) return n;
576  n=n->next;
577  }
578  // TODO: parametrized cf, e.g. flint:Z/26[a]
579  return NULL;
coeffs next
Definition: coeffs.h:126
n_Procs_s * cf_root
Definition: numbers.cc:48
#define NULL
Definition: omList.c:10
char *(* cfCoeffName)(const coeffs r)
default name of cf, should substitue cfCoeffWrite, cfCoeffString
Definition: coeffs.h:155

◆ nRegister()

n_coeffType nRegister ( n_coeffType  n,
cfInitCharProc  p 
)

Definition at line 538 of file numbers.cc.

540 {
541  if (n==n_unknown)
542  {
545  {
547  ((int)nLastCoeffs+1)*sizeof(cfInitCharProc));
549  ((int)nLastCoeffs)*sizeof(cfInitCharProc));
550  }
551  else
552  {
554  ((int)nLastCoeffs)*sizeof(cfInitCharProc),
555  (((int)nLastCoeffs)+1)*sizeof(cfInitCharProc));
556  }
557 
559  return nLastCoeffs;
560  }
561  else
562  {
563  if (nInitCharTable[n]!=NULL) Print("coeff %d already initialized\n",n);
564  nInitCharTable[n]=p;
565  return n;
566  }
#define Print
Definition: emacs.cc:80
static n_coeffType nLastCoeffs
Definition: numbers.cc:312
#define omReallocSize(addr, o_size, size)
Definition: omAllocDecl.h:220
BOOLEAN(* cfInitCharProc)(coeffs, void *)
initialize an object of type coeff, return FALSE in case of success
Definition: numbers.h:95
cfInitCharProc nInitCharTableDefault[]
Definition: numbers.cc:313
n_coeffType
Definition: coeffs.h:27
static cfInitCharProc * nInitCharTable
Definition: numbers.cc:345
#define NULL
Definition: omList.c:10
int p
Definition: cfModGcd.cc:4019
#define omAlloc0(size)
Definition: omAllocDecl.h:211

Variable Documentation

◆ nDivBy0

const char* const nDivBy0 = "div by 0"

Definition at line 89 of file numbers.h.