Macros | Typedefs | Functions | Variables
numbers.h File Reference
#include <coeffs/coeffs.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 ndCopyMap (number a, const coeffs src, const coeffs dst)
 
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 18 of file numbers.h.

◆ nCopy

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

Definition at line 15 of file numbers.h.

◆ nDelete

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

Definition at line 16 of file numbers.h.

◆ nDiv

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

Definition at line 32 of file numbers.h.

◆ nEqual

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

Definition at line 20 of file numbers.h.

◆ nExactDiv

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

Definition at line 34 of file numbers.h.

◆ nGcd

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

Definition at line 31 of file numbers.h.

◆ nGetChar

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

Definition at line 23 of file numbers.h.

◆ nGetDenom

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

Definition at line 40 of file numbers.h.

◆ nGetNumerator

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

Definition at line 41 of file numbers.h.

◆ nGreater

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

Definition at line 28 of file numbers.h.

◆ nGreaterZero

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

Definition at line 27 of file numbers.h.

◆ nInit

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

Definition at line 24 of file numbers.h.

◆ nInpMult

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

Definition at line 37 of file numbers.h.

◆ nInpNeg

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

Definition at line 21 of file numbers.h.

◆ nInvers

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

Definition at line 33 of file numbers.h.

◆ nIsMOne

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

Definition at line 26 of file numbers.h.

◆ nIsOne

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

Definition at line 25 of file numbers.h.

◆ nIsZero

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

Definition at line 19 of file numbers.h.

◆ nMult

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

Definition at line 17 of file numbers.h.

◆ nNormalize

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

Definition at line 30 of file numbers.h.

◆ nPower

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

Definition at line 38 of file numbers.h.

◆ nPrint

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

only for debug, over any initalized currRing

Definition at line 46 of file numbers.h.

◆ nSetMap

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

Definition at line 43 of file numbers.h.

◆ nSize

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

Definition at line 39 of file numbers.h.

◆ nSub

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

Definition at line 22 of file numbers.h.

◆ nTest

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

Definition at line 35 of file numbers.h.

◆ nWrite

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

Definition at line 29 of file numbers.h.

◆ SHORT_REAL_LENGTH

#define SHORT_REAL_LENGTH   6

Definition at line 54 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 89 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 137 of file numbers.cc.

138 {
139  int c = n_GetChar(r);
140  BOOLEAN ret = n_IsZero(a, r);
141  if( (c != 0) && !ret )
142  {
143  number ch = n_Init( c, r );
144  number g = n_Gcd( ch, a, r );
145  ret = !n_IsOne (g, r);
146  n_Delete(&ch, r);
147  n_Delete(&g, r);
148  }
149  return ret;
150 }
static FORCE_INLINE number n_Gcd(number a, number b, const coeffs r)
in Z: return the gcd of &#39;a&#39; and &#39;b&#39; in Z/nZ, Z/2^kZ: computed as in the case Z in Z/pZ...
Definition: coeffs.h:690
const poly a
Definition: syzextra.cc:212
static FORCE_INLINE BOOLEAN n_IsOne(number n, const coeffs r)
TRUE iff &#39;n&#39; represents the one element.
Definition: coeffs.h:472
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:542
static FORCE_INLINE int n_GetChar(const coeffs r)
Return the characteristic of the coeff. domain.
Definition: coeffs.h:448
g
Definition: cfModGcd.cc:4031
const ring r
Definition: syzextra.cc:208
static FORCE_INLINE BOOLEAN n_IsZero(number n, const coeffs r)
TRUE iff &#39;n&#39; represents the zero element.
Definition: coeffs.h:468
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete &#39;p&#39;
Definition: coeffs.h:459
int BOOLEAN
Definition: auxiliary.h:85

◆ ndCopyMap()

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

Definition at line 244 of file numbers.cc.

245 {
246  // aRing and r need not be the same, but must be the same representation
247  assume(aRing->rep==r->rep);
249  return a;
250  else
251  return r->cfCopy(a, r);
252 }
const poly a
Definition: syzextra.cc:212
const ring r
Definition: syzextra.cc:208
#define assume(x)
Definition: mod2.h:394
static FORCE_INLINE BOOLEAN nCoeff_has_simple_Alloc(const coeffs r)
TRUE if n_Delete/n_New are empty operations.
Definition: coeffs.h:923

◆ nFindCoeffByName()

coeffs nFindCoeffByName ( const char *  n)

find an existing coeff by its "CoeffName"

Definition at line 563 of file numbers.cc.

565 {
566  n_Procs_s* n=cf_root;
567  while(n!=NULL)
568  {
569  if ((n->cfCoeffName!=NULL)
570  && (strcmp(cf_name,n->cfCoeffName(n))==0)) return n;
571  n=n->next;
572  }
573  // TODO: parametrized cf, e.g. flint:Z/26[a]
574  return NULL;
coeffs next
Definition: coeffs.h:125
n_Procs_s * cf_root
Definition: numbers.cc:47
#define NULL
Definition: omList.c:10
char *(* cfCoeffName)(const coeffs r)
default name of cf, should substitue cfCoeffWrite, cfCoeffString
Definition: coeffs.h:154

◆ nRegister()

n_coeffType nRegister ( n_coeffType  n,
cfInitCharProc  p 
)

Definition at line 533 of file numbers.cc.

535 {
536  if (n==n_unknown)
537  {
540  {
542  ((int)nLastCoeffs+1)*sizeof(cfInitCharProc));
544  ((int)nLastCoeffs)*sizeof(cfInitCharProc));
545  }
546  else
547  {
549  ((int)nLastCoeffs)*sizeof(cfInitCharProc),
550  (((int)nLastCoeffs)+1)*sizeof(cfInitCharProc));
551  }
552 
554  return nLastCoeffs;
555  }
556  else
557  {
558  if (nInitCharTable[n]!=NULL) Print("coeff %d already initialized\n",n);
559  nInitCharTable[n]=p;
560  return n;
561  }
#define Print
Definition: emacs.cc:83
return P p
Definition: myNF.cc:203
static n_coeffType nLastCoeffs
Definition: numbers.cc:305
#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:89
cfInitCharProc nInitCharTableDefault[]
Definition: numbers.cc:306
n_coeffType
Definition: coeffs.h:27
static cfInitCharProc * nInitCharTable
Definition: numbers.cc:337
#define NULL
Definition: omList.c:10
#define omAlloc0(size)
Definition: omAllocDecl.h:211

Variable Documentation

◆ nDivBy0

const char* const nDivBy0 = "div by 0"

Definition at line 83 of file numbers.h.