98 lines
2.1 KiB
C
98 lines
2.1 KiB
C
/* Copyright Digital Equipment Corporation & INRIA 1988, 1989 */
|
||
/* Last modified_on Fri Oct 5 16:45:46 GMT+1:00 1990 by herve */
|
||
/* modified_on Thu Mar 22 21:29:09 GMT+1:00 1990 by shand */
|
||
|
||
/* BigZ.h: Types and structures for clients of BigZ */
|
||
|
||
|
||
/* BigZ sign */
|
||
|
||
|
||
#define BZ_PLUS 1
|
||
#define BZ_ZERO 0
|
||
#define BZ_MINUS -1
|
||
#define BzSign BigNumCmp
|
||
|
||
|
||
/* BigZ compare result */
|
||
|
||
|
||
#define BZ_LT BN_LT
|
||
#define BZ_EQ BN_EQ
|
||
#define BZ_GT BN_GT
|
||
#define BzCmp BigNumCmp
|
||
|
||
|
||
/* BigZ number */
|
||
|
||
#ifndef BIGNUM
|
||
#include "BigNum.h"
|
||
#endif
|
||
|
||
struct BigZHeader
|
||
{
|
||
BigNumLength Size;
|
||
BzSign Sign;
|
||
};
|
||
|
||
|
||
struct BigZStruct
|
||
{
|
||
struct BigZHeader Header;
|
||
BigNumDigit Digits [16];
|
||
};
|
||
|
||
|
||
typedef struct BigZStruct * BigZ;
|
||
|
||
/**/
|
||
|
||
|
||
/*********** macros of bz.c **********/
|
||
|
||
|
||
#define BzGetSize(z) ((BigNumLength)(z)->Header.Size)
|
||
#define BzGetSign(z) ((z)->Header.Sign)
|
||
|
||
#define BzSetSize(z,s) (z)->Header.Size = s
|
||
#define BzSetSign(z,s) (z)->Header.Sign = s
|
||
|
||
#define BzGetOppositeSign(z) (-(z)->Header.Sign)
|
||
|
||
|
||
/*********** functions of bz.c **********/
|
||
|
||
extern void BzInit __((void));
|
||
extern void BzClose __((void));
|
||
|
||
extern BigZ BzCreate __((BigNumLength));
|
||
extern void BzFree __((BigZ));
|
||
extern void BzFreeString __((char *));
|
||
|
||
extern BigNumLength BzNumDigits __((BigZ));
|
||
|
||
extern BigZ BzCopy __((BigZ));
|
||
extern BigZ BzNegate __((BigZ));
|
||
extern BigZ BzAbs __((BigZ));
|
||
extern BigNumCmp BzCompare __((BigZ, BigZ));
|
||
|
||
extern BigZ BzAdd __((BigZ, BigZ));
|
||
extern BigZ BzSubtract __((BigZ, BigZ));
|
||
extern BigZ BzMultiply __((BigZ, BigZ));
|
||
extern BigZ BzDivide __((BigZ, BigZ, BigZ *));
|
||
extern BigZ BzDiv __((BigZ, BigZ));
|
||
extern BigZ BzMod __((BigZ, BigZ));
|
||
|
||
extern BigZ BzFromString __((char *, BigNumDigit));
|
||
extern char * BzToString __((BigZ, BigNumDigit));
|
||
|
||
extern BigZ BzFromInteger __((int));
|
||
extern int BzToInteger __((BigZ));
|
||
|
||
extern BigZ BzFromBigNum __((BigNum, BigNumLength));
|
||
extern BigNum BzToBigNum __((BigZ, BigNumLength *));
|
||
|
||
/*********** functions of bzf.c **********/
|
||
|
||
extern BigZ BzFactorial __((BigZ));
|