summaryrefslogtreecommitdiffstats
path: root/tools/lib/h5diff_array.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/lib/h5diff_array.c')
-rw-r--r--tools/lib/h5diff_array.c132
1 files changed, 80 insertions, 52 deletions
diff --git a/tools/lib/h5diff_array.c b/tools/lib/h5diff_array.c
index 6c5744f..ecfc238 100644
--- a/tools/lib/h5diff_array.c
+++ b/tools/lib/h5diff_array.c
@@ -234,11 +234,11 @@ hsize_t diff_array( void *_mem1,
size = H5Tget_size( m_type );
type_class = H5Tget_class(m_type);
- /* Fast comparison first for atomic type by memcmp().
+ /* Fast comparison first for atomic type by memcmp().
* It is OK not to list non-atomic type here because it will not be caught
- * by the confition, but it gives more clarity for code planning
+ * by the condition, but it gives more clarity for code planning
*/
- if (type_class != H5T_REFERENCE &&
+ if (type_class != H5T_REFERENCE &&
type_class != H5T_COMPOUND &&
type_class != H5T_STRING &&
type_class != H5T_VLEN &&
@@ -269,7 +269,6 @@ hsize_t diff_array( void *_mem1,
*/
case H5T_FLOAT:
-
if (H5Tequal(m_type, H5T_NATIVE_FLOAT))
nfound=diff_float(mem1,mem2,nelmts,hyper_start,rank,dims,acc,pos,options,name1,name2,&ph);
else if (H5Tequal(m_type, H5T_NATIVE_DOUBLE))
@@ -427,11 +426,11 @@ hsize_t diff_datum(void *_mem1,
type_size = H5Tget_size( m_type );
type_class = H5Tget_class(m_type);
- /* Fast comparison first for atomic type by memcmp().
+ /* Fast comparison first for atomic type by memcmp().
* It is OK not to list non-atomic type here because it will not be caught
- * by the confition, but it gives more clarity for code planning
+ * by the confition, but it gives more clarity for code planning
*/
- if (type_class != H5T_REFERENCE &&
+ if (type_class != H5T_REFERENCE &&
type_class != H5T_COMPOUND &&
type_class != H5T_STRING &&
type_class != H5T_VLEN &&
@@ -513,10 +512,10 @@ hsize_t diff_datum(void *_mem1,
size2 = H5Tget_size(m_type);
}
- /*
+ /*
* compare for shorter string
- * TODO: this code need to be improved to handle the difference
- * of length of strings.
+ * TODO: this code need to be improved to handle the difference
+ * of length of strings.
* For now mimic the previous way.
*/
if(size1 < size2)
@@ -622,7 +621,7 @@ hsize_t diff_datum(void *_mem1,
char enum_name2[1024];
herr_t err1;
- herr_t err2;
+ herr_t err2;
/* disable error reporting */
H5E_BEGIN_TRY {
@@ -1946,8 +1945,8 @@ hsize_t diff_datum(void *_mem1,
}
}
- /* one is NaN, assume difference */
- else if ( isnan1==1 || isnan2==1)
+ /* only one is NaN, assume difference */
+ else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
{
if ( print_data(options) )
{
@@ -2009,8 +2008,8 @@ hsize_t diff_datum(void *_mem1,
}
}
- /* one is NaN, assume difference */
- else if ( isnan1==1 || isnan2==1)
+ /* only one is NaN, assume difference */
+ else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
{
if ( print_data(options) )
{
@@ -2075,8 +2074,8 @@ hsize_t diff_datum(void *_mem1,
}
}
- /* one is NaN, assume difference */
- else if ( isnan1==1 || isnan2==1)
+ /* only one is NaN, assume difference */
+ else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
{
if ( print_data(options) )
{
@@ -2131,7 +2130,6 @@ hsize_t diff_datum(void *_mem1,
*/
if (options->d && !options->p)
{
-
/*-------------------------------------------------------------------------
* detect NaNs
*-------------------------------------------------------------------------
@@ -2158,8 +2156,8 @@ hsize_t diff_datum(void *_mem1,
}
}
- /* one is NaN, assume difference */
- else if ( isnan1==1 || isnan2==1)
+ /* only one is NaN, assume difference */
+ else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
{
if ( print_data(options) )
{
@@ -2223,8 +2221,8 @@ hsize_t diff_datum(void *_mem1,
}
}
- /* one is NaN, assume difference */
- else if ( isnan1==1 || isnan2==1)
+ /* only one is NaN, assume difference */
+ else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
{
if ( print_data(options) )
{
@@ -2289,8 +2287,8 @@ hsize_t diff_datum(void *_mem1,
}
}
- /* one is NaN, assume difference */
- else if ( isnan1==1 || isnan2==1)
+ /* only one is NaN, assume difference */
+ else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
{
if ( print_data(options) )
{
@@ -2299,7 +2297,6 @@ hsize_t diff_datum(void *_mem1,
parallel_print(F_FORMAT,temp1_double,temp2_double,ABS(temp1_double-temp2_double));
}
nfound++;
-
}
}
@@ -2373,8 +2370,18 @@ hsize_t diff_datum(void *_mem1,
}
nfound++;
}
-
} /* NaN */
+ /* only one is NaN, assume difference */
+ else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
+ {
+ if ( print_data(options) )
+ {
+ print_pos(ph,0,i,acc,pos,rank,dims,obj1,obj2);
+ parallel_print(SPACES);
+ parallel_print(F_FORMAT,temp1_double,temp2_double,ABS(temp1_double-temp2_double));
+ }
+ nfound++;
+ }
}
/*-------------------------------------------------------------------------
@@ -2428,7 +2435,18 @@ hsize_t diff_datum(void *_mem1,
}
} /* NaN */
- }
+ /* only one is NaN, assume difference */
+ else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
+ {
+ if ( print_data(options) )
+ {
+ print_pos(ph,0,i,acc,pos,rank,dims,obj1,obj2);
+ parallel_print(SPACES);
+ parallel_print(F_FORMAT,temp1_double,temp2_double,ABS(temp1_double-temp2_double));
+ }
+ nfound++;
+ }
+ }
/*-------------------------------------------------------------------------
* -d and -p
@@ -2482,6 +2500,17 @@ hsize_t diff_datum(void *_mem1,
}
} /* NaN */
+ /* only one is NaN, assume difference */
+ else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
+ {
+ if ( print_data(options) )
+ {
+ print_pos(ph,0,i,acc,pos,rank,dims,obj1,obj2);
+ parallel_print(SPACES);
+ parallel_print(F_FORMAT,temp1_double,temp2_double,ABS(temp1_double-temp2_double));
+ }
+ nfound++;
+ }
}
/*-------------------------------------------------------------------------
@@ -2973,8 +3002,8 @@ hsize_t diff_float(unsigned char *mem1,
nfound++;
}
}
- /* one is NaN, assume difference */
- else if ( isnan1==1 || isnan2==1)
+ /* only one is NaN, assume difference */
+ else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
{
if ( print_data(options) )
{
@@ -3045,8 +3074,8 @@ hsize_t diff_float(unsigned char *mem1,
nfound++;
}
}
- /* one is NaN, assume difference */
- else if ( isnan1==1 || isnan2==1)
+ /* only one is NaN, assume difference */
+ else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
{
if ( print_data(options) )
{
@@ -3120,8 +3149,8 @@ hsize_t diff_float(unsigned char *mem1,
}
}
- /* one is NaN, assume difference */
- else if ( isnan1==1 || isnan2==1)
+ /* only one is NaN, assume difference */
+ else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
{
if ( print_data(options) )
{
@@ -3210,7 +3239,6 @@ hsize_t diff_double(unsigned char *mem1,
int isnan1=0;
int isnan2=0;
-
/*-------------------------------------------------------------------------
* -d and !-p
*-------------------------------------------------------------------------
@@ -3247,8 +3275,8 @@ hsize_t diff_double(unsigned char *mem1,
nfound++;
}
}
- /* one is NaN, assume difference */
- else if ( isnan1==1 || isnan2==1)
+ /* only one is NaN, assume difference */
+ else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
{
if ( print_data(options) )
{
@@ -3319,8 +3347,8 @@ hsize_t diff_double(unsigned char *mem1,
nfound++;
}
}
- /* one is NaN, assume difference */
- else if ( isnan1==1 || isnan2==1)
+ /* only one is NaN, assume difference */
+ else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
{
if ( print_data(options) )
{
@@ -3394,8 +3422,8 @@ hsize_t diff_double(unsigned char *mem1,
}
}
- /* one is NaN, assume difference */
- else if ( isnan1==1 || isnan2==1)
+ /* only one is NaN, assume difference */
+ else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
{
if ( print_data(options) )
{
@@ -3530,8 +3558,8 @@ hsize_t diff_ldouble(unsigned char *mem1,
nfound++;
}
}
- /* one is NaN, assume difference */
- else if ( isnan1==1 || isnan2==1)
+ /* only one is NaN, assume difference */
+ else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
{
if ( print_data(options) )
{
@@ -3602,8 +3630,8 @@ hsize_t diff_ldouble(unsigned char *mem1,
nfound++;
}
}
- /* one is NaN, assume difference */
- else if ( isnan1==1 || isnan2==1)
+ /* only one is NaN, assume difference */
+ else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
{
if ( print_data(options) )
{
@@ -3677,8 +3705,8 @@ hsize_t diff_ldouble(unsigned char *mem1,
}
}
- /* one is NaN, assume difference */
- else if ( isnan1==1 || isnan2==1)
+ /* only one is NaN, assume difference */
+ else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
{
if ( print_data(options) )
{
@@ -6107,13 +6135,13 @@ static void set_comp_members(hid_t tid, mcomp_t *members)
members->flags = HDcalloc(members->n, sizeof(unsigned char));
members->offsets = HDcalloc(members->n, sizeof(size_t));
members->m = HDcalloc(members->n, sizeof(mcomp_t *));
-
- for (i=0; i< members->n; i++)
+
+ for (i=0; i< members->n; i++)
{
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 );
- if (H5Tget_class( members->ids[i])==H5T_COMPOUND)
+ if (H5Tget_class( members->ids[i])==H5T_COMPOUND)
{
members->m[i] = (mcomp_t *)HDmalloc(sizeof(mcomp_t));
set_comp_members(members->ids[i], members->m[i]);
@@ -6126,16 +6154,16 @@ static void set_comp_members(hid_t tid, mcomp_t *members)
* added to improve performance for compound datasets
* clean and close compound members.
*/
-static void free_comp_members(mcomp_t *members)
+static void free_comp_members(mcomp_t *members)
{
int i;
if (!members || members->n<=0 || !members->ids)
return;
- for (i=0; i<members->n; i++)
+ for (i=0; i<members->n; i++)
{
- if (members->m[i])
+ if (members->m[i])
{
free_comp_members(members->m[i]);
HDfree(members->m[i]);