diff options
Diffstat (limited to 'fortran/src/H5_f.c')
-rw-r--r-- | fortran/src/H5_f.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/fortran/src/H5_f.c b/fortran/src/H5_f.c index 745dfe4..a993451 100644 --- a/fortran/src/H5_f.c +++ b/fortran/src/H5_f.c @@ -59,14 +59,24 @@ nh5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertype if ((types[0] = (hid_t_f)H5Tcopy(H5T_NATIVE_LLONG)) < 0) return ret_value; } /*end else */ - /* Accomodate Crays with this check */ - if(sizeof(real_f)==sizeof(double)) { + /* Find appropriate size to store Fortran REAL */ + if(sizeof(real_f)==sizeof(float)) { + if ((types[1] = (hid_t_f)H5Tcopy(H5T_NATIVE_FLOAT)) < 0) return ret_value; + } /* end if */ + else if(sizeof(real_f)==sizeof(double)){ if ((types[1] = (hid_t_f)H5Tcopy(H5T_NATIVE_DOUBLE)) < 0) return ret_value; } /* end if */ - else { - if ((types[1] = (hid_t_f)H5Tcopy(H5T_NATIVE_FLOAT)) < 0) return ret_value; + else if (sizeof(real_f) == sizeof(long double)) { + if ((types[1] = (hid_t_f)H5Tcopy(H5T_NATIVE_LDOUBLE)) < 0) return ret_value; } /* end else */ - if ((types[2] = (hid_t_f)H5Tcopy(H5T_NATIVE_DOUBLE)) < 0) return ret_value; + + + if(sizeof(double_f)==sizeof(double)) { + if ((types[2] = (hid_t_f)H5Tcopy(H5T_NATIVE_DOUBLE)) < 0) return ret_value; + }/*end if */ + else if(sizeof(double_f)==sizeof(long double)) { + if ((types[2] = (hid_t_f)H5Tcopy(H5T_NATIVE_LDOUBLE)) < 0) return ret_value; + }/*end else */ /* if ((types[3] = H5Tcopy(H5T_NATIVE_UINT8)) < 0) return ret_value; |