[svn-r17467] " Use strict equality as default

"   Use "--use-system-epsilon" for system EPSILON
"   Use "-p" or "-d" for whatever user's choice of epsilon
"   Use "-p 0" or "-d 0" for strict equality (same as default)
This commit is contained in:
Peter Cao
2009-09-11 15:15:22 -05:00
parent 258d4b3835
commit aeec66cf49
18 changed files with 183 additions and 402 deletions

View File

@@ -43,6 +43,7 @@ static struct long_options l_opts[] = {
{ "relative", require_arg, 'p' },
{ "nan", no_arg, 'N' },
{ "compare", no_arg, 'c' },
{ "use-system-epsilon", no_arg, 'e' },
{ NULL, 0, '\0' }
};
@@ -109,6 +110,11 @@ void parse_command_line(int argc,
h5diff_exit(EXIT_FAILURE);
}
options->delta = atof( opt_arg );
/* -d 0 is the same as default */
if (options->delta == 0)
options->d=0;
break;
case 'p':
@@ -121,6 +127,11 @@ void parse_command_line(int argc,
h5diff_exit(EXIT_FAILURE);
}
options->percent = atof( opt_arg );
/* -p 0 is the same as default */
if (options->percent == 0)
options->p = 0;
break;
case 'n':
@@ -142,9 +153,16 @@ void parse_command_line(int argc,
case 'c':
options->m_list_not_cmp = 1;
break;
case 'e':
options->use_system_epsilon = 1;
break;
}
}
/* if use system epsilon, unset -p and -d option */
if (options->use_system_epsilon)
options->d = options->p = 0;
/* check for file names to be processed */
if (argc <= opt_ind || argv[ opt_ind + 1 ] == NULL)
{
@@ -277,7 +295,7 @@ check_p_input( const char *str )
return -1;
x=atof(str);
if (x<=0)
if (x<0)
return -1;
return 1;
@@ -311,7 +329,7 @@ check_d_input( const char *str )
return -1;
x=atof(str);
if (x <=0)
if (x <0)
return -1;
return 1;
@@ -344,18 +362,18 @@ void usage(void)
printf(" -q, --quiet Quiet mode. Do not do output\n");
printf(" -c, --compare List objects that are not comparable\n");
printf(" -N, --nan Avoid NaNs detection\n");
printf(" -n C, --count=C Print differences up to C number, C is a positive integer.\n");
printf(" -n C, --count=C Print differences up to C number\n");
printf(" -d D, --delta=D Print difference when greater than limit D\n");
printf(" -p R, --relative=R Print difference when greater than relative limit R\n");
printf("\n");
printf(" C - is a positive integer\n");
printf(" D - is a positive number. Compare criteria is |a - b| > D\n");
printf(" R - is a positive number. Compare criteria is |(b-a)/a| > R\n");
printf(" -d D, --delta=D Print difference if (|a-b| > D), D is a positive number.\n");
printf(" -p R, --relative=R Print difference if (|(a-b)/b| > R), R is a positive number.\n");
printf(" --use-system-epsilon Print difference if (|a-b| > EPSILON),\n");
printf(" where EPSILON (FLT_EPSILON or FLT_EPSILON) is the system epsilon value. \n");
printf(" If the system epsilon is not defined, use the value below:\n");
printf(" FLT_EPSILON = 1.19209E-07 for float\n");
printf(" DBL_EPSILON = 2.22045E-16 for double\n");
printf(" -d, -p, and --use-system-epsilon options are used for comparing floating point values.\n");
printf(" By default, strict equality is used. Use -p or -d to set specific tolerance.\n");
printf("\n");
printf(" Modes of output:\n");

View File

@@ -11,13 +11,16 @@ usage: h5diff [OPTIONS] file1 file2 [obj1[obj2]]
-q, --quiet Quiet mode. Do not do output
-c, --compare List objects that are not comparable
-N, --nan Avoid NaNs detection
-n C, --count=C Print differences up to C number
-d D, --delta=D Print difference when greater than limit D
-p R, --relative=R Print difference when greater than relative limit R
C - is a positive integer
D - is a positive number. Compare criteria is |a - b| > D
R - is a positive number. Compare criteria is |(b-a)/a| > R
-n C, --count=C Print differences up to C number, C is a positive integer.
-d D, --delta=D Print difference if (|a-b| > D), D is a positive number.
-p R, --relative=R Print difference if (|(a-b)/b| > R), R is a positive number.
--use-system-epsilon Print difference if (|a-b| > EPSILON),
where EPSILON (FLT_EPSILON or FLT_EPSILON) is the system epsilon value.
If the system epsilon is not defined, use the value below:
FLT_EPSILON = 1.19209E-07 for float
DBL_EPSILON = 2.22045E-16 for double
-d, -p, and --use-system-epsilon options are used for comparing floating point values.
By default, strict equality is used. Use -p or -d to set specific tolerance.
Modes of output:

View File

@@ -11,13 +11,16 @@ usage: h5diff [OPTIONS] file1 file2 [obj1[obj2]]
-q, --quiet Quiet mode. Do not do output
-c, --compare List objects that are not comparable
-N, --nan Avoid NaNs detection
-n C, --count=C Print differences up to C number
-d D, --delta=D Print difference when greater than limit D
-p R, --relative=R Print difference when greater than relative limit R
C - is a positive integer
D - is a positive number. Compare criteria is |a - b| > D
R - is a positive number. Compare criteria is |(b-a)/a| > R
-n C, --count=C Print differences up to C number, C is a positive integer.
-d D, --delta=D Print difference if (|a-b| > D), D is a positive number.
-p R, --relative=R Print difference if (|(a-b)/b| > R), R is a positive number.
--use-system-epsilon Print difference if (|a-b| > EPSILON),
where EPSILON (FLT_EPSILON or FLT_EPSILON) is the system epsilon value.
If the system epsilon is not defined, use the value below:
FLT_EPSILON = 1.19209E-07 for float
DBL_EPSILON = 2.22045E-16 for double
-d, -p, and --use-system-epsilon options are used for comparing floating point values.
By default, strict equality is used. Use -p or -d to set specific tolerance.
Modes of output:

View File

@@ -12,13 +12,16 @@ usage: h5diff [OPTIONS] file1 file2 [obj1[obj2]]
-q, --quiet Quiet mode. Do not do output
-c, --compare List objects that are not comparable
-N, --nan Avoid NaNs detection
-n C, --count=C Print differences up to C number
-d D, --delta=D Print difference when greater than limit D
-p R, --relative=R Print difference when greater than relative limit R
C - is a positive integer
D - is a positive number. Compare criteria is |a - b| > D
R - is a positive number. Compare criteria is |(b-a)/a| > R
-n C, --count=C Print differences up to C number, C is a positive integer.
-d D, --delta=D Print difference if (|a-b| > D), D is a positive number.
-p R, --relative=R Print difference if (|(a-b)/b| > R), R is a positive number.
--use-system-epsilon Print difference if (|a-b| > EPSILON),
where EPSILON (FLT_EPSILON or FLT_EPSILON) is the system epsilon value.
If the system epsilon is not defined, use the value below:
FLT_EPSILON = 1.19209E-07 for float
DBL_EPSILON = 2.22045E-16 for double
-d, -p, and --use-system-epsilon options are used for comparing floating point values.
By default, strict equality is used. Use -p or -d to set specific tolerance.
Modes of output:

View File

@@ -1,63 +1,2 @@
<-d 0> is not a valid option
usage: h5diff [OPTIONS] file1 file2 [obj1[obj2]]
file1 File name of the first HDF5 file
file2 File name of the second HDF5 file
[obj1] Name of an HDF5 object, in absolute path
[obj2] Name of an HDF5 object, in absolute path
OPTIONS
-h, --help Print a usage message and exit
-V, --version Print version number and exit
-r, --report Report mode. Print differences
-v, --verbose Verbose mode. Print differences, list of objects
-q, --quiet Quiet mode. Do not do output
-c, --compare List objects that are not comparable
-N, --nan Avoid NaNs detection
-n C, --count=C Print differences up to C number
-d D, --delta=D Print difference when greater than limit D
-p R, --relative=R Print difference when greater than relative limit R
C - is a positive integer
D - is a positive number. Compare criteria is |a - b| > D
R - is a positive number. Compare criteria is |(b-a)/a| > R
Modes of output:
Default mode: print the number of differences found and where they occured
-r Report mode: print the above plus the differences
-v Verbose mode: print the above plus a list of objects and warnings
-q Quiet mode: do not print output
Compare criteria
If no objects [obj1[obj2]] are specified, h5diff only compares objects
with the same absolute path in both files
The compare criteria is:
1) datasets: numerical array differences 2) groups: name string difference
3) datatypes: the return value of H5Tequal 4) links: name string difference
of the linked value
Return exit code:
1 if differences found, 0 if no differences, 2 if error
Examples of use:
1) h5diff file1 file2 /g1/dset1 /g1/dset2
Compares object '/g1/dset1' in file1 with '/g1/dset2' in file2
2) h5diff file1 file2 /g1/dset1
Compares object '/g1/dset1' in both files
3) h5diff file1 file2
Compares all objects in both files
Note) file1 and file2 can be the same file. Use
h5diff file1 file1 /g1/dset1 /g1/dset2
to compare '/g1/dset1' and '/g1/dset2' in the same file
dataset: </g1/dset3> and </g1/dset4>
6 differences found

