source: git/Singular/longrat.h @ d18870

fieker-DuValspielwiese
Last change on this file since d18870 was 416465, checked in by Olaf Bachmann <obachman@…>, 25 years ago
* bug-fixes from work with Thomas git-svn-id: file:///usr/local/Singular/svn/trunk@3826 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 2.2 KB
Line 
1#ifndef LONGRAT_H
2#define LONGRAT_H
3/****************************************
4*  Computer Algebra System SINGULAR     *
5****************************************/
6/* $Id: longrat.h,v 1.15 1999-11-15 17:20:20 obachman Exp $ */
7/*
8* ABSTRACT: computation with long rational numbers
9*/
10#include "structs.h"
11#if HAVE_ASO == 1
12#include "longrat.aso"
13#endif
14
15extern "C" {
16#include <gmp.h>
17}
18#ifdef HAVE_SMALLGMP
19#  define HAVE_LIBGMP2
20#else
21#if (__GNU_MP_VERSION > 1) && (__GNU_MP_VERSION_MINOR >= 0)
22#  define HAVE_LIBGMP2
23#else
24#  define HAVE_LIBGMP1
25#endif
26#endif
27
28typedef MP_INT lint;
29
30#define SR_INT    1
31#define INT_TO_SR(INT)  ((number) (((long)INT << 2) + SR_INT))
32
33#define MP_SMALL 1
34
35#ifdef HAVE_LIBGMP1
36#define mpz_size1(A) (ABS((A)->size))
37#else
38#define mpz_size1(A) (ABS((A)->_mp_size))
39#endif
40//#define mpz_size1(A) mpz_size(A)
41
42struct snumber;
43typedef struct snumber rnumber;
44typedef rnumber * number;
45struct snumber
46{
47  lint z;
48  lint n;
49#if defined(LDEBUG) && ! defined(HAVE_ASO)
50  int debug;
51#endif
52  BOOLEAN s;
53};
54
55number   nlGcd(number a, number b);
56number   nlLcm(number a, number b);   /*special routine !*/
57BOOLEAN  nlGreater(number a, number b);
58BOOLEAN  nlEqual(number a, number b);
59BOOLEAN  nlIsOne(number a);
60BOOLEAN  nlIsMOne(number a);
61void     nlNew(number *r);
62number   nlInit(int i);
63number   nlInit(number i);
64int      nlInt(number &n);
65BOOLEAN  nlIsZero(number za);
66BOOLEAN  nlGreaterZero(number za);
67number   nlNeg(number za);
68number   nlInvers(number a);
69void     nlNormalize(number &x);
70number   nlAdd(number la, number li);
71number   nlSub(number la, number li);
72number   nlMult(number a, number b);
73number   nlDiv(number a, number b);
74number   nlExactDiv(number a, number b);
75number   nlIntDiv(number a, number b);
76number   nlIntMod(number a, number b);
77void     nlPower(number x, int exp, number *lu);
78number   nlCopy(number a);
79char *   nlRead (char *s, number *a);
80void     nlWrite(number &a);
81int      nlModP(number n, int p);
82int      nlSize(number n);
83number   nlGetDenom(number &n);
84#ifdef LDEBUG
85BOOLEAN  nlDBTest(number a, char *f, int l);
86void     nlDBDelete(number *a, char *f, int l);
87#define  nlDelete(A) nlDBDelete(A,__FILE__,__LINE__)
88#else
89void     nlDelete(number *a);
90#endif
91
92BOOLEAN nlSetMap(ring r);
93
94#endif
95
96
Note: See TracBrowser for help on using the repository browser.