Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef UTIL_VALUES_H
00019 #define UTIL_VALUES_H
00020
00021
00022
00023
00024
00025 #if defined(__QNX__) || defined(_WIN32)
00026
00027 #ifdef _WIN32
00028 #include <winsock2.h>
00029 #include <windows.h>
00030 #endif
00031
00032 #include <limits.h>
00033 #include <float.h>
00034
00035 #ifdef __cplusplus
00036 extern "C" {
00037 #endif
00038
00039
00040
00041
00042
00043
00044
00045 #define BITSPERBYTE 8
00046
00047 #define BITS(type) (BITSPERBYTE * (int)sizeof (type))
00048
00049
00050 #define HIBITS ((short)(1 << BITS(short) - 1))
00051
00052 #if defined(__STDC__)
00053
00054 #define HIBITI (1U << BITS(int) - 1)
00055 #define HIBITL (1UL << BITS(long) - 1)
00056
00057 #else
00058
00059 #define HIBITI ((unsigned)1 << BITS(int) - 1)
00060 #define HIBITL (1L << BITS(long) - 1)
00061
00062 #endif
00063
00064
00065 #undef MAXINT
00066 #define MAXINT INT_MAX
00067
00068 #ifndef _WIN32_WINNT
00069
00070 #undef MAXSHORT
00071 #undef MAXLONG
00072
00073 #define MAXSHORT SHRT_MAX
00074 #define MAXLONG LONG_MAX
00075
00076 #endif
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105 #undef MAXDOUBLE
00106 #undef MINDOUBLE
00107 #undef MAXFLOAT
00108 #undef MINFLOAT
00109
00110 #define MAXDOUBLE DBL_MAX
00111 #define MINDOUBLE DBL_MIN
00112 #define MAXFLOAT FLT_MAX
00113 #define MINFLOAT FLT_MIN
00114 #define _IEEE 1
00115 #define _DEXPLEN 11
00116 #define _HIDDENBIT 1
00117 #define _LENBASE 1
00118 #define DMINEXP (-(DMAXEXP + DSIGNIF - _HIDDENBIT - 3))
00119 #define FMINEXP (-(FMAXEXP + FSIGNIF - _HIDDENBIT - 3))
00120
00121 #define _EXPBASE (1 << _LENBASE)
00122 #define _FEXPLEN 8
00123 #define DSIGNIF (BITS(double) - _DEXPLEN + _HIDDENBIT - 1)
00124 #define FSIGNIF (BITS(float) - _FEXPLEN + _HIDDENBIT - 1)
00125 #define DMAXPOWTWO ((double)(1L << BITS(long) - 2) * \
00126 (1L << DSIGNIF - BITS(long) + 1))
00127 #define FMAXPOWTWO ((float)(1L << FSIGNIF - 1))
00128 #define DMAXEXP ((1 << _DEXPLEN - 1) - 1 + _IEEE)
00129 #define FMAXEXP ((1 << _FEXPLEN - 1) - 1 + _IEEE)
00130 #define LN_MAXDOUBLE (M_LN2 * DMAXEXP)
00131 #define LN_MAXFLOAT (float)(M_LN2 * FMAXEXP)
00132 #define LN_MINDOUBLE (M_LN2 * (DMINEXP - 1))
00133 #define LN_MINFLOAT (float)(M_LN2 * (FMINEXP - 1))
00134 #define H_PREC (DSIGNIF % 2 ? (1L << DSIGNIF/2) * M_SQRT2 : 1L << DSIGNIF/2)
00135 #define FH_PREC \
00136 (float)(FSIGNIF % 2 ? (1L << FSIGNIF/2) * M_SQRT2 : 1L << FSIGNIF/2)
00137 #define X_EPS (1.0/H_PREC)
00138 #define FX_EPS (float)((float)1.0/FH_PREC)
00139 #define X_PLOSS ((double)(long)(M_PI * H_PREC))
00140 #define FX_PLOSS ((float)(long)(M_PI * FH_PREC))
00141 #define X_TLOSS (M_PI * DMAXPOWTWO)
00142 #define FX_TLOSS (float)(M_PI * FMAXPOWTWO)
00143 #define M_LN2 0.69314718055994530942
00144 #define M_PI 3.14159265358979323846
00145 #define M_SQRT2 1.41421356237309504880
00146 #define MAXBEXP DMAXEXP
00147 #define MINBEXP DMINEXP
00148 #define MAXPOWTWO DMAXPOWTWO
00149
00150 #ifdef __cplusplus
00151 }
00152 #endif
00153
00154 #else
00155 #include <values.h>
00156 #endif
00157
00158 #endif // UTIL_VALUES_H