]>
Commit | Line | Data |
---|---|---|
1 | /** @file\r | |
2 | \r | |
3 | Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>\r | |
4 | This program and the accompanying materials are licensed and made available under\r | |
5 | the terms and conditions of the BSD License that accompanies this distribution.\r | |
6 | The full text of the license may be found at\r | |
7 | http://opensource.org/licenses/bsd-license.\r | |
8 | \r | |
9 | THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r | |
10 | WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r | |
11 | \r | |
12 | The author of this software is David M. Gay.\r | |
13 | \r | |
14 | Copyright (C) 1998 by Lucent Technologies\r | |
15 | All Rights Reserved\r | |
16 | \r | |
17 | Permission to use, copy, modify, and distribute this software and\r | |
18 | its documentation for any purpose and without fee is hereby\r | |
19 | granted, provided that the above copyright notice appear in all\r | |
20 | copies and that both that the copyright notice and this\r | |
21 | permission notice and warranty disclaimer appear in supporting\r | |
22 | documentation, and that the name of Lucent or any of its entities\r | |
23 | not be used in advertising or publicity pertaining to\r | |
24 | distribution of the software without specific, written prior\r | |
25 | permission.\r | |
26 | \r | |
27 | LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,\r | |
28 | INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.\r | |
29 | IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY\r | |
30 | SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\r | |
31 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER\r | |
32 | IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,\r | |
33 | ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\r | |
34 | THIS SOFTWARE.\r | |
35 | \r | |
36 | $NetBSD: gdtoa.h,v 1.6.4.1.4.1 2008/04/08 21:10:55 jdc Exp\r | |
37 | \r | |
38 | ****************************************************************/\r | |
39 | \r | |
40 | /* Please send bug reports to David M. Gay (dmg at acm dot org,\r | |
41 | * with " at " changed at "@" and " dot " changed to "."). */\r | |
42 | \r | |
43 | #ifndef GDTOA_H_INCLUDED\r | |
44 | #define GDTOA_H_INCLUDED\r | |
45 | #include <LibConfig.h>\r | |
46 | \r | |
47 | #include "arith.h"\r | |
48 | \r | |
49 | #ifndef Long\r | |
50 | #define Long int32_t\r | |
51 | #endif\r | |
52 | #ifndef ULong\r | |
53 | #define ULong uint32_t\r | |
54 | #endif\r | |
55 | #ifndef UShort\r | |
56 | #define UShort uint16_t\r | |
57 | #endif\r | |
58 | \r | |
59 | #ifndef ANSI\r | |
60 | #define ANSI(x) x\r | |
61 | #define Void void\r | |
62 | #endif /* ANSI */\r | |
63 | \r | |
64 | #ifndef CONST\r | |
65 | #define CONST const\r | |
66 | #endif /* CONST */\r | |
67 | \r | |
68 | enum { /* return values from strtodg */\r | |
69 | STRTOG_Zero = 0,\r | |
70 | STRTOG_Normal = 1,\r | |
71 | STRTOG_Denormal = 2,\r | |
72 | STRTOG_Infinite = 3,\r | |
73 | STRTOG_NaN = 4,\r | |
74 | STRTOG_NaNbits = 5,\r | |
75 | STRTOG_NoNumber = 6,\r | |
76 | STRTOG_Retmask = 7,\r | |
77 | \r | |
78 | /* The following may be or-ed into one of the above values. */\r | |
79 | \r | |
80 | STRTOG_Neg = 0x08,\r | |
81 | STRTOG_Inexlo = 0x10,\r | |
82 | STRTOG_Inexhi = 0x20,\r | |
83 | STRTOG_Inexact = 0x30,\r | |
84 | STRTOG_Underflow= 0x40,\r | |
85 | STRTOG_Overflow = 0x80,\r | |
86 | STRTOG_NoMemory = 0x100\r | |
87 | };\r | |
88 | \r | |
89 | typedef struct\r | |
90 | FPI {\r | |
91 | int nbits;\r | |
92 | int emin;\r | |
93 | int emax;\r | |
94 | int rounding;\r | |
95 | int sudden_underflow;\r | |
96 | } FPI;\r | |
97 | \r | |
98 | enum { /* FPI.rounding values: same as FLT_ROUNDS */\r | |
99 | FPI_Round_zero = 0,\r | |
100 | FPI_Round_near = 1,\r | |
101 | FPI_Round_up = 2,\r | |
102 | FPI_Round_down = 3\r | |
103 | };\r | |
104 | \r | |
105 | #ifdef __cplusplus\r | |
106 | extern "C" {\r | |
107 | #endif\r | |
108 | \r | |
109 | #define dtoa __dtoa\r | |
110 | #define gdtoa __gdtoa\r | |
111 | #define ldtoa __ldtoa\r | |
112 | #define hldtoa __hldtoa\r | |
113 | #define hdtoa __hdtoa\r | |
114 | #define freedtoa __freedtoa\r | |
115 | #define strtodg __strtodg_D2A\r | |
116 | #define strtopQ __strtopQ_D2A\r | |
117 | #define strtopx __strtopx_D2A\r | |
118 | #define strtopxL __strtopxL_D2A\r | |
119 | #define strtord __strtord_D2A\r | |
120 | \r | |
121 | extern char* dtoa ANSI((double d, int mode, int ndigits, int *decpt,\r | |
122 | int *sign, char **rve));\r | |
123 | extern char* hdtoa ANSI((double d, const char *xdigs, int ndigits, int *decpt,\r | |
124 | int *sign, char **rve));\r | |
125 | extern char* ldtoa ANSI((long double *ld, int mode, int ndigits, int *decpt,\r | |
126 | int *sign, char **rve));\r | |
127 | extern char* hldtoa ANSI((long double e, const char *xdigs, int ndigits,\r | |
128 | int *decpt, int *sign, char **rve));\r | |
129 | \r | |
130 | extern char* gdtoa ANSI((FPI *fpi, int be, ULong *bits, int *kindp,\r | |
131 | int mode, int ndigits, int *decpt, char **rve));\r | |
132 | extern void freedtoa ANSI((char*));\r | |
133 | extern float strtof ANSI((CONST char *, char **));\r | |
134 | extern double strtod ANSI((CONST char *, char **));\r | |
135 | extern int strtodg ANSI((CONST char*, char**, CONST FPI*, Long*, ULong*));\r | |
136 | \r | |
137 | extern char* g_ddfmt ANSI((char*, double*, int, unsigned));\r | |
138 | extern char* g_dfmt ANSI((char*, double*, int, unsigned));\r | |
139 | extern char* g_ffmt ANSI((char*, float*, int, unsigned));\r | |
140 | extern char* g_Qfmt ANSI((char*, void*, int, unsigned));\r | |
141 | extern char* g_xfmt ANSI((char*, void*, int, unsigned));\r | |
142 | extern char* g_xLfmt ANSI((char*, void*, int, unsigned));\r | |
143 | \r | |
144 | extern int strtoId ANSI((CONST char*, char**, double*, double*));\r | |
145 | extern int strtoIdd ANSI((CONST char*, char**, double*, double*));\r | |
146 | extern int strtoIf ANSI((CONST char*, char**, float*, float*));\r | |
147 | extern int strtoIQ ANSI((CONST char*, char**, void*, void*));\r | |
148 | extern int strtoIx ANSI((CONST char*, char**, void*, void*));\r | |
149 | extern int strtoIxL ANSI((CONST char*, char**, void*, void*));\r | |
150 | extern int strtord ANSI((CONST char*, char**, int, double*));\r | |
151 | extern int strtordd ANSI((CONST char*, char**, int, double*));\r | |
152 | extern int strtorf ANSI((CONST char*, char**, int, float*));\r | |
153 | extern int strtorQ ANSI((CONST char*, char**, int, void*));\r | |
154 | extern int strtorx ANSI((CONST char*, char**, int, void*));\r | |
155 | extern int strtorxL ANSI((CONST char*, char**, int, void*));\r | |
156 | \r | |
157 | extern int strtodI ANSI((CONST char*, char**, double*));\r | |
158 | extern int strtopd ANSI((CONST char*, char**, double*));\r | |
159 | extern int strtopdd ANSI((CONST char*, char**, double*));\r | |
160 | extern int strtopf ANSI((CONST char*, char**, float*));\r | |
161 | extern int strtopQ ANSI((CONST char*, char**, void*));\r | |
162 | extern int strtopx ANSI((CONST char*, char**, void*));\r | |
163 | extern int strtopxL ANSI((CONST char*, char**, void*));\r | |
164 | \r | |
165 | #ifdef __cplusplus\r | |
166 | }\r | |
167 | #endif\r | |
168 | #endif /* GDTOA_H_INCLUDED */\r |