diff options
Diffstat (limited to 'tools/lib/h5diff_array.c')
-rw-r--r-- | tools/lib/h5diff_array.c | 689 |
1 files changed, 430 insertions, 259 deletions
diff --git a/tools/lib/h5diff_array.c b/tools/lib/h5diff_array.c index 57a5599..e5b8f79 100644 --- a/tools/lib/h5diff_array.c +++ b/tools/lib/h5diff_array.c @@ -36,7 +36,6 @@ #endif #define I_FORMAT "%-15d %-15d %-15d\n" -#define C_FORMAT "%-16c %-17c\n" #define S_FORMAT "%-16s %-17s\n" #define UI_FORMAT "%-15u %-15u %-15u\n" #define LI_FORMAT "%-15ld %-15ld %-15ld\n" @@ -101,43 +100,44 @@ *------------------------------------------------------------------------- */ -static int not_comparable; +static hbool_t not_comparable; -#define PER(A,B) { per=-1; \ - not_comparable=0; \ - both_zero=0; \ - if (A==0 && B==0) \ - both_zero=1; \ - if (A!=0) \ - per = (double)ABS( ( double)(B-A) / (double)A ); \ +#define PER(A,B) { \ + per = -1; \ + not_comparable = FALSE; \ + both_zero = FALSE; \ + if(FP_ZERO == fpclassify(A) && FP_ZERO == fpclassify(B)) \ + both_zero = TRUE; \ + if(FP_ZERO != fpclassify(A)) \ + per = (double)ABS((double)(B - A) / (double)A); \ else \ - not_comparable=1; \ + not_comparable = TRUE; \ } -#define PER_UNSIGN(TYPE,A,B) { per=-1; \ - not_comparable=0; \ - both_zero=0; \ - if (A==0 && B==0) \ - both_zero=1; \ - if (A!=0) \ - per = ABS((double)((TYPE)(B-A)) / (double)A) ; \ +#define PER_UNSIGN(TYPE,A,B) { \ + per = -1; \ + not_comparable = FALSE; \ + both_zero = FALSE; \ + if(A == 0 && B == 0) \ + both_zero = TRUE; \ + if(A != 0) \ + per = ABS((double)((TYPE)(B - A)) / (double)A) ; \ else \ - not_comparable=1; \ + not_comparable = TRUE; \ } -#define BOTH_ZERO(A,B) { both_zero=0; \ - if (A==0 && B==0) \ - both_zero=1; \ -} +# define PDIFF(a,b) ( (b>a) ? (b-a) : (a-b)) -#define IS_ZERO(A) { is_zero=0; \ - if (A==0) \ - is_zero=1; \ -} +typedef struct mcomp_t +{ + unsigned n; /* number of members */ + hid_t *ids; /* member type id */ + size_t *offsets; + struct mcomp_t **m; /* members */ +}mcomp_t; -# define PDIFF(a,b) ( (b>a) ? (b-a) : (a-b)) /*------------------------------------------------------------------------- * local prototypes @@ -146,7 +146,7 @@ static int not_comparable; static hsize_t diff_region(hid_t obj1_id, hid_t obj2_id,hid_t region1_id, hid_t region2_id, diff_opt_t *options); static hbool_t all_zero(const void *_mem, size_t size); static int ull2float(unsigned long long ull_value, float *f_value); -static hsize_t character_compare(unsigned char *mem1,unsigned char *mem2,hsize_t i,unsigned u,int rank,hsize_t *dims,hsize_t *acc,hsize_t *pos,diff_opt_t *options,const char *obj1,const char *obj2,int *ph); +static hsize_t character_compare(char *mem1,char *mem2,hsize_t i,unsigned u,int rank,hsize_t *dims,hsize_t *acc,hsize_t *pos,diff_opt_t *options,const char *obj1,const char *obj2,int *ph); static hsize_t character_compare_opt(unsigned char *mem1,unsigned char *mem2,hsize_t i,int rank,hsize_t *dims,hsize_t *acc,hsize_t *pos,diff_opt_t *options,const char *obj1,const char *obj2,int *ph); static hbool_t equal_float(float value, float expected, diff_opt_t *options); static hbool_t equal_double(double value, double expected, diff_opt_t *options); @@ -157,6 +157,179 @@ static int print_data(diff_opt_t *options); static void print_pos(int *ph,int pp,hsize_t curr_pos,hsize_t *acc,hsize_t *pos,int rank,hsize_t *dims,const char *obj1,const char *obj2 ); static void print_char_pos(int *ph,int pp,hsize_t curr_pos,unsigned u,hsize_t *acc,hsize_t *pos,int rank,hsize_t *dims,const char *obj1,const char *obj2 ); static void h5diff_print_char(char ch); +static hsize_t diff_datum(void *_mem1, + void *_mem2, + hid_t m_type, + hsize_t i, + int rank, + hsize_t *dims, + hsize_t *acc, + hsize_t *pos, + diff_opt_t *options, + const char *obj1, + const char *obj2, + hid_t container1_id, + hid_t container2_id, /*where the reference came from*/ + int *ph, /*print header */ + mcomp_t *members); /*compound members */ +static hsize_t diff_float(unsigned char *mem1, + unsigned char *mem2, + hsize_t nelmts, + hsize_t hyper_start, + int rank, + hsize_t *dims, + hsize_t *acc, + hsize_t *pos, + diff_opt_t *options, + const char *obj1, + const char *obj2, + int *ph); +static hsize_t diff_double(unsigned char *mem1, + unsigned char *mem2, + hsize_t nelmts, + hsize_t hyper_start, + int rank, + hsize_t *dims, + hsize_t *acc, + hsize_t *pos, + diff_opt_t *options, + const char *obj1, + const char *obj2, + int *ph); +#if H5_SIZEOF_LONG_DOUBLE !=0 +static hsize_t diff_ldouble(unsigned char *mem1, + unsigned char *mem2, + hsize_t nelmts, + hsize_t hyper_start, + int rank, + hsize_t *dims, + hsize_t *acc, + hsize_t *pos, + diff_opt_t *options, + const char *obj1, + const char *obj2, + int *ph); +#endif +static hsize_t diff_schar(unsigned char *mem1, + unsigned char *mem2, + hsize_t nelmts, + hsize_t hyper_start, + int rank, + hsize_t *dims, + hsize_t *acc, + hsize_t *pos, + diff_opt_t *options, + const char *obj1, + const char *obj2, + int *ph); +static hsize_t diff_uchar(unsigned char *mem1, + unsigned char *mem2, + hsize_t nelmts, + hsize_t hyper_start, + int rank, + hsize_t *dims, + hsize_t *acc, + hsize_t *pos, + diff_opt_t *options, + const char *obj1, + const char *obj2, + int *ph); +static hsize_t diff_short(unsigned char *mem1, + unsigned char *mem2, + hsize_t nelmts, + hsize_t hyper_start, + int rank, + hsize_t *dims, + hsize_t *acc, + hsize_t *pos, + diff_opt_t *options, + const char *obj1, + const char *obj2, + int *ph); +static hsize_t diff_ushort(unsigned char *mem1, + unsigned char *mem2, + hsize_t nelmts, + hsize_t hyper_start, + int rank, + hsize_t *dims, + hsize_t *acc, + hsize_t *pos, + diff_opt_t *options, + const char *obj1, + const char *obj2, + int *ph); +static hsize_t diff_int(unsigned char *mem1, + unsigned char *mem2, + hsize_t nelmts, + hsize_t hyper_start, + int rank, + hsize_t *dims, + hsize_t *acc, + hsize_t *pos, + diff_opt_t *options, + const char *obj1, + const char *obj2, + int *ph); +static hsize_t diff_uint(unsigned char *mem1, + unsigned char *mem2, + hsize_t nelmts, + hsize_t hyper_start, + int rank, + hsize_t *dims, + hsize_t *acc, + hsize_t *pos, + diff_opt_t *options, + const char *obj1, + const char *obj2, + int *ph); +static hsize_t diff_long(unsigned char *mem1, + unsigned char *mem2, + hsize_t nelmts, + hsize_t hyper_start, + int rank, + hsize_t *dims, + hsize_t *acc, + hsize_t *pos, + diff_opt_t *options, + const char *obj1, + const char *obj2, + int *ph); +static hsize_t diff_ulong(unsigned char *mem1, + unsigned char *mem2, + hsize_t nelmts, + hsize_t hyper_start, + int rank, + hsize_t *dims, + hsize_t *acc, + hsize_t *pos, + diff_opt_t *options, + const char *obj1, + const char *obj2, + int *ph); +static hsize_t diff_llong(unsigned char *mem1, + unsigned char *mem2, + hsize_t nelmts, + hsize_t hyper_start, + int rank, + hsize_t *dims, + hsize_t *acc, + hsize_t *pos, + diff_opt_t *options, + const char *obj1, + const char *obj2, + int *ph); +static hsize_t diff_ullong(unsigned char *mem1, + unsigned char *mem2, + hsize_t nelmts, + hsize_t hyper_start, + int rank, + hsize_t *dims, + hsize_t *acc, + hsize_t *pos, + diff_opt_t *options, + const char *obj1, + const char *obj2, + int *ph); /*------------------------------------------------------------------------- @@ -180,7 +353,7 @@ typedef enum dtype_t } dtype_t; #endif -static int my_isnan(dtype_t type, void *val); +static hbool_t my_isnan(dtype_t type, void *val); /*------------------------------------------------------------------------- * XCAO, 11/10/2010 @@ -259,6 +432,9 @@ hsize_t diff_array( void *_mem1, switch (type_class) { + case H5T_NO_CLASS: + case H5T_TIME: + case H5T_NCLASSES: default: HDassert(0); break; @@ -385,21 +561,21 @@ hsize_t diff_array( void *_mem1, * Dereference the object and compare the type (basic object type). *------------------------------------------------------------------------- */ -hsize_t diff_datum(void *_mem1, - void *_mem2, - hid_t m_type, - hsize_t i, - int rank, - hsize_t *dims, - hsize_t *acc, - hsize_t *pos, - diff_opt_t *options, - const char *obj1, - const char *obj2, - hid_t container1_id, - hid_t container2_id, /*where the reference came from*/ - int *ph, /*print header */ - mcomp_t *members) /*compound members */ +static hsize_t diff_datum(void *_mem1, + void *_mem2, + hid_t m_type, + hsize_t i, + int rank, + hsize_t *dims, + hsize_t *acc, + hsize_t *pos, + diff_opt_t *options, + const char *obj1, + const char *obj2, + hid_t container1_id, + hid_t container2_id, /*where the reference came from*/ + int *ph, /*print header */ + mcomp_t *members) /*compound members */ { unsigned char *mem1 = (unsigned char*)_mem1; unsigned char *mem2 = (unsigned char*)_mem2; @@ -409,19 +585,19 @@ hsize_t diff_datum(void *_mem1, H5T_sign_t type_sign; H5T_class_t type_class; size_t offset; - int nmembs; - int j; + unsigned nmembs; + unsigned j; hsize_t nelmts; size_t size=0; - int iszero1; - int iszero2; + hbool_t iszero1; + hbool_t iszero2; hid_t obj1_id; hid_t obj2_id; hsize_t nfound=0; /* differences found */ int ret=0; /* check return error */ float f1, f2; double per; - int both_zero; + hbool_t both_zero; type_size = H5Tget_size( m_type ); type_class = H5Tget_class(m_type); @@ -439,10 +615,10 @@ hsize_t diff_datum(void *_mem1, switch (H5Tget_class(m_type)) { - default: - HDassert(0); - break; + case H5T_NO_CLASS: case H5T_TIME: + case H5T_NCLASSES: + default: HDassert(0); break; @@ -461,8 +637,8 @@ hsize_t diff_datum(void *_mem1, memb_type = members->ids[j]; nfound+=diff_datum( - mem1+offset, - mem2+offset, + mem1 + offset, + mem2 + offset, memb_type, i, rank, @@ -505,10 +681,10 @@ hsize_t diff_datum(void *_mem1, else { /* Get pointer to first string */ - s1 = mem1; + s1 = (char *)mem1; size1 = H5Tget_size(m_type); /* Get pointer to second string */ - s2 = mem2; + s2 = (char *)mem2; size2 = H5Tget_size(m_type); } @@ -631,11 +807,11 @@ hsize_t diff_datum(void *_mem1, */ err1 = H5Tenum_nameof(m_type, mem1, enum_name1, sizeof enum_name1); if(err1 < 0) - strcpy(enum_name1, "**INVALID VALUE**"); + HDsnprintf(enum_name1, sizeof(enum_name1), "**INVALID VALUE**"); err2 = H5Tenum_nameof(m_type, mem2, enum_name2, sizeof enum_name2); if(err2 < 0) - strcpy(enum_name2, "**INVALID VALUE**"); + HDsnprintf(enum_name2, sizeof(enum_name2), "**INVALID VALUE**"); if(err1 < 0 || err2 < 0) { @@ -699,7 +875,8 @@ hsize_t diff_datum(void *_mem1, { hsize_t adims[H5S_MAX_RANK]; - hsize_t ndims; + int ndims; + /* get the array's base datatype for each element */ memb_type = H5Tget_super(m_type); size = H5Tget_size(memb_type); @@ -708,7 +885,7 @@ hsize_t diff_datum(void *_mem1, HDassert(ndims >= 1 && ndims <= H5S_MAX_RANK); /* calculate the number of array elements */ - for (u = 0, nelmts = 1; u <ndims; u++) + for (u = 0, nelmts = 1; u < (unsigned)ndims; u++) nelmts *= adims[u]; for (u = 0; u < nelmts; u++) { @@ -858,22 +1035,22 @@ hsize_t diff_datum(void *_mem1, /* get the number of sequence elements */ nelmts = ((hvl_t *)mem1)->len; - for (j = 0; j < (int)nelmts; j++) - nfound+=diff_datum( - ((char *)(((hvl_t *)mem1)->p)) + j * size, - ((char *)(((hvl_t *)mem2)->p)) + j * size, /* offset */ - memb_type, - i, /* index position */ - rank, - dims, - acc, - pos, - options, - obj1, - obj2, - container1_id, - container2_id, - ph, members); + for (j = 0; j < nelmts; j++) + nfound += diff_datum( + ((char *)(((hvl_t *)mem1)->p)) + j * size, + ((char *)(((hvl_t *)mem2)->p)) + j * size, /* offset */ + memb_type, + i, /* index position */ + rank, + dims, + acc, + pos, + options, + obj1, + obj2, + container1_id, + container2_id, + ph, members); H5Tclose(memb_type); @@ -1418,7 +1595,7 @@ hsize_t diff_datum(void *_mem1, { print_pos(ph,1,i,acc,pos,rank,dims,obj1,obj2); parallel_print(SPACES); - parallel_print(I_FORMAT_P_NOTCOMP,temp1_uint,temp2_uint,PDIFF(temp1_uint,temp2_uint)); + parallel_print(UI_FORMAT_P_NOTCOMP,temp1_uint,temp2_uint,PDIFF(temp1_uint,temp2_uint)); } nfound++; } @@ -1431,7 +1608,7 @@ hsize_t diff_datum(void *_mem1, { print_pos(ph,1,i,acc,pos,rank,dims,obj1,obj2); parallel_print(SPACES); - parallel_print(I_FORMAT_P,temp1_uint,temp2_uint,PDIFF(temp1_uint,temp2_uint),per); + parallel_print(UI_FORMAT_P,temp1_uint,temp2_uint,PDIFF(temp1_uint,temp2_uint),per); } nfound++; } @@ -1447,7 +1624,7 @@ hsize_t diff_datum(void *_mem1, { print_pos(ph,1,i,acc,pos,rank,dims,obj1,obj2); parallel_print(SPACES); - parallel_print(I_FORMAT_P_NOTCOMP,temp1_uint,temp2_uint,PDIFF(temp1_uint,temp2_uint)); + parallel_print(UI_FORMAT_P_NOTCOMP,temp1_uint,temp2_uint,PDIFF(temp1_uint,temp2_uint)); } nfound++; } @@ -1460,7 +1637,7 @@ hsize_t diff_datum(void *_mem1, { print_pos(ph,1,i,acc,pos,rank,dims,obj1,obj2); parallel_print(SPACES); - parallel_print(I_FORMAT_P,temp1_uint,temp2_uint,PDIFF(temp1_uint,temp2_uint),per); + parallel_print(UI_FORMAT_P,temp1_uint,temp2_uint,PDIFF(temp1_uint,temp2_uint),per); } nfound++; } @@ -1901,8 +2078,8 @@ hsize_t diff_datum(void *_mem1, { float temp1_float; float temp2_float; - int isnan1=0; - int isnan2=0; + hbool_t isnan1 = FALSE; + hbool_t isnan2 = FALSE; HDassert(type_size==sizeof(float)); @@ -1930,29 +2107,29 @@ hsize_t diff_datum(void *_mem1, } /* both not NaN, do the comparison */ - if ( isnan1==0 && isnan2==0) + if ( !isnan1 && !isnan2) { - if (ABS(temp1_float-temp2_float) > options->delta) + if (ABS(temp1_float-temp2_float) > (float)options->delta) { if ( print_data(options) ) { print_pos(ph,0,i,acc,pos,rank,dims,obj1,obj2); parallel_print(SPACES); - parallel_print(F_FORMAT,temp1_float,temp2_float,ABS(temp1_float-temp2_float)); + parallel_print(F_FORMAT,(double)temp1_float,(double)temp2_float, (double)ABS(temp1_float - temp2_float)); } nfound++; } } /* only one is NaN, assume difference */ - else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1) + else if ((isnan1 && !isnan2) || (!isnan1 && isnan2)) { if ( print_data(options) ) { print_pos(ph,0,i,acc,pos,rank,dims,obj1,obj2); parallel_print(SPACES); - parallel_print(F_FORMAT,temp1_float,temp2_float,ABS(temp1_float-temp2_float)); + parallel_print(F_FORMAT, (double)temp1_float, (double)temp2_float, (double)ABS(temp1_float - temp2_float)); } nfound++; @@ -1976,7 +2153,7 @@ hsize_t diff_datum(void *_mem1, } /* both not NaN, do the comparison */ - if ( isnan1==0 && isnan2==0) + if ( !isnan1 && !isnan2) { PER(temp1_float,temp2_float); @@ -1987,35 +2164,35 @@ hsize_t diff_datum(void *_mem1, { print_pos(ph,1,i,acc,pos,rank,dims,obj1,obj2); parallel_print(SPACES); - parallel_print(F_FORMAT_P_NOTCOMP,temp1_float,temp2_float,ABS(temp1_float-temp2_float)); + parallel_print(F_FORMAT_P_NOTCOMP, (double)temp1_float, (double)temp2_float, (double)ABS(temp1_float - temp2_float)); } nfound++; } else - if ( per > options->percent && ABS(temp1_float-temp2_float) > options->delta ) + if ( per > options->percent && (double)ABS(temp1_float-temp2_float) > options->delta ) { if ( print_data(options) ) { print_pos(ph,1,i,acc,pos,rank,dims,obj1,obj2); parallel_print(SPACES); - parallel_print(F_FORMAT_P,temp1_float,temp2_float, - ABS(temp1_float-temp2_float), - ABS(1-temp2_float/temp1_float)); + parallel_print(F_FORMAT_P, (double)temp1_float, (double)temp2_float, + (double)ABS(temp1_float - temp2_float), + (double)ABS(1 - temp2_float / temp1_float)); } nfound++; } } /* only one is NaN, assume difference */ - else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1) + else if ((isnan1 && !isnan2) || (!isnan1 && isnan2)) { if ( print_data(options) ) { print_pos(ph,0,i,acc,pos,rank,dims,obj1,obj2); parallel_print(SPACES); - parallel_print(F_FORMAT,temp1_float,temp2_float,ABS(temp1_float-temp2_float)); + parallel_print(F_FORMAT, (double)temp1_float, (double)temp2_float, (double)ABS(temp1_float - temp2_float)); } nfound++; @@ -2041,7 +2218,7 @@ hsize_t diff_datum(void *_mem1, } /* both not NaN, do the comparison */ - if ( isnan1==0 && isnan2==0) + if ( !isnan1 && !isnan2) { PER(temp1_float,temp2_float); @@ -2052,8 +2229,8 @@ hsize_t diff_datum(void *_mem1, { print_pos(ph,1,i,acc,pos,rank,dims,obj1,obj2); parallel_print(SPACES); - parallel_print(F_FORMAT_P_NOTCOMP,temp1_float,temp2_float, - ABS(temp1_float-temp2_float)); + parallel_print(F_FORMAT_P_NOTCOMP, (double)temp1_float, (double)temp2_float, + (double)ABS(temp1_float - temp2_float)); } nfound++; } @@ -2066,22 +2243,22 @@ hsize_t diff_datum(void *_mem1, { print_pos(ph,1,i,acc,pos,rank,dims,obj1,obj2); parallel_print(SPACES); - parallel_print(F_FORMAT_P,temp1_float,temp2_float, - ABS(temp1_float-temp2_float), - ABS(1-temp2_float/temp1_float)); + parallel_print(F_FORMAT_P, (double)temp1_float, (double)temp2_float, + (double)ABS(temp1_float - temp2_float), + (double)ABS(1 - temp2_float / temp1_float)); } nfound++; } } /* only one is NaN, assume difference */ - else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1) + else if ((isnan1 && !isnan2) || (!isnan1 && isnan2)) { if ( print_data(options) ) { print_pos(ph,0,i,acc,pos,rank,dims,obj1,obj2); parallel_print(SPACES); - parallel_print(F_FORMAT,temp1_float,temp2_float,ABS(temp1_float-temp2_float)); + parallel_print(F_FORMAT, (double)temp1_float, (double)temp2_float, (double)ABS(temp1_float - temp2_float)); } nfound++; @@ -2099,7 +2276,7 @@ hsize_t diff_datum(void *_mem1, { print_pos(ph,0,i,acc,pos,rank,dims,obj1,obj2); parallel_print(SPACES); - parallel_print(F_FORMAT,temp1_float,temp2_float,ABS(temp1_float-temp2_float)); + parallel_print(F_FORMAT, (double)temp1_float, (double)temp2_float, (double)ABS(temp1_float - temp2_float)); } nfound++; } @@ -2114,8 +2291,8 @@ hsize_t diff_datum(void *_mem1, { double temp1_double; double temp2_double; - int isnan1=0; - int isnan2=0; + hbool_t isnan1 = FALSE; + hbool_t isnan2 = FALSE; HDassert(type_size==sizeof(double)); @@ -2141,7 +2318,7 @@ hsize_t diff_datum(void *_mem1, } /* both not NaN, do the comparison */ - if ( isnan1==0 && isnan2==0) + if ( !isnan1 && !isnan2) { if (ABS(temp1_double-temp2_double) > options->delta) @@ -2157,7 +2334,7 @@ hsize_t diff_datum(void *_mem1, } /* only one is NaN, assume difference */ - else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1) + else if ((isnan1 && !isnan2) || (!isnan1 && isnan2)) { if ( print_data(options) ) { @@ -2188,7 +2365,7 @@ hsize_t diff_datum(void *_mem1, } /* both not NaN, do the comparison */ - if ( isnan1==0 && isnan2==0) + if ( !isnan1 && !isnan2) { PER(temp1_double,temp2_double); @@ -2222,7 +2399,7 @@ hsize_t diff_datum(void *_mem1, } /* only one is NaN, assume difference */ - else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1) + else if ((isnan1 && !isnan2) || (!isnan1 && isnan2)) { if ( print_data(options) ) { @@ -2253,7 +2430,7 @@ hsize_t diff_datum(void *_mem1, } /* both not NaN, do the comparison */ - if ( isnan1==0 && isnan2==0) + if ( !isnan1 && !isnan2) { PER(temp1_double,temp2_double); @@ -2288,7 +2465,7 @@ hsize_t diff_datum(void *_mem1, } /* only one is NaN, assume difference */ - else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1) + else if ((isnan1 && !isnan2) || (!isnan1 && isnan2)) { if ( print_data(options) ) { @@ -2328,8 +2505,8 @@ hsize_t diff_datum(void *_mem1, { long double temp1_double; long double temp2_double; - int isnan1=0; - int isnan2=0; + hbool_t isnan1 = FALSE; + hbool_t isnan2 = FALSE; HDassert(type_size==sizeof(long double)); @@ -2357,7 +2534,7 @@ hsize_t diff_datum(void *_mem1, } /* both not NaN, do the comparison */ - if ( isnan1==0 && isnan2==0) + if ( !isnan1 && !isnan2) { if (ABS(temp1_double-temp2_double) > options->delta) @@ -2372,7 +2549,7 @@ hsize_t diff_datum(void *_mem1, } } /* NaN */ /* only one is NaN, assume difference */ - else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1) + else if ((isnan1 && !isnan2) || (!isnan1 && isnan2)) { if ( print_data(options) ) { @@ -2402,7 +2579,7 @@ hsize_t diff_datum(void *_mem1, } /* both not NaN, do the comparison */ - if ( isnan1==0 && isnan2==0) + if ( !isnan1 && !isnan2) { PER(temp1_double,temp2_double); @@ -2436,7 +2613,7 @@ hsize_t diff_datum(void *_mem1, } /* NaN */ /* only one is NaN, assume difference */ - else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1) + else if ((isnan1 && !isnan2) || (!isnan1 && isnan2)) { if ( print_data(options) ) { @@ -2466,7 +2643,7 @@ hsize_t diff_datum(void *_mem1, } /* both not NaN, do the comparison */ - if ( isnan1==0 && isnan2==0) + if ( !isnan1 && !isnan2) { PER(temp1_double,temp2_double); @@ -2501,7 +2678,7 @@ hsize_t diff_datum(void *_mem1, } /* NaN */ /* only one is NaN, assume difference */ - else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1) + else if ((isnan1 && !isnan2) || (!isnan1 && isnan2)) { if ( print_data(options) ) { @@ -2667,14 +2844,15 @@ hsize_t diff_region(hid_t obj1_id, *------------------------------------------------------------------------- */ if(nblocks1 > 0) { - alloc_size = nblocks1 * ndims1 * 2 * sizeof(ptdata1[0]); + HDassert(ndims1 > 0); + alloc_size = (hsize_t)nblocks1 * (unsigned)ndims1 * 2 * sizeof(ptdata1[0]); HDassert(alloc_size == (hsize_t)((size_t)alloc_size)); /*check for overflow*/ - ptdata1 = HDmalloc((size_t)alloc_size); + ptdata1 = (hsize_t *)HDmalloc((size_t)alloc_size); H5_CHECK_OVERFLOW(nblocks1, hssize_t, hsize_t); H5Sget_select_hyper_blocklist(region1_id, (hsize_t)0, (hsize_t)nblocks1, ptdata1); - ptdata2 = HDmalloc((size_t)alloc_size); + ptdata2 = (hsize_t *)HDmalloc((size_t)alloc_size); H5_CHECK_OVERFLOW(nblocks2, hssize_t, hsize_t); H5Sget_select_hyper_blocklist(region2_id, (hsize_t)0, (hsize_t)nblocks2, ptdata2); @@ -2722,14 +2900,14 @@ hsize_t diff_region(hid_t obj1_id, *------------------------------------------------------------------------- */ if(npoints1 > 0) { - alloc_size = npoints1 * ndims1 * sizeof(ptdata1[0]); + alloc_size = (hsize_t)npoints1 * (unsigned)ndims1 * sizeof(ptdata1[0]); HDassert(alloc_size == (hsize_t)((size_t)alloc_size)); /*check for overflow*/ - ptdata1 = HDmalloc((size_t)alloc_size); + ptdata1 = (hsize_t *)HDmalloc((size_t)alloc_size); H5_CHECK_OVERFLOW(npoints1,hssize_t,hsize_t); H5Sget_select_elem_pointlist(region1_id, (hsize_t)0, (hsize_t)npoints1, ptdata1); - ptdata2 = HDmalloc((size_t)alloc_size); + ptdata2 = (hsize_t *)HDmalloc((size_t)alloc_size); H5_CHECK_OVERFLOW(npoints1,hssize_t,hsize_t); H5Sget_select_elem_pointlist(region2_id, (hsize_t)0, (hsize_t)npoints2, ptdata2); @@ -2786,8 +2964,8 @@ hsize_t diff_region(hid_t obj1_id, HDfree(ptdata2); } - nfound_b = nfound_b/ndims1; - nfound_p = nfound_p/ndims1; + nfound_b = nfound_b / (unsigned)ndims1; + nfound_p = nfound_p / (unsigned)ndims1; return (nfound_p + nfound_b); } @@ -2803,8 +2981,8 @@ hsize_t diff_region(hid_t obj1_id, */ static -hsize_t character_compare(unsigned char *mem1, - unsigned char *mem2, +hsize_t character_compare(char *mem1, + char *mem2, hsize_t i, unsigned u, int rank, @@ -2817,8 +2995,8 @@ hsize_t character_compare(unsigned char *mem1, int *ph) { hsize_t nfound=0; /* differences found */ - unsigned char temp1_uchar; - unsigned char temp2_uchar; + char temp1_uchar; + char temp2_uchar; HDmemcpy(&temp1_uchar, mem1, sizeof(unsigned char)); HDmemcpy(&temp2_uchar, mem2, sizeof(unsigned char)); @@ -2851,7 +3029,7 @@ hsize_t character_compare(unsigned char *mem1, *------------------------------------------------------------------------- */ -hsize_t character_compare_opt(unsigned char *mem1, +static hsize_t character_compare_opt(unsigned char *mem1, unsigned char *mem2, hsize_t i, int rank, @@ -2867,7 +3045,7 @@ hsize_t character_compare_opt(unsigned char *mem1, unsigned char temp1_uchar; unsigned char temp2_uchar; double per; - int both_zero; + hbool_t both_zero; HDmemcpy(&temp1_uchar, mem1, sizeof(unsigned char)); HDmemcpy(&temp2_uchar, mem2, sizeof(unsigned char)); @@ -2942,7 +3120,7 @@ hsize_t character_compare_opt(unsigned char *mem1, * *------------------------------------------------------------------------- */ -hsize_t diff_float(unsigned char *mem1, +static hsize_t diff_float(unsigned char *mem1, unsigned char *mem2, hsize_t nelmts, hsize_t hyper_start, @@ -2961,9 +3139,9 @@ hsize_t diff_float(unsigned char *mem1, float temp2_float; hsize_t i; double per; - int both_zero; - int isnan1=0; - int isnan2=0; + hbool_t both_zero; + hbool_t isnan1 = FALSE; + hbool_t isnan2 = FALSE; /*------------------------------------------------------------------------- @@ -2989,27 +3167,27 @@ hsize_t diff_float(unsigned char *mem1, } /* both not NaN, do the comparison */ - if ( isnan1==0 && isnan2==0) + if ( !isnan1 && !isnan2) { - if (ABS(temp1_float-temp2_float) > options->delta) + if ((double)ABS(temp1_float-temp2_float) > options->delta) { if ( print_data(options) ) { print_pos(ph,0,hyper_start+i,acc,pos,rank,dims,obj1,obj2); parallel_print(SPACES); - parallel_print(F_FORMAT,temp1_float,temp2_float,ABS(temp1_float-temp2_float)); + parallel_print(F_FORMAT, (double)temp1_float, (double)temp2_float, (double)ABS(temp1_float - temp2_float)); } nfound++; } } /* only one is NaN, assume difference */ - else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1) + else if ((isnan1 && !isnan2) || (!isnan1 && isnan2)) { if ( print_data(options) ) { print_pos(ph,0,hyper_start+i,acc,pos,rank,dims,obj1,obj2); parallel_print(SPACES); - parallel_print(F_FORMAT,temp1_float,temp2_float,ABS(temp1_float-temp2_float)); + parallel_print(F_FORMAT, (double)temp1_float, (double)temp2_float, (double)ABS(temp1_float - temp2_float)); } nfound++; @@ -3042,7 +3220,7 @@ hsize_t diff_float(unsigned char *mem1, isnan2 = my_isnan(FLT_FLOAT,&temp2_float); } /* both not NaN, do the comparison */ - if ( isnan1==0 && isnan2==0) + if ( (!isnan1 && !isnan2)) { PER(temp1_float,temp2_float); @@ -3053,8 +3231,8 @@ hsize_t diff_float(unsigned char *mem1, { print_pos(ph,1,hyper_start+i,acc,pos,rank,dims,obj1,obj2); parallel_print(SPACES); - parallel_print(F_FORMAT_P_NOTCOMP,temp1_float,temp2_float, - ABS(temp1_float-temp2_float)); + parallel_print(F_FORMAT_P_NOTCOMP, (double)temp1_float, (double)temp2_float, + (double)ABS(temp1_float - temp2_float)); } nfound++; } @@ -3067,21 +3245,21 @@ hsize_t diff_float(unsigned char *mem1, { print_pos(ph,1,hyper_start+i,acc,pos,rank,dims,obj1,obj2); parallel_print(SPACES); - parallel_print(F_FORMAT_P,temp1_float,temp2_float, - ABS(temp1_float-temp2_float), - ABS(1-temp2_float/temp1_float)); + parallel_print(F_FORMAT_P, (double)temp1_float, (double)temp2_float, + (double)ABS(temp1_float - temp2_float), + (double)ABS(1 - temp2_float / temp1_float)); } nfound++; } } /* only one is NaN, assume difference */ - else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1) + else if ((isnan1 && !isnan2) || (!isnan1 && isnan2)) { if ( print_data(options) ) { print_pos(ph,0,hyper_start+i,acc,pos,rank,dims,obj1,obj2); parallel_print(SPACES); - parallel_print(F_FORMAT,temp1_float,temp2_float,ABS(temp1_float-temp2_float)); + parallel_print(F_FORMAT, (double)temp1_float, (double)temp2_float, (double)ABS(temp1_float - temp2_float)); } nfound++; @@ -3116,7 +3294,7 @@ hsize_t diff_float(unsigned char *mem1, } /* both not NaN, do the comparison */ - if ( isnan1==0 && isnan2==0) + if ( !isnan1 && !isnan2) { PER(temp1_float,temp2_float); @@ -3127,36 +3305,36 @@ hsize_t diff_float(unsigned char *mem1, { print_pos(ph,1,hyper_start+i,acc,pos,rank,dims,obj1,obj2); parallel_print(SPACES); - parallel_print(F_FORMAT_P_NOTCOMP,temp1_float,temp2_float, - ABS(temp1_float-temp2_float)); + parallel_print(F_FORMAT_P_NOTCOMP, (double)temp1_float, (double)temp2_float, + (double)ABS(temp1_float - temp2_float)); } nfound++; } else - if ( per > options->percent && ABS(temp1_float-temp2_float) > options->delta ) + if ( per > options->percent && (double)ABS(temp1_float - temp2_float) > options->delta ) { if ( print_data(options) ) { print_pos(ph,1,hyper_start+i,acc,pos,rank,dims,obj1,obj2); parallel_print(SPACES); - parallel_print(F_FORMAT_P,temp1_float,temp2_float, - ABS(temp1_float-temp2_float), - ABS(1-temp2_float/temp1_float)); + parallel_print(F_FORMAT_P, (double)temp1_float, (double)temp2_float, + (double)ABS(temp1_float - temp2_float), + (double)ABS(1 - temp2_float / temp1_float)); } nfound++; } } /* only one is NaN, assume difference */ - else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1) + else if ((isnan1 && !isnan2) || (!isnan1 && isnan2)) { if ( print_data(options) ) { print_pos(ph,0,hyper_start+i,acc,pos,rank,dims,obj1,obj2); parallel_print(SPACES); - parallel_print(F_FORMAT,temp1_float,temp2_float,ABS(temp1_float-temp2_float)); + parallel_print(F_FORMAT, (double)temp1_float, (double)temp2_float, (double)ABS(temp1_float - temp2_float)); } nfound++; @@ -3185,7 +3363,7 @@ hsize_t diff_float(unsigned char *mem1, { print_pos(ph,0,hyper_start+i,acc,pos,rank,dims,obj1,obj2); parallel_print(SPACES); - parallel_print(F_FORMAT,temp1_float,temp2_float,ABS(temp1_float-temp2_float)); + parallel_print(F_FORMAT, (double)temp1_float, (double)temp2_float, (double)ABS(temp1_float - temp2_float)); } nfound++; } @@ -3216,7 +3394,7 @@ hsize_t diff_float(unsigned char *mem1, * *------------------------------------------------------------------------- */ -hsize_t diff_double(unsigned char *mem1, +static hsize_t diff_double(unsigned char *mem1, unsigned char *mem2, hsize_t nelmts, hsize_t hyper_start, @@ -3235,9 +3413,9 @@ hsize_t diff_double(unsigned char *mem1, double temp2_double; hsize_t i; double per; - int both_zero; - int isnan1=0; - int isnan2=0; + hbool_t both_zero; + hbool_t isnan1 = FALSE; + hbool_t isnan2 = FALSE; /*------------------------------------------------------------------------- * -d and !-p @@ -3262,7 +3440,7 @@ hsize_t diff_double(unsigned char *mem1, } /* both not NaN, do the comparison */ - if ( isnan1==0 && isnan2==0) + if ( !isnan1 && !isnan2) { if (ABS(temp1_double-temp2_double) > options->delta) { @@ -3276,7 +3454,7 @@ hsize_t diff_double(unsigned char *mem1, } } /* only one is NaN, assume difference */ - else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1) + else if ((isnan1 && !isnan2) || (!isnan1 && isnan2)) { if ( print_data(options) ) { @@ -3315,7 +3493,7 @@ hsize_t diff_double(unsigned char *mem1, isnan2 = my_isnan(FLT_DOUBLE,&temp2_double); } /* both not NaN, do the comparison */ - if ( isnan1==0 && isnan2==0) + if ( !isnan1 && !isnan2) { PER(temp1_double,temp2_double); @@ -3348,7 +3526,7 @@ hsize_t diff_double(unsigned char *mem1, } } /* only one is NaN, assume difference */ - else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1) + else if ((isnan1 && !isnan2) || (!isnan1 && isnan2)) { if ( print_data(options) ) { @@ -3389,7 +3567,7 @@ hsize_t diff_double(unsigned char *mem1, } /* both not NaN, do the comparison */ - if ( isnan1==0 && isnan2==0) + if ( !isnan1 && !isnan2) { PER(temp1_double,temp2_double); @@ -3423,7 +3601,7 @@ hsize_t diff_double(unsigned char *mem1, } /* only one is NaN, assume difference */ - else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1) + else if ((isnan1 && !isnan2) || (!isnan1 && isnan2)) { if ( print_data(options) ) { @@ -3498,7 +3676,7 @@ hsize_t diff_double(unsigned char *mem1, */ #if H5_SIZEOF_LONG_DOUBLE !=0 -hsize_t diff_ldouble(unsigned char *mem1, +static hsize_t diff_ldouble(unsigned char *mem1, unsigned char *mem2, hsize_t nelmts, hsize_t hyper_start, @@ -3517,9 +3695,9 @@ hsize_t diff_ldouble(unsigned char *mem1, long double temp2_double; hsize_t i; double per; - int both_zero; - int isnan1=0; - int isnan2=0; + hbool_t both_zero; + hbool_t isnan1 = FALSE; + hbool_t isnan2 = FALSE; /*------------------------------------------------------------------------- @@ -3545,7 +3723,7 @@ hsize_t diff_ldouble(unsigned char *mem1, } /* both not NaN, do the comparison */ - if ( isnan1==0 && isnan2==0) + if ( !isnan1 && !isnan2) { if (ABS(temp1_double-temp2_double) > options->delta) { @@ -3559,7 +3737,7 @@ hsize_t diff_ldouble(unsigned char *mem1, } } /* only one is NaN, assume difference */ - else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1) + else if ((isnan1 && !isnan2) || (!isnan1 && isnan2)) { if ( print_data(options) ) { @@ -3598,7 +3776,7 @@ hsize_t diff_ldouble(unsigned char *mem1, isnan2 = my_isnan(FLT_LDOUBLE,&temp2_double); } /* both not NaN, do the comparison */ - if ( isnan1==0 && isnan2==0) + if ( !isnan1 && !isnan2) { PER(temp1_double,temp2_double); @@ -3631,7 +3809,7 @@ hsize_t diff_ldouble(unsigned char *mem1, } } /* only one is NaN, assume difference */ - else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1) + else if ((isnan1 && !isnan2) || (!isnan1 && isnan2)) { if ( print_data(options) ) { @@ -3672,7 +3850,7 @@ hsize_t diff_ldouble(unsigned char *mem1, } /* both not NaN, do the comparison */ - if ( isnan1==0 && isnan2==0) + if ( !isnan1 && !isnan2) { PER(temp1_double,temp2_double); @@ -3706,7 +3884,7 @@ hsize_t diff_ldouble(unsigned char *mem1, } /* only one is NaN, assume difference */ - else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1) + else if ((isnan1 && !isnan2) || (!isnan1 && isnan2)) { if ( print_data(options) ) { @@ -3781,7 +3959,7 @@ hsize_t diff_ldouble(unsigned char *mem1, * *------------------------------------------------------------------------- */ -hsize_t diff_schar(unsigned char *mem1, +static hsize_t diff_schar(unsigned char *mem1, unsigned char *mem2, hsize_t nelmts, hsize_t hyper_start, @@ -3800,7 +3978,7 @@ hsize_t diff_schar(unsigned char *mem1, char temp2_char; hsize_t i; double per; - int both_zero; + hbool_t both_zero; /* -d and !-p */ @@ -3958,7 +4136,7 @@ hsize_t diff_schar(unsigned char *mem1, * *------------------------------------------------------------------------- */ -hsize_t diff_uchar(unsigned char *mem1, +static hsize_t diff_uchar(unsigned char *mem1, unsigned char *mem2, hsize_t nelmts, hsize_t hyper_start, @@ -3977,7 +4155,7 @@ hsize_t diff_uchar(unsigned char *mem1, unsigned char temp2_uchar; hsize_t i; double per; - int both_zero; + hbool_t both_zero; /* -d and !-p */ @@ -4134,7 +4312,7 @@ hsize_t diff_uchar(unsigned char *mem1, * *------------------------------------------------------------------------- */ -hsize_t diff_short(unsigned char *mem1, +static hsize_t diff_short(unsigned char *mem1, unsigned char *mem2, hsize_t nelmts, hsize_t hyper_start, @@ -4153,7 +4331,7 @@ hsize_t diff_short(unsigned char *mem1, short temp2_short; hsize_t i; double per; - int both_zero; + hbool_t both_zero; /* -d and !-p */ if (options->d && !options->p) @@ -4312,7 +4490,7 @@ hsize_t diff_short(unsigned char *mem1, * *------------------------------------------------------------------------- */ -hsize_t diff_ushort(unsigned char *mem1, +static hsize_t diff_ushort(unsigned char *mem1, unsigned char *mem2, hsize_t nelmts, hsize_t hyper_start, @@ -4331,7 +4509,7 @@ hsize_t diff_ushort(unsigned char *mem1, unsigned short temp2_ushort; hsize_t i; double per; - int both_zero; + hbool_t both_zero; /* -d and !-p */ if (options->d && !options->p) @@ -4491,7 +4669,7 @@ hsize_t diff_ushort(unsigned char *mem1, * *------------------------------------------------------------------------- */ -hsize_t diff_int(unsigned char *mem1, +static hsize_t diff_int(unsigned char *mem1, unsigned char *mem2, hsize_t nelmts, hsize_t hyper_start, @@ -4510,7 +4688,7 @@ hsize_t diff_int(unsigned char *mem1, int temp2_int; hsize_t i; double per; - int both_zero; + hbool_t both_zero; /* -d and !-p */ if (options->d && !options->p) @@ -4670,7 +4848,7 @@ hsize_t diff_int(unsigned char *mem1, * *------------------------------------------------------------------------- */ -hsize_t diff_uint(unsigned char *mem1, +static hsize_t diff_uint(unsigned char *mem1, unsigned char *mem2, hsize_t nelmts, hsize_t hyper_start, @@ -4689,7 +4867,7 @@ hsize_t diff_uint(unsigned char *mem1, unsigned int temp2_uint; hsize_t i; double per; - int both_zero; + hbool_t both_zero; /* -d and !-p */ if (options->d && !options->p) @@ -4847,7 +5025,7 @@ hsize_t diff_uint(unsigned char *mem1, * *------------------------------------------------------------------------- */ -hsize_t diff_long(unsigned char *mem1, +static hsize_t diff_long(unsigned char *mem1, unsigned char *mem2, hsize_t nelmts, hsize_t hyper_start, @@ -4866,7 +5044,7 @@ hsize_t diff_long(unsigned char *mem1, long temp2_long; hsize_t i; double per; - int both_zero; + hbool_t both_zero; /* -d and !-p */ if (options->d && !options->p) @@ -5030,7 +5208,7 @@ hsize_t diff_long(unsigned char *mem1, * *------------------------------------------------------------------------- */ -hsize_t diff_ulong(unsigned char *mem1, +static hsize_t diff_ulong(unsigned char *mem1, unsigned char *mem2, hsize_t nelmts, hsize_t hyper_start, @@ -5049,7 +5227,7 @@ hsize_t diff_ulong(unsigned char *mem1, unsigned long temp2_ulong; hsize_t i; double per; - int both_zero; + hbool_t both_zero; /* -d and !-p */ @@ -5213,7 +5391,7 @@ hsize_t diff_ulong(unsigned char *mem1, * *------------------------------------------------------------------------- */ -hsize_t diff_llong(unsigned char *mem1, +static hsize_t diff_llong(unsigned char *mem1, unsigned char *mem2, hsize_t nelmts, hsize_t hyper_start, @@ -5232,7 +5410,7 @@ hsize_t diff_llong(unsigned char *mem1, long long temp2_llong; hsize_t i; double per; - int both_zero; + hbool_t both_zero; /* -d and !-p */ if (options->d && !options->p) @@ -5386,7 +5564,7 @@ hsize_t diff_llong(unsigned char *mem1, * *------------------------------------------------------------------------- */ -hsize_t diff_ullong(unsigned char *mem1, +static hsize_t diff_ullong(unsigned char *mem1, unsigned char *mem2, hsize_t nelmts, hsize_t hyper_start, @@ -5406,7 +5584,7 @@ hsize_t diff_ullong(unsigned char *mem1, hsize_t i; float f1, f2; double per; - int both_zero; + hbool_t both_zero; /* -d and !-p */ if (options->d && !options->p) @@ -5627,8 +5805,8 @@ hbool_t equal_double(double value, double expected, diff_opt_t *options) * detect NaNs *------------------------------------------------------------------------- */ - int isnan1 = my_isnan(FLT_DOUBLE,&value); - int isnan2 = my_isnan(FLT_DOUBLE,&expected); + hbool_t isnan1 = my_isnan(FLT_DOUBLE,&value); + hbool_t isnan2 = my_isnan(FLT_DOUBLE,&expected); /*------------------------------------------------------------------------- * we consider NaN == NaN to be true @@ -5680,8 +5858,8 @@ hbool_t equal_ldouble(long double value, long double expected, diff_opt_t *optio * detect NaNs *------------------------------------------------------------------------- */ - int isnan1 = my_isnan(FLT_LDOUBLE,&value); - int isnan2 = my_isnan(FLT_LDOUBLE,&expected); + hbool_t isnan1 = my_isnan(FLT_LDOUBLE,&value); + hbool_t isnan2 = my_isnan(FLT_LDOUBLE,&expected); /*------------------------------------------------------------------------- * we consider NaN == NaN to be true @@ -5737,8 +5915,8 @@ hbool_t equal_float(float value, float expected, diff_opt_t *options) * detect NaNs *------------------------------------------------------------------------- */ - int isnan1 = my_isnan(FLT_FLOAT,&value); - int isnan2 = my_isnan(FLT_FLOAT,&expected); + hbool_t isnan1 = my_isnan(FLT_FLOAT,&value); + hbool_t isnan2 = my_isnan(FLT_FLOAT,&expected); /*------------------------------------------------------------------------- * we consider NaN == NaN to be true @@ -5789,39 +5967,38 @@ hbool_t equal_float(float value, float expected, diff_opt_t *options) * *------------------------------------------------------------------------- */ -static int +static hbool_t my_isnan(dtype_t type, void *val) { - int retval = 0; + hbool_t retval = FALSE; char s[256]; if (FLT_FLOAT==type) { float x; + HDmemcpy(&x, val, sizeof(float)); retval = (x!=x); - - - } else if (FLT_DOUBLE==type) { double x; + HDmemcpy(&x, val, sizeof(double)); retval = (x!=x); - -#if H5_SIZEOF_LONG_DOUBLE!=H5_SIZEOF_DOUBLE && H5_SIZEOF_LONG_DOUBLE!=0 } +#if H5_SIZEOF_LONG_DOUBLE!=H5_SIZEOF_DOUBLE && H5_SIZEOF_LONG_DOUBLE!=0 else if (FLT_LDOUBLE==type) { long double x; + HDmemcpy(&x, val, sizeof(long double)); retval = (x!=x); -#endif } +#endif else { - return 0; + return FALSE; } /* @@ -5833,44 +6010,39 @@ my_isnan(dtype_t type, void *val) if (FLT_FLOAT==type) { float x; - HDmemcpy(&x, val, sizeof(float)); - sprintf(s, "%g", x); - + HDmemcpy(&x, val, sizeof(float)); + HDsnprintf(s, sizeof(s), "%g", (double)x); } else if (FLT_DOUBLE==type) { double x; + HDmemcpy(&x, val, sizeof(double)); - sprintf(s, "%g", x); -#if H5_SIZEOF_LONG_DOUBLE!=H5_SIZEOF_DOUBLE && H5_SIZEOF_LONG_DOUBLE!=0 + HDsnprintf(s, sizeof(s), "%g", x); } +#if H5_SIZEOF_LONG_DOUBLE!=H5_SIZEOF_DOUBLE && H5_SIZEOF_LONG_DOUBLE!=0 else if (FLT_LDOUBLE==type) { long double x; + HDmemcpy(&x, val, sizeof(long double)); - sprintf(s, "%Lg", x); -#endif + HDsnprintf(s, sizeof(s), "%Lg", x); } +#endif else { - return 0; + return FALSE; } - if ( HDstrstr(s, "NaN") || HDstrstr(s, "NAN") || HDstrstr(s, "nan") || HDstrstr(s, "-1.#IND") /* WIN32 */ ) { - - retval = 1; + retval = TRUE; } - - - - } #ifdef H5_VMS @@ -5881,15 +6053,17 @@ my_isnan(dtype_t type, void *val) if (FLT_FLOAT==type) { float x; + HDmemcpy(&x, val, sizeof(float)); retval = (x==FLT_MAX || x==-FLT_MAX); } else if (FLT_DOUBLE==type) { double x; + HDmemcpy(&x, val, sizeof(double)); retval = (x==DBL_MAX || x==-DBL_MAX); } else { - return 0; + return FALSE; } } #endif /*H5_VMS*/ @@ -5898,9 +6072,6 @@ my_isnan(dtype_t type, void *val) } - - - /*------------------------------------------------------------------------- * * Local functions @@ -6119,8 +6290,8 @@ static void h5diff_print_char(char ch) */ static void get_member_types(hid_t tid, mcomp_t *members) { - int i; int tclass; + unsigned u; if (tid <=0 || !members) return; @@ -6134,23 +6305,24 @@ static void get_member_types(hid_t tid, mcomp_t *members) } else if (tclass == H5T_COMPOUND) { - members->n = H5Tget_nmembers( tid ); - if (members->n <=0) + int nmembs; + + nmembs = H5Tget_nmembers(tid); + if(nmembs <= 0) return; + members->n = (unsigned)nmembs; - members->ids = HDcalloc(members->n, sizeof(hid_t)); - members->flags = HDcalloc(members->n, sizeof(unsigned char)); - members->offsets = HDcalloc(members->n, sizeof(size_t)); - members->m = HDcalloc(members->n, sizeof(mcomp_t *)); + members->ids = (hid_t *)HDcalloc(members->n, sizeof(hid_t)); + members->offsets = (size_t *)HDcalloc(members->n, sizeof(size_t)); + members->m = (mcomp_t **)HDcalloc(members->n, sizeof(mcomp_t *)); - for (i=0; i< members->n; i++) + for(u = 0; u < members->n; u++) { - members->ids[i] = H5Tget_member_type( tid, i ); - members->flags[i] = H5Tis_variable_str( members->ids[i] ); - members->offsets[i] = H5Tget_member_offset( tid, i ); - members->m[i] = (mcomp_t *)HDmalloc(sizeof(mcomp_t)); - HDmemset(members->m[i], 0, sizeof(mcomp_t)); - get_member_types(members->ids[i], members->m[i]); + members->ids[u] = H5Tget_member_type( tid, u ); + members->offsets[u] = H5Tget_member_offset( tid, u ); + members->m[u] = (mcomp_t *)HDmalloc(sizeof(mcomp_t)); + HDmemset(members->m[u], 0, sizeof(mcomp_t)); + get_member_types(members->ids[u], members->m[u]); } } @@ -6166,24 +6338,23 @@ static void get_member_types(hid_t tid, mcomp_t *members) */ static void close_member_types(mcomp_t *members) { - int i; + unsigned u; if (!members || members->n<=0 || !members->ids) return; - for (i=0; i<members->n; i++) + for(u = 0; u < members->n; u++) { - if (members->m[i]) + if(members->m[u]) { - close_member_types(members->m[i]); - HDfree(members->m[i]); + close_member_types(members->m[u]); + HDfree(members->m[u]); } - H5Tclose(members->ids[i]); + H5Tclose(members->ids[u]); } - HDfree (members->m); - HDfree (members->ids); - HDfree (members->flags); - HDfree (members->offsets); + HDfree(members->m); + HDfree(members->ids); + HDfree(members->offsets); } |