Hi,

 

Does anyone know how I could define a floating point data type to
represent 

A 32-bit float in IBM system/360 format? I would like to be able to
create an 

HDF file with the actual data being contained in an external SEG-Y file
(file 

format used for storing seismic data). This would hopefully allow me to
have a 

nice interface to existing SEG-Y files. Unfortunately the floating-point
data 

Contained in this type of file is usually in IBM-32 bit format.

 

I have had a look at the HDF documentation and my first attempt looked
like this:

 

          hid_t IBM_type;

         IBM_type = H5Tcopy(H5T_IEEE_F32BE);       

         H5Tset_precision(IBM_type, 32);

         H5Tset_fields(IBM_type, 31, 24, 7, 0, 24);

         H5Tset_ebias(IBM_type, 64);

         H5Tset_norm(IBM_type, H5T_NORM_NONE);

         H5Tset_order(IBM_type, H5T_ORDER_BE);

 

This sets the mantissa, exponent bit sizes/positions etc.

Of course, this doesn't work correctly because the IBM floating point 

format uses base 16 rather than base 2 for the exponent power ie.

 

Float = sign * mantissa * 16^exponent rather than the usual

 

Float = sign * mantissa * 2^exponent 

 

Anybody have an idea of how this could be achieved using HDF?

 

Thanks

 

Paul

 

 

 

_______________________________________________
Hdf-forum is for HDF software users discussion.
[email protected]
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org

Reply via email to