summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaymond Lu <songyulu@hdfgroup.org>2007-02-26 16:55:45 (GMT)
committerRaymond Lu <songyulu@hdfgroup.org>2007-02-26 16:55:45 (GMT)
commit3ea2c632d50870966320bc13d716959745d1e7dd (patch)
tree08df6b152075c21887e0dc5abb34b88ad4719ec7
parentcd8dfb4650f45adf6d9a7205263378098f72d1c2 (diff)
downloadhdf5-3ea2c632d50870966320bc13d716959745d1e7dd.zip
hdf5-3ea2c632d50870966320bc13d716959745d1e7dd.tar.gz
hdf5-3ea2c632d50870966320bc13d716959745d1e7dd.tar.bz2
[svn-r13388] Added a relative comparison between floating-point values to avoid compiler's
warning of comparing values with "==" or "!=".
-rw-r--r--test/dsets.c6
-rw-r--r--test/h5test.c1
-rw-r--r--test/h5test.h12
3 files changed, 12 insertions, 7 deletions
diff --git a/test/dsets.c b/test/dsets.c
index 81fcf11..196fefe 100644
--- a/test/dsets.c
+++ b/test/dsets.c
@@ -5160,7 +5160,7 @@ test_set_local(hid_t fapl)
h5_fixname(FILENAME[5], fapl, filename, sizeof filename);
/* Initialize the integer & floating-point dataset */
- n=0.0;
+ n=1.0;
for (i = 0; i < DSET_DIM1; i++)
for (j = 0; j < DSET_DIM2; j++) {
points[i][j] = (int)n++;
@@ -5356,7 +5356,9 @@ test_set_local(hid_t fapl)
/* Check that the values read are the modified version of what was written */
for (i=0; i<dims[0]; i++) {
for (j=0; j<dims[1]; j++) {
- if (points_dbl[i][j] != check_dbl[i][j]) {
+ /* If the difference between two values is greater than 0.001%, they're
+ * considered not equal. */
+ if(!DBL_REL_EQUAL(points_dbl[i][j],check_dbl[i][j],0.00001)) {
H5_FAILED();
printf(" Line %d: Read different values than written.\n",__LINE__);
printf(" At index %lu,%lu\n", (unsigned long)(i), (unsigned long)(j));
diff --git a/test/h5test.c b/test/h5test.c
index 005b215..965c065 100644
--- a/test/h5test.c
+++ b/test/h5test.c
@@ -693,6 +693,7 @@ h5_show_hostname(void)
WSACleanup();
#endif
}
+
#ifdef H5_HAVE_PARALLEL
/*
diff --git a/test/h5test.h b/test/h5test.h
index 6c6993b..41d476c 100644
--- a/test/h5test.h
+++ b/test/h5test.h
@@ -123,15 +123,18 @@ extern MPI_Info h5_io_info_g; /* MPI INFO object for IO */
* 1. XXX_ABS_EQUAL - check if the difference is smaller than the
* Epsilon value. The Epsilon values, FLT_EPSILON, DBL_EPSILON,
* and LDBL_EPSILON, are defined by compiler in float.h.
- * 2. To be defined later.
+ * 2. XXX_REL_EQUAL - check if the relative difference is smaller than a
+ * predefined value M. See if two values are relatively equal.
+ * It's the test's responsibility not to pass in the value 0, which
+ * may cause the equation to fail.
*/
#define FLT_ABS_EQUAL(X,Y) (fabsf(X-Y)<FLT_EPSILON)
#define DBL_ABS_EQUAL(X,Y) (fabs(X-Y)<DBL_EPSILON)
#define LDBL_ABS_EQUAL(X,Y) (fabsl(X-Y)<LDBL_EPSILON)
-/*#define FP_ABS_UNEQUAL(X,Y,T) ((T==1 && fabsf(X-Y)>FLT_EPSILON) || \
- (T==2 && fabs(X-Y)>DBL_EPSILON) || \
- (T==3 && fabsl(X-Y)>LDBL_EPSILON))*/
+#define FLT_REL_EQUAL(X,Y,M) (fabsf((Y-X)/X<M)
+#define DBL_REL_EQUAL(X,Y,M) (fabs((Y-X)/X)<M)
+#define LDBL_REL_EQUAL(X,Y,M) (fabsl((Y-X)/X)<M)
#ifdef __cplusplus
extern "C" {
@@ -174,7 +177,6 @@ H5TEST_DLL const void *GetTestParameters(void);
H5TEST_DLL int TestErrPrintf(const char *format, ...);
H5TEST_DLL void SetTest(const char *testname, int action);
-
#ifdef H5_HAVE_FILTER_SZIP
H5TEST_DLL int h5_szip_can_encode(void);
#endif /* H5_HAVE_FILTER_SZIP */