ocaml/otherlibs/num/bignum/h/BigZ.h

98 lines
2.1 KiB
C
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

/* 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));