View File

@@ -1,63 +1,2 @@
<-d u> is not a valid option
usage: h5diff [OPTIONS] file1 file2 [obj1[obj2]]
file1 File name of the first HDF5 file
file2 File name of the second HDF5 file
[obj1] Name of an HDF5 object, in absolute path
[obj2] Name of an HDF5 object, in absolute path
OPTIONS
-h, --help Print a usage message and exit
-V, --version Print version number and exit
-r, --report Report mode. Print differences
-v, --verbose Verbose mode. Print differences, list of objects
-q, --quiet Quiet mode. Do not do output
-c, --compare List objects that are not comparable
-N, --nan Avoid NaNs detection
-n C, --count=C Print differences up to C number
-d D, --delta=D Print difference when greater than limit D
-p R, --relative=R Print difference when greater than relative limit R
C - is a positive integer
D - is a positive number. Compare criteria is |a - b| > D
R - is a positive number. Compare criteria is |(b-a)/a| > R
Modes of output:
Default mode: print the number of differences found and where they occured
-r Report mode: print the above plus the differences
-v Verbose mode: print the above plus a list of objects and warnings
-q Quiet mode: do not print output
Compare criteria
If no objects [obj1[obj2]] are specified, h5diff only compares objects
with the same absolute path in both files
The compare criteria is:
1) datasets: numerical array differences 2) groups: name string difference
3) datatypes: the return value of H5Tequal 4) links: name string difference
of the linked value
Return exit code:
1 if differences found, 0 if no differences, 2 if error
Examples of use:
1) h5diff file1 file2 /g1/dset1 /g1/dset2
Compares object '/g1/dset1' in file1 with '/g1/dset2' in file2
2) h5diff file1 file2 /g1/dset1
Compares object '/g1/dset1' in both files
3) h5diff file1 file2
Compares all objects in both files
Note) file1 and file2 can be the same file. Use
h5diff file1 file1 /g1/dset1 /g1/dset2
to compare '/g1/dset1' and '/g1/dset2' in the same file
dataset: </g1/dset3> and </g1/dset4>
6 differences found

