source: git/kernel/numbers.h @ 009d80

spielwiese
Last change on this file since 009d80 was 009d80, checked in by Oliver Wienand <wienand@…>, 17 years ago
new compile switch: HAVE_RINGS at total there are now: HAVE_RINGS, HAVE_RING2TOM, HAVE_RINGMODN kspoly.cc, kstd1.cc, kstd2.cc, kutil.cc, kspoly.cc, polys.cc, ring.*: adaption of new switches and rField_is_Ring method numbers.*: introduced new operation: nDivBy(a, b) = Is a divisible by b? pDebig.cc, pInline1.h: use of new nDivBy method p_Mult_q: new routine for rings p_*, pp_*: template switch HAVE_ZERODIVISOR polys1.cc: poly exponentation, switches rmodulo*: nDivBy implementation, DBTest structs.h: nDivBy, ringtype, ringflaga, ringflagb git-svn-id: file:///usr/local/Singular/svn/trunk@10029 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 3.4 KB
Line 
1#ifndef NUMBERS_H
2#define NUMBERS_H
3/****************************************
4*  Computer Algebra System SINGULAR     *
5****************************************/
6/* $Id: numbers.h,v 1.7 2007-05-10 08:12:42 wienand Exp $ */
7/*
8* ABSTRACT: interface to coefficient aritmetics
9*/
10#include "structs.h"
11
12#define n_Copy(n, r)          (r)->cf->cfCopy(n,r)
13#define n_Delete(n, r)        (r)->cf->cfDelete(n,r)
14#define n_Mult(n1, n2, r)     (r)->cf->nMult(n1, n2)
15#define n_Add(n1, n2, r)      (r)->cf->nAdd(n1, n2)
16#define n_IsZero(n, r)        (r)->cf->nIsZero(n)
17#define n_Equal(n1, n2, r)    (r)->cf->nEqual(n1, n2)
18#define n_Neg(n, r)           (r)->cf->nNeg(n)
19#define n_Sub(n1, n2, r)      (r)->cf->nSub(n1, n2)
20//#define n_GetChar(r)          ((r)->cf->nChar)
21#define n_GetChar(r)          ((r)->ch)
22#define n_Init(i, r)          (r)->cf->nInit(i)
23#define n_IsOne(n, r)         (r)->cf->nIsOne(n)
24#define n_IsMOne(n, r)        (r)->cf->nIsMOne(n)
25#define n_GreaterZero(n, r)   (r)->cf->nGreaterZero(n)
26#define n_Write(n, r)         (r)->cf->nWrite(n)
27#define n_Normalize(n, r)     (r)->cf->nNormalize(n)
28#define n_Gcd(a, b, r)        (r)->cf->nGcd(a,b,r)
29#define n_IntDiv(a, b, r)     (r)->cf->nIntDiv(a,b)
30#define n_Div(a, b, r)        (r)->cf->nDiv(a,b)
31#define n_ExactDiv(a, b, r)   (r)->cf->nExactDiv(a,b)
32#define n_Test(a,r)           (r)->cf->nDBTest(a,__FILE__,__LINE__)
33
34#define n_InpMult(a, b, r)    (r)->cf->nInpMult(a,b,r)
35#define n_Power(a, b, res, r) (r)->cf->nPower(a,b,res)
36#define n_Size(n,r)           (r)->cf->nSize(n)
37
38/* variables */
39extern short fftable[];
40
41/* prototypes */
42extern numberfunc nMult, nSub ,nAdd ,nDiv, nIntDiv, nIntMod, nExactDiv;
43extern void    (*nNew)(number * a);
44extern number  (*nInit)(int i);
45extern number  (*nPar)(int i);
46extern int     (*nParDeg)(number n);
47extern int     (*nSize)(number n);
48extern int     (*nInt)(number &n);
49// always use in the form    n=nNeg(n) !
50extern number  (*nNeg)(number a);
51extern number  (*nInvers)(number a);
52extern number  (*nCopy)(number a);
53extern number  (*nRePart)(number a);
54extern number  (*nImPart)(number a);
55extern void    (*nWrite)(number &a);
56extern char *  (*nRead)(char * s, number * a);
57extern void    (*nNormalize)(number &a);
58extern BOOLEAN (*nGreater)(number a,number b),
59#ifdef HAVE_RINGS
60               (*nDivBy)(number a,number b),
61#endif
62               (*nEqual)(number a,number b),
63               (*nIsZero)(number a),
64               (*nIsOne)(number a),
65               (*nIsMOne)(number a),
66               (*nGreaterZero)(number a);
67extern void    (*nPower)(number a, int i, number * result);
68extern number (*nGcd)(number a, number b, const ring r);
69extern number (*nLcm)(number a, number b, const ring r);
70
71extern number nNULL; /* the 0 as constant */
72
73extern void    (*n__Delete)(number * a, const ring r);
74#define nTest(a) (1)
75#define nDelete(A) (currRing)->cf->cfDelete(A,currRing)
76#define nGetDenom(N) (currRing->cf->n_GetDenom((N),currRing))
77
78#define nSetMap(R) (currRing->cf->cfSetMap(R,currRing))
79extern char *  (*nName)(number n);
80
81void nDummy1(number* d);
82void ndDelete(number* d, const ring r);
83void nDummy2(number &d);
84number ndGcd(number a, number b, const ring);
85number ndCopy(number a);
86void   ndInpMult(number &a, number b, const ring r);
87
88#ifdef LDEBUG
89void nDBDummy1(number* d,char *f, int l);
90#endif
91#define nGetChar() n_GetChar(currRing)
92
93void nInitChar(ring r);
94void nKillChar(ring r);
95void nSetChar(ring r);
96
97#endif
Note: See TracBrowser for help on using the repository browser.