summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDana Robinson <derobins@hdfgroup.org>2020-01-24 03:12:24 (GMT)
committerDana Robinson <derobins@hdfgroup.org>2020-01-24 03:12:24 (GMT)
commit9475ee5d59e9ac916271a64c5372dfc28f709417 (patch)
treebb85224bcdcb2826bfe98b7b80b756613b65788a
parenta85e4a75b27b101b5ad0e5b70bc6fe66c0375727 (diff)
downloadhdf5-9475ee5d59e9ac916271a64c5372dfc28f709417.zip
hdf5-9475ee5d59e9ac916271a64c5372dfc28f709417.tar.gz
hdf5-9475ee5d59e9ac916271a64c5372dfc28f709417.tar.bz2
Optimized the floating point comparisons a little bit.
-rw-r--r--tools/lib/h5diff_array.c48
1 files changed, 24 insertions, 24 deletions
diff --git a/tools/lib/h5diff_array.c b/tools/lib/h5diff_array.c
index f6dff64..3127870 100644
--- a/tools/lib/h5diff_array.c
+++ b/tools/lib/h5diff_array.c
@@ -4559,16 +4559,16 @@ static hbool_t equal_double(double value, double expected, diff_opt_t *opts) {
return FALSE;
}
- /* Are the bits the same? */
- if (!HDmemcmp(&value, &expected, sizeof(double)))
- return TRUE;
-
- /* Check for equality within appropriate floating-point
- * tolerance, if requested.
- */
- if (opts->use_system_epsilon)
+ if (opts->use_system_epsilon) {
+ /* Check equality within some epsilon */
if (H5_DBL_ABS_EQUAL(value, expected))
return TRUE;
+ }
+ else {
+ /* Check bits */
+ if (!HDmemcmp(&value, &expected, sizeof(double)))
+ return TRUE;
+ }
return FALSE;
}
@@ -4607,16 +4607,16 @@ hbool_t equal_ldouble(long double value, long double expected, diff_opt_t *opts)
return FALSE;
}
- /* Are the bits the same? */
- if (!HDmemcmp(&value, &expected, sizeof(long double)))
- return TRUE;
-
- /* Check for equality within appropriate floating-point
- * tolerance, if requested.
- */
- if (opts->use_system_epsilon)
+ if (opts->use_system_epsilon) {
+ /* Check equality within some epsilon */
if (H5_LDBL_ABS_EQUAL(value, expected))
return TRUE;
+ }
+ else {
+ /* Check bits */
+ if (!HDmemcmp(&value, &expected, sizeof(long double)))
+ return TRUE;
+ }
return FALSE;
}
@@ -4653,16 +4653,16 @@ static hbool_t equal_float(float value, float expected, diff_opt_t *opts) {
return FALSE;
}
- /* Are the bits the same? */
- if (!HDmemcmp(&value, &expected, sizeof(float)))
- return TRUE;
-
- /* Check for equality within appropriate floating-point
- * tolerance, if requested.
- */
- if (opts->use_system_epsilon)
+ if (opts->use_system_epsilon) {
+ /* Check equality within some epsilon */
if (H5_FLT_ABS_EQUAL(value, expected))
return TRUE;
+ }
+ else {
+ /* Check bits */
+ if (!HDmemcmp(&value, &expected, sizeof(float)))
+ return TRUE;
+ }
return FALSE;
}