View File

@@ -12,13 +12,16 @@ usage: h5diff [OPTIONS] file1 file2 [obj1[obj2]]
-q, --quiet Quiet mode. Do not do output
-c, --compare List objects that are not comparable
-N, --nan Avoid NaNs detection
-n C, --count=C Print differences up to C number
-d D, --delta=D Print difference when greater than limit D
-p R, --relative=R Print difference when greater than relative limit R
C - is a positive integer
D - is a positive number. Compare criteria is |a - b| > D
R - is a positive number. Compare criteria is |(b-a)/a| > R
-n C, --count=C Print differences up to C number, C is a positive integer.
-d D, --delta=D Print difference if (|a-b| > D), D is a positive number.
-p R, --relative=R Print difference if (|(a-b)/b| > R), R is a positive number.
--use-system-epsilon Print difference if (|a-b| > EPSILON),
where EPSILON (FLT_EPSILON or FLT_EPSILON) is the system epsilon value.
If the system epsilon is not defined, use the value below:
FLT_EPSILON = 1.19209E-07 for float
DBL_EPSILON = 2.22045E-16 for double
-d, -p, and --use-system-epsilon options are used for comparing floating point values.
By default, strict equality is used. Use -p or -d to set specific tolerance.
Modes of output:

View File

@@ -12,13 +12,16 @@ usage: h5diff [OPTIONS] file1 file2 [obj1[obj2]]
-q, --quiet Quiet mode. Do not do output
-c, --compare List objects that are not comparable
-N, --nan Avoid NaNs detection
-n C, --count=C Print differences up to C number
-d D, --delta=D Print difference when greater than limit D
-p R, --relative=R Print difference when greater than relative limit R
C - is a positive integer
D - is a positive number. Compare criteria is |a - b| > D
R - is a positive number. Compare criteria is |(b-a)/a| > R
-n C, --count=C Print differences up to C number, C is a positive integer.
-d D, --delta=D Print difference if (|a-b| > D), D is a positive number.
-p R, --relative=R Print difference if (|(a-b)/b| > R), R is a positive number.
--use-system-epsilon Print difference if (|a-b| > EPSILON),
where EPSILON (FLT_EPSILON or FLT_EPSILON) is the system epsilon value.
If the system epsilon is not defined, use the value below:
FLT_EPSILON = 1.19209E-07 for float
DBL_EPSILON = 2.22045E-16 for double
-d, -p, and --use-system-epsilon options are used for comparing floating point values.
By default, strict equality is used. Use -p or -d to set specific tolerance.
Modes of output:

