/* Title: Values of parameters in C99 float.h Author: David N. Willilams File: float-params.c License: public domain Started: May 22, 2005 Revised: May 23, 2005 Revised: May 25, 2009 sizeof printouts This program prints out the values of floating point parameters defined in float.h under C99. They are not always viewable in the file itself, especially in gcc. */ #include #include #define PUN(NAME) printf (" " #NAME " = undefined\n" ) #define PIV(NAME) printf (" " #NAME " = %d\n", NAME ) #define PFV(NAME) printf (" " #NAME " = %g = %a\n", NAME, NAME ) #define PDV(NAME) printf (" " #NAME " = %lg = %la\n", NAME, NAME ) #define PLDV(NAME) printf (" " #NAME " = %Lg = %La\n", NAME, NAME ) int main ( void ) { printf ( "\nSizes in bytes:\n" ); printf ( " sizeof(float) = %i\n", sizeof (float) ); printf ( " sizeof(double) = %i\n", sizeof (double) ); printf ( " sizeof(long double) = %i\n", sizeof (long double) ); printf ( "Parameters Defined in float.h:\n" ); #ifdef FLT_RADIX PIV ( FLT_RADIX ); #else PUN ( FLT_RADIX ); #endif #ifdef FLT_ROUNDS PIV ( FLT_ROUNDS ); #else PUN ( FLT_ROUNDS ); #endif #ifdef FLT_EVAL_METHOD PIV ( FLT_EVAL_METHOD ); #else PUN ( FLT_EVAL_METHOD ); #endif #ifdef FLT_DIG PIV ( FLT_DIG ); #else PUN ( FLT_DIG ); #endif #ifdef DBL_DIG PIV ( DBL_DIG ); #else PUN ( DBL_DIG ); #endif #ifdef LDBL_DIG PIV ( LDBL_DIG ); #else PUN ( LDBL_DIG ); #endif #ifdef DECIMAL_DIG PIV ( DECIMAL_DIG ); #else PUN ( DECIMAL_DIG ); #endif #ifdef FLT_MANT_DIG PIV ( FLT_MANT_DIG ); #else PUN ( FLT_MANT_DIG ); #endif #ifdef DBL_MANT_DIG PIV ( DBL_MANT_DIG ); #else PUN ( DBL_MANT_DIG ); #endif #ifdef LDBL_MANT_DIG PIV ( LDBL_MANT_DIG ); #else PUN ( LDBL_MANT_DIG ); #endif #ifdef FLT_MIN_EXP PIV ( FLT_MIN_EXP ); #else PUN ( FLT_MIN_EXP ); #endif #ifdef DBL_MIN_EXP PIV ( DBL_MIN_EXP ); #else PUN ( DBL_MIN_EXP ); #endif #ifdef LDBL_MIN_EXP PIV ( LDBL_MIN_EXP ); #else PUN ( LDBL_MIN_EXP ); #endif #ifdef FLT_MAX_EXP PIV ( FLT_MAX_EXP ); #else PUN ( FLT_MAX_EXP ); #endif #ifdef DBL_MAX_EXP PIV ( DBL_MAX_EXP ); #else PUN ( DBL_MAX_EXP ); #endif #ifdef LDBL_MAX_EXP PIV ( LDBL_MAX_EXP ); #else PUN ( LDBL_MAX_EXP ); #endif #ifdef FLT_MIN_10_EXP PIV ( FLT_MIN_10_EXP ); #else PUN ( FLT_MIN_10_EXP ); #endif #ifdef DBL_MIN_10_EXP PIV ( DBL_MIN_10_EXP ); #else PUN ( DBL_MIN_10_EXP ); #endif #ifdef LDBL_MIN_10_EXP PIV ( LDBL_MIN_10_EXP ); #else PUN ( LDBL_MIN_10_EXP ); #endif #ifdef FLT_MAX_10_EXP PIV ( FLT_MAX_10_EXP ); #else PUN ( FLT_MAX_10_EXP ); #endif #ifdef DBL_MAX_10_EXP PIV ( DBL_MAX_10_EXP ); #else PUN ( DBL_MAX_10_EXP ); #endif #ifdef LDBL_MAX_10_EXP PIV ( LDBL_MAX_10_EXP ); #else PUN ( LDBL_MAX_10_EXP ); #endif #ifdef FLT_EPSILON PFV ( FLT_EPSILON ); #else PUN ( FLT_EPSILON ); #endif #ifdef DBL_EPSILON PDV ( DBL_EPSILON ); #else PUN ( DBL_EPSILON ); #endif #ifdef LDBL_EPSILON PLDV ( LDBL_EPSILON ); #else PUN ( LDBL_EPSILON ); #endif #ifdef FLT_MIN PFV ( FLT_MIN ); #else PUN ( FLT_MIN ); #endif #ifdef DBL_MIN PDV ( DBL_MIN ); #else PUN ( DBL_MIN ); #endif #ifdef LDBL_MIN PLDV ( LDBL_MIN ); #else PUN ( LDBL_MIN ); #endif #ifdef FLT_MAX PFV ( FLT_MAX ); #else PUN ( FLT_MAX ); #endif #ifdef DBL_MAX PDV ( DBL_MAX ); #else PUN ( DBL_MAX ); #endif #ifdef LDBL_MAX PLDV ( LDBL_MAX ); #else PUN ( LDBL_MAX ); #endif }