source: git/libpolys/coeffs/numbers.h @ a800fe4

spielwiese Release-4-3-2p1
Last change on this file since a800fe4 was 2b6d6b, checked in by Hans Schoenemann <hannes@…>, 14 months ago
add: nEati for long int
  • Property mode set to 100644
File size: 4.4 KB
Line 
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 *);
96n_coeffType nRegister(n_coeffType n, cfInitCharProc p);
97
98/// initialize an object of type coeffs by its name, return NULL otherwise
99typedef coeffs (*cfInitCfByNameProc)(char *s,n_coeffType n);
100void nRegisterCfByName(cfInitCfByNameProc p,n_coeffType n);
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
Note: See TracBrowser for help on using the repository browser.