mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-01-24 15:25:00 +08:00
[svn-r13238] A trial fix for the comparison of equality between floating-point values in hyperslab.c. A few
macros are defined in h5test.h to check if the difference between two values is smaller than Epsilon.
This commit is contained in:
parent
08ea58bac2
commit
a82e85c2d4
@ -117,6 +117,21 @@ extern MPI_Info h5_io_info_g; /* MPI INFO object for IO */
|
||||
/* set alarms to N seconds if N > 0, else use default alarm_seconds. */
|
||||
#define ALARM_SET(N) HDalarm((N)>0 ? N : alarm_seconds)
|
||||
|
||||
/*
|
||||
* The methods to compare the equality of floating-point values:
|
||||
* 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.
|
||||
*/
|
||||
#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))*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
@ -663,7 +663,11 @@ test_multifill(size_t nx)
|
||||
for (i = 0; i < nx; i++) {
|
||||
if (dst[i].left != 3333333) {
|
||||
sprintf(s, "bad dst[%lu].left", (unsigned long)i);
|
||||
} else if (dst[i].mid != fill.mid) {
|
||||
} else if (!DBL_ABS_EQUAL(dst[i].mid, fill.mid)) {
|
||||
/* Check if two DOUBLE values are equal. If their difference
|
||||
* is smaller than the EPSILON value for double, they are
|
||||
* considered equal. See the definition in h5test.h.
|
||||
*/
|
||||
sprintf(s, "bad dst[%lu].mid", (unsigned long)i);
|
||||
} else if (dst[i].right != 4444444) {
|
||||
sprintf(s, "bad dst[%lu].right", (unsigned long)i);
|
||||
|
Loading…
Reference in New Issue
Block a user