summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/H5T.c6
-rw-r--r--src/H5Tconv.c8
-rw-r--r--src/H5Tpkg.h12
-rw-r--r--src/H5config.h.in4
4 files changed, 22 insertions, 8 deletions
diff --git a/src/H5T.c b/src/H5T.c
index 4b710d3..1e30f77 100644
--- a/src/H5T.c
+++ b/src/H5T.c
@@ -1198,10 +1198,12 @@ H5T_init_interface(void)
#endif /* H5T_CONV_INTERNAL_INTEGER_LDOUBLE */
/* From unsigned long to floats */
-#if H5T_CONV_INTERNAL_ULONG_FP
+#if H5T_CONV_INTERNAL_ULONG_FLT
status |= H5T_register(H5T_PERS_HARD, "ulong_flt", native_ulong, native_float, H5T_conv_ulong_float, H5AC_dxpl_id, FALSE);
+#endif /* H5T_CONV_INTERNAL_ULONG_FLT */
+#if H5T_CONV_INTERNAL_ULONG_DBL
status |= H5T_register(H5T_PERS_HARD, "ulong_dbl", native_ulong, native_double, H5T_conv_ulong_double, H5AC_dxpl_id, FALSE);
-#endif /* H5T_CONV_INTERNAL_ULONG_FP */
+#endif /* H5T_CONV_INTERNAL_ULONG_DBL */
#if H5T_CONV_INTERNAL_ULONG_LDOUBLE
status |= H5T_register(H5T_PERS_HARD, "ulong_ldbl", native_ulong, native_ldouble, H5T_conv_ulong_ldouble, H5AC_dxpl_id, FALSE);
#endif /* H5T_CONV_INTERNAL_ULONG_LDOUBLE */
diff --git a/src/H5Tconv.c b/src/H5Tconv.c
index c621bf4..08e7fa1 100644
--- a/src/H5Tconv.c
+++ b/src/H5Tconv.c
@@ -8417,7 +8417,7 @@ done:
*
*-------------------------------------------------------------------------
*/
-#if H5T_CONV_INTERNAL_ULONG_FP
+#if H5T_CONV_INTERNAL_ULONG_FLT
herr_t
H5T_conv_ulong_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t buf_stride,
@@ -8433,7 +8433,7 @@ H5T_conv_ulong_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
done:
FUNC_LEAVE_NOAPI(ret_value)
}
-#endif /* H5T_CONV_INTERNAL_ULONG_FP */
+#endif /* H5T_CONV_INTERNAL_ULONG_FLT */
/*-------------------------------------------------------------------------
@@ -8451,7 +8451,7 @@ done:
*
*-------------------------------------------------------------------------
*/
-#if H5T_CONV_INTERNAL_ULONG_FP
+#if H5T_CONV_INTERNAL_ULONG_DBL
herr_t
H5T_conv_ulong_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t buf_stride,
@@ -8467,7 +8467,7 @@ H5T_conv_ulong_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
done:
FUNC_LEAVE_NOAPI(ret_value)
}
-#endif /* H5T_CONV_INTERNAL_ULONG_FP */
+#endif /* H5T_CONV_INTERNAL_ULONG_DBL */
/*-------------------------------------------------------------------------
diff --git a/src/H5Tpkg.h b/src/H5Tpkg.h
index 7ef4b63..18bf7cf 100644
--- a/src/H5Tpkg.h
+++ b/src/H5Tpkg.h
@@ -133,10 +133,18 @@
#define H5T_CONV_INTERNAL_INTEGER_LDOUBLE 1
#endif
-/* Define an internal macro for converting unsigned (long) long to floating numbers.
+/* Define an internal macro for converting unsigned long to float.
+ * Pathscale compiler on Sandia's Linux machine has some problem.
+ * 64-bit Solaris does different rounding. */
+#if (H5_WANT_DATA_ACCURACY && H5_ULONG_TO_FLOAT_ACCURATE && H5_ULONG_TO_FP_BOTTOM_BIT_ACCURATE) || \
+ (!H5_WANT_DATA_ACCURACY)
+#define H5T_CONV_INTERNAL_ULONG_FLT 1
+#endif
+
+/* Define an internal macro for converting unsigned (long) long to double.
* 64-bit Solaris does different rounding. */
#if (H5_WANT_DATA_ACCURACY && H5_ULONG_TO_FP_BOTTOM_BIT_ACCURATE) || (!H5_WANT_DATA_ACCURACY)
-#define H5T_CONV_INTERNAL_ULONG_FP 1
+#define H5T_CONV_INTERNAL_ULONG_DBL 1
#endif
/* Define an internal macro for converting unsigned long to long double. SGI compilers give some
diff --git a/src/H5config.h.in b/src/H5config.h.in
index 8ac19fc..ca73c6a 100644
--- a/src/H5config.h.in
+++ b/src/H5config.h.in
@@ -614,6 +614,10 @@
correct precision. */
#undef ULLONG_TO_LDOUBLE_PRECISION
+/* Define if your system accurately converting unsigned long to float values.
+ */
+#undef ULONG_TO_FLOAT_ACCURATE
+
/* Define if your system can accurately convert unsigned (long) long values to
floating-point values. */
#undef ULONG_TO_FP_BOTTOM_BIT_ACCURATE