#if !defined(DECSINGLE)
#define DECSINGLE
#define DECSINGLENAME "decSingle" /* Short name */
#define DECSINGLETITLE "Decimal 32-bit datum" /* Verbose name */
#define DECSINGLEAUTHOR "Mike Cowlishaw" /* Who to blame */
#define DECSINGLE_Bytes 4 /* length */
#define DECSINGLE_Pmax 7 /* maximum precision (digits) */
#define DECSINGLE_Emin -95 /* minimum adjusted exponent */
#define DECSINGLE_Emax 96 /* maximum adjusted exponent */
#define DECSINGLE_EmaxD 3 /* maximum exponent digits */
#define DECSINGLE_Bias 101 /* bias for the exponent */
#define DECSINGLE_String 16 /* maximum string length, +1 */
#define DECSINGLE_EconL 6 /* exponent continuation length */
#define DECSINGLE_Declets 2 /* count of declets */
#define DECSINGLE_Ehigh (DECSINGLE_Emax + DECSINGLE_Bias - (DECSINGLE_Pmax-1))
#include "decContext.h"
#include "decQuad.h"
#include "decDouble.h"
typedef
union
{
uint8_t bytes[DECSINGLE_Bytes];
uint16_t shorts[DECSINGLE_Bytes/2];
uint32_t words[DECSINGLE_Bytes/4];
} decSingle;
extern
decSingle * decSingleFromBCD(decSingle *, int32_t,
const
uint8_t *, int32_t);
extern
decSingle * decSingleFromPacked(decSingle *, int32_t,
const
uint8_t *);
extern
decSingle * decSingleFromPackedChecked(decSingle *, int32_t,
const
uint8_t *);
extern
decSingle * decSingleFromString(decSingle *,
const
char
*, decContext *);
extern
decSingle * decSingleFromWider(decSingle *,
const
decDouble *, decContext *);
extern
int32_t decSingleGetCoefficient(
const
decSingle *, uint8_t *);
extern
int32_t decSingleGetExponent(
const
decSingle *);
extern
decSingle * decSingleSetCoefficient(decSingle *,
const
uint8_t *, int32_t);
extern
decSingle * decSingleSetExponent(decSingle *, decContext *, int32_t);
extern
void
decSingleShow(
const
decSingle *,
const
char
*);
extern
int32_t decSingleToBCD(
const
decSingle *, int32_t *, uint8_t *);
extern
char
* decSingleToEngString(
const
decSingle *,
char
*);
extern
int32_t decSingleToPacked(
const
decSingle *, int32_t *, uint8_t *);
extern
char
* decSingleToString(
const
decSingle *,
char
*);
extern
decDouble * decSingleToWider(
const
decSingle *, decDouble *);
extern
decSingle * decSingleZero(decSingle *);
extern
uint32_t decSingleRadix(
const
decSingle *);
extern
const
char
* decSingleVersion(
void
);
#define decSingleToNumber(dq, dn) decimal32ToNumber((decimal32 *)(dq), dn)
#define decSingleFromNumber(dq, dn, set) decimal32FromNumber((decimal32 *)(dq), dn, set)
#endif