source: git/kernel/numbers.h @ f2b6f0b

fieker-DuValspielwiese
Last change on this file since f2b6f0b was 599326, checked in by Kai Krüger <krueger@…>, 14 years ago
Anne, Kai, Frank: - changes to #include "..." statements to allow cleaner build structure - affected directories: omalloc, kernel, Singular - not yet done: IntergerProgramming git-svn-id: file:///usr/local/Singular/svn/trunk@13032 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 4.1 KB
RevLine 
[35aab3]1#ifndef NUMBERS_H
2#define NUMBERS_H
3/****************************************
4*  Computer Algebra System SINGULAR     *
5****************************************/
[341696]6/* $Id$ */
[35aab3]7/*
8* ABSTRACT: interface to coefficient aritmetics
9*/
[599326]10#include <kernel/structs.h>
[35aab3]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)
[8391d8]22#define n_Init(i, r)          (r)->cf->cfInit(i,r)
[35aab3]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)
[493225]26#define n_Write(n, r)         (r)->cf->cfWrite(n,r)
[35aab3]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)
[0ab374]30#define n_Div(a, b, r)        (r)->cf->nDiv(a,b)
[05998da]31#define n_Invers(a, r)     (r)->cf->nInvers(a)
[0ab374]32#define n_ExactDiv(a, b, r)   (r)->cf->nExactDiv(a,b)
[3332cc6]33#define n_Test(a,r)           (r)->cf->nDBTest(a,__FILE__,__LINE__)
[0ab374]34
[35aab3]35#define n_InpMult(a, b, r)    (r)->cf->nInpMult(a,b,r)
[c329af]36#define n_Power(a, b, res, r) (r)->cf->nPower(a,b,res)
[6b4fbf7]37#define n_Size(n,r)           (r)->cf->nSize(n)
[e803ec]38#define n_GetDenom(N,r)       (r)->cf->cfGetDenom((N),r)
39#define n_GetNumerator(N,r)   (r)->cf->cfGetNumerator((N),r)
[0ab374]40
[b19a41d]41#define n_New(n, r)           nNew(n)
[151000]42
[35aab3]43/* variables */
[6f8225]44extern unsigned short fftable[];
[35aab3]45
46/* prototypes */
47extern numberfunc nMult, nSub ,nAdd ,nDiv, nIntDiv, nIntMod, nExactDiv;
[b19a41d]48void           nNew(number * a);
[a48078]49extern number  (*nInit_bigint)(number i);
[8391d8]50#define        nInit(i) n_Init(i,currRing)
[35aab3]51extern number  (*nPar)(int i);
52extern int     (*nParDeg)(number n);
[12cca3]53/* size: a measure for the complexity of the represented number n;
54         zero should have size zero; larger size means more complex */
[35aab3]55extern int     (*nSize)(number n);
[cf74cd6]56extern int     (*n_Int)(number &n, const ring r);
[206e158]57#ifdef HAVE_RINGS
[d351d8]58extern int     (*nDivComp)(number a,number b);
[1e579c6]59extern BOOLEAN (*nIsUnit)(number a);
60extern number  (*nGetUnit)(number a);
61extern number  (*nExtGcd)(number a, number b, number *s, number *t);
[206e158]62#endif
[c3db61]63// always use in the form    n=nNeg(n) !
[35aab3]64extern number  (*nNeg)(number a);
65extern number  (*nInvers)(number a);
66extern number  (*nCopy)(number a);
67extern number  (*nRePart)(number a);
68extern number  (*nImPart)(number a);
[493225]69#define nWrite(A) n_Write(A,currRing)
[85e68dd]70extern const char *  (*nRead)(const char * s, number * a);
[35aab3]71extern void    (*nNormalize)(number &a);
72extern BOOLEAN (*nGreater)(number a,number b),
[009d80]73#ifdef HAVE_RINGS
74               (*nDivBy)(number a,number b),
75#endif
[35aab3]76               (*nEqual)(number a,number b),
77               (*nIsZero)(number a),
78               (*nIsOne)(number a),
79               (*nIsMOne)(number a),
80               (*nGreaterZero)(number a);
81extern void    (*nPower)(number a, int i, number * result);
82extern number (*nGcd)(number a, number b, const ring r);
83extern number (*nLcm)(number a, number b, const ring r);
84
85extern number nNULL; /* the 0 as constant */
86
87#define nTest(a) (1)
88#define nDelete(A) (currRing)->cf->cfDelete(A,currRing)
[e803ec]89#define nGetDenom(N) (currRing->cf->cfGetDenom((N),currRing))
90#define nGetNumerator(N) (currRing->cf->cfGetNumerator((N),currRing))
[35aab3]91
92#define nSetMap(R) (currRing->cf->cfSetMap(R,currRing))
93extern char *  (*nName)(number n);
94
95void nDummy1(number* d);
96void ndDelete(number* d, const ring r);
97void nDummy2(number &d);
98number ndGcd(number a, number b, const ring);
99number ndCopy(number a);
100void   ndInpMult(number &a, number b, const ring r);
[e8a0aa]101number ndInpAdd(number &a, number b, const ring r);
[35aab3]102
103#ifdef LDEBUG
104void nDBDummy1(number* d,char *f, int l);
105#endif
106#define nGetChar() n_GetChar(currRing)
107
108void nInitChar(ring r);
109void nKillChar(ring r);
110void nSetChar(ring r);
111
[b7e838]112#define nDivBy0 "div by 0"
[424cd64]113
114// dummy routines
115void   nDummy2(number& d); // nNormalize...
[35aab3]116#endif
Note: See TracBrowser for help on using the repository browser.