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.c331
1 files changed, 114 insertions, 217 deletions
diff --git a/tools/lib/h5diff_array.c b/tools/lib/h5diff_array.c
index 89e0c4a..fa4ebec 100644
--- a/tools/lib/h5diff_array.c
+++ b/tools/lib/h5diff_array.c
@@ -22,7 +22,6 @@
*-------------------------------------------------------------------------
*/
-#define COMP_0
#define F_FORMAT "%-15f %-15f %-15f\n"
#define I_FORMAT "%-15d %-15d %-15d\n"
#define C_FORMAT "%-16c %-17c\n"
@@ -53,15 +52,30 @@
#define ULLI_FORMAT_P_NOTCOMP "%-15"H5_PRINTF_LL_WIDTH"u %-15"H5_PRINTF_LL_WIDTH"u %-15"H5_PRINTF_LL_WIDTH"d not comparable\n"
+static int both_zero;
+static float per;
/*-------------------------------------------------------------------------
* -p relative error formula
+ *
+ * We assume the true value of a quantity to be A (value in first dataset)
+ * and the measured or inferred value to be B (value in second dataset).
+ * The relative error is defined by
+ *
+ * B - A
+ * --------
+ * A
+ *
+
*-------------------------------------------------------------------------
*/
#define PER(A,B) { per = -1; \
+ both_zero=0; \
+ if (A==0 && B==0) \
+ both_zero=1; \
if (A!=0) \
- per = (float)fabs(1-( (float)B / (float)A )); \
+ per = (float)fabs( ((float)B - (float)A) / (float) A ); \
}
/*-------------------------------------------------------------------------
@@ -239,6 +253,11 @@ hsize_t diff_array( void *_mem1,
assert(0);
break;
+ /*-------------------------------------------------------------------------
+ * float and integer atomic types
+ *-------------------------------------------------------------------------
+ */
+
case H5T_FLOAT:
if (H5Tequal(m_type, H5T_NATIVE_FLOAT))
@@ -272,6 +291,11 @@ hsize_t diff_array( void *_mem1,
break;
+ /*-------------------------------------------------------------------------
+ * Other types than float and integer
+ *-------------------------------------------------------------------------
+ */
+
case H5T_COMPOUND:
case H5T_STRING:
case H5T_BITFIELD:
@@ -378,7 +402,7 @@ hsize_t diff_datum(void *_mem1,
hid_t obj2_id;
hsize_t nfound=0; /* differences found */
int ret=0; /* check return error */
- float f1, f2, per;
+ float f1, f2;
type_size = H5Tget_size( m_type );
@@ -772,8 +796,7 @@ hsize_t diff_datum(void *_mem1,
{
PER(temp1_char,temp2_char);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -784,7 +807,7 @@ hsize_t diff_datum(void *_mem1,
}
else
-#endif
+
if ( per > options->percent )
{
if ( print_data(options) )
@@ -803,8 +826,7 @@ hsize_t diff_datum(void *_mem1,
{
PER(temp1_char,temp2_char);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -815,7 +837,6 @@ hsize_t diff_datum(void *_mem1,
}
else
-#endif
if ( per > options->percent && abs(temp1_char-temp2_char) > options->delta )
{
@@ -874,8 +895,7 @@ hsize_t diff_datum(void *_mem1,
{
PER(temp1_uchar,temp2_uchar);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -886,7 +906,7 @@ hsize_t diff_datum(void *_mem1,
}
else
-#endif
+
if ( per > options->percent )
{
if ( print_data(options) )
@@ -905,8 +925,7 @@ hsize_t diff_datum(void *_mem1,
{
PER(temp1_uchar,temp2_uchar);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -917,7 +936,7 @@ hsize_t diff_datum(void *_mem1,
}
else
-#endif
+
if ( per > options->percent && abs(temp1_uchar-temp2_uchar) > options->delta )
{
if ( print_data(options) )
@@ -977,8 +996,7 @@ hsize_t diff_datum(void *_mem1,
{
PER(temp1_short,temp2_short);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -989,7 +1007,6 @@ hsize_t diff_datum(void *_mem1,
}
else
-#endif
if ( per > options->percent )
{
@@ -1009,8 +1026,7 @@ hsize_t diff_datum(void *_mem1,
{
PER(temp1_short,temp2_short);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -1021,7 +1037,7 @@ hsize_t diff_datum(void *_mem1,
}
else
-#endif
+
if ( per > options->percent && abs(temp1_short-temp2_short) > options->delta )
{
if ( print_data(options) )
@@ -1082,8 +1098,7 @@ hsize_t diff_datum(void *_mem1,
{
PER(temp1_ushort,temp2_ushort);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -1094,7 +1109,7 @@ hsize_t diff_datum(void *_mem1,
}
else
-#endif
+
if ( per > options->percent )
{
if ( print_data(options) )
@@ -1113,8 +1128,7 @@ hsize_t diff_datum(void *_mem1,
{
PER(temp1_ushort,temp2_ushort);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -1125,7 +1139,7 @@ hsize_t diff_datum(void *_mem1,
}
else
-#endif
+
if ( per > options->percent && abs(temp1_ushort-temp2_ushort) > options->delta )
{
if ( print_data(options) )
@@ -1184,8 +1198,7 @@ hsize_t diff_datum(void *_mem1,
{
PER(temp1_int,temp2_int);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -1196,7 +1209,7 @@ hsize_t diff_datum(void *_mem1,
}
else
-#endif
+
if ( per > options->percent )
{
if ( print_data(options) )
@@ -1216,8 +1229,7 @@ hsize_t diff_datum(void *_mem1,
{
PER(temp1_int,temp2_int);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -1228,7 +1240,7 @@ hsize_t diff_datum(void *_mem1,
}
else
-#endif
+
if ( per > options->percent && abs(temp1_int-temp2_int) > options->delta )
{
if ( print_data(options) )
@@ -1287,8 +1299,7 @@ hsize_t diff_datum(void *_mem1,
{
PER(temp1_uint,temp2_uint);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -1299,7 +1310,6 @@ hsize_t diff_datum(void *_mem1,
}
else
-#endif
if ( per > options->percent )
{
@@ -1319,8 +1329,7 @@ hsize_t diff_datum(void *_mem1,
{
PER(temp1_uint,temp2_uint);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -1331,7 +1340,7 @@ hsize_t diff_datum(void *_mem1,
}
else
-#endif
+
if ( per > options->percent && abs((int)(temp1_uint-temp2_uint)) > options->delta )
{
if ( print_data(options) )
@@ -1390,8 +1399,7 @@ hsize_t diff_datum(void *_mem1,
{
PER(temp1_long,temp2_long);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -1402,7 +1410,7 @@ hsize_t diff_datum(void *_mem1,
}
else
-#endif
+
if ( per > options->percent )
{
if ( print_data(options) )
@@ -1421,8 +1429,7 @@ hsize_t diff_datum(void *_mem1,
{
PER(temp1_long,temp2_long);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -1433,7 +1440,7 @@ hsize_t diff_datum(void *_mem1,
}
else
-#endif
+
if ( per > options->percent && labs(temp1_long-temp2_long) > (long)options->delta )
{
if ( print_data(options) )
@@ -1491,8 +1498,7 @@ hsize_t diff_datum(void *_mem1,
{
PER(temp1_ulong,temp2_ulong);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -1503,7 +1509,7 @@ hsize_t diff_datum(void *_mem1,
}
else
-#endif
+
if ( per > options->percent )
{
if ( print_data(options) )
@@ -1522,8 +1528,7 @@ hsize_t diff_datum(void *_mem1,
{
PER(temp1_ulong,temp2_ulong);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -1534,7 +1539,7 @@ hsize_t diff_datum(void *_mem1,
}
else
-#endif
+
if ( per > options->percent && labs((long)(temp1_ulong-temp2_ulong)) > (long)options->delta )
{
if ( print_data(options) )
@@ -1595,8 +1600,7 @@ hsize_t diff_datum(void *_mem1,
{
PER(temp1_llong,temp2_llong);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -1607,7 +1611,7 @@ hsize_t diff_datum(void *_mem1,
}
else
-#endif
+
if ( per > options->percent )
{
if ( print_data(options) )
@@ -1626,8 +1630,7 @@ hsize_t diff_datum(void *_mem1,
{
PER(temp1_llong,temp2_llong);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -1638,7 +1641,7 @@ hsize_t diff_datum(void *_mem1,
}
else
-#endif
+
if ( per > options->percent && labs((long)(temp1_llong-temp2_llong)) > (long)options->delta )
{
if ( print_data(options) )
@@ -1701,8 +1704,7 @@ hsize_t diff_datum(void *_mem1,
ull2float(temp2_ullong,&f2);
PER(f1,f2);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -1713,7 +1715,6 @@ hsize_t diff_datum(void *_mem1,
}
else
-#endif
if ( per > options->percent )
{
@@ -1736,8 +1737,7 @@ hsize_t diff_datum(void *_mem1,
ull2float(temp2_ullong,&f2);
PER(f1,f2);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -1748,7 +1748,7 @@ hsize_t diff_datum(void *_mem1,
}
else
-#endif
+
if ( per > options->percent && labs((long)(temp1_ullong-temp2_ullong)) > (long)options->delta )
{
@@ -1814,27 +1814,9 @@ hsize_t diff_datum(void *_mem1,
{
-#if 0
- if ( temp1_float!=0 && fabs(1-temp2_float/temp1_float) > options->percent )
- {
-
- if ( print_data(options) )
- {
- print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
- parallel_print(SPACES);
- parallel_print(F_FORMAT_P,temp1_float,temp2_float,fabs(temp1_float-temp2_float),
- fabs(1-temp2_float/temp1_float));
- }
- nfound++;
- }
- }
-#endif
-
-
PER(temp1_float,temp2_float);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -1845,7 +1827,6 @@ hsize_t diff_datum(void *_mem1,
}
else
-#endif
if ( per > options->percent && fabs(temp1_float-temp2_float) > options->delta )
{
@@ -1865,27 +1846,9 @@ hsize_t diff_datum(void *_mem1,
else if ( options->d && options->p)
{
-#if 0
- if ( temp1_float!=0 && fabs(1-temp2_float/temp1_float) > options->percent &&
- fabs(temp1_float-temp2_float) > options->delta )
- {
- if ( print_data(options) )
- {
- print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
-
- parallel_print(SPACES);
- parallel_print(F_FORMAT_P,temp1_float,temp2_float,fabs(temp1_float-temp2_float),
- fabs(1-temp2_float/temp1_float));
- }
- nfound++;
- }
- }
-#endif
-
PER(temp1_float,temp2_float);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -1896,7 +1859,6 @@ hsize_t diff_datum(void *_mem1,
}
else
-#endif
if ( per > options->percent )
{
@@ -1957,25 +1919,10 @@ hsize_t diff_datum(void *_mem1,
/* !-d and -p */
else if (!options->d && options->p)
{
-
-#if 0
- if ( temp1_double!=0 && fabs(1-temp2_double/temp1_double) > options->percent )
- {
- if ( print_data(options) )
- {
- print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
- parallel_print(SPACES);
- parallel_print(F_FORMAT_P,temp1_double,temp2_double,fabs(temp1_double-temp2_double), fabs(1-temp2_double/temp1_double));
- }
- nfound++;
- }
- }
-#endif
PER(temp1_double,temp2_double);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -1986,7 +1933,6 @@ hsize_t diff_datum(void *_mem1,
}
else
-#endif
if ( per > options->percent )
{
@@ -2006,27 +1952,10 @@ hsize_t diff_datum(void *_mem1,
/* -d and -p */
else if ( options->d && options->p)
{
-
-#if 0
- if ( temp1_double!=0 && fabs(1-temp2_double/temp1_double) > options->percent &&
- fabs(temp1_double-temp2_double) > options->delta )
- {
-
- if ( print_data(options) )
- {
- print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
- parallel_print(SPACES);
- parallel_print(F_FORMAT_P,temp1_double,temp2_double,fabs(temp1_double-temp2_double), fabs(1-temp2_double/temp1_double));
- }
- nfound++;
- }
- }
-#endif
-
+
PER(temp1_double,temp2_double);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -2037,7 +1966,6 @@ hsize_t diff_datum(void *_mem1,
}
else
-#endif
if ( per > options->percent &&
fabs(temp1_double-temp2_double) > options->delta )
@@ -2450,7 +2378,6 @@ hsize_t character_compare_opt(unsigned char *mem1,
hsize_t nfound=0; /* differences found */
unsigned char temp1_uchar;
unsigned char temp2_uchar;
- float per;
memcpy(&temp1_uchar, mem1, sizeof(unsigned char));
memcpy(&temp2_uchar, mem2, sizeof(unsigned char));
@@ -2584,8 +2511,7 @@ hsize_t diff_float(unsigned char *mem1,
PER(temp1_float,temp2_float);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -2596,7 +2522,6 @@ hsize_t diff_float(unsigned char *mem1,
}
else
-#endif
if ( per > options->percent )
{
@@ -2628,8 +2553,7 @@ hsize_t diff_float(unsigned char *mem1,
PER(temp1_float,temp2_float);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -2640,7 +2564,6 @@ hsize_t diff_float(unsigned char *mem1,
}
else
-#endif
if ( per > options->percent && fabs(temp1_float-temp2_float) > options->delta )
{
@@ -2758,8 +2681,7 @@ hsize_t diff_double(unsigned char *mem1,
PER(temp1_double,temp2_double);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -2770,7 +2692,6 @@ hsize_t diff_double(unsigned char *mem1,
}
else
-#endif
if ( per > options->percent )
{
@@ -2802,8 +2723,7 @@ hsize_t diff_double(unsigned char *mem1,
PER(temp1_double,temp2_double);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -2814,7 +2734,6 @@ hsize_t diff_double(unsigned char *mem1,
}
else
-#endif
if ( per > options->percent && fabs(temp1_double-temp2_double) > options->delta )
{
@@ -2930,8 +2849,7 @@ hsize_t diff_schar(unsigned char *mem1,
PER(temp1_char,temp2_char);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -2942,7 +2860,6 @@ hsize_t diff_schar(unsigned char *mem1,
}
else
-#endif
if ( per > options->percent )
{
@@ -2974,8 +2891,7 @@ hsize_t diff_schar(unsigned char *mem1,
PER(temp1_char,temp2_char);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -2986,7 +2902,6 @@ hsize_t diff_schar(unsigned char *mem1,
}
else
-#endif
if ( per > options->percent && abs(temp1_char-temp2_char) > options->delta )
{
@@ -3106,8 +3021,7 @@ hsize_t diff_uchar(unsigned char *mem1,
PER(temp1_uchar,temp2_uchar);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -3118,7 +3032,6 @@ hsize_t diff_uchar(unsigned char *mem1,
}
else
-#endif
if ( per > options->percent )
{
@@ -3150,8 +3063,7 @@ hsize_t diff_uchar(unsigned char *mem1,
PER(temp1_uchar,temp2_uchar);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -3162,7 +3074,6 @@ hsize_t diff_uchar(unsigned char *mem1,
}
else
-#endif
if ( per > options->percent && abs(temp1_uchar-temp2_uchar) > options->delta )
{
@@ -3280,8 +3191,7 @@ hsize_t diff_short(unsigned char *mem1,
PER(temp1_short,temp2_short);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -3292,7 +3202,7 @@ hsize_t diff_short(unsigned char *mem1,
}
else
-#endif
+
if ( per > options->percent )
{
if ( print_data(options) )
@@ -3325,8 +3235,7 @@ hsize_t diff_short(unsigned char *mem1,
PER(temp1_short,temp2_short);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -3337,7 +3246,7 @@ hsize_t diff_short(unsigned char *mem1,
}
else
-#endif
+
if ( per > options->percent && abs(temp1_short-temp2_short) > options->delta )
{
if ( print_data(options) )
@@ -3454,8 +3363,7 @@ hsize_t diff_ushort(unsigned char *mem1,
PER(temp1_ushort,temp2_ushort);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -3466,7 +3374,7 @@ hsize_t diff_ushort(unsigned char *mem1,
}
else
-#endif
+
if ( per > options->percent )
{
if ( print_data(options) )
@@ -3499,8 +3407,7 @@ hsize_t diff_ushort(unsigned char *mem1,
PER(temp1_ushort,temp2_ushort);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -3511,7 +3418,7 @@ hsize_t diff_ushort(unsigned char *mem1,
}
else
-#endif
+
if ( per > options->percent && abs(temp1_ushort-temp2_ushort) > options->delta )
{
if ( print_data(options) )
@@ -3629,8 +3536,7 @@ hsize_t diff_int(unsigned char *mem1,
PER(temp1_int,temp2_int);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -3641,7 +3547,7 @@ hsize_t diff_int(unsigned char *mem1,
}
else
-#endif
+
if ( per > options->percent )
{
if ( print_data(options) )
@@ -3674,8 +3580,7 @@ hsize_t diff_int(unsigned char *mem1,
PER(temp1_int,temp2_int);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -3686,7 +3591,7 @@ hsize_t diff_int(unsigned char *mem1,
}
else
-#endif
+
if ( per > options->percent && abs(temp1_int-temp2_int) > options->delta )
{
if ( print_data(options) )
@@ -3804,8 +3709,7 @@ hsize_t diff_uint(unsigned char *mem1,
PER(temp1_uint,temp2_uint);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -3816,7 +3720,7 @@ hsize_t diff_uint(unsigned char *mem1,
}
else
-#endif
+
if ( per > options->percent )
{
if ( print_data(options) )
@@ -3849,8 +3753,7 @@ hsize_t diff_uint(unsigned char *mem1,
PER(temp1_uint,temp2_uint);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -3861,7 +3764,7 @@ hsize_t diff_uint(unsigned char *mem1,
}
else
-#endif
+
if ( per > options->percent && abs(temp1_uint-temp2_uint) > options->delta )
{
if ( print_data(options) )
@@ -3982,8 +3885,7 @@ hsize_t diff_long(unsigned char *mem1,
PER(temp1_long,temp2_long);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -3994,7 +3896,7 @@ hsize_t diff_long(unsigned char *mem1,
}
else
-#endif
+
if ( per > options->percent )
{
if ( print_data(options) )
@@ -4027,8 +3929,7 @@ hsize_t diff_long(unsigned char *mem1,
PER(temp1_long,temp2_long);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -4039,7 +3940,7 @@ hsize_t diff_long(unsigned char *mem1,
}
else
-#endif
+
if ( per > options->percent && labs(temp1_long-temp2_long) > options->delta )
{
if ( print_data(options) )
@@ -4164,8 +4065,7 @@ hsize_t diff_ulong(unsigned char *mem1,
PER(temp1_ulong,temp2_ulong);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -4176,8 +4076,8 @@ hsize_t diff_ulong(unsigned char *mem1,
}
else
-#endif
- if ( per > options->percent )
+
+ if ( per > options->percent )
{
if ( print_data(options) )
{
@@ -4209,8 +4109,7 @@ hsize_t diff_ulong(unsigned char *mem1,
PER(temp1_ulong,temp2_ulong);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -4221,7 +4120,7 @@ hsize_t diff_ulong(unsigned char *mem1,
}
else
-#endif
+
if ( per > options->percent && labs(temp1_ulong-temp2_ulong) > options->delta )
{
if ( print_data(options) )
@@ -4339,8 +4238,8 @@ hsize_t diff_llong(unsigned char *mem1,
memcpy(&temp2_llong, mem2, sizeof(long_long));
PER(temp1_llong,temp2_llong);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -4351,8 +4250,8 @@ hsize_t diff_llong(unsigned char *mem1,
}
else
-#endif
- if ( per > options->percent )
+
+ if ( per > options->percent )
{
if ( print_data(options) )
{
@@ -4383,8 +4282,8 @@ hsize_t diff_llong(unsigned char *mem1,
memcpy(&temp2_llong, mem2, sizeof(long_long));
PER(temp1_llong,temp2_llong);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -4395,7 +4294,7 @@ hsize_t diff_llong(unsigned char *mem1,
}
else
-#endif
+
if ( per > options->percent && labs((long)(temp1_llong-temp2_llong)) > options->delta )
{
if ( print_data(options) )
@@ -4518,8 +4417,7 @@ hsize_t diff_ullong(unsigned char *mem1,
ull2float(temp2_ullong,&f2);
PER(f1,f2);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -4530,8 +4428,8 @@ hsize_t diff_ullong(unsigned char *mem1,
}
else
-#endif
- if ( per > options->percent )
+
+ if ( per > options->percent )
{
if ( print_data(options) )
{
@@ -4565,8 +4463,7 @@ hsize_t diff_ullong(unsigned char *mem1,
ull2float(temp2_ullong,&f2);
PER(f1,f2);
-#ifdef COMP_0
- if (per==-1) /* not comparable */
+ if (per==-1 && !both_zero) /* not comparable */
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
parallel_print(SPACES);
@@ -4577,8 +4474,8 @@ hsize_t diff_ullong(unsigned char *mem1,
}
else
-#endif
- if ( per > options->percent && labs((long)(temp1_ullong-temp2_ullong)) > options->delta )
+
+ if ( per > options->percent && labs((long)(temp1_ullong-temp2_ullong)) > options->delta )
{
if ( print_data(options) )
{