ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
epd.h
Go to the documentation of this file.
1
50
51#ifndef ABC__bdd__epd__epd_h
52#define ABC__bdd__epd__epd_h
53
55
56/*---------------------------------------------------------------------------*/
57/* Constant declarations */
58/*---------------------------------------------------------------------------*/
59
60#define EPD_MAX_BIN 1023
61#define EPD_MAX_DEC 308
62#define EPD_EXP_INF 0x7ff
63
64/*---------------------------------------------------------------------------*/
65/* Structure declarations */
66/*---------------------------------------------------------------------------*/
67
77#ifdef EPD_BIG_ENDIAN
78struct IeeeDoubleStruct { /* BIG_ENDIAN */
79 unsigned int sign: 1;
80 unsigned int exponent: 11;
81 unsigned int mantissa0: 20;
82 unsigned int mantissa1: 32;
83};
84#else
85struct IeeeDoubleStruct { /* LITTLE_ENDIAN */
86 unsigned int mantissa1: 32;
87 unsigned int mantissa0: 20;
88 unsigned int exponent: 11;
89 unsigned int sign: 1;
90};
91#endif
92
102#ifdef EPD_BIG_ENDIAN
103struct IeeeNanStruct { /* BIG_ENDIAN */
104 unsigned int sign: 1;
105 unsigned int exponent: 11;
106 unsigned int quiet_bit: 1;
107 unsigned int mantissa0: 19;
108 unsigned int mantissa1: 32;
109};
110#else
111struct IeeeNanStruct { /* LITTLE_ENDIAN */
112 unsigned int mantissa1: 32;
113 unsigned int mantissa0: 19;
114 unsigned int quiet_bit: 1;
115 unsigned int exponent: 11;
116 unsigned int sign: 1;
117};
118#endif
119
134
139
140/*---------------------------------------------------------------------------*/
141/* Type declarations */
142/*---------------------------------------------------------------------------*/
145typedef struct IeeeNanStruct IeeeNan;
146typedef union EpTypeUnion EpType;
147
149
150/*---------------------------------------------------------------------------*/
151/* Function prototypes */
152/*---------------------------------------------------------------------------*/
153
154extern EpDouble *EpdAlloc(void);
155extern int EpdCmp(const char *key1, const char *key2);
156extern void EpdFree(EpDouble *epd);
157extern void EpdGetString(EpDouble *epd, char *str);
158extern void EpdConvert(double value, EpDouble *epd);
159extern void EpdMultiply(EpDouble *epd1, double value);
160extern void EpdMultiply2(EpDouble *epd1, EpDouble *epd2);
161extern void EpdMultiply2Decimal(EpDouble *epd1, EpDouble *epd2);
162extern void EpdMultiply3(EpDouble *epd1, EpDouble *epd2, EpDouble *epd3);
163extern void EpdMultiply3Decimal(EpDouble *epd1, EpDouble *epd2, EpDouble *epd3);
164extern void EpdDivide(EpDouble *epd1, double value);
165extern void EpdDivide2(EpDouble *epd1, EpDouble *epd2);
166extern void EpdDivide3(EpDouble *epd1, EpDouble *epd2, EpDouble *epd3);
167extern void EpdAdd(EpDouble *epd1, double value);
168extern void EpdAdd2(EpDouble *epd1, EpDouble *epd2);
169extern void EpdAdd3(EpDouble *epd1, EpDouble *epd2, EpDouble *epd3);
170extern void EpdSubtract(EpDouble *epd1, double value);
171extern void EpdSubtract2(EpDouble *epd1, EpDouble *epd2);
172extern void EpdSubtract3(EpDouble *epd1, EpDouble *epd2, EpDouble *epd3);
173extern void EpdPow2(int n, EpDouble *epd);
174extern void EpdPow2Decimal(int n, EpDouble *epd);
175extern void EpdNormalize(EpDouble *epd);
176extern void EpdNormalizeDecimal(EpDouble *epd);
177extern void EpdGetValueAndDecimalExponent(EpDouble *epd, double *value, int *exponent);
178extern int EpdGetExponent(double value);
179extern int EpdGetExponentDecimal(double value);
180extern void EpdMakeInf(EpDouble *epd, int sign);
181extern void EpdMakeZero(EpDouble *epd, int sign);
182extern void EpdMakeNan(EpDouble *epd);
183extern void EpdCopy(EpDouble *from, EpDouble *to);
184extern int EpdIsInf(EpDouble *epd);
185extern int EpdIsZero(EpDouble *epd);
186extern int EpdIsNan(EpDouble *epd);
187extern int EpdIsNanOrInf(EpDouble *epd);
188extern int IsInfDouble(double value);
189extern int IsNanDouble(double value);
190extern int IsNanOrInfDouble(double value);
191
193
195
196#endif /* _EPD */
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
ABC_NAMESPACE_IMPL_START typedef signed char value
void EpdAdd2(EpDouble *epd1, EpDouble *epd2)
Definition epd.c:598
int EpdIsZero(EpDouble *epd)
Definition epd.c:1219
int EpdGetExponentDecimal(double value)
Definition epd.c:1091
int IsNanDouble(double value)
Definition epd.c:1305
void EpdDivide2(EpDouble *epd1, EpDouble *epd2)
Definition epd.c:439
void EpdDivide3(EpDouble *epd1, EpDouble *epd2, EpDouble *epd3)
Definition epd.c:490
int EpdIsNan(EpDouble *epd)
Definition epd.c:1240
struct IeeeDoubleStruct IeeeDouble
Definition epd.h:144
void EpdNormalizeDecimal(EpDouble *epd)
Definition epd.c:1007
EpDouble * EpdAlloc(void)
Definition epd.c:72
void EpdMultiply3(EpDouble *epd1, EpDouble *epd2, EpDouble *epd3)
Definition epd.c:321
union EpTypeUnion EpType
Definition epd.h:146
void EpdGetValueAndDecimalExponent(EpDouble *epd, double *value, int *exponent)
Definition epd.c:1034
int EpdIsInf(EpDouble *epd)
Definition epd.c:1201
struct IeeeNanStruct IeeeNan
Definition epd.h:145
struct EpDoubleStruct EpDouble
Definition epd.h:143
int EpdIsNanOrInf(EpDouble *epd)
Definition epd.c:1258
void EpdSubtract(EpDouble *epd1, double value)
Definition epd.c:726
void EpdSubtract2(EpDouble *epd1, EpDouble *epd2)
Definition epd.c:788
void EpdSubtract3(EpDouble *epd1, EpDouble *epd2, EpDouble *epd3)
Definition epd.c:850
void EpdGetString(EpDouble *epd, char *str)
Definition epd.c:135
void EpdPow2Decimal(int n, EpDouble *epd)
Definition epd.c:946
void EpdMultiply3Decimal(EpDouble *epd1, EpDouble *epd2, EpDouble *epd3)
Definition epd.c:355
int IsNanOrInfDouble(double value)
Definition epd.c:1333
void EpdMakeNan(EpDouble *epd)
Definition epd.c:1159
void EpdMakeZero(EpDouble *epd, int sign)
Definition epd.c:1137
void EpdPow2(int n, EpDouble *epd)
Definition epd.c:917
void EpdMultiply2(EpDouble *epd1, EpDouble *epd2)
Definition epd.c:246
void EpdFree(EpDouble *epd)
Definition epd.c:117
void EpdCopy(EpDouble *from, EpDouble *to)
Definition epd.c:1182
void EpdConvert(double value, EpDouble *epd)
Definition epd.c:185
void EpdNormalize(EpDouble *epd)
Definition epd.c:977
void EpdMakeInf(EpDouble *epd, int sign)
Definition epd.c:1115
void EpdAdd(EpDouble *epd1, double value)
Definition epd.c:536
void EpdMultiply(EpDouble *epd1, double value)
Definition epd.c:205
int IsInfDouble(double value)
Definition epd.c:1276
void EpdDivide(EpDouble *epd1, double value)
Definition epd.c:386
int EpdCmp(const char *key1, const char *key2)
Definition epd.c:93
void EpdMultiply2Decimal(EpDouble *epd1, EpDouble *epd2)
Definition epd.c:285
void EpdAdd3(EpDouble *epd1, EpDouble *epd2, EpDouble *epd3)
Definition epd.c:660
int EpdGetExponent(double value)
Definition epd.c:1068
union EpTypeUnion type
Definition epd.h:136
int exponent
Definition epd.h:137
unsigned int sign
Definition epd.h:89
unsigned int mantissa0
Definition epd.h:87
unsigned int mantissa1
Definition epd.h:86
unsigned int exponent
Definition epd.h:88
unsigned int quiet_bit
Definition epd.h:114
unsigned int mantissa1
Definition epd.h:112
unsigned int sign
Definition epd.h:116
unsigned int mantissa0
Definition epd.h:113
unsigned int exponent
Definition epd.h:115
struct IeeeNanStruct nan
Definition epd.h:132
double value
Definition epd.h:130
struct IeeeDoubleStruct bits
Definition epd.h:131