View File

@@ -1,63 +1,2 @@
<-p 0> is not a valid option
usage: h5diff [OPTIONS] file1 file2 [obj1[obj2]]
file1 File name of the first HDF5 file
file2 File name of the second HDF5 file
[obj1] Name of an HDF5 object, in absolute path
[obj2] Name of an HDF5 object, in absolute path
OPTIONS
-h, --help Print a usage message and exit
-V, --version Print version number and exit
-r, --report Report mode. Print differences
-v, --verbose Verbose mode. Print differences, list of objects
-q, --quiet Quiet mode. Do not do output
-c, --compare List objects that are not comparable
-N, --nan Avoid NaNs detection
-n C, --count=C Print differences up to C number
-d D, --delta=D Print difference when greater than limit D
-p R, --relative=R Print difference when greater than relative limit R
C - is a positive integer
D - is a positive number. Compare criteria is |a - b| > D
R - is a positive number. Compare criteria is |(b-a)/a| > R
Modes of output:
Default mode: print the number of differences found and where they occured
-r Report mode: print the above plus the differences
-v Verbose mode: print the above plus a list of objects and warnings
-q Quiet mode: do not print output
Compare criteria
If no objects [obj1[obj2]] are specified, h5diff only compares objects
with the same absolute path in both files
The compare criteria is:
1) datasets: numerical array differences 2) groups: name string difference
3) datatypes: the return value of H5Tequal 4) links: name string difference
of the linked value
Return exit code:
1 if differences found, 0 if no differences, 2 if error
Examples of use:
1) h5diff file1 file2 /g1/dset1 /g1/dset2
Compares object '/g1/dset1' in file1 with '/g1/dset2' in file2
2) h5diff file1 file2 /g1/dset1
Compares object '/g1/dset1' in both files
3) h5diff file1 file2
Compares all objects in both files
Note) file1 and file2 can be the same file. Use
h5diff file1 file1 /g1/dset1 /g1/dset2
to compare '/g1/dset1' and '/g1/dset2' in the same file
dataset: </g1/dset3> and </g1/dset4>
6 differences found

View File

@@ -1,63 +1,2 @@
<-p u> is not a valid option
usage: h5diff [OPTIONS] file1 file2 [obj1[obj2]]
file1 File name of the first HDF5 file
file2 File name of the second HDF5 file
[obj1] Name of an HDF5 object, in absolute path
[obj2] Name of an HDF5 object, in absolute path
OPTIONS
-h, --help Print a usage message and exit
-V, --version Print version number and exit
-r, --report Report mode. Print differences
-v, --verbose Verbose mode. Print differences, list of objects
-q, --quiet Quiet mode. Do not do output
-c, --compare List objects that are not comparable
-N, --nan Avoid NaNs detection
-n C, --count=C Print differences up to C number
-d D, --delta=D Print difference when greater than limit D
-p R, --relative=R Print difference when greater than relative limit R
C - is a positive integer
D - is a positive number. Compare criteria is |a - b| > D
R - is a positive number. Compare criteria is |(b-a)/a| > R
Modes of output:
Default mode: print the number of differences found and where they occured
-r Report mode: print the above plus the differences
-v Verbose mode: print the above plus a list of objects and warnings
-q Quiet mode: do not print output
Compare criteria
If no objects [obj1[obj2]] are specified, h5diff only compares objects
with the same absolute path in both files
The compare criteria is:
1) datasets: numerical array differences 2) groups: name string difference
3) datatypes: the return value of H5Tequal 4) links: name string difference
of the linked value
Return exit code:
1 if differences found, 0 if no differences, 2 if error
Examples of use:
1) h5diff file1 file2 /g1/dset1 /g1/dset2
Compares object '/g1/dset1' in file1 with '/g1/dset2' in file2
2) h5diff file1 file2 /g1/dset1
Compares object '/g1/dset1' in both files
3) h5diff file1 file2
Compares all objects in both files
Note) file1 and file2 can be the same file. Use
h5diff file1 file1 /g1/dset1 /g1/dset2
to compare '/g1/dset1' and '/g1/dset2' in the same file
dataset: </g1/dset3> and </g1/dset4>
6 differences found

