14887Schinset prototyped 28462SApril.Chin@Sun.COMset nooptimize 38462SApril.Chin@Sun.COMset stdio FEATURE/isoc99 44887Schinhdr float,limits,math,values 58462SApril.Chin@Sun.COMlib fpclassify,frexp,frexpl,ldexp,ldexpl,finite,finitel,isinf,isinfl,isnan,isnanl,signbit,copysign,copysignl FEATURE/isoc99 math.h -lm 64887Schin 74887Schintst ast_no_um2fm note{ no unsigned intmax => floatmax cast }end nolink{ 84887Schin #include "FEATURE/common" 94887Schin int 104887Schin main() 114887Schin { 124887Schin _ast_fltmax_t f = 0; 134887Schin unsigned _ast_intmax_t i = 0; 144887Schin f = i; 154887Schin i = f; 164887Schin return f == i; 174887Schin } 184887Schin}end 194887Schin 204887Schintst ast_mpy_overflow_fpe note{ fpe on mpy overflow }end noexecute{ 214887Schin int 224887Schin main() 234887Schin { 244887Schin float f; 254887Schin float p; 264887Schin int i; 274887Schin 284887Schin i = 0; 294887Schin p = f = 1.0; 304887Schin do 314887Schin { 324887Schin p = f; 334887Schin f *= 2.0; 344887Schin } while (f != p && ++i < 1024); 354887Schin return 0; 364887Schin } 374887Schin}end 384887Schin 394887Schintst ast_div_underflow_fpe note{ fpe on div underflow }end noexecute{ 404887Schin int 414887Schin main() 424887Schin { 434887Schin float f; 444887Schin float p; 454887Schin int i; 464887Schin 474887Schin i = 0; 484887Schin p = f = 1.0; 494887Schin do 504887Schin { 514887Schin p = f; 524887Schin f /= 2.0; 534887Schin } while (f != p && ++i < 1024); 544887Schin return 0; 554887Schin } 564887Schin}end 574887Schin 584887Schinmacro{ 594887Schin #if _hdr_float 604887Schin #include <float.h> 614887Schin #endif 624887Schin #if _hdr_limits 634887Schin #include <limits.h> 644887Schin #endif 654887Schin #if _hdr_math 664887Schin #include <math.h> 674887Schin #endif 684887Schin #if _hdr_values 694887Schin #include <values.h> 704887Schin #endif 714887Schin 724887Schin #if !defined(FLT_MIN_EXP) && defined(FMINEXP) 734887Schin #define FLT_MIN_EXP FMINEXP 744887Schin #endif 754887Schin #if !defined(FLT_MIN) && defined(MINFLOAT) 764887Schin #define FLT_MIN MINFLOAT 774887Schin #endif 784887Schin #if !defined(FLT_MAX_EXP) && defined(FMAXEXP) 794887Schin #define FLT_MAX_EXP FMAXEXP 804887Schin #endif 814887Schin #if !defined(FLT_MAX) && defined(MAXFLOAT) 824887Schin #define FLT_MAX MAXFLOAT 834887Schin #endif 844887Schin 854887Schin #if !defined(DBL_MIN_EXP) && defined(DMINEXP) 864887Schin #define DBL_MIN_EXP DMINEXP 874887Schin #endif 884887Schin #if !defined(DBL_MIN) && defined(MINDOUBLE) 894887Schin #define DBL_MIN MINDOUBLE 904887Schin #endif 914887Schin #if !defined(DBL_MAX_EXP) && defined(DMAXEXP) 924887Schin #define DBL_MAX_EXP DMAXEXP 934887Schin #endif 944887Schin #if !defined(DBL_MAX) && defined(MAXDOUBLE) 954887Schin #define DBL_MAX MAXDOUBLE 964887Schin #endif 974887Schin 984887Schin <<"#include <ast_common.h>">> 994887Schin #if _hdr_float 1004887Schin <<"#include <float.h>">> 1014887Schin #endif 1024887Schin #if _hdr_math 1034887Schin <<"#include <math.h>">> 1044887Schin #endif 1054887Schin #ifdef FLT_DIG 1064887Schin <<"#ifndef FLT_DIG">> 1074887Schin <<"#define FLT_DIG">> FLT_DIG 1084887Schin <<"#endif">> 1094887Schin #endif 1104887Schin #ifdef FLT_MAX 1114887Schin <<"#ifndef FLT_MAX">> 1124887Schin <<"#define FLT_MAX">> FLT_MAX 1134887Schin <<"#endif">> 1144887Schin #endif 1154887Schin #ifdef FLT_MAX_10_EXP 1164887Schin <<"#ifndef FLT_MAX_10_EXP">> 1174887Schin <<"#define FLT_MAX_10_EXP">> FLT_MAX_10_EXP 1184887Schin <<"#endif">> 1194887Schin #endif 1204887Schin #ifdef FLT_MAX_EXP 1214887Schin <<"#ifndef FLT_MAX_EXP">> 1224887Schin <<"#define FLT_MAX_EXP">> FLT_MAX_EXP 1234887Schin <<"#endif">> 1244887Schin #endif 1254887Schin #ifdef FLT_MIN 1264887Schin <<"#ifndef FLT_MIN">> 1274887Schin <<"#define FLT_MIN">> FLT_MIN 1284887Schin <<"#endif">> 1294887Schin #endif 1304887Schin #ifdef FLT_MIN_10_EXP 1314887Schin <<"#ifndef FLT_MIN_10_EXP">> 1324887Schin <<"#define FLT_MIN_10_EXP">> FLT_MIN_10_EXP 1334887Schin <<"#endif">> 1344887Schin #endif 1354887Schin #ifdef FLT_MIN_EXP 1364887Schin <<"#ifndef FLT_MIN_EXP">> 1374887Schin <<"#define FLT_MIN_EXP">> FLT_MIN_EXP 1384887Schin <<"#endif">> 1394887Schin #endif 1404887Schin 1414887Schin #ifdef DBL_DIG 1424887Schin <<"#ifndef DBL_DIG">> 1434887Schin <<"#define DBL_DIG">> DBL_DIG 1444887Schin <<"#endif">> 1454887Schin #endif 1464887Schin #ifdef DBL_MAX 1474887Schin <<"#ifndef DBL_MAX">> 1484887Schin <<"#define DBL_MAX">> DBL_MAX 1494887Schin <<"#endif">> 1504887Schin #endif 1514887Schin #ifdef DBL_MAX_10_EXP 1524887Schin <<"#ifndef DBL_MAX_10_EXP">> 1534887Schin <<"#define DBL_MAX_10_EXP">> DBL_MAX_10_EXP 1544887Schin <<"#endif">> 1554887Schin #endif 1564887Schin #ifdef DBL_MAX_EXP 1574887Schin <<"#ifndef DBL_MAX_EXP">> 1584887Schin <<"#define DBL_MAX_EXP">> DBL_MAX_EXP 1594887Schin <<"#endif">> 1604887Schin #endif 1614887Schin #ifdef DBL_MIN 1624887Schin <<"#ifndef DBL_MIN">> 1634887Schin <<"#define DBL_MIN">> DBL_MIN 1644887Schin <<"#endif">> 1654887Schin #endif 1664887Schin #ifdef DBL_MIN_10_EXP 1674887Schin <<"#ifndef DBL_MIN_10_EXP">> 1684887Schin <<"#define DBL_MIN_10_EXP">> DBL_MIN_10_EXP 1694887Schin <<"#endif">> 1704887Schin #endif 1714887Schin #ifdef DBL_MIN_EXP 1724887Schin <<"#ifndef DBL_MIN_EXP">> 1734887Schin <<"#define DBL_MIN_EXP">> DBL_MIN_EXP 1744887Schin <<"#endif">> 1754887Schin #endif 1764887Schin 1774887Schin #ifdef LDBL_DIG 1784887Schin <<"#ifndef LDBL_DIG">> 1794887Schin <<"#define LDBL_DIG">> LDBL_DIG 1804887Schin <<"#endif">> 1814887Schin #endif 1824887Schin #ifdef LDBL_MAX 1834887Schin <<"#ifndef LDBL_MAX">> 1844887Schin <<"#define LDBL_MAX">> LDBL_MAX 1854887Schin <<"#endif">> 1864887Schin #endif 1874887Schin #ifdef LDBL_MAX_10_EXP 1884887Schin <<"#ifndef LDBL_MAX_10_EXP">> 1894887Schin <<"#define LDBL_MAX_10_EXP">> LDBL_MAX_10_EXP 1904887Schin <<"#endif">> 1914887Schin #endif 1924887Schin #ifdef LDBL_MAX_EXP 1934887Schin <<"#ifndef LDBL_MAX_EXP">> 1944887Schin <<"#define LDBL_MAX_EXP">> LDBL_MAX_EXP 1954887Schin <<"#endif">> 1964887Schin #endif 1974887Schin #ifdef LDBL_MIN 1984887Schin <<"#ifndef LDBL_MIN">> 1994887Schin <<"#define LDBL_MIN">> LDBL_MIN 2004887Schin <<"#endif">> 2014887Schin #endif 2024887Schin #ifdef LDBL_MIN_10_EXP 2034887Schin <<"#ifndef LDBL_MIN_10_EXP">> 2044887Schin <<"#define LDBL_MIN_10_EXP">> LDBL_MIN_10_EXP 2054887Schin <<"#endif">> 2064887Schin #endif 2074887Schin #ifdef LDBL_MIN_EXP 2084887Schin <<"#ifndef LDBL_MIN_EXP">> 2094887Schin <<"#define LDBL_MIN_EXP">> LDBL_MIN_EXP 2104887Schin <<"#endif">> 2114887Schin #endif 2124887Schin}end 2134887Schin 2144887Schintst - note{ missing floating point limits }end output{ 2154887Schin #include "FEATURE/common" 2168462SApril.Chin@Sun.COM #include <stdio.h> 2174887Schin #if _hdr_float 2184887Schin #include <float.h> 2194887Schin #endif 2204887Schin #if _hdr_limits 2214887Schin #include <limits.h> 2224887Schin #endif 2234887Schin #if _hdr_math 2244887Schin #include <math.h> 2254887Schin #endif 2264887Schin #if _hdr_values 2274887Schin #include <values.h> 2284887Schin #endif 2294887Schin #include <signal.h> 2304887Schin #ifdef SIGFPE 2314887Schin static int caught = 0; 2324887Schin #if _STD_ 2334887Schin static void catch(int sig) 2344887Schin #else 2354887Schin static void catch(sig) int sig; 2364887Schin #endif 2374887Schin { 2384887Schin signal(sig, SIG_IGN); 2394887Schin caught++; 2404887Schin } 2414887Schin #endif 2424887Schin int 2434887Schin main() 2444887Schin { 2454887Schin register int i; 2464887Schin register int s; 2474887Schin float f; 2484887Schin float pf; 2494887Schin float mf; 2504887Schin float xf; 2514887Schin double d; 2524887Schin double pd; 2534887Schin double md; 2544887Schin char* fp; 2554887Schin #if _ast_fltmax_double 2564887Schin char* fs = ""; 2574887Schin char* ds = ""; 2584887Schin #else 2594887Schin _ast_fltmax_t l; 2604887Schin _ast_fltmax_t pl; 2614887Schin _ast_fltmax_t ml; 2624887Schin char* fs = "F"; 2634887Schin char* ds = ""; 2644887Schin char* ls = "L"; 2654887Schin #endif 2664887Schin unsigned long u; 2674887Schin unsigned _ast_intmax_t w; 2684887Schin unsigned _ast_intmax_t pw; 2694887Schin unsigned _ast_intmax_t x; 2704887Schin unsigned short us; 2714887Schin unsigned int ui; 2724887Schin unsigned long ul; 2734887Schin unsigned _ast_intmax_t uq; 2744887Schin 2754887Schin #ifdef SIGFPE 2764887Schin signal(SIGFPE, catch); 2774887Schin #endif 2784887Schin printf("\n"); 2794887Schin printf("\n"); 2804887Schin us = 0; 2814887Schin us = ~us; 2824887Schin i = 0; 2834887Schin while (us /= 10) 2844887Schin i++; 2854887Schin printf("#define USHRT_DIG %d\n", i); 2864887Schin ui = 0; 2874887Schin ui = ~ui; 2884887Schin i = 0; 2894887Schin while (ui /= 10) 2904887Schin i++; 2914887Schin printf("#define UINT_DIG %d\n", i); 2924887Schin ul = 0; 2934887Schin ul = ~ul; 2944887Schin i = 0; 2954887Schin while (ul /= 10) 2964887Schin i++; 2974887Schin printf("#define ULONG_DIG %d\n", i); 2984887Schin if (sizeof(uq) > sizeof(ul)) 2994887Schin { 3004887Schin uq = 0; 3014887Schin uq = ~uq; 3024887Schin i = 0; 3034887Schin while (uq /= 10) 3044887Schin i++; 3054887Schin printf("#define ULLONG_DIG %d\n", i); 3064887Schin printf("#define UINTMAX_DIG ULLONG_DIG\n"); 3074887Schin } 3084887Schin else 3094887Schin printf("#define UINTMAX_DIG ULONG_DIG\n"); 3104887Schin printf("\n"); 3114887Schin w = 1; 3124887Schin do 3134887Schin { 3144887Schin pw = w; 3154887Schin w *= 2; 3164887Schin f = (_ast_intmax_t)w; 3174887Schin x = (_ast_intmax_t)f; 3184887Schin } while (w > pw && w == x); 3194887Schin w = (pw - 1) + pw; 3204887Schin u = ~0; 3214887Schin if (u > w) 3224887Schin u = w; 3234887Schin printf("#define FLT_ULONG_MAX %lu.0F\n", u); 3244887Schin if (sizeof(w) > sizeof(u)) 3254887Schin { 3264887Schin printf("#define FLT_ULLONG_MAX %llu.0F\n", w); 3274887Schin printf("#define FLT_UINTMAX_MAX FLT_ULLONG_MAX\n"); 3284887Schin } 3294887Schin else 3304887Schin { 3314887Schin printf("#define FLT_ULLONG_MAX FLT_ULONG_MAX\n"); 3324887Schin printf("#define FLT_UINTMAX_MAX FLT_ULONG_MAX\n"); 3334887Schin } 3344887Schin u /= 2; 3354887Schin w /= 2; 3364887Schin printf("#define FLT_LONG_MAX %lu.0F\n", u); 3374887Schin if (sizeof(w) > sizeof(u)) 3384887Schin { 3394887Schin printf("#define FLT_LLONG_MAX %llu.0F\n", w); 3404887Schin printf("#define FLT_INTMAX_MAX FLT_LLONG_MAX\n"); 3414887Schin } 3424887Schin else 3434887Schin { 3444887Schin printf("#define FLT_LLONG_MAX FLT_LONG_MAX\n"); 3454887Schin printf("#define FLT_INTMAX_MAX FLT_LONG_MAX\n"); 3464887Schin } 3474887Schin u++; 3484887Schin w++; 3494887Schin printf("#define FLT_LONG_MIN (-%lu.0F)\n", u); 3504887Schin if (sizeof(w) > sizeof(u)) 3514887Schin { 3524887Schin printf("#define FLT_LLONG_MIN (-%llu.0F)\n", w); 3534887Schin printf("#define FLT_INTMAX_MIN FLT_LLONG_MIN\n"); 3544887Schin } 3554887Schin else 3564887Schin { 3574887Schin printf("#define FLT_LLONG_MIN FLT_LONG_MIN\n"); 3584887Schin printf("#define FLT_INTMAX_MIN FLT_LONG_MIN\n"); 3594887Schin } 3604887Schin #ifdef FLT_DIG 3614887Schin s = FLT_DIG; 3624887Schin #else 3634887Schin f = pf = 1.0; 3644887Schin s = -1; 3654887Schin do 3664887Schin { 3674887Schin s++; 3684887Schin f *= 10.0; 3694887Schin } while (f != (f + pf)); 3704887Schin #endif 3714887Schin #if defined(FLT_MIN) && defined(FLT_MIN_EXP) 3724887Schin i = FLT_MIN_EXP; 3734887Schin mf = FLT_MIN; 3744887Schin #else 3754887Schin i = 3; 3764887Schin f = pf = 1.0; 3774887Schin do 3784887Schin { 3794887Schin i--; 3804887Schin mf = pf; 3814887Schin pf = f; 3824887Schin f /= 2.0; 3834887Schin } while (f < pf); 3844887Schin #ifdef FLT_MIN_EXP 3854887Schin i = FLT_MIN_EXP; 3864887Schin #endif 3874887Schin #ifdef FLT_MIN 3884887Schin mf = FLT_MIN; 3894887Schin #endif 3904887Schin #endif 3914887Schin #ifndef FLT_DIG 3924887Schin printf("#ifndef FLT_DIG\n"); 3934887Schin printf("#define FLT_DIG %d\n", s); 3944887Schin printf("#endif\n"); 3954887Schin #endif 3964887Schin #ifndef FLT_MIN 3974887Schin printf("#ifndef FLT_MIN\n"); 3984887Schin printf("#define FLT_MIN %.*E%s\n", s + 1, mf, fs); 3994887Schin printf("#endif\n"); 4004887Schin #endif 4014887Schin #ifndef FLT_MIN_EXP 4024887Schin printf("#ifndef FLT_MIN_EXP\n"); 4034887Schin printf("#define FLT_MIN_EXP (%d)\n", i); 4044887Schin printf("#endif\n"); 4054887Schin #endif 4064887Schin 4074887Schin #if defined(FLT_MAX) && defined(FLT_MAX_EXP) 4084887Schin i = FLT_MAX_EXP; 4094887Schin f = FLT_MAX; 4104887Schin #else 4114887Schin i = -1; 4124887Schin f = pf = 1.0; 4134887Schin do 4144887Schin { 4154887Schin i++; 4164887Schin mf = pf; 4174887Schin pf = f; 4184887Schin f *= 2.0; 4194887Schin } while (f > pf); 4204887Schin #ifdef FLT_MAX_EXP 4214887Schin i = FLT_MAX_EXP; 4224887Schin #endif 4234887Schin #ifdef FLT_MAX 4244887Schin f = FLT_MAX; 4254887Schin #endif 4264887Schin #endif 4274887Schin #ifdef FLT_MAX_EXP 4284887Schin i = FLT_MAX_EXP; 4294887Schin #else 4304887Schin f = 1; 4314887Schin do 4324887Schin { 4334887Schin f *= 2.0; 4344887Schin } while (mf == (mf + f)); 4354887Schin f = (mf - f) * 2.0 + f; 4364887Schin #endif 4374887Schin xf = f; 4384887Schin #ifndef FLT_MAX 4394887Schin printf("#ifndef FLT_MAX\n"); 4404887Schin printf("#define FLT_MAX %.*E%s\n", s + 1, f, fs); 4414887Schin printf("#endif\n"); 4424887Schin #endif 4434887Schin #ifndef FLT_MAX_EXP 4444887Schin printf("#ifndef FLT_MAX_EXP\n"); 4454887Schin printf("#define FLT_MAX_EXP %d\n", i); 4464887Schin printf("#endif\n"); 4474887Schin #endif 4484887Schin 4494887Schin #ifdef FLT_MIN_10_EXP 4504887Schin i = FLT_MIN_10_EXP; 4514887Schin #else 4524887Schin i = 2; 4534887Schin f = 1.0; 4544887Schin do 4554887Schin { 4564887Schin i--; 4574887Schin pf = f; 4584887Schin f /= 10.0; 4594887Schin } while (f < pf); 4604887Schin #endif 4614887Schin #ifndef FLT_MIN_10_EXP 4624887Schin printf("#ifndef FLT_MIN_10_EXP\n"); 4634887Schin printf("#define FLT_MIN_10_EXP (%d)\n", i); 4644887Schin printf("#endif\n"); 4654887Schin #endif 4664887Schin 4674887Schin #ifdef FLT_MAX_10_EXP 4684887Schin i = FLT_MAX_10_EXP; 4694887Schin #else 4704887Schin i = -2; 4714887Schin f = 1.0; 4724887Schin do 4734887Schin { 4744887Schin i++; 4754887Schin pf = f; 4764887Schin f *= 10.0; 4774887Schin } while (f > pf); 4784887Schin #endif 4794887Schin #ifndef FLT_MAX_10_EXP 4804887Schin printf("#ifndef FLT_MAX_10_EXP\n"); 4814887Schin printf("#define FLT_MAX_10_EXP %d\n", i); 4824887Schin printf("#endif\n"); 4834887Schin #endif 4844887Schin 4854887Schin printf("\n"); 4864887Schin w = 1; 4874887Schin do 4884887Schin { 4894887Schin pw = w; 4904887Schin w *= 2; 4914887Schin d = (_ast_intmax_t)w; 4924887Schin x = (_ast_intmax_t)d; 4934887Schin } while (w > pw && w == x); 4944887Schin w = (pw - 1) + pw; 4954887Schin u = ~0; 4964887Schin if (u > w) 4974887Schin u = w; 4984887Schin printf("#define DBL_ULONG_MAX %lu.0\n", u); 4994887Schin if (sizeof(w) > sizeof(u)) 5004887Schin { 5014887Schin printf("#define DBL_ULLONG_MAX %llu.0\n", w); 5024887Schin printf("#define DBL_UINTMAX_MAX DBL_ULLONG_MAX\n"); 5034887Schin } 5044887Schin else 5054887Schin { 5064887Schin printf("#define DBL_ULLONG_MAX DBL_ULONG_MAX\n"); 5074887Schin printf("#define DBL_UINTMAX_MAX DBL_ULONG_MAX\n"); 5084887Schin } 5094887Schin u /= 2; 5104887Schin w /= 2; 5114887Schin printf("#define DBL_LONG_MAX %lu.0\n", u); 5124887Schin if (sizeof(w) > sizeof(u)) 5134887Schin { 5144887Schin printf("#define DBL_LLONG_MAX %llu.0\n", w); 5154887Schin printf("#define DBL_INTMAX_MAX DBL_LLONG_MAX\n"); 5164887Schin } 5174887Schin else 5184887Schin { 5194887Schin printf("#define DBL_LLONG_MAX DBL_LONG_MAX\n"); 5204887Schin printf("#define DBL_INTMAX_MAX DBL_LONG_MAX\n"); 5214887Schin } 5224887Schin u++; 5234887Schin w++; 5244887Schin printf("#define DBL_LONG_MIN (-%lu.0)\n", u); 5254887Schin if (sizeof(w) > sizeof(u)) 5264887Schin { 5274887Schin printf("#define DBL_LLONG_MIN (-%llu.0)\n", w); 5284887Schin printf("#define DBL_INTMAX_MIN DBL_LLONG_MIN\n"); 5294887Schin } 5304887Schin else 5314887Schin { 5324887Schin printf("#define DBL_LLONG_MIN DBL_LONG_MIN\n"); 5334887Schin printf("#define DBL_INTMAX_MIN DBL_LONG_MIN\n"); 5344887Schin } 5354887Schin #ifdef DBL_DIG 5364887Schin s = DBL_DIG; 5374887Schin #else 5384887Schin d = pd = 1.0; 5394887Schin s = -1; 5404887Schin do 5414887Schin { 5424887Schin s++; 5434887Schin d *= 10.0; 5444887Schin } while (d != (d + pd)); 5454887Schin #endif 5464887Schin #if defined(DBL_MIN) && defined(DBL_MIN_EXP) 5474887Schin i = DBL_MIN_EXP; 5484887Schin md = DBL_MIN; 5494887Schin #else 5504887Schin i = 3; 5514887Schin d = pd = 1.0; 5524887Schin do 5534887Schin { 5544887Schin i--; 5554887Schin md = pd; 5564887Schin pd = d; 5574887Schin d /= 2.0; 5584887Schin } while (d < pd); 5594887Schin #ifdef DBL_MIN_EXP 5604887Schin i = DBL_MIN_EXP; 5614887Schin #endif 5624887Schin #ifdef DBL_MIN 5634887Schin md = DBL_MIN; 5644887Schin #endif 5654887Schin #endif 5664887Schin #ifndef DBL_DIG 5674887Schin printf("#ifndef DBL_DIG\n"); 5684887Schin printf("#define DBL_DIG %d\n", s); 5694887Schin printf("#endif\n"); 5704887Schin #endif 5714887Schin #ifndef DBL_MIN 5724887Schin printf("#ifndef DBL_MIN\n"); 5734887Schin printf("#define DBL_MIN %.*E%s\n", s + 1, md, ds); 5744887Schin printf("#endif\n"); 5754887Schin #endif 5764887Schin #ifndef DBL_MIN_EXP 5774887Schin printf("#ifndef DBL_MIN_EXP\n"); 5784887Schin printf("#define DBL_MIN_EXP (%d)\n", i); 5794887Schin printf("#endif\n"); 5804887Schin #endif 5814887Schin 5824887Schin #if defined(DBL_MAX) && defined(DBL_MAX_EXP) 5834887Schin i = DBL_MAX_EXP; 5844887Schin d = DBL_MAX; 5854887Schin #else 5864887Schin i = -1; 5874887Schin d = pd = 1.0; 5884887Schin do 5894887Schin { 5904887Schin i++; 5914887Schin md = pd; 5924887Schin pd = d; 5934887Schin d *= 2.0; 5944887Schin } while (d > pd); 5954887Schin d = 1.0; 5964887Schin do 5974887Schin { 5984887Schin d *= 2.0; 5994887Schin } while (md == (md + d)); 6004887Schin d = (md - d) * 2.0 + d; 6014887Schin #ifdef DBL_MAX_EXP 6024887Schin i = DBL_MAX_EXP; 6034887Schin #endif 6044887Schin #ifdef DBL_MAX 6054887Schin d = DBL_MAX; 6064887Schin #endif 6074887Schin #endif 6084887Schin #ifndef DBL_MAX 6094887Schin printf("#ifndef DBL_MAX\n"); 6104887Schin printf("#define DBL_MAX %.*E%s\n", s + 1, d, ds); 6114887Schin printf("#endif\n"); 6124887Schin #endif 6134887Schin #ifndef DBL_MAX_EXP 6144887Schin printf("#ifndef DBL_MAX_EXP\n"); 6154887Schin printf("#define DBL_MAX_EXP %d\n", i); 6164887Schin printf("#endif\n"); 6174887Schin #endif 6184887Schin 6194887Schin #ifdef DBL_MIN_10_EXP 6204887Schin i = DBL_MIN_10_EXP; 6214887Schin #else 6224887Schin i = 2; 6234887Schin d = 1.0; 6244887Schin do 6254887Schin { 6264887Schin i--; 6274887Schin pd = d; 6284887Schin d /= 10.0; 6294887Schin } while (d < pd); 6304887Schin #endif 6314887Schin #ifndef DBL_MIN_10_EXP 6324887Schin printf("#ifndef DBL_MIN_10_EXP\n"); 6334887Schin printf("#define DBL_MIN_10_EXP (%d)\n", i); 6344887Schin printf("#endif\n"); 6354887Schin #endif 6364887Schin 6374887Schin #ifdef DBL_MAX_10_EXP 6384887Schin i = DBL_MAX_10_EXP; 6394887Schin #else 6404887Schin i = -2; 6414887Schin d = 1.0; 6424887Schin do 6434887Schin { 6444887Schin i++; 6454887Schin pd = d; 6464887Schin d *= 10.0; 6474887Schin } while (d > pd); 6484887Schin #endif 6494887Schin #ifndef DBL_MAX_10_EXP 6504887Schin printf("#ifndef DBL_MAX_10_EXP\n"); 6514887Schin printf("#define DBL_MAX_10_EXP %d\n", i); 6524887Schin printf("#endif\n"); 6534887Schin #endif 6544887Schin 6554887Schin #if !_ast_fltmax_double 6564887Schin printf("\n"); 6574887Schin w = 1; 6584887Schin do 6594887Schin { 6604887Schin pw = w; 6614887Schin w *= 2; 6624887Schin l = (_ast_intmax_t)w; 6634887Schin x = (_ast_intmax_t)l; 6644887Schin } while (w > pw && w == x); 6654887Schin w = (pw - 1) + pw; 6664887Schin u = ~0; 6674887Schin if (u > w) 6684887Schin u = w; 6694887Schin printf("#define LDBL_ULONG_MAX %lu.0L\n", u); 6704887Schin if (sizeof(w) > sizeof(u)) 6714887Schin { 6724887Schin printf("#define LDBL_ULLONG_MAX %llu.0L\n", w); 6734887Schin printf("#define LDBL_UINTMAX_MAX LDBL_ULLONG_MAX\n"); 6744887Schin } 6754887Schin else 6764887Schin { 6774887Schin printf("#define LDBL_ULLONG_MAX LDBL_ULONG_MAX\n"); 6784887Schin printf("#define LDBL_UINTMAX_MAX LDBL_ULONG_MAX\n"); 6794887Schin } 6804887Schin u /= 2; 6814887Schin w /= 2; 6824887Schin printf("#define LDBL_LONG_MAX %lu.0L\n", u); 6834887Schin if (sizeof(w) > sizeof(u)) 6844887Schin { 6854887Schin printf("#define LDBL_LLONG_MAX %llu.0L\n", w); 6864887Schin printf("#define LDBL_INTMAX_MAX LDBL_LLONG_MAX\n"); 6874887Schin } 6884887Schin else 6894887Schin { 6904887Schin printf("#define LDBL_LLONG_MAX LDBL_LONG_MAX\n"); 6914887Schin printf("#define LDBL_INTMAX_MAX LDBL_LONG_MAX\n"); 6924887Schin } 6934887Schin u++; 6944887Schin w++; 6954887Schin printf("#define LDBL_LONG_MIN (-%lu.0L)\n", u); 6964887Schin if (sizeof(w) > sizeof(u)) 6974887Schin { 6984887Schin printf("#define LDBL_LLONG_MIN (-%llu.0L)\n", w); 6994887Schin printf("#define LDBL_INTMAX_MIN LDBL_LLONG_MIN\n"); 7004887Schin } 7014887Schin else 7024887Schin { 7034887Schin printf("#define LDBL_LLONG_MIN LDBL_LONG_MIN\n"); 7044887Schin printf("#define LDBL_INTMAX_MIN LDBL_LONG_MIN\n"); 7054887Schin } 7064887Schin #ifdef LDBL_DIG 7074887Schin s = LDBL_DIG; 7084887Schin #else 7094887Schin l = pl = 1.0L; 7104887Schin s = -1; 7114887Schin do 7124887Schin { 7134887Schin s++; 7144887Schin l *= 10.0L; 7154887Schin } while (l != (l + pl)); 7164887Schin #endif 7174887Schin #if defined(LDBL_MIN) && defined(LDBL_MIN_EXP) 7184887Schin i = LDBL_MIN_EXP; 7194887Schin ml = LDBL_MIN; 7204887Schin #else 7214887Schin i = 3; 7224887Schin l = pl = 1.0L; 7234887Schin do 7244887Schin { 7254887Schin i--; 7264887Schin ml = pl; 7274887Schin pl = l; 7284887Schin l /= 2.0L; 7294887Schin } while (l < pl); 7304887Schin #ifdef LDBL_MIN_EXP 7314887Schin i = LDBL_MIN_EXP; 7324887Schin #endif 7334887Schin #ifdef LDBL_MIN 7344887Schin ml = LDBL_MIN; 7354887Schin #endif 7364887Schin #endif 7374887Schin #ifndef LDBL_DIG 7384887Schin printf("#ifndef LDBL_DIG\n"); 7394887Schin printf("#define LDBL_DIG %d\n", s); 7404887Schin printf("#endif\n"); 7414887Schin #endif 7424887Schin #ifndef LDBL_MIN 7434887Schin printf("#ifndef LDBL_MIN\n"); 7444887Schin printf("#define LDBL_MIN %.*LE%s\n", s + 1, ml, ls); 7454887Schin printf("#endif\n"); 7464887Schin #endif 7474887Schin #ifndef LDBL_MIN_EXP 7484887Schin printf("#ifndef LDBL_MIN_EXP\n"); 7494887Schin printf("#define LDBL_MIN_EXP (%d)\n", i); 7504887Schin printf("#endif\n"); 7514887Schin #endif 7524887Schin 7534887Schin #if defined(LDBL_MAX) && defined(LDBL_MAX_EXP) 7544887Schin i = LDBL_MAX_EXP; 7554887Schin l = LDBL_MAX; 7564887Schin #else 7574887Schin i = -1; 7584887Schin l = pl = 1.0L; 7594887Schin do 7604887Schin { 7614887Schin i++; 7624887Schin ml = pl; 7634887Schin pl = l; 7644887Schin l *= 2.0L; 7654887Schin } while (l > pl); 7664887Schin l = 1.0L; 7674887Schin do 7684887Schin { 7694887Schin l *= 2.0L; 7704887Schin } while (ml == (ml + l)); 7714887Schin l = (ml - l) * 2.0L + l; 7724887Schin #ifdef LDBL_MAX_EXP 7734887Schin i = LDBL_MAX_EXP; 7744887Schin #endif 7754887Schin #ifdef LDBL_MAX 7764887Schin l = LDBL_MAX; 7774887Schin #endif 7784887Schin #endif 7794887Schin #ifndef LDBL_MAX 7804887Schin printf("#ifndef LDBL_MAX\n"); 7814887Schin printf("#define LDBL_MAX %.*LE%s\n", s + 1, l, ls); 7824887Schin printf("#endif\n"); 7834887Schin #endif 7844887Schin #ifndef LDBL_MAX_EXP 7854887Schin printf("#ifndef LDBL_MAX_EXP\n"); 7864887Schin printf("#define LDBL_MAX_EXP %d\n", i); 7874887Schin printf("#endif\n"); 7884887Schin #endif 7894887Schin 7904887Schin #ifdef LDBL_MIN_10_EXP 7914887Schin i = LDBL_MIN_10_EXP; 7924887Schin #else 7934887Schin i = 2; 7944887Schin l = 1.0L; 7954887Schin do 7964887Schin { 7974887Schin i--; 7984887Schin pl = l; 7994887Schin l /= 10.0L; 8004887Schin } while (l < pl); 8014887Schin #endif 8024887Schin #ifndef LDBL_MIN_10_EXP 8034887Schin printf("#ifndef LDBL_MIN_10_EXP\n"); 8044887Schin printf("#define LDBL_MIN_10_EXP (%d)\n", i); 8054887Schin printf("#endif\n"); 8064887Schin #endif 8074887Schin 8084887Schin #ifdef LDBL_MAX_10_EXP 8094887Schin i = LDBL_MAX_10_EXP; 8104887Schin #else 8114887Schin i = -2; 8124887Schin l = 1.0L; 8134887Schin do 8144887Schin { 8154887Schin i++; 8164887Schin pl = l; 8174887Schin l *= 10.0L; 8184887Schin } while (l > pl); 8194887Schin #endif 8204887Schin #ifndef LDBL_MAX_10_EXP 8214887Schin printf("#ifndef LDBL_MAX_10_EXP\n"); 8224887Schin printf("#define LDBL_MAX_10_EXP %d\n", i); 8234887Schin printf("#endif\n"); 8244887Schin #endif 8254887Schin fp = "LDBL"; 8264887Schin #else 8274887Schin fp = "DBL"; 8284887Schin #endif 8294887Schin 8304887Schin printf("\n"); 8314887Schin printf("#define FLTMAX_UINTMAX_MAX %s_UINTMAX_MAX\n", fp); 8324887Schin printf("#define FLTMAX_INTMAX_MAX %s_INTMAX_MAX\n", fp); 8334887Schin printf("#define FLTMAX_INTMAX_MIN %s_INTMAX_MIN\n", fp); 8344887Schin 8354887Schin #ifdef SIGFPE 8364887Schin if (!caught) 8374887Schin { 8384887Schin #if !__MVS__ 8394887Schin f = xf; 8404887Schin f *= 2; 8414887Schin if (!f) 8424887Schin #endif 8434887Schin caught = 1; 8444887Schin } 8454887Schin if (caught) 8464887Schin printf("\n#define _ast_fltsig %d\n", SIGFPE); 8474887Schin #endif 8484887Schin 8494887Schin printf("\n"); 8504887Schin #if !_lib_frexp 8514887Schin printf("extern double frexp(double, int*);\n"); 8524887Schin #endif 8534887Schin #if !_lib_frexpl 8544887Schin printf("extern _ast_fltmax_t frexpl(_ast_fltmax_t, int*);\n"); 8554887Schin #endif 8564887Schin #if !_lib_ldexp 8574887Schin printf("extern double ldexp(double, int);\n"); 8584887Schin #endif 8594887Schin #if !_lib_ldexpl 8604887Schin printf("extern _ast_fltmax_t ldexpl(_ast_fltmax_t, int);\n"); 8614887Schin #endif 8624887Schin 8634887Schin return 0; 8644887Schin } 8654887Schin}end 8664887Schin 8674887Schintst - note{ double exponent bitfoolery }end output{ 8684887Schin #include "FEATURE/common" 8698462SApril.Chin@Sun.COM #include <stdio.h> 8704887Schin typedef union _dbl_exp_u 8714887Schin { 8724887Schin unsigned _ast_int4_t e[sizeof(double) / 4]; 8734887Schin double f; 8744887Schin } _ast_dbl_exp_t; 8754887Schin int 8764887Schin main() 8774887Schin { 8784887Schin int i; 8794887Schin int j; 8804887Schin unsigned _ast_int4_t e; 8814887Schin _ast_dbl_exp_t a; 8824887Schin _ast_dbl_exp_t b; 8834887Schin a.f = 1; 8844887Schin b.f = 2; 8854887Schin for (i = 0; i < sizeof(a.e) / sizeof(a.e[0]); i++) 8864887Schin if (e = a.e[i] ^ b.e[i]) 8874887Schin { 8884887Schin for (j = i + 1; j < sizeof(a.e) / sizeof(a.e[0]); j++) 8894887Schin if (a.e[j] ^ b.e[j]) 8904887Schin return 0; 8914887Schin printf("typedef union _ast_dbl_exp_u\n{\n\tuint32_t\t\te[sizeof(double)/4];\n\tdouble\t\t\tf;\n} _ast_dbl_exp_t;\n\n"); 8924887Schin printf("#define _ast_dbl_exp_index %d\n", i); 8934887Schin for (i = 0; !(e & 1); e >>= 1, i++); 8944887Schin printf("#define _ast_dbl_exp_shift %d\n\n", i); 8954887Schin return 0; 8964887Schin } 8974887Schin return 0; 8984887Schin } 8994887Schin}end 9004887Schin 9014887Schintst - note{ long double exponent bitfoolery }end output{ 9024887Schin #include "FEATURE/common" 9038462SApril.Chin@Sun.COM #include <stdio.h> 9044887Schin typedef union _ast_fltmax_exp_u 9054887Schin { 9064887Schin unsigned _ast_int4_t e[sizeof(_ast_fltmax_t) / 4]; 9074887Schin _ast_fltmax_t f; 9084887Schin } _ast_fltmax_exp_t; 9094887Schin int 9104887Schin main() 9114887Schin { 9124887Schin int i; 9134887Schin int j; 9144887Schin unsigned _ast_int4_t e; 9154887Schin _ast_fltmax_exp_t a; 9164887Schin _ast_fltmax_exp_t b; 9174887Schin a.f = 1; 9184887Schin b.f = 2; 9194887Schin for (i = 0; i < sizeof(a.e) / sizeof(a.e[0]); i++) 9204887Schin if (e = a.e[i] ^ b.e[i]) 9214887Schin { 9224887Schin for (j = i + 1; j < sizeof(a.e) / sizeof(a.e[0]); j++) 9234887Schin if (a.e[j] ^ b.e[j]) 9244887Schin return 0; 9254887Schin printf("typedef union _fltmax_exp_u\n{\n\tuint32_t\t\te[sizeof(_ast_fltmax_t)/4];\n\t_ast_fltmax_t\t\tf;\n} _ast_fltmax_exp_t;\n\n"); 9264887Schin printf("#define _ast_fltmax_exp_index\t%d\n", i); 9274887Schin for (i = 0; !(e & 1); e >>= 1, i++); 9284887Schin printf("#define _ast_fltmax_exp_shift\t%d\n\n", i); 9294887Schin return 0; 9304887Schin } 9314887Schin return 0; 9324887Schin } 9334887Schin}end 9344887Schin 9354887Schintst - -DN=1 - -DN=2 note{ _ast_fltmax_t maximum integral type }end output{ 9368462SApril.Chin@Sun.COM #include <stdio.h> 9374887Schin int 9384887Schin main() 9394887Schin { 9404887Schin #if N == 1 9414887Schin unsigned long long m; 9424887Schin long double f = 123.456; 9434887Schin 9444887Schin m = f; 9454887Schin if (!m || f == m) 9464887Schin return 1; 9474887Schin printf("#define _ast_flt_unsigned_max_t unsigned long long\n"); 9484887Schin #else 9494887Schin printf("#define _ast_flt_unsigned_max_t unsigned long\n"); 9504887Schin #endif 9514887Schin return 0; 9524887Schin } 9534887Schin}end 9544887Schin 955*10898Sroland.mainz@nrubsig.orgtst - -DSCAN=1 - -lm -DSTRTO=1 - -DMAC=1 - -DDIV=1 - -DEXP=1 - -DADD=1 - -DMPY=1 note{ INF and NAN memory representations }end output{ 956*10898Sroland.mainz@nrubsig.org #if MAC 957*10898Sroland.mainz@nrubsig.org #define _AIX_COMPATIBILITY 1 958*10898Sroland.mainz@nrubsig.org #define _FP_MODE_VARIABLE 1 959*10898Sroland.mainz@nrubsig.org #endif 9604887Schin #include "FEATURE/common" 9618462SApril.Chin@Sun.COM #include <stdio.h> 9624887Schin #include <sys/types.h> 9634887Schin #include <signal.h> 9644887Schin #if _hdr_float 9654887Schin #include <float.h> 9664887Schin #endif 9674887Schin #if _hdr_limits 9684887Schin #include <limits.h> 9694887Schin #endif 9704887Schin #if _hdr_math 9714887Schin #include <math.h> 9724887Schin #endif 9734887Schin #if _hdr_values 9744887Schin #include <values.h> 9754887Schin #endif 9764887Schin #if STRTO && _hdr_stdlib 9774887Schin #include <stdlib.h> 9784887Schin #endif 9794887Schin #if !defined(FLT_MAX) && defined(MAXFLOAT) 9804887Schin #define FLT_MAX MAXFLOAT 9814887Schin #endif 9824887Schin #if !defined(DBL_MAX) && defined(MAXDOUBLE) 9834887Schin #define DBL_MAX MAXDOUBLE 9844887Schin #endif 9854887Schin #if _ast_fltmax_double 9864887Schin #undef LDBL_MAX 9874887Schin #endif 9884887Schin static void 9894887Schin #if _STD_ 9904887Schin list(const char* typ, const char* var, void* val, int siz) 9914887Schin #else 9924887Schin list(typ, var, val, siz) 9934887Schin char* typ; 9944887Schin char* var; 9954887Schin void* val; 9964887Schin int siz; 9974887Schin #endif 9984887Schin { 9994887Schin register unsigned char* u = (unsigned char*)val; 10004887Schin register unsigned char* e = u + siz; 10014887Schin 10024887Schin printf("#define _ast_%s_%s_init\t0x%02x", typ, var, *u); 10034887Schin while (++u < e) 10044887Schin printf(",0x%02x", *u); 10054887Schin printf("\n"); 10064887Schin } 10074887Schin int 10084887Schin main() 10094887Schin { 10104887Schin #if SCAN || STRTO 10114887Schin #undef NAN 10124887Schin #define NAN "NaN" 10134887Schin #undef INF 10144887Schin #define INF "INF" 10154887Schin { 10164887Schin float f; 10174887Schin 10184887Schin #if SCAN 10194887Schin if (sscanf(NAN, "%g", &f) != 1) 10204887Schin return 1; 10214887Schin #else 10224887Schin f = atof(NAN); 10234887Schin #endif 10244887Schin list("flt", "nan", &f, sizeof(f)); 10254887Schin #if SCAN 10264887Schin if (sscanf(INF, "%g", &f) != 1) 10274887Schin return 1; 10284887Schin #else 10294887Schin f = atof(INF); 10304887Schin #endif 10314887Schin list("flt", "inf", &f, sizeof(f)); 10324887Schin } 10334887Schin { 10344887Schin double f; 10354887Schin #if STRTO 10364887Schin char* e; 10374887Schin #endif 10384887Schin 10394887Schin #if SCAN 10404887Schin if (sscanf(NAN, "%lg", &f) != 1) 10414887Schin return 1; 10424887Schin #else 10434887Schin f = strtod(NAN, &e); 10444887Schin if (*e) 10454887Schin return 1; 10464887Schin #endif 10474887Schin list("dbl", "nan", &f, sizeof(f)); 10484887Schin #if SCAN 10494887Schin if (sscanf(INF, "%lg", &f) != 1) 10504887Schin return 1; 10514887Schin #else 10524887Schin f = strtod(INF, &e); 10534887Schin if (*e) 10544887Schin return 1; 10554887Schin #endif 10564887Schin list("dbl", "inf", &f, sizeof(f)); 10574887Schin } 10584887Schin #ifdef LDBL_MAX 10594887Schin { 10604887Schin long double f; 10614887Schin #if STRTO 10624887Schin char* e; 10634887Schin #endif 10644887Schin 10654887Schin #if SCAN 10664887Schin if (sscanf(NAN, "%Lg", &f) != 1) 10674887Schin return 1; 10684887Schin #else 10694887Schin f = strtold(NAN, &e); 10704887Schin if (*e) 10714887Schin return 1; 10724887Schin #endif 10734887Schin list("ldbl", "nan", &f, sizeof(f)); 10744887Schin #if SCAN 10754887Schin if (sscanf(INF, "%Lg", &f) != 1) 10764887Schin return 1; 10774887Schin #else 10784887Schin f = strtold(INF, &e); 10794887Schin if (*e) 10804887Schin return 1; 10814887Schin #endif 10824887Schin list("ldbl", "inf", &f, sizeof(f)); 10834887Schin } 10844887Schin #endif 10854887Schin #else 10864887Schin #ifdef SIGFPE 10874887Schin signal(SIGFPE, SIG_IGN); 10884887Schin #endif 10894887Schin #ifdef FLT_MAX 10904887Schin { 10914887Schin float f = FLT_MAX; 10924887Schin #if DIV 10934887Schin float z = 0; 10944887Schin 10954887Schin f = 0.0 / z; 10964887Schin if (!f) 10974887Schin return 1; 10984887Schin list("flt", "nan", &f, sizeof(f)); 10994887Schin f = 1.0 / z; 11004887Schin list("flt", "inf", &f, sizeof(f)); 11014887Schin #else 11024887Schin #if ADD 11034887Schin f += f; 11044887Schin #endif 11054887Schin #if EXP 11064887Schin f = exp(f); 11074887Schin #endif 11084887Schin #if MPY 11094887Schin f *= 2; 11104887Schin #endif 1111*10898Sroland.mainz@nrubsig.org #if MAC 1112*10898Sroland.mainz@nrubsig.org f = FLT_QNAN; 1113*10898Sroland.mainz@nrubsig.org #endif 11144887Schin list("flt", "nan", &f, sizeof(f)); 1115*10898Sroland.mainz@nrubsig.org #if MAC 1116*10898Sroland.mainz@nrubsig.org f = FLT_INFINITY; 1117*10898Sroland.mainz@nrubsig.org #endif 11184887Schin list("flt", "inf", &f, sizeof(f)); 11194887Schin #endif 11204887Schin } 11214887Schin #endif 11224887Schin #ifdef DBL_MAX 11234887Schin { 11244887Schin double f = DBL_MAX; 11254887Schin #if DIV 11264887Schin double z = 0; 11274887Schin 11284887Schin f = 0.0 / z; 11294887Schin if (!f) 11304887Schin return 1; 11314887Schin list("dbl", "nan", &f, sizeof(f)); 11324887Schin f = 1.0 / z; 11334887Schin list("dbl", "inf", &f, sizeof(f)); 11344887Schin #else 11354887Schin #if ADD 11364887Schin f += f; 11374887Schin #endif 11384887Schin #if EXP 11394887Schin f = exp(f); 11404887Schin #endif 11414887Schin #if MPY 11424887Schin f *= 2; 11434887Schin #endif 1144*10898Sroland.mainz@nrubsig.org #if MAC 1145*10898Sroland.mainz@nrubsig.org f = DBL_QNAN; 1146*10898Sroland.mainz@nrubsig.org #endif 11474887Schin list("dbl", "nan", &f, sizeof(f)); 1148*10898Sroland.mainz@nrubsig.org #if MAC 1149*10898Sroland.mainz@nrubsig.org f = DBL_INFINITY; 1150*10898Sroland.mainz@nrubsig.org #endif 11514887Schin list("dbl", "inf", &f, sizeof(f)); 11524887Schin #endif 11534887Schin } 11544887Schin #endif 11554887Schin #ifdef LDBL_MAX 11564887Schin { 11574887Schin long double f = LDBL_MAX; 11584887Schin #if DIV 11594887Schin long double z = 0; 11604887Schin 11614887Schin f = 0.0 / z; 11624887Schin if (!f) 11634887Schin return 1; 11644887Schin list("ldbl", "nan", &f, sizeof(f)); 11654887Schin f = 1.0 / z; 11664887Schin list("ldbl", "inf", &f, sizeof(f)); 11674887Schin #else 11684887Schin #if ADD 11694887Schin f += f; 11704887Schin #endif 11714887Schin #if EXP 11724887Schin f = exp(f); 11734887Schin #endif 11744887Schin #if MPY 11754887Schin f *= 2; 11764887Schin #endif 1177*10898Sroland.mainz@nrubsig.org #if MAC 1178*10898Sroland.mainz@nrubsig.org f = LDBL_QNAN; 1179*10898Sroland.mainz@nrubsig.org #endif 11804887Schin list("ldbl", "nan", &f, sizeof(f)); 1181*10898Sroland.mainz@nrubsig.org #if MAC 1182*10898Sroland.mainz@nrubsig.org f = LDBL_INFINITY; 1183*10898Sroland.mainz@nrubsig.org #endif 11844887Schin list("ldbl", "inf", &f, sizeof(f)); 11854887Schin #endif 11864887Schin } 11874887Schin #endif 11884887Schin #endif 11894887Schin return 0; 11904887Schin } 11914887Schin}end 1192