My Project
Loading...
Searching...
No Matches
numbers.h
Go to the documentation of this file.
1#ifndef NUMBERS_H
2#define NUMBERS_H
3/****************************************
4* Computer Algebra System SINGULAR *
5****************************************/
6/*
7* ABSTRACT: compatility interface to coeffs
8*/
9#include "coeffs/coeffs.h"
10
11// the access methods
12//
13// the routines w.r.t. currRing:
14// (should only be used in the context of currRing, i.e. in t
15#define nCopy(n) n_Copy(n, currRing->cf)
16#define nDelete(n) n_Delete(n, currRing->cf)
17#define nMult(n1, n2) n_Mult(n1, n2, currRing->cf)
18#define nAdd(n1, n2) n_Add(n1, n2, currRing->cf)
19#define nIsZero(n) n_IsZero(n, currRing->cf)
20#define nEqual(n1, n2) n_Equal(n1, n2, currRing->cf)
21#define nInpNeg(n) n_InpNeg(n, currRing->cf)
22#define nSub(n1, n2) n_Sub(n1, n2, currRing->cf)
23#define nGetChar() n_GetChar(currRing->cf)
24#define nInit(i) n_Init(i, currRing->cf)
25#define nIsOne(n) n_IsOne(n, currRing->cf)
26#define nIsMOne(n) n_IsMOne(n, currRing->cf)
27#define nGreaterZero(n) n_GreaterZero(n, currRing->cf)
28#define nGreater(a, b) n_Greater (a,b,currRing->cf)
29#define nWrite(n) n_Write(n, currRing->cf, rShortOut(currRing))
30#define nNormalize(n) n_Normalize(n,currRing->cf)
31#define nGcd(a,b) n_Gcd(a,b,currRing->cf)
32#define nDiv(a, b) n_Div(a,b,currRing->cf)
33#define nInvers(a) n_Invers(a,currRing->cf)
34#define nExactDiv(a, b) n_ExactDiv(a,b,currRing->cf)
35#define nTest(a) n_Test(a,currRing->cf)
36
37#define nInpMult(a, b) n_InpMult(a,b,currRing->cf)
38#define nPower(a, b, res) n_Power(a,b,res,currRing->cf)
39#define nSize(n) n_Size(n,currRing->cf)
40#define nGetDenom(N) n_GetDenom((N),currRing->cf)
41#define nGetNumerator(N) n_GetNumerator((N),currRing->cf)
42
43#define nSetMap(R) n_SetMap(R,currRing->cf)
44
45/// only for debug, over any initalized currRing
46#define nPrint(a) n_Print(a,currRing->cf)
47
48
49
50
51// --------------------------------------------------------------
52// internal to coeffs, but public for all realizations
53
54#if SIZEOF_DOUBE == SIZEOF_LONG
55#define SHORT_REAL_LENGTH 16 // use double for real <= 15 digits
56#else
57#define SHORT_REAL_LENGTH 6 // use float for real <= 6 digits
58#endif
59
60/* the dummy routines: */
61// void nDummy1(number* d);
62// void ndDelete(number* d, const coeffs r);
63number ndGcd(number a, number b, const coeffs);
64// number ndCopy(number a, const coeffs r);
65// int ndSize(number a, const coeffs r);
66// number ndGetDenom(number &n, const coeffs r);
67// number ndGetNumerator(number &a,const coeffs r);
68// number ndReturn0(number n, const coeffs r);
69// number ndIntMod(number a, number b, const coeffs r);
70
71// void ndInpMult(number &a, number b, const coeffs r);
72// void ndInpAdd(number &a, number b, const coeffs r);
73number ndQuotRem (number a, number b, number * r, const coeffs R);
74
75// void ndKillChar(coeffs);
76
77// number ndInit_bigint(number i, const coeffs dummy, const coeffs dst);
78
79// BOOLEAN ndCoeffIsEqual(const coeffs r, n_coeffType n, void * parameter);
80CanonicalForm ndConvSingNFactoryN( number, BOOLEAN /*setChar*/, const coeffs);
81
82number ndReadFd( const ssiInfo *f, const coeffs r);
83/// Test whether a is a zero divisor in r
84/// i.e. not coprime with char. of r
85/// very inefficient implementation:
86/// should ONLY be used for debug stuff /tests
87BOOLEAN n_IsZeroDivisor( number a, const coeffs r);
88
89const char* const nDivBy0 = "div by 0";
90
91// dummy routines
92void ndNormalize(number&, const coeffs); // nNormalize...
93
94/// initialize an object of type coeff, return FALSE in case of success
95typedef BOOLEAN (*cfInitCharProc)(coeffs, void *);
97
98/// initialize an object of type coeffs by its name, return NULL otherwise
101
102/// find an existing coeff by its "CoeffName"
103coeffs nFindCoeffByName(char *n);
104
105/// divide by the first (leading) number and return it, i.e. make monic
106// void ndClearContent(ICoeffsEnumerator& numberCollectionEnumerator, number& c, const coeffs r);
107
108/// does nothing (just returns a dummy one number)
109// void ndClearDenominators(ICoeffsEnumerator& numberCollectionEnumerator, number& d, const coeffs r);
110
111/// helper routine: read an int from a string (mod m), return a pointer to the rest
112char* nEati(char *s, int *i, int m);
113char* nEati(char *s, long *i, int m);
114
115/// extracts a long integer from s, returns the rest
116char * nEatLong(char *s, mpz_ptr i);
117#endif
int BOOLEAN
Definition: auxiliary.h:87
int m
Definition: cfEzgcd.cc:128
int i
Definition: cfEzgcd.cc:132
int p
Definition: cfModGcd.cc:4078
CanonicalForm b
Definition: cfModGcd.cc:4103
FILE * f
Definition: checklibs.c:9
factory's main class
Definition: canonicalform.h:86
Coefficient rings, fields and other domains suitable for Singular polynomials.
n_coeffType
Definition: coeffs.h:27
const CanonicalForm int s
Definition: facAbsFact.cc:51
The main handler for Singular numbers which are suitable for Singular polynomials.
void nRegisterCfByName(cfInitCfByNameProc p, n_coeffType n)
Definition: numbers.cc:636
CanonicalForm ndConvSingNFactoryN(number, BOOLEAN, const coeffs)
Definition: numbers.cc:313
coeffs(* cfInitCfByNameProc)(char *s, n_coeffType n)
initialize an object of type coeffs by its name, return NULL otherwise
Definition: numbers.h:99
number ndReadFd(const ssiInfo *f, const coeffs r)
Definition: numbers.cc:152
coeffs nFindCoeffByName(char *n)
find an existing coeff by its "CoeffName"
Definition: numbers.cc:645
void ndNormalize(number &, const coeffs)
Definition: numbers.cc:187
BOOLEAN(* cfInitCharProc)(coeffs, void *)
initialize an object of type coeff, return FALSE in case of success
Definition: numbers.h:95
char * nEati(char *s, int *i, int m)
divide by the first (leading) number and return it, i.e. make monic
Definition: numbers.cc:677
const char *const nDivBy0
Definition: numbers.h:89
number ndGcd(number a, number b, const coeffs)
Definition: numbers.cc:189
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 implementatio...
Definition: numbers.cc:173
n_coeffType nRegister(n_coeffType n, cfInitCharProc p)
Definition: numbers.cc:595
char * nEatLong(char *s, mpz_ptr i)
extracts a long integer from s, returns the rest
Definition: numbers.cc:718
number ndQuotRem(number a, number b, number *r, const coeffs R)
Definition: numbers.cc:357
Definition: s_buff.h:21
#define R
Definition: sirandom.c:27