View File

@@ -12,13 +12,16 @@ usage: h5diff [OPTIONS] file1 file2 [obj1[obj2]]
-q, --quiet Quiet mode. Do not do output
-c, --compare List objects that are not comparable
-N, --nan Avoid NaNs detection
-n C, --count=C Print differences up to C number
-d D, --delta=D Print difference when greater than limit D
-p R, --relative=R Print difference when greater than relative limit R
C - is a positive integer
D - is a positive number. Compare criteria is |a - b| > D
R - is a positive number. Compare criteria is |(b-a)/a| > R
-n C, --count=C Print differences up to C number, C is a positive integer.
-d D, --delta=D Print difference if (|a-b| > D), D is a positive number.
-p R, --relative=R Print difference if (|(a-b)/b| > R), R is a positive number.
--use-system-epsilon Print difference if (|a-b| > EPSILON),
where EPSILON (FLT_EPSILON or FLT_EPSILON) is the system epsilon value.
If the system epsilon is not defined, use the value below:
FLT_EPSILON = 1.19209E-07 for float
DBL_EPSILON = 2.22045E-16 for double
-d, -p, and --use-system-epsilon options are used for comparing floating point values.
By default, strict equality is used. Use -p or -d to set specific tolerance.
Modes of output:

View File

@@ -12,13 +12,16 @@ usage: h5diff [OPTIONS] file1 file2 [obj1[obj2]]
-q, --quiet Quiet mode. Do not do output
-c, --compare List objects that are not comparable
-N, --nan Avoid NaNs detection
-n C, --count=C Print differences up to C number
-d D, --delta=D Print difference when greater than limit D
-p R, --relative=R Print difference when greater than relative limit R
C - is a positive integer
D - is a positive number. Compare criteria is |a - b| > D
R - is a positive number. Compare criteria is |(b-a)/a| > R
-n C, --count=C Print differences up to C number, C is a positive integer.
-d D, --delta=D Print difference if (|a-b| > D), D is a positive number.
-p R, --relative=R Print difference if (|(a-b)/b| > R), R is a positive number.
--use-system-epsilon Print difference if (|a-b| > EPSILON),
where EPSILON (FLT_EPSILON or FLT_EPSILON) is the system epsilon value.
If the system epsilon is not defined, use the value below:
FLT_EPSILON = 1.19209E-07 for float
DBL_EPSILON = 2.22045E-16 for double
-d, -p, and --use-system-epsilon options are used for comparing floating point values.
By default, strict equality is used. Use -p or -d to set specific tolerance.
Modes of output:

View File

@@ -12,13 +12,16 @@ usage: h5diff [OPTIONS] file1 file2 [obj1[obj2]]
-q, --quiet Quiet mode. Do not do output
-c, --compare List objects that are not comparable
-N, --nan Avoid NaNs detection
-n C, --count=C Print differences up to C number
-d D, --delta=D Print difference when greater than limit D
-p R, --relative=R Print difference when greater than relative limit R
C - is a positive integer
D - is a positive number. Compare criteria is |a - b| > D
R - is a positive number. Compare criteria is |(b-a)/a| > R
-n C, --count=C Print differences up to C number, C is a positive integer.
-d D, --delta=D Print difference if (|a-b| > D), D is a positive number.
-p R, --relative=R Print difference if (|(a-b)/b| > R), R is a positive number.
--use-system-epsilon Print difference if (|a-b| > EPSILON),
where EPSILON (FLT_EPSILON or FLT_EPSILON) is the system epsilon value.
If the system epsilon is not defined, use the value below:
FLT_EPSILON = 1.19209E-07 for float
DBL_EPSILON = 2.22045E-16 for double
-d, -p, and --use-system-epsilon options are used for comparing floating point values.
By default, strict equality is used. Use -p or -d to set specific tolerance.
Modes of output:

