/* Floating Point and Integer Limits */ #include #include #include #include main(){ double x,xx, xm; long double z,zz, zm; int n,m; unsigned int u; /* first printing the limits from the limits.h I copied and pasted from http://www.delorie.com/gnu/docs/glibc/libc_682.html */ printf("The integer limits are \n"); printf("INT_MIN,INT_MAX,UINT_MAX,LONG_MIN,LONG_MAX,ULONG_MAX\n"); printf("%lu\n%lu\n%lu\n%lu\n%lu\n%lu\n", INT_MIN, INT_MAX, UINT_MAX, LONG_MIN, LONG_MAX, ULONG_MAX ); /* first printing the limits from the float.h I copied and pasted from http://www.delorie.com/gnu/docs/glibc/libc_682.html */ printf("The float and double limits are \n"); printf("FLT_ROUNDS,FLT_RADIX,FLT_MANT_DIG,FLT_RADIX,DBL_MANT_DIG,FLT_DIG,DBL_DIG,FLT_MIN_EXP,DBL_MIN_EXP\n"); printf("%i\n%i\n%i\n%i\n%i\n%i\n%i\n%i\n%i\n%i\n%i\n%i\n%i\n%i\n%i\n%i\n%i\n%i\n%i\n", FLT_ROUNDS, FLT_RADIX, FLT_MANT_DIG, FLT_RADIX, DBL_MANT_DIG, FLT_DIG, DBL_DIG, FLT_MIN_EXP, DBL_MIN_EXP, FLT_MIN_10_EXP, DBL_MIN_10_EXP, FLT_MAX_EXP, DBL_MAX_EXP, FLT_MAX_10_EXP, DBL_MAX_10_EXP); printf("FLT_MAX,DBL_MAX,FLT_MIN,DBL_MIN,FLT_EPSILON,DBL_EPSILON\n"); printf("%g\n%g\n%g\n%g\n%g\n%g\n\n", FLT_MAX, DBL_MAX, FLT_MIN, DBL_MIN, FLT_EPSILON, DBL_EPSILON ); /* Part 2 x too big */ x=1; xm=11; xm=xm/10; xx=x*xm; while(xx>x){x*=xm;xx*=xm;}; printf("Part 2: As a double get too big\n"); printf("x=%g and xx=%g\n",x,xx); z=1; zm=11; zm=zm/10; zz=z*xm; while(zz>z){z*=zm;zz*=zm;}; printf("Part 2: As a long get too big\n"); printf("x=%lg and xx=%lg\n\n",z,zz); /* Part 3 x too small */ x=1; xm=9; xm=xm/10; xx=x*xm; while(xx>x){x*=xm;xx*=xm;}; printf("Part 3: As a double get too small\n"); printf("x=%g and xx=%g\n",x,xx); z=1; zm=9; zm=zm/10; zz=z*xm; while(zz>z){z*=zm;zz*=zm;}; printf("Part 3: As a long gets too small\n"); printf("x=%lg and xx=%lg\n\n",z,zz); /* Part 4 n too big */ n=1; m=n+1; while(m>n){n++;m++;}; printf("Part 4: As an int get too big\n"); printf("n=%i and m=%i\n\n",n,m); /* Part 5: 1 + x = 1 */ x=1; xm=9; xm=xm/10; while(1+x>1){x*=xm;}; printf("Part 5 Double 1 + x = 1 when x = %g\n",x); z=1; zm=9; zm=zm/10; while(1+z>1){z*=zm;}; printf("Part 5 long: 1 + z = 1 when z = %lg\n\n",z); /* Part 6 */ x=1; xm=11; xm=xm/10; while(1+x>x){x*=xm;}; printf("Part 6 : Float: 1 + x = x when x = %g\n",x); z=1; zm=11; zm = zm/10; while(1+z>z){z*=zm;}; printf("Part 6 : Double: 1 + z = z when z = %lg\n\n",z); };