gonzui


Format: Advanced Search

t2ex/bsd_source/lib/libc/src_bsd/stdlib/gdtoa.hbare sourcepermlink (0.01 seconds)

Search this content:

    1: /****************************************************************
    2: 
    3: The author of this software is David M. Gay.
    4: 
    5: Copyright (C) 1998 by Lucent Technologies
    6: All Rights Reserved
    7: 
    8: Permission to use, copy, modify, and distribute this software and
    9: its documentation for any purpose and without fee is hereby
   10: granted, provided that the above copyright notice appear in all
   11: copies and that both that the copyright notice and this
   12: permission notice and warranty disclaimer appear in supporting
   13: documentation, and that the name of Lucent or any of its entities
   14: not be used in advertising or publicity pertaining to
   15: distribution of the software without specific, written prior
   16: permission.
   17: 
   18: LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
   19: INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
   20: IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
   21: SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   22: WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
   23: IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
   24: ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
   25: THIS SOFTWARE.
   26: 
   27: ****************************************************************/
   28: 
   29: /* Please send bug reports to David M. Gay (dmg at acm dot org,
   30:  * with " at " changed at "@" and " dot " changed to ".").      */
   31: 
   32: #ifndef GDTOA_H_INCLUDED
   33: #define GDTOA_H_INCLUDED
   34: 
   35: #include "arith.h"
   36: #include <stddef.h> /* for size_t */
   37: 
   38: #ifndef Long
   39: #define Long int
   40: #endif
   41: #ifndef ULong
   42: typedef unsigned Long ULong;
   43: #endif
   44: #ifndef UShort
   45: typedef unsigned short UShort;
   46: #endif
   47: 
   48: #ifndef ANSI
   49: #ifdef KR_headers
   50: #define ANSI(x) ()
   51: #define Void /*nothing*/
   52: #else
   53: #define ANSI(x) x
   54: #define Void void
   55: #endif
   56: #endif /* ANSI */
   57: 
   58: #ifndef CONST
   59: #ifdef KR_headers
   60: #define CONST /* blank */
   61: #else
   62: #define CONST const
   63: #endif
   64: #endif /* CONST */
   65: 
   66:  enum { /* return values from strtodg */
   67:         STRTOG_Zero    = 0x000,
   68:         STRTOG_Normal  = 0x001,
   69:         STRTOG_Denormal        = 0x002,
   70:         STRTOG_Infinite        = 0x003,
   71:         STRTOG_NaN     = 0x004,
   72:         STRTOG_NaNbits = 0x005,
   73:         STRTOG_NoNumber        = 0x006,
   74:         STRTOG_NoMemory = 0x007,
   75:         STRTOG_Retmask = 0x00f,
   76: 
   77:         /* The following may be or-ed into one of the above values. */
   78: 
   79:         STRTOG_Inexlo  = 0x010, /* returned result rounded toward zero */
   80:         STRTOG_Inexhi  = 0x020, /* returned result rounded away from zero */
   81:         STRTOG_Inexact = 0x030,
   82:         STRTOG_Underflow= 0x040,
   83:         STRTOG_Overflow        = 0x080,
   84:         STRTOG_Neg     = 0x100 /* does not affect STRTOG_Inexlo or STRTOG_Inexhi */
   85:         };
   86: 
   87:  typedef struct
   88: FPI {
   89:         int nbits;
   90:         int emin;
   91:         int emax;
   92:         int rounding;
   93:         int sudden_underflow;
   94:         } FPI;
   95: 
   96: enum {  /* FPI.rounding values: same as FLT_ROUNDS */
   97:         FPI_Round_zero = 0,
   98:         FPI_Round_near = 1,
   99:         FPI_Round_up = 2,
  100:         FPI_Round_down = 3
  101:         };
  102: 
  103: #ifdef __cplusplus
  104: extern "C" {
  105: #endif
  106: 
  107: extern char* __dtoa  ANSI((double d, int mode, int ndigits, int *decpt,
  108:                         int *sign, char **rve));
  109: extern char* __gdtoa ANSI((FPI *fpi, int be, ULong *bits, int *kindp,
  110:                         int mode, int ndigits, int *decpt, char **rve));
  111: extern void __freedtoa ANSI((char*));
  112: extern float  strtof ANSI((CONST char *, char **));
  113: extern double strtod ANSI((CONST char *, char **));
  114: extern int __strtodg ANSI((CONST char*, char**, FPI*, Long*, ULong*));
  115: 
  116: extern char*    __g_ddfmt  ANSI((char*, double*, int, size_t));
  117: extern char*    __g_dfmt   ANSI((char*, double*, int, size_t));
  118: extern char*    __g_ffmt   ANSI((char*, float*,  int, size_t));
  119: extern char*    __g_Qfmt   ANSI((char*, void*,   int, size_t));
  120: extern char*    __g_xfmt   ANSI((char*, void*,   int, size_t));
  121: extern char*    __g_xLfmt  ANSI((char*, void*,   int, size_t));
  122: 
  123: extern int      __strtoId  ANSI((CONST char*, char**, double*, double*));
  124: extern int      __strtoIdd ANSI((CONST char*, char**, double*, double*));
  125: extern int      __strtoIf  ANSI((CONST char*, char**, float*, float*));
  126: extern int      __strtoIQ  ANSI((CONST char*, char**, void*, void*));
  127: extern int      __strtoIx  ANSI((CONST char*, char**, void*, void*));
  128: extern int      __strtoIxL ANSI((CONST char*, char**, void*, void*));
  129: extern int      __strtord  ANSI((CONST char*, char**, int, double*));
  130: extern int      __strtordd ANSI((CONST char*, char**, int, double*));
  131: extern int      __strtorf  ANSI((CONST char*, char**, int, float*));
  132: extern int      __strtorQ  ANSI((CONST char*, char**, int, void*));
  133: extern int      __strtorx  ANSI((CONST char*, char**, int, void*));
  134: extern int      __strtorxL ANSI((CONST char*, char**, int, void*));
  135: #if 1
  136: extern int      __strtodI  ANSI((CONST char*, char**, double*));
  137: extern int      __strtopd  ANSI((CONST char*, char**, double*));
  138: extern int      __strtopdd ANSI((CONST char*, char**, double*));
  139: extern int      __strtopf  ANSI((CONST char*, char**, float*));
  140: extern int      __strtopQ  ANSI((CONST char*, char**, void*));
  141: extern int      __strtopx  ANSI((CONST char*, char**, void*));
  142: extern int      __strtopxL ANSI((CONST char*, char**, void*));
  143: #else
  144: #define __strtopd(s,se,x) strtord(s,se,1,x)
  145: #define __strtopdd(s,se,x) strtordd(s,se,1,x)
  146: #define __strtopf(s,se,x) strtorf(s,se,1,x)
  147: #define __strtopQ(s,se,x) strtorQ(s,se,1,x)
  148: #define __strtopx(s,se,x) strtorx(s,se,1,x)
  149: #define __strtopxL(s,se,x) strtorxL(s,se,1,x)
  150: #endif
  151: 
  152: #ifdef __cplusplus
  153: }
  154: #endif
  155: #endif /* GDTOA_H_INCLUDED */