View File

@@ -12,13 +12,16 @@ usage: h5diff [OPTIONS] file1 file2 [obj1[obj2]]
-q, --quiet Quiet mode. Do not do output
-c, --compare List objects that are not comparable
-N, --nan Avoid NaNs detection
-n C, --count=C Print differences up to C number
-d D, --delta=D Print difference when greater than limit D
-p R, --relative=R Print difference when greater than relative limit R
C - is a positive integer
D - is a positive number. Compare criteria is |a - b| > D
R - is a positive number. Compare criteria is |(b-a)/a| > R
-n C, --count=C Print differences up to C number, C is a positive integer.
-d D, --delta=D Print difference if (|a-b| > D), D is a positive number.
-p R, --relative=R Print difference if (|(a-b)/b| > R), R is a positive number.
--use-system-epsilon Print difference if (|a-b| > EPSILON),
where EPSILON (FLT_EPSILON or FLT_EPSILON) is the system epsilon value.
If the system epsilon is not defined, use the value below:
FLT_EPSILON = 1.19209E-07 for float
DBL_EPSILON = 2.22045E-16 for double
-d, -p, and --use-system-epsilon options are used for comparing floating point values.
By default, strict equality is used. Use -p or -d to set specific tolerance.
Modes of output:

View File

@@ -12,13 +12,16 @@ usage: h5diff [OPTIONS] file1 file2 [obj1[obj2]]
-q, --quiet Quiet mode. Do not do output
-c, --compare List objects that are not comparable
-N, --nan Avoid NaNs detection
-n C, --count=C Print differences up to C number
-d D, --delta=D Print difference when greater than limit D
-p R, --relative=R Print difference when greater than relative limit R
C - is a positive integer
D - is a positive number. Compare criteria is |a - b| > D
R - is a positive number. Compare criteria is |(b-a)/a| > R
-n C, --count=C Print differences up to C number, C is a positive integer.
-d D, --delta=D Print difference if (|a-b| > D), D is a positive number.
-p R, --relative=R Print difference if (|(a-b)/b| > R), R is a positive number.
--use-system-epsilon Print difference if (|a-b| > EPSILON),
where EPSILON (FLT_EPSILON or FLT_EPSILON) is the system epsilon value.
If the system epsilon is not defined, use the value below:
FLT_EPSILON = 1.19209E-07 for float
DBL_EPSILON = 2.22045E-16 for double
-d, -p, and --use-system-epsilon options are used for comparing floating point values.
By default, strict equality is used. Use -p or -d to set specific tolerance.
Modes of output:

View File

@@ -461,9 +461,9 @@ TOOLTEST h5diff_606.txt -d 0x1 $FILE1 $FILE2 g1/dset3 g1/dset4
TESTING $H5DIFF -d "1" $SRCFILE1 $SRCFILE2 g1/dset3 g1/dset4
TOOLTEST h5diff_607.txt -d "1" $FILE1 $FILE2 g1/dset3 g1/dset4
# 6.8: repeated option
TESTING $H5DIFF -d 1 -d 2 $SRCFILE1 $SRCFILE2 g1/dset3 g1/dset4
TOOLTEST h5diff_608.txt -d 1 -d 2 $FILE1 $FILE2 g1/dset3 g1/dset4
# 6.8: use system epsilon
TESTING $H5DIFF --use-system-epsilon $SRCFILE1 $SRCFILE2 g1/dset3 g1/dset4
TOOLTEST h5diff_608.txt --use-system-epsilon $FILE1 $FILE2 g1/dset3 g1/dset4
# 6.9: number larger than biggest difference
TESTING $H5DIFF -d 200 $SRCFILE1 $SRCFILE2 g1/dset3 g1/dset4

View File

