#if !defined(DECNUMBER)
#define DECNUMBER
#define DECNAME "decNumber"
#define DECVERSION "decNumber 3.24"
#define DECFULLNAME "Decimal Number Module"
#define DECAUTHOR "Mike Cowlishaw"
#if !defined(DECCONTEXT)
#include "decContext.h"
#endif
#define DECNEG 0x80
#define DECINF 0x40
#define DECNAN 0x20
#define DECSNAN 0x10
#define DECSPECIAL (DECINF|DECNAN|DECSNAN)
#if !defined(DECNUMDIGITS)
#define DECNUMDIGITS 1
#endif
#define DECDPUN 4
#if DECDPUN<=2
#define decNumberUnit uint8_t
#elif DECDPUN<=4
#define decNumberUnit uint16_t
#else
#define decNumberUnit uint32_t
#endif
#define DECNUMUNITS ((DECNUMDIGITS+DECDPUN-1)/DECDPUN)
typedef struct
{
int32_t digits;
int32_t exponent;
uint8_t bits;
decNumberUnit lsu[DECNUMUNITS];
} decNumber;
#ifdef IN_LIBGCC2
#define decNumberFromString __decNumberFromString
#define decNumberToString __decNumberToString
#define decNumberToEngString __decNumberToEngString
#define decNumberAbs __decNumberAbs
#define decNumberAdd __decNumberAdd
#define decNumberCompare __decNumberCompare
#define decNumberDivide __decNumberDivide
#define decNumberDivideInteger __decNumberDivideInteger
#define decNumberMax __decNumberMax
#define decNumberMin __decNumberMin
#define decNumberMinus __decNumberMinus
#define decNumberMultiply __decNumberMultiply
#define decNumberNormalize __decNumberNormalize
#define decNumberPlus __decNumberPlus
#define decNumberPower __decNumberPower
#define decNumberQuantize __decNumberQuantize
#define decNumberRemainder __decNumberRemainder
#define decNumberRemainderNear __decNumberRemainderNear
#define decNumberRescale __decNumberRescale
#define decNumberSameQuantum __decNumberSameQuantum
#define decNumberSquareRoot __decNumberSquareRoot
#define decNumberSubtract __decNumberSubtract
#define decNumberToIntegralValue __decNumberToIntegralValue
#define decNumberCopy __decNumberCopy
#define decNumberTrim __decNumberTrim
#define decNumberVersion __decNumberVersion
#define decNumberZero __decNumberZero
#endif
decNumber *decNumberFromString (decNumber *, const char *, decContext *);
char *decNumberToString (const decNumber *, char *);
char *decNumberToEngString (const decNumber *, char *);
decNumber *decNumberAbs (decNumber *, const decNumber *, decContext *);
decNumber *decNumberAdd (decNumber *, const decNumber *,
const decNumber *, decContext *);
decNumber *decNumberCompare (decNumber *, const decNumber *,
const decNumber *, decContext *);
decNumber *decNumberDivide (decNumber *, const decNumber *,
const decNumber *, decContext *);
decNumber *decNumberDivideInteger (decNumber *, const decNumber *,
const decNumber *, decContext *);
decNumber *decNumberMax (decNumber *, const decNumber *,
const decNumber *, decContext *);
decNumber *decNumberMin (decNumber *, const decNumber *,
const decNumber *, decContext *);
decNumber *decNumberMinus (decNumber *, const decNumber *, decContext *);
decNumber *decNumberMultiply (decNumber *, const decNumber *,
const decNumber *, decContext *);
decNumber *decNumberNormalize (decNumber *, const decNumber *, decContext *);
decNumber *decNumberPlus (decNumber *, const decNumber *, decContext *);
decNumber *decNumberPower (decNumber *, const decNumber *,
const decNumber *, decContext *);
decNumber *decNumberQuantize (decNumber *, const decNumber *,
const decNumber *, decContext *);
decNumber *decNumberRemainder (decNumber *, const decNumber *,
const decNumber *, decContext *);
decNumber *decNumberRemainderNear (decNumber *, const decNumber *,
const decNumber *, decContext *);
decNumber *decNumberRescale (decNumber *, const decNumber *,
const decNumber *, decContext *);
decNumber *decNumberSameQuantum (decNumber *, const decNumber *, const decNumber *);
decNumber *decNumberSquareRoot (decNumber *, const decNumber *, decContext *);
decNumber *decNumberSubtract (decNumber *, const decNumber *,
const decNumber *, decContext *);
decNumber *decNumberToIntegralValue (decNumber *, const decNumber *, decContext *);
decNumber *decNumberCopy (decNumber *, const decNumber *);
decNumber *decNumberTrim (decNumber *);
const char *decNumberVersion (void);
decNumber *decNumberZero (decNumber *);
#define decNumberIsZero(dn) (*(dn)->lsu==0 \
&& (dn)->digits==1 \
&& (((dn)->bits&DECSPECIAL)==0))
#define decNumberIsNegative(dn) (((dn)->bits&DECNEG)!=0)
#define decNumberIsNaN(dn) (((dn)->bits&(DECNAN|DECSNAN))!=0)
#define decNumberIsInfinite(dn) (((dn)->bits&DECINF)!=0)
#endif