NOTE: The netcdf-hdf
mailing list is no longer active. The list archives are made available for historical reasons.
>>>>> "Ed" == Ed Hartnett <ed@xxxxxxxxxxxxxxxx> writes: Ed> float float_data_out2[DIM1_LEN] = {(float)INT_MIN - 1.0, (float)INT_MIN - 1.0, (float)INT_MAX + 129.0}; Hi Ed, Looking at your output, you're on a machine where sizeof(float)==sizeof(int)==4. So the initialization of float_data_out2[] is not doing what you expect. The problem is that the significand of a float is less than 32 bits (because the sign and exponent take up some of the other bits). So the +1.0 and -1.0 have too small a magnitude to make any difference in the arithmetic. The loss of significant digits can be seen in your output: INT_MIN-1.0 should be -2147483649, not -2147483648. Ed> So why doesn't it generate an overflow? Because by time HDF5 gets the data there is no overflow for your first two array values. Using `double' should fix the problem because it can represent all 32 bits of an `int'. -- Robb Matzke L-159 | Ph: 812-967-6325 | I/O, I/O, it's off to disk we go, Lawrence Livermore | Fax: 812-967-6326 | A gigabyte to read or write, National Laboratory | Hrs: 3am-11am PDT | I/O, I/O.
netcdf-hdf
archives: