mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-02-17 16:10:24 +08:00
Fixed: Fortran_DOUBLE was being set to C_LONG_DOUBLE when C_LONG_DOUBLE is not available.
This commit is contained in:
parent
c28c6873fe
commit
9fbebbe6d7
@ -342,7 +342,7 @@ int main(void)
|
||||
if (RealKinds[i] > 0) {
|
||||
sprintf(chrA, "Fortran_REAL_%s", Real_C_TYPES[i]);
|
||||
sprintf(chrB, "real_%s_f", Real_C_TYPES[i]);
|
||||
writeToFiles("float",chrA, chrB, RealKinds[i], RealKinds_SizeOf[i]);
|
||||
writeToFiles("float",chrA, chrB, RealKinds[i], RealKinds[i]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -356,13 +356,15 @@ int main(void)
|
||||
/* Error: couldn't find a size for hid_t */
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* real_f */
|
||||
if(H5_FORTRAN_NATIVE_REAL_SIZEOF == sizeof(long double))
|
||||
#if H5_FORTRAN_HAVE_C_LONG_DOUBLE!=0
|
||||
if(H5_FORTRAN_NATIVE_REAL_SIZEOF == sizeof(long double)) {
|
||||
writeToFilesChr("float","Fortran_REAL", "real_f", H5_FORTRAN_NATIVE_REAL_KIND, "C_LONG_DOUBLE");
|
||||
else if(H5_FORTRAN_NATIVE_REAL_SIZEOF == sizeof(double))
|
||||
} else
|
||||
#endif
|
||||
if(H5_FORTRAN_NATIVE_REAL_SIZEOF == sizeof(double)) {
|
||||
writeToFilesChr("float","Fortran_REAL", "real_f", H5_FORTRAN_NATIVE_REAL_KIND, "C_DOUBLE");
|
||||
else if(H5_FORTRAN_NATIVE_REAL_SIZEOF == sizeof(float))
|
||||
} else if(H5_FORTRAN_NATIVE_REAL_SIZEOF == sizeof(float))
|
||||
writeToFilesChr("float","Fortran_REAL", "real_f", H5_FORTRAN_NATIVE_REAL_KIND, "C_FLOAT");
|
||||
else {
|
||||
/* No exact match, choose the next highest */
|
||||
@ -380,20 +382,23 @@ int main(void)
|
||||
}
|
||||
|
||||
/* double_f */
|
||||
if(H5_FORTRAN_NATIVE_DOUBLE_SIZEOF == sizeof(long double))
|
||||
#if H5_FORTRAN_HAVE_C_LONG_DOUBLE!=0
|
||||
if(H5_FORTRAN_NATIVE_DOUBLE_SIZEOF == sizeof(long double)){
|
||||
writeToFilesChr("float","Fortran_DOUBLE", "double_f", H5_FORTRAN_NATIVE_DOUBLE_KIND, "C_LONG_DOUBLE");
|
||||
else if(H5_FORTRAN_NATIVE_DOUBLE_SIZEOF == sizeof(double))
|
||||
} else
|
||||
#endif
|
||||
if(H5_FORTRAN_NATIVE_DOUBLE_SIZEOF == sizeof(double)) {
|
||||
writeToFilesChr("float","Fortran_DOUBLE", "double_f", H5_FORTRAN_NATIVE_DOUBLE_KIND, "C_DOUBLE");
|
||||
else if(H5_FORTRAN_NATIVE_DOUBLE_SIZEOF == sizeof(float))
|
||||
} else if(H5_FORTRAN_NATIVE_DOUBLE_SIZEOF == sizeof(float))
|
||||
writeToFilesChr("float","Fortran_DOUBLE", "double_f", H5_FORTRAN_NATIVE_DOUBLE_KIND, "C_FLOAT");
|
||||
#ifdef H5_HAVE_FLOAT128
|
||||
/* Don't select a higher precision than Fortran can support */
|
||||
else if(sizeof(__float128) == H5_FORTRAN_NATIVE_DOUBLE_SIZEOF && H5_PAC_FC_MAX_REAL_PRECISION > 28) {
|
||||
writeToFilesChr("float","Fortran_DOUBLE", "double_f", H5_FORTRAN_NATIVE_DOUBLE_KIND, "C_FLOAT128");
|
||||
writeToFilesChr("float","Fortran_DOUBLE", "double_f", H5_FORTRAN_NATIVE_DOUBLE_KIND, "Fortran_REAL_C_FLOAT128");
|
||||
}
|
||||
#else
|
||||
else if(sizeof(long double) == H5_FORTRAN_NATIVE_DOUBLE_SIZEOF && H5_PAC_FC_MAX_REAL_PRECISION > 28) {
|
||||
writeToFilesChr("float","Fortran_DOUBLE", "double_f", H5_FORTRAN_NATIVE_DOUBLE_KIND, "C_FLOAT128");
|
||||
writeToFilesChr("float","Fortran_DOUBLE", "double_f", H5_FORTRAN_NATIVE_DOUBLE_KIND, "Fortran_REAL_C_FLOAT128");
|
||||
}
|
||||
#endif
|
||||
else {
|
||||
|
@ -66,6 +66,7 @@ SUBROUTINE test_array_compound_atomic(total_error)
|
||||
CHARACTER(LEN=10), PARAMETER :: FILENAME = "tarray1.h5"
|
||||
|
||||
TYPE s1_t
|
||||
SEQUENCE
|
||||
INTEGER :: i
|
||||
REAL :: f
|
||||
END TYPE s1_t
|
||||
@ -298,7 +299,8 @@ END SUBROUTINE test_array_compound_atomic
|
||||
INTEGER, PARAMETER :: SPACE1_DIM1 = 4
|
||||
CHARACTER(LEN=10), PARAMETER :: FILENAME = "tarray2.h5"
|
||||
|
||||
TYPE st_t_struct ! Typedef for compound datatype
|
||||
TYPE st_t_struct ! Typedef for compound datatype
|
||||
SEQUENCE
|
||||
INTEGER :: i
|
||||
REAL, DIMENSION(1:ARRAY2_DIM1) :: f
|
||||
CHARACTER(LEN=2), DIMENSION(1:ARRAY2_DIM1) :: c
|
||||
|
@ -40,7 +40,8 @@ MODULE TH5_MISC
|
||||
INTEGER, PARAMETER :: dp = SELECTED_REAL_KIND(10) ! This should map to REAL*8 on most modern processors
|
||||
|
||||
! generic compound datatype
|
||||
TYPE, BIND(C) :: comp_datatype
|
||||
TYPE :: comp_datatype
|
||||
SEQUENCE
|
||||
REAL :: a
|
||||
INTEGER :: x
|
||||
DOUBLE PRECISION :: y
|
||||
|
Loading…
Reference in New Issue
Block a user