source: git/Singular/longrat.h @ 6ae4f5

spielwiese
Last change on this file since 6ae4f5 was 6ae4f5, checked in by Hans Schönemann <hannes@…>, 27 years ago
* hannes: - corrected scanner.l: parsing of strings in blocks: if (1) { write("","}"); } - corrected ipassign.cc: assignment of "dummy" types: DEF, NONE - corrected sleftv::Print(_), initialisation of _ - added conversion int->def - added CopyD(DEF) - in insert(..): object should not be of type NONE (lists.cc:lInsert0) - added int*intvec, int*intmat to iparith.cc git-svn-id: file:///usr/local/Singular/svn/trunk@145 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.3 1997-04-09 12:19:57 Singular Exp $ */
7/*
8* ABSTRACT: computation with long rational numbers
9*/
10#include "structs.h"
11#ifdef HAVE_GMP
12extern "C" {
13#ifdef macintosh
14#include "b_gmp.h"
15#else
16#include "gmp.h"
17#endif
18}
19typedef MP_INT lint;
20
21#define SR_INT    1
22#define INT_TO_SR(INT)  ((number) (((long)INT << 2) + SR_INT))
23
24#ifdef macintosh
25#define MP_SMALL 2
26#else
27#define MP_SMALL 1
28#endif
29#ifdef HAVE_LIBGMP1
30#define mpz_size1(A) (ABS((A)->size))
31#else
32#define mpz_size1(A) (ABS((A)->_mp_size))
33#endif
34//#define mpz_size1(A) mpz_size(A)
35
36#else
37
38typedef unsigned short int16;
39typedef int16 * lint;
40#endif
41
42struct snumber;
43typedef struct snumber rnumber;
44typedef rnumber * number;
45struct snumber
46{
47  lint z;
48  lint n;
49#ifdef LDEBUG
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);
63int      nlInt(number &n);
64BOOLEAN  nlIsZero(number za);
65BOOLEAN  nlGreaterZero(number za);
66number   nlNeg(number za);
67number   nlInvers(number a);
68void     nlNormalize(number &x);
69number   nlAdd(number la, number li);
70number   nlSub(number la, number li);
71number   nlMult(number a, number b);
72number   nlDiv(number a, number b);
73number   nlIntDiv(number a, number b);
74number   nlIntMod(number a, number b);
75void     nlPower(number x, int exp, number *lu);
76number   nlCopy(number a);
77char *   nlRead (char *s, number *a);
78void     nlWrite(number &a);
79int      nlModP(number n, int p);
80int      nlSize(number n);
81#ifdef LDEBUG
82BOOLEAN  nlDBTest(number a, char *f, int l);
83void     nlDBDelete(number *a, char *f, int l);
84#define  nlDelete(A) nlDBDelete(A,__FILE__,__LINE__)
85#else
86void     nlDelete(number *a);
87#endif
88
89BOOLEAN nlSetMap(int c, char ** par, int nop, number minpol);
90
91// internal use (longrat0) only:
92#ifndef HAVE_GMP
93void nlDivMod(lint a, int16 al, int16 b, int16 * r);
94#endif
95#endif
96
97
Note: See TracBrowser for help on using the repository browser.