/* File: floatlim.c */
/* Time-stamp: "2001-03-19 00:33:11 calvanes" */
/* Scopo: caratteristiche dei tipi float, double, long double */

/* Stampa numero byte occupati e l'intervallo di definizione per tipi:
   float, double, long double */

#include <stdio.h>
#include <float.h>

int main(void)
{
  printf("Un oggetto float occupa: sizeof(float) = %d byte\n",
         sizeof(float));
  printf("Numero di cifre decimali significative float: FLT_DIG = %d\n",
         FLT_DIG);
  printf("Minimo e massimo esponente float: FLT_MIN_10_EXP = %d, FLT_MAX_10_EXP = %d\n\n",
         FLT_MIN_10_EXP, FLT_MAX_10_EXP);

  printf("Un oggetto double occupa: sizeof(double) = %d byte\n",
         sizeof(double));
  printf("Numero di cifre decimali significative double: DBL_DIG = %d\n",
         DBL_DIG);
  printf("Minimo e massimo esponente double: DBL_MIN_10_EXP = %d, DBL_MAX_10_EXP = %d\n\n",
         DBL_MIN_10_EXP, DBL_MAX_10_EXP);

  printf("Un oggetto long double occupa: sizeof(long double) = %d byte\n",
         sizeof(long double));
  printf("Numero di cifre decimali significative long double: LDBL_DIG = %d\n",
         LDBL_DIG);
  printf("Minimo e massimo esponente long double: LDBL_MIN_10_EXP = %d, LDBL_MAX_10_EXP = %d\n\n",
         LDBL_MIN_10_EXP, LDBL_MAX_10_EXP);

  return 0;
}

/* output (gcc su linux i386):

Un oggetto float occupa: sizeof(float) = 4 byte
Numero di cifre decimali significative float: FLT_DIG = 6
Minimo e massimo esponente float: FLT_MIN_10_EXP = -37, FLT_MAX_10_EXP = 38

Un oggetto double occupa: sizeof(double) = 8 byte
Numero di cifre decimali significative double: DBL_DIG = 15
Minimo e massimo esponente double: DBL_MIN_10_EXP = -307, DBL_MAX_10_EXP = 308

Un oggetto long double occupa: sizeof(long double) = 12 byte
Numero di cifre decimali significative long double: LDBL_DIG = 18
Minimo e massimo esponente long double: LDBL_MIN_10_EXP = -4931, LDBL_MAX_10_EXP = 4932

*/