#include #include //#include static float onef = 1.000000000000000000000e+00; static double one = 1.000000000000000000000e+00; static long double onel = 1.00000000000000000000000000000e+00; int main(void) { printf("Size of float = %ld\n",sizeof(float)); printf("Size of double = %ld\n",sizeof(double)); printf("Size of long double = %ld\n",sizeof(long double)); printf("one = %g\n",one); float fx=onef*0.1; double dx=one*0.1; long double ldx=onel*0.1; while(one+dx!=one) dx*=0.1; printf("DBL_EPSILON = %g\n",DBL_EPSILON); printf("DX = %g\n",dx); while(onef+fx!=onef) fx*=0.1; printf("FLT_EPSILON = %g\n",FLT_EPSILON); printf("FX = %g\n",fx); while(onel+ldx!=onel) ldx*=0.1; printf("LDBL_EPSILON = %g\n",LDBL_EPSILON); printf("LDX = %g\n",ldx); return 0; } // Killy $ gcc -O2 -o dbl_epsilon dbl_epsilon.c -Wl,-s 23:05:10| $ ./dbl_epsilon Size of float = 4 Size of double = 8 Size of long double = 12 one = 1 DBL_EPSILON = 2.22045e-16 DX = 1e-16 FLT_EPSILON = 1.19209e-07 FX = 1e-08 LDBL_EPSILON = -0 LDX = -2.33511e-15 $ gcc -O0 -o dbl_epsilon dbl_epsilon.c -Wl,-s 23:08:12| $ ./dbl_epsilon Size of float = 4 Size of double = 8 Size of long double = 12 one = 1 DBL_EPSILON = 2.22045e-16 DX = 1e-20 FLT_EPSILON = 1.19209e-07 FX = 1e-20 LDBL_EPSILON = -0 LDX = -2.33511e-15