[svn-r12815]
1) added a new parameter to the h5diff function diff_array that contains the beginning position of the hyperslab, so that the total position in the array is printed correctly when reading by hyperslabs. 2) added a new test to h5diff that reads and diffs by hyperslabs. The test reads a 1GB dataset, from which a 1KB hyperslab was written with differences . 3) added the generation of 2 files to the generator program to test the h5diff hyperslab read. 4) changed the h5diff binary pre-generated file names to be more descriptive (e.g, instead of file1.h5, made it h5diff_basic1.h5) 5) changed the name of the h5repack options text file to info.h5repack
This commit is contained in:
@@ -17,7 +17,6 @@
|
||||
#include "ph5diff.h"
|
||||
#include "H5private.h"
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* printf formatting
|
||||
*-------------------------------------------------------------------------
|
||||
@@ -43,26 +42,45 @@
|
||||
#define ULLI_FORMAT_P "%-15"H5_PRINTF_LL_WIDTH"u %-15"H5_PRINTF_LL_WIDTH"u %-15"H5_PRINTF_LL_WIDTH"d %-14f\n"
|
||||
#define SPACES " "
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* -p relative error formula
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#define PER(A,B) { per = -1; \
|
||||
if (A!=0) \
|
||||
per = (float)fabs(1-( (float)B / (float)A )); \
|
||||
}
|
||||
|
||||
|
||||
/* local functions */
|
||||
/*-------------------------------------------------------------------------
|
||||
* local prototypes
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static void close_obj(H5G_obj_t obj_type, hid_t obj_id);
|
||||
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 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 is_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,int rank,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 *acc,hsize_t *pos,diff_opt_t *options,const char *obj1,const char *obj2,int *ph);
|
||||
|
||||
|
||||
#ifdef NOT_YET
|
||||
#define EPSILON .0000001
|
||||
static hbool_t equal_float(float value, float expected);
|
||||
#define F_FORMAT_P_NOTCOMP "%-15.10g %-15.10g %-15.10g not comparable\n"
|
||||
#endif
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* Local functions
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: print_data
|
||||
*
|
||||
* Purpose: print data only in report or verbose modes,
|
||||
* and do not print in quiet mode
|
||||
* Purpose: print data only in report or verbose modes, and do not print in quiet mode
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static
|
||||
@@ -148,6 +166,7 @@ void print_pos( int *ph, /* print header */
|
||||
hsize_t diff_array( void *_mem1,
|
||||
void *_mem2,
|
||||
hsize_t nelmts,
|
||||
hsize_t hyper_start,
|
||||
int rank,
|
||||
hsize_t *dims,
|
||||
diff_opt_t *options,
|
||||
@@ -211,33 +230,33 @@ hsize_t diff_array( void *_mem1,
|
||||
case H5T_FLOAT:
|
||||
|
||||
if (H5Tequal(m_type, H5T_NATIVE_FLOAT))
|
||||
nfound=diff_float(mem1,mem2,nelmts,rank,acc,pos,options,name1,name2,&ph);
|
||||
nfound=diff_float(mem1,mem2,nelmts,hyper_start,rank,acc,pos,options,name1,name2,&ph);
|
||||
else if (H5Tequal(m_type, H5T_NATIVE_DOUBLE))
|
||||
nfound=diff_double(mem1,mem2,nelmts,rank,acc,pos,options,name1,name2,&ph);
|
||||
nfound=diff_double(mem1,mem2,nelmts,hyper_start,rank,acc,pos,options,name1,name2,&ph);
|
||||
break;
|
||||
|
||||
case H5T_INTEGER:
|
||||
|
||||
if (H5Tequal(m_type, H5T_NATIVE_SCHAR))
|
||||
nfound=diff_schar(mem1,mem2,nelmts,rank,acc,pos,options,name1,name2,&ph);
|
||||
nfound=diff_schar(mem1,mem2,nelmts,hyper_start,rank,acc,pos,options,name1,name2,&ph);
|
||||
else if (H5Tequal(m_type, H5T_NATIVE_UCHAR))
|
||||
nfound=diff_uchar(mem1,mem2,nelmts,rank,acc,pos,options,name1,name2,&ph);
|
||||
nfound=diff_uchar(mem1,mem2,nelmts,hyper_start,rank,acc,pos,options,name1,name2,&ph);
|
||||
else if (H5Tequal(m_type, H5T_NATIVE_SHORT))
|
||||
nfound=diff_short(mem1,mem2,nelmts,rank,acc,pos,options,name1,name2,&ph);
|
||||
nfound=diff_short(mem1,mem2,nelmts,hyper_start,rank,acc,pos,options,name1,name2,&ph);
|
||||
else if (H5Tequal(m_type, H5T_NATIVE_USHORT))
|
||||
nfound=diff_ushort(mem1,mem2,nelmts,rank,acc,pos,options,name1,name2,&ph);
|
||||
nfound=diff_ushort(mem1,mem2,nelmts,hyper_start,rank,acc,pos,options,name1,name2,&ph);
|
||||
else if (H5Tequal(m_type, H5T_NATIVE_INT))
|
||||
nfound=diff_int(mem1,mem2,nelmts,rank,acc,pos,options,name1,name2,&ph);
|
||||
nfound=diff_int(mem1,mem2,nelmts,hyper_start,rank,acc,pos,options,name1,name2,&ph);
|
||||
else if (H5Tequal(m_type, H5T_NATIVE_UINT))
|
||||
nfound=diff_uint(mem1,mem2,nelmts,rank,acc,pos,options,name1,name2,&ph);
|
||||
nfound=diff_uint(mem1,mem2,nelmts,hyper_start,rank,acc,pos,options,name1,name2,&ph);
|
||||
else if (H5Tequal(m_type, H5T_NATIVE_LONG))
|
||||
nfound=diff_long(mem1,mem2,nelmts,rank,acc,pos,options,name1,name2,&ph);
|
||||
nfound=diff_long(mem1,mem2,nelmts,hyper_start,rank,acc,pos,options,name1,name2,&ph);
|
||||
else if (H5Tequal(m_type, H5T_NATIVE_ULONG))
|
||||
nfound=diff_ulong(mem1,mem2,nelmts,rank,acc,pos,options,name1,name2,&ph);
|
||||
nfound=diff_ulong(mem1,mem2,nelmts,hyper_start,rank,acc,pos,options,name1,name2,&ph);
|
||||
else if (H5Tequal(m_type, H5T_NATIVE_LLONG))
|
||||
nfound=diff_llong(mem1,mem2,nelmts,rank,acc,pos,options,name1,name2,&ph);
|
||||
nfound=diff_llong(mem1,mem2,nelmts,hyper_start,rank,acc,pos,options,name1,name2,&ph);
|
||||
else if (H5Tequal(m_type, H5T_NATIVE_ULLONG))
|
||||
nfound=diff_ullong(mem1,mem2,nelmts,rank,acc,pos,options,name1,name2,&ph);
|
||||
nfound=diff_ullong(mem1,mem2,nelmts,hyper_start,rank,acc,pos,options,name1,name2,&ph);
|
||||
|
||||
break;
|
||||
|
||||
@@ -417,7 +436,7 @@ hsize_t diff_datum(void *_mem1,
|
||||
/* check for NULL pointer for string */
|
||||
if(s!=NULL)
|
||||
for (u=0; u<size && (s[u] || pad!=H5T_STR_NULLTERM); u++)
|
||||
nfound+=diff_char(
|
||||
nfound+=character_compare(
|
||||
mem1 + u,
|
||||
mem2 + u, /* offset */
|
||||
i, /* index position */
|
||||
@@ -440,7 +459,7 @@ hsize_t diff_datum(void *_mem1,
|
||||
{
|
||||
/* byte-by-byte comparison */
|
||||
for (u=0; u<type_size; u++)
|
||||
nfound+=diff_native_uchar(
|
||||
nfound+=character_compare_opt(
|
||||
mem1 + u,
|
||||
mem2 + u, /* offset */
|
||||
i, /* index position */
|
||||
@@ -463,7 +482,7 @@ hsize_t diff_datum(void *_mem1,
|
||||
|
||||
/* byte-by-byte comparison */
|
||||
for (u=0; u<type_size; u++)
|
||||
nfound+=diff_native_uchar(
|
||||
nfound+=character_compare_opt(
|
||||
mem1 + u,
|
||||
mem2 + u, /* offset */
|
||||
i, /* index position */
|
||||
@@ -513,7 +532,7 @@ hsize_t diff_datum(void *_mem1,
|
||||
else
|
||||
{
|
||||
for (u=0; u<type_size; u++)
|
||||
nfound+=diff_native_uchar(
|
||||
nfound+=character_compare_opt(
|
||||
mem1 + u,
|
||||
mem2 + u, /* offset */
|
||||
i, /* index position */
|
||||
@@ -1619,47 +1638,6 @@ hsize_t diff_datum(void *_mem1,
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: diff_char
|
||||
*
|
||||
* Purpose: do a byte-by-byte comparison and print in char format
|
||||
*
|
||||
* Return: number of differences found
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
hsize_t diff_char(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t i,
|
||||
int rank,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
diff_opt_t *options,
|
||||
const char *obj1,
|
||||
const char *obj2,
|
||||
int *ph)
|
||||
{
|
||||
hsize_t nfound=0; /* differences found */
|
||||
unsigned char temp1_uchar;
|
||||
unsigned char temp2_uchar;
|
||||
|
||||
memcpy(&temp1_uchar, mem1, sizeof(unsigned char));
|
||||
memcpy(&temp2_uchar, mem2, sizeof(unsigned char));
|
||||
|
||||
if (temp1_uchar != temp2_uchar)
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,0,i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(C_FORMAT,temp1_uchar,temp2_uchar);
|
||||
}
|
||||
nfound++;
|
||||
}
|
||||
|
||||
return nfound;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1965,7 +1943,51 @@ hsize_t diff_region(hid_t obj1_id,
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: diff_native_uchar
|
||||
* Function: character_compare
|
||||
*
|
||||
* Purpose: do a byte-by-byte comparison and print in char format
|
||||
*
|
||||
* Return: number of differences found
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
static
|
||||
hsize_t character_compare(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t i,
|
||||
int rank,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
diff_opt_t *options,
|
||||
const char *obj1,
|
||||
const char *obj2,
|
||||
int *ph)
|
||||
{
|
||||
hsize_t nfound=0; /* differences found */
|
||||
unsigned char temp1_uchar;
|
||||
unsigned char temp2_uchar;
|
||||
|
||||
memcpy(&temp1_uchar, mem1, sizeof(unsigned char));
|
||||
memcpy(&temp2_uchar, mem2, sizeof(unsigned char));
|
||||
|
||||
if (temp1_uchar != temp2_uchar)
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,0,i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(C_FORMAT,temp1_uchar,temp2_uchar);
|
||||
}
|
||||
nfound++;
|
||||
}
|
||||
|
||||
return nfound;
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: character_compare_opt
|
||||
*
|
||||
* Purpose: do a byte-by-byte comparison and print in numerical format
|
||||
*
|
||||
@@ -1974,7 +1996,7 @@ hsize_t diff_region(hid_t obj1_id,
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
hsize_t diff_native_uchar(unsigned char *mem1,
|
||||
hsize_t character_compare_opt(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t i,
|
||||
int rank,
|
||||
@@ -2071,6 +2093,7 @@ hsize_t diff_native_uchar(unsigned char *mem1,
|
||||
hsize_t diff_float(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t nelmts,
|
||||
hsize_t hyper_start,
|
||||
int rank,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
@@ -2099,7 +2122,7 @@ hsize_t diff_float(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,0,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,0,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(F_FORMAT,temp1_float,temp2_float,fabs(temp1_float-temp2_float));
|
||||
}
|
||||
@@ -2121,11 +2144,25 @@ hsize_t diff_float(unsigned char *mem1,
|
||||
memcpy(&temp2_float, mem2, sizeof(float));
|
||||
|
||||
PER(temp1_float,temp2_float);
|
||||
|
||||
#ifdef NOT_YET
|
||||
if (per==-1) /* not comparable */
|
||||
{
|
||||
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(F_FORMAT_P_NOTCOMP,temp1_float,temp2_float,
|
||||
fabs(temp1_float-temp2_float));
|
||||
options->not_cmp=1;
|
||||
}
|
||||
|
||||
else
|
||||
#endif
|
||||
|
||||
if ( per > options->percent )
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(F_FORMAT_P,temp1_float,temp2_float,
|
||||
fabs(temp1_float-temp2_float),
|
||||
@@ -2150,11 +2187,25 @@ hsize_t diff_float(unsigned char *mem1,
|
||||
memcpy(&temp2_float, mem2, sizeof(float));
|
||||
|
||||
PER(temp1_float,temp2_float);
|
||||
|
||||
#ifdef NOT_YET
|
||||
if (per==-1) /* not comparable */
|
||||
{
|
||||
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(F_FORMAT_P_NOTCOMP,temp1_float,temp2_float,
|
||||
fabs(temp1_float-temp2_float));
|
||||
options->not_cmp=1;
|
||||
}
|
||||
|
||||
else
|
||||
#endif
|
||||
|
||||
if ( per > options->percent && fabs(temp1_float-temp2_float) > options->delta )
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(F_FORMAT_P,temp1_float,temp2_float,
|
||||
fabs(temp1_float-temp2_float),
|
||||
@@ -2180,7 +2231,7 @@ hsize_t diff_float(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,0,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,0,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(F_FORMAT,temp1_float,temp2_float,fabs(temp1_float-temp2_float));
|
||||
}
|
||||
@@ -2212,6 +2263,7 @@ hsize_t diff_float(unsigned char *mem1,
|
||||
hsize_t diff_double(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t nelmts,
|
||||
hsize_t hyper_start,
|
||||
int rank,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
@@ -2241,7 +2293,7 @@ hsize_t diff_double(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,0,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,0,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(F_FORMAT,temp1_double,temp2_double,fabs(temp1_double-temp2_double));
|
||||
}
|
||||
@@ -2268,7 +2320,7 @@ hsize_t diff_double(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(F_FORMAT_P,temp1_double,temp2_double,
|
||||
fabs(temp1_double-temp2_double),
|
||||
@@ -2297,7 +2349,7 @@ hsize_t diff_double(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(F_FORMAT_P,temp1_double,temp2_double,
|
||||
fabs(temp1_double-temp2_double),
|
||||
@@ -2323,7 +2375,7 @@ hsize_t diff_double(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,0,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,0,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(F_FORMAT,temp1_double,temp2_double,fabs(temp1_double-temp2_double));
|
||||
}
|
||||
@@ -2353,6 +2405,7 @@ hsize_t diff_double(unsigned char *mem1,
|
||||
hsize_t diff_schar(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t nelmts,
|
||||
hsize_t hyper_start,
|
||||
int rank,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
@@ -2382,7 +2435,7 @@ hsize_t diff_schar(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,0,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,0,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(I_FORMAT,temp1_char,temp2_char,abs(temp1_char-temp2_char));
|
||||
}
|
||||
@@ -2409,7 +2462,7 @@ hsize_t diff_schar(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(I_FORMAT_P,temp1_char,temp2_char,
|
||||
abs(temp1_char-temp2_char),
|
||||
@@ -2438,7 +2491,7 @@ hsize_t diff_schar(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(I_FORMAT_P,temp1_char,temp2_char,
|
||||
abs(temp1_char-temp2_char),
|
||||
@@ -2465,7 +2518,7 @@ hsize_t diff_schar(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,0,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,0,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(I_FORMAT,temp1_char,temp2_char,abs(temp1_char-temp2_char));
|
||||
}
|
||||
@@ -2497,6 +2550,7 @@ hsize_t diff_schar(unsigned char *mem1,
|
||||
hsize_t diff_uchar(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t nelmts,
|
||||
hsize_t hyper_start,
|
||||
int rank,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
@@ -2526,7 +2580,7 @@ hsize_t diff_uchar(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,0,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,0,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(I_FORMAT,temp1_uchar,temp2_uchar,abs(temp1_uchar-temp2_uchar));
|
||||
}
|
||||
@@ -2554,7 +2608,7 @@ hsize_t diff_uchar(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(I_FORMAT_P,temp1_uchar,temp2_uchar,
|
||||
abs(temp1_uchar-temp2_uchar),
|
||||
@@ -2583,7 +2637,7 @@ hsize_t diff_uchar(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(I_FORMAT_P,temp1_uchar,temp2_uchar,
|
||||
abs(temp1_uchar-temp2_uchar),
|
||||
@@ -2610,7 +2664,7 @@ hsize_t diff_uchar(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,0,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,0,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(I_FORMAT,temp1_uchar,temp2_uchar,abs(temp1_uchar-temp2_uchar));
|
||||
}
|
||||
@@ -2640,6 +2694,7 @@ hsize_t diff_uchar(unsigned char *mem1,
|
||||
hsize_t diff_short(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t nelmts,
|
||||
hsize_t hyper_start,
|
||||
int rank,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
@@ -2669,7 +2724,7 @@ hsize_t diff_short(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,0,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,0,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(I_FORMAT,temp1_short,temp2_short,abs(temp1_short-temp2_short));
|
||||
}
|
||||
@@ -2697,7 +2752,7 @@ hsize_t diff_short(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(I_FORMAT_P,temp1_short,temp2_short,
|
||||
abs(temp1_short-temp2_short),
|
||||
@@ -2728,7 +2783,7 @@ hsize_t diff_short(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(I_FORMAT_P,temp1_short,temp2_short,
|
||||
abs(temp1_short-temp2_short),
|
||||
@@ -2755,7 +2810,7 @@ hsize_t diff_short(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,0,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,0,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(I_FORMAT,temp1_short,temp2_short,abs(temp1_short-temp2_short));
|
||||
}
|
||||
@@ -2786,6 +2841,7 @@ hsize_t diff_short(unsigned char *mem1,
|
||||
hsize_t diff_ushort(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t nelmts,
|
||||
hsize_t hyper_start,
|
||||
int rank,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
@@ -2814,7 +2870,7 @@ hsize_t diff_ushort(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,0,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,0,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(I_FORMAT,temp1_ushort,temp2_ushort,abs(temp1_ushort-temp2_ushort));
|
||||
}
|
||||
@@ -2842,7 +2898,7 @@ hsize_t diff_ushort(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(I_FORMAT_P,temp1_ushort,temp2_ushort,
|
||||
abs(temp1_ushort-temp2_ushort),
|
||||
@@ -2873,7 +2929,7 @@ hsize_t diff_ushort(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(I_FORMAT_P,temp1_ushort,temp2_ushort,
|
||||
abs(temp1_ushort-temp2_ushort),
|
||||
@@ -2900,7 +2956,7 @@ hsize_t diff_ushort(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,0,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,0,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(I_FORMAT,temp1_ushort,temp2_ushort,abs(temp1_ushort-temp2_ushort));
|
||||
}
|
||||
@@ -2932,6 +2988,7 @@ hsize_t diff_ushort(unsigned char *mem1,
|
||||
hsize_t diff_int(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t nelmts,
|
||||
hsize_t hyper_start,
|
||||
int rank,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
@@ -2960,7 +3017,7 @@ hsize_t diff_int(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,0,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,0,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(I_FORMAT,temp1_int,temp2_int,abs(temp1_int-temp2_int));
|
||||
}
|
||||
@@ -2988,7 +3045,7 @@ hsize_t diff_int(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(I_FORMAT_P,temp1_int,temp2_int,
|
||||
abs(temp1_int-temp2_int),
|
||||
@@ -3019,7 +3076,7 @@ hsize_t diff_int(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(I_FORMAT_P,temp1_int,temp2_int,
|
||||
abs(temp1_int-temp2_int),
|
||||
@@ -3046,7 +3103,7 @@ hsize_t diff_int(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,0,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,0,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(I_FORMAT,temp1_int,temp2_int,abs(temp1_int-temp2_int));
|
||||
}
|
||||
@@ -3078,6 +3135,7 @@ hsize_t diff_int(unsigned char *mem1,
|
||||
hsize_t diff_uint(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t nelmts,
|
||||
hsize_t hyper_start,
|
||||
int rank,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
@@ -3106,7 +3164,7 @@ hsize_t diff_uint(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,0,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,0,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(I_FORMAT,temp1_uint,temp2_uint,abs(temp1_uint-temp2_uint));
|
||||
}
|
||||
@@ -3134,7 +3192,7 @@ hsize_t diff_uint(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(I_FORMAT_P,temp1_uint,temp2_uint,
|
||||
abs(temp1_uint-temp2_uint),
|
||||
@@ -3165,7 +3223,7 @@ hsize_t diff_uint(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(I_FORMAT_P,temp1_uint,temp2_uint,
|
||||
abs(temp1_uint-temp2_uint),
|
||||
@@ -3192,7 +3250,7 @@ hsize_t diff_uint(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,0,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,0,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(I_FORMAT,temp1_uint,temp2_uint,abs(temp1_uint-temp2_uint));
|
||||
}
|
||||
@@ -3224,6 +3282,7 @@ hsize_t diff_uint(unsigned char *mem1,
|
||||
hsize_t diff_long(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t nelmts,
|
||||
hsize_t hyper_start,
|
||||
int rank,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
@@ -3255,7 +3314,7 @@ hsize_t diff_long(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,0,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,0,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(LI_FORMAT,temp1_long,temp2_long,labs(temp1_long-temp2_long));
|
||||
}
|
||||
@@ -3283,7 +3342,7 @@ hsize_t diff_long(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(LI_FORMAT_P,temp1_long,temp2_long,
|
||||
labs(temp1_long-temp2_long),
|
||||
@@ -3314,7 +3373,7 @@ hsize_t diff_long(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(LI_FORMAT_P,temp1_long,temp2_long,
|
||||
labs(temp1_long-temp2_long),
|
||||
@@ -3341,7 +3400,7 @@ hsize_t diff_long(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,0,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,0,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(LI_FORMAT,temp1_long,temp2_long,labs(temp1_long-temp2_long));
|
||||
}
|
||||
@@ -3374,6 +3433,7 @@ hsize_t diff_long(unsigned char *mem1,
|
||||
hsize_t diff_ulong(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t nelmts,
|
||||
hsize_t hyper_start,
|
||||
int rank,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
@@ -3406,7 +3466,7 @@ hsize_t diff_ulong(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,0,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,0,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(LI_FORMAT,temp1_ulong,temp2_ulong,labs(temp1_ulong-temp2_ulong));
|
||||
}
|
||||
@@ -3436,7 +3496,7 @@ hsize_t diff_ulong(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(LI_FORMAT_P,temp1_ulong,temp2_ulong,
|
||||
labs(temp1_ulong-temp2_ulong),
|
||||
@@ -3467,7 +3527,7 @@ hsize_t diff_ulong(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(LI_FORMAT_P,temp1_ulong,temp2_ulong,
|
||||
labs(temp1_ulong-temp2_ulong),
|
||||
@@ -3494,7 +3554,7 @@ hsize_t diff_ulong(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,0,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,0,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(LI_FORMAT,temp1_ulong,temp2_ulong,labs(temp1_ulong-temp2_ulong));
|
||||
}
|
||||
@@ -3526,6 +3586,7 @@ hsize_t diff_ulong(unsigned char *mem1,
|
||||
hsize_t diff_llong(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t nelmts,
|
||||
hsize_t hyper_start,
|
||||
int rank,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
@@ -3554,7 +3615,7 @@ hsize_t diff_llong(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,0,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,0,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(LLI_FORMAT,temp1_llong,temp2_llong,
|
||||
(long_long)labs((long)(temp1_llong-temp2_llong)));
|
||||
@@ -3583,7 +3644,7 @@ hsize_t diff_llong(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(LLI_FORMAT_P,temp1_llong,temp2_llong,
|
||||
(long_long)labs((long)(temp1_llong-temp2_llong)),
|
||||
@@ -3614,7 +3675,7 @@ hsize_t diff_llong(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(LLI_FORMAT_P,temp1_llong,temp2_llong,
|
||||
(long_long)labs((long)(temp1_llong-temp2_llong)),
|
||||
@@ -3641,7 +3702,7 @@ hsize_t diff_llong(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,0,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,0,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(LLI_FORMAT,temp1_llong,temp2_llong,
|
||||
(long_long)labs((long)(temp1_llong-temp2_llong)));
|
||||
@@ -3675,6 +3736,7 @@ hsize_t diff_llong(unsigned char *mem1,
|
||||
hsize_t diff_ullong(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t nelmts,
|
||||
hsize_t hyper_start,
|
||||
int rank,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
@@ -3703,7 +3765,7 @@ hsize_t diff_ullong(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,0,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,0,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(ULLI_FORMAT,temp1_ullong,temp2_ullong,
|
||||
(unsigned long_long)labs((long)(temp1_ullong-temp2_ullong)));
|
||||
@@ -3734,7 +3796,7 @@ hsize_t diff_ullong(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(ULLI_FORMAT_P,temp1_ullong,temp2_ullong,
|
||||
(unsigned long_long)labs((long)(temp1_ullong-temp2_ullong)),
|
||||
@@ -3767,7 +3829,7 @@ hsize_t diff_ullong(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,1,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,1,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(ULLI_FORMAT_P,temp1_ullong,temp2_ullong,
|
||||
(unsigned long_long)labs((long)(temp1_ullong-temp2_ullong)),
|
||||
@@ -3794,7 +3856,7 @@ hsize_t diff_ullong(unsigned char *mem1,
|
||||
{
|
||||
if ( print_data(options) )
|
||||
{
|
||||
print_pos(ph,0,i,acc,pos,rank,obj1,obj2);
|
||||
print_pos(ph,0,hyper_start+i,acc,pos,rank,obj1,obj2);
|
||||
parallel_print(SPACES);
|
||||
parallel_print(ULLI_FORMAT,temp1_ullong,temp2_ullong,
|
||||
(unsigned long_long)labs((long)(temp1_ullong-temp2_ullong)));
|
||||
@@ -3864,3 +3926,33 @@ error:
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: equal_float
|
||||
*
|
||||
* Purpose: use a relative error formula to deal with floating point
|
||||
* uncertainty
|
||||
*
|
||||
* Programmer: pvn
|
||||
* October 24, 2006
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#ifdef NOT_YET
|
||||
static
|
||||
hbool_t equal_float(float value, float expected)
|
||||
{
|
||||
if ( fabs( (value-expected) / expected) < EPSILON)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user