@@ -25,21 +25,22 @@
*/
typedef struct {
int m_quiet; /* quiet mode: no output at all */
int m_report; /* report mode: print the data */
int m_verbose; /* verbose mode: print the data, list of objcets, warnings */
int d; /* delta, absolute value to compare */
double delta; /* delta value */
int p; /* relative error to compare*/
double percent; /* relative error value */
int n; /* count, compare up to count */
hsize_t count; /* count value */
int err_stat; /* an error ocurred (1, error, 0, no error) */
int cmn_objs; /* do we have common objects */
int not_cmp; /* are the objects comparable */
int contents; /* equal contents */
int do_nans; /* consider Nans while diffing floats */
int m_list_not_cmp; /* list not comparable messages */
int m_quiet; /* quiet mide: no output at all */
int m_report; /* report mode: print the data */
int m_verbose; /* verbose mode: print the data, list of objcets, warnings */
int d; /* delta, absolute value to compare */
double delta; /* delta value */
int p; /* relative error to compare*/
int use_system_epsilon; /* flag to use system epsilon (1 or 0) */
double percent; /* relative error value */
int n; /* count, compare up to count */
hsize_t count; /* count value */
int err_stat; /* an error ocurred (1, error, 0, no error) */
int cmn_objs; /* do we have common objects */
int not_cmp; /* are the objects comparable */
int contents; /* equal contents */
int do_nans; /* consider Nans while diffing floats */
int m_list_not_cmp; /* list not comparable messages */
} diff_opt_t;

View File

@@ -74,9 +74,16 @@
#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"
/* values for FLT_EPSILON same as C Reference manual */
#define H5DIFF_FLT_EPSILON .00001
#define H5DIFF_DBL_EPSILON .000000001
/* if system EPSILON is defined, use the system EPSILON; otherwise, use
constants that are close to most EPSILON values */
#ifndef FLT_EPSILON
#define FLT_EPSILON 1.19209E-07
#endif
#ifndef DBL_EPSILON
#define DBL_EPSILON 2.22045E-16
#endif
/*-------------------------------------------------------------------------
@@ -5502,10 +5509,6 @@ error:
static
hbool_t equal_double(double value, double expected, diff_opt_t *options)
{
int both_zero;
int is_zero;
if ( options->do_nans )
{
@@ -5535,22 +5538,15 @@ hbool_t equal_double(double value, double expected, diff_opt_t *options)
}
}
BOTH_ZERO(value,expected)
if (both_zero)
return TRUE;
IS_ZERO(expected)
if (is_zero)
return(equal_double(expected,value,options));
if (value == expected)
return TRUE;
if ( ABS( (value-expected) / expected) < H5DIFF_DBL_EPSILON)
return TRUE;
else
return FALSE;
if (options->use_system_epsilon) {
if ( ABS( (value-expected) ) < DBL_EPSILON)
return TRUE;
}
return FALSE;
}
/*-------------------------------------------------------------------------
@@ -5566,10 +5562,6 @@ hbool_t equal_double(double value, double expected, diff_opt_t *options)
static
hbool_t equal_ldouble(long double value, long double expected, diff_opt_t *options)
{
int both_zero;
int is_zero;
if ( options->do_nans )
{
@@ -5599,22 +5591,15 @@ hbool_t equal_ldouble(long double value, long double expected, diff_opt_t *optio
}
}
BOTH_ZERO(value,expected)
if (both_zero)
return TRUE;
IS_ZERO(expected)
if (is_zero)
return(equal_ldouble(expected,value,options));
if (value == expected)
return TRUE;
if ( ABS( (value-expected) / expected) < H5DIFF_DBL_EPSILON)
return TRUE;
else
return FALSE;
if (options->use_system_epsilon) {
if ( ABS( (value-expected) / expected) < DBL_EPSILON)
return TRUE;
}
return FALSE;
}
#endif /* #if H5_SIZEOF_LONG_DOUBLE !=0 */
@@ -5634,9 +5619,6 @@ hbool_t equal_ldouble(long double value, long double expected, diff_opt_t *optio
static
hbool_t equal_float(float value, float expected, diff_opt_t *options)
{
int both_zero;
int is_zero;
if ( options->do_nans )
{
@@ -5666,21 +5648,15 @@ hbool_t equal_float(float value, float expected, diff_opt_t *options)
}
}
BOTH_ZERO(value,expected)
if (both_zero)
return TRUE;
IS_ZERO(expected)
if (is_zero)
return(equal_float(expected,value,options));
if (value == expected)
return TRUE;
if ( ABS( (value-expected) / expected) < H5DIFF_FLT_EPSILON)
return TRUE;
else
return FALSE;
if (options->use_system_epsilon) {
if ( ABS( (value-expected) / expected) < FLT_EPSILON)
return TRUE;
}
return FALSE;
}