epsilon.c running first double 1.0e-15 greater than double epsilon double cc = aa + bb; dd = cc - 1.0 aa=1 bb=1e-15 cc=1 aa=1.000000e+00 bb=1.000000e-15 cc=1.000000e+00 aa=1.0000000000000000e+00 bb=1.0000000000000001e-15 cc=1.0000000000000011e+00 dd=1.11022e-15 dd=1.110223e-15 dd=1.110223024625157e-15 next float 1.0e-7 greater than float epsilon float c = a + b; d = c - 1.0 a=1 b=1e-07 c=1 a=1.000000e+00 b=1.000000e-07 c=1.000000e+00 a=1.000000000000000e+00 b=1.000000011686097e-07 c=1.000000119209290e+00 d=1.19209e-07 d=1.192093e-07 d=1.192092895507812e-07 then double 1.0e-16 smaller than double epsilon double cc = aa + bb; dd = cc - 1.0 aa=1 bb=1e-16 cc=1 aa=1.000000e+00 bb=1.000000e-16 cc=1.000000e+00 aa=1.0000000000000000e+00 bb=9.9999999999999998e-17 cc=1.0000000000000000e+00 dd=0 dd=0.000000e+00 dd=0.000000000000000e+00 note dd = 0.0 then float 1.0e-8 smaller than float epsilon float c = a + b; d = c - 1.0 a=1 b=1e-08 c=1 a=1.000000e+00 b=1.000000e-08 c=1.000000e+00 a=1.000000000000000e+00 b=9.999999939225290e-09 c=1.000000000000000e+00 d=0 d=0.000000e+00 d=0.000000000000000e+00 note d = 0.0 epsilon.c finished