| /** @file | |
| Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR> | |
| This program and the accompanying materials are licensed and made available under | |
| the terms and conditions of the BSD License that accompanies this distribution. | |
| The full text of the license may be found at | |
| http://opensource.org/licenses/bsd-license. | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
| The author of this software is David M. Gay. | |
| Copyright (C) 1998 by Lucent Technologies | |
| All Rights Reserved | |
| Permission to use, copy, modify, and distribute this software and | |
| its documentation for any purpose and without fee is hereby | |
| granted, provided that the above copyright notice appear in all | |
| copies and that both that the copyright notice and this | |
| permission notice and warranty disclaimer appear in supporting | |
| documentation, and that the name of Lucent or any of its entities | |
| not be used in advertising or publicity pertaining to | |
| distribution of the software without specific, written prior | |
| permission. | |
| LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, | |
| INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. | |
| IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY | |
| SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
| WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |
| IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, | |
| ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF | |
| THIS SOFTWARE. | |
| $NetBSD: gdtoa.h,v 1.6.4.1.4.1 2008/04/08 21:10:55 jdc Exp | |
| ****************************************************************/ | |
| /* Please send bug reports to David M. Gay (dmg at acm dot org, | |
| * with " at " changed at "@" and " dot " changed to "."). */ | |
| #ifndef GDTOA_H_INCLUDED | |
| #define GDTOA_H_INCLUDED | |
| #include <LibConfig.h> | |
| #include "arith.h" | |
| #ifndef Long | |
| #define Long int32_t | |
| #endif | |
| #ifndef ULong | |
| #define ULong uint32_t | |
| #endif | |
| #ifndef UShort | |
| #define UShort uint16_t | |
| #endif | |
| #ifndef ANSI | |
| #define ANSI(x) x | |
| #define Void void | |
| #endif /* ANSI */ | |
| #ifndef CONST | |
| #define CONST const | |
| #endif /* CONST */ | |
| enum { /* return values from strtodg */ | |
| STRTOG_Zero = 0, | |
| STRTOG_Normal = 1, | |
| STRTOG_Denormal = 2, | |
| STRTOG_Infinite = 3, | |
| STRTOG_NaN = 4, | |
| STRTOG_NaNbits = 5, | |
| STRTOG_NoNumber = 6, | |
| STRTOG_Retmask = 7, | |
| /* The following may be or-ed into one of the above values. */ | |
| STRTOG_Neg = 0x08, | |
| STRTOG_Inexlo = 0x10, | |
| STRTOG_Inexhi = 0x20, | |
| STRTOG_Inexact = 0x30, | |
| STRTOG_Underflow= 0x40, | |
| STRTOG_Overflow = 0x80, | |
| STRTOG_NoMemory = 0x100 | |
| }; | |
| typedef struct | |
| FPI { | |
| int nbits; | |
| int emin; | |
| int emax; | |
| int rounding; | |
| int sudden_underflow; | |
| } FPI; | |
| enum { /* FPI.rounding values: same as FLT_ROUNDS */ | |
| FPI_Round_zero = 0, | |
| FPI_Round_near = 1, | |
| FPI_Round_up = 2, | |
| FPI_Round_down = 3 | |
| }; | |
| #ifdef __cplusplus | |
| extern "C" { | |
| #endif | |
| #define dtoa __dtoa | |
| #define gdtoa __gdtoa | |
| #define ldtoa __ldtoa | |
| #define hldtoa __hldtoa | |
| #define hdtoa __hdtoa | |
| #define freedtoa __freedtoa | |
| #define strtodg __strtodg_D2A | |
| #define strtopQ __strtopQ_D2A | |
| #define strtopx __strtopx_D2A | |
| #define strtopxL __strtopxL_D2A | |
| #define strtord __strtord_D2A | |
| extern char* dtoa ANSI((double d, int mode, int ndigits, int *decpt, | |
| int *sign, char **rve)); | |
| extern char* hdtoa ANSI((double d, const char *xdigs, int ndigits, int *decpt, | |
| int *sign, char **rve)); | |
| extern char* ldtoa ANSI((long double *ld, int mode, int ndigits, int *decpt, | |
| int *sign, char **rve)); | |
| extern char* hldtoa ANSI((long double e, const char *xdigs, int ndigits, | |
| int *decpt, int *sign, char **rve)); | |
| extern char* gdtoa ANSI((FPI *fpi, int be, ULong *bits, int *kindp, | |
| int mode, int ndigits, int *decpt, char **rve)); | |
| extern void freedtoa ANSI((char*)); | |
| extern float strtof ANSI((CONST char *, char **)); | |
| extern double strtod ANSI((CONST char *, char **)); | |
| extern int strtodg ANSI((CONST char*, char**, CONST FPI*, Long*, ULong*)); | |
| extern char* g_ddfmt ANSI((char*, double*, int, unsigned)); | |
| extern char* g_dfmt ANSI((char*, double*, int, unsigned)); | |
| extern char* g_ffmt ANSI((char*, float*, int, unsigned)); | |
| extern char* g_Qfmt ANSI((char*, void*, int, unsigned)); | |
| extern char* g_xfmt ANSI((char*, void*, int, unsigned)); | |
| extern char* g_xLfmt ANSI((char*, void*, int, unsigned)); | |
| extern int strtoId ANSI((CONST char*, char**, double*, double*)); | |
| extern int strtoIdd ANSI((CONST char*, char**, double*, double*)); | |
| extern int strtoIf ANSI((CONST char*, char**, float*, float*)); | |
| extern int strtoIQ ANSI((CONST char*, char**, void*, void*)); | |
| extern int strtoIx ANSI((CONST char*, char**, void*, void*)); | |
| extern int strtoIxL ANSI((CONST char*, char**, void*, void*)); | |
| extern int strtord ANSI((CONST char*, char**, int, double*)); | |
| extern int strtordd ANSI((CONST char*, char**, int, double*)); | |
| extern int strtorf ANSI((CONST char*, char**, int, float*)); | |
| extern int strtorQ ANSI((CONST char*, char**, int, void*)); | |
| extern int strtorx ANSI((CONST char*, char**, int, void*)); | |
| extern int strtorxL ANSI((CONST char*, char**, int, void*)); | |
| extern int strtodI ANSI((CONST char*, char**, double*)); | |
| extern int strtopd ANSI((CONST char*, char**, double*)); | |
| extern int strtopdd ANSI((CONST char*, char**, double*)); | |
| extern int strtopf ANSI((CONST char*, char**, float*)); | |
| extern int strtopQ ANSI((CONST char*, char**, void*)); | |
| extern int strtopx ANSI((CONST char*, char**, void*)); | |
| extern int strtopxL ANSI((CONST char*, char**, void*)); | |
| #ifdef __cplusplus | |
| } | |
| #endif | |
| #endif /* GDTOA_H_INCLUDED */ |