'Afternoon,
Atop h5diff 1.8.5-patch1 I've noticed that comparing NaN against NaN
passes when using --use-system-epsilon. It fail when using
--delta=something.
Does --use-system-epsilon imply more than just --delta=DBL_EPSILON?
If so, please add that to the --help message.
- Rhys
Rhys,
It may be the case that your system epsilon is different from DBL_EPSILON.
Here is what I copied from h5diff UG for clarification:
-d D, --delta=D
Print difference if (|a-b| > D). D must be a positive number.
Can not use with '-p' or '--use-system-epsilon'.
-p R, --relative=R
Print difference if (|(a-b)/b| > R). R must be a positive number.
Can not use with '-d' or '--use-system-epsilon'.
--use-system-epsilon
Print difference if (|a-b| > EPSILON), EPSILON is system defined value.
If the system epsilon is not defined,one of the following predefined
values will be used:
FLT_EPSILON = 1.19209E-07 for floating-point type
DBL_EPSILON = 2.22045E-16 for double precision type
Can not use with '-p' or '-d'.
Thanks
--pc
···
On 7/14/2011 1:12 PM, Rhys Ulerich wrote:
'Afternoon,
Atop h5diff 1.8.5-patch1 I've noticed that comparing NaN against NaN
passes when using --use-system-epsilon. It fail when using
--delta=something.
Does --use-system-epsilon imply more than just --delta=DBL_EPSILON?
If so, please add that to the --help message.
- Rhys
_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@hdfgroup.org
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org
Hi Peter,
Atop h5diff 1.8.5-patch1 I've noticed that comparing NaN against NaN
passes when using --use-system-epsilon. It fail when using
--delta=something.
It may be the case that your system epsilon is different from DBL_EPSILON....
-d D, --delta=D
Print difference if (|a-b| > D). D must be a positive number.
Can not use with '-p' or '--use-system-epsilon'.
...
--use-system-epsilon
Print difference if (|a-b| > EPSILON), EPSILON is system defined value.
My question wasn't about the magnitude of EPSILON used. Changing the
magnitude of the EPSILON used in the comparison (|a-b| > EPSILON)
cannot explain the differences in NaN handling I described above.
Something else must be different between --use-system-epsilon and
--delta=something (for appropriately chosen "something"). Maybe --nan
is implied? Maybe the comparison is "inverted" for
--use-system-epsilon so that a NaN causes the check to succeed while
the "regular" check for --delta=something fails for a NaN value?
Thanks for the response,
Rhys
Rhys,
"--use-system-epsilon" and "--delta=something" use different code.
"--use-system-epsilon" considers two NaNs of the same type are equal, which is correct.
"--delta=something" considers two NaN of the same type are different, which is wrong. We will need to fix it.
This behavior was documented at
http://www.hdfgroup.org/HDF5/doc/RM/Tools.html#Tools-Diff
"
h5diff and NaNs:
h5diff detects when a value in a dataset is a NaN (a "not a number" value), but does not differentiate among various types of NaNs. Thus, when one NaN is compared with another NaN, h5diff treats them as equal; when a NaN is compared with a valid number, h5diff treats them as not equal.
"
···
On 7/14/2011 3:24 PM, Rhys Ulerich wrote:
Hi Peter,
Atop h5diff 1.8.5-patch1 I've noticed that comparing NaN against NaN
passes when using --use-system-epsilon. It fail when using
--delta=something.
It may be the case that your system epsilon is different from DBL_EPSILON....
-d D, --delta=D
Print difference if (|a-b|> D). D must be a positive number.
Can not use with '-p' or '--use-system-epsilon'.
...
--use-system-epsilon
Print difference if (|a-b|> EPSILON), EPSILON is system defined value.
My question wasn't about the magnitude of EPSILON used. Changing the
magnitude of the EPSILON used in the comparison (|a-b|> EPSILON)
cannot explain the differences in NaN handling I described above.
Something else must be different between --use-system-epsilon and
--delta=something (for appropriately chosen "something"). Maybe --nan
is implied? Maybe the comparison is "inverted" for
--use-system-epsilon so that a NaN causes the check to succeed while
the "regular" check for --delta=something fails for a NaN value?
Thanks for the response,
Rhys
_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@hdfgroup.org
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org
Hi Peter,
"--use-system-epsilon" and "--delta=something" use different code.
"--use-system-epsilon" considers two NaNs of the same type are equal, which
is correct.
"--delta=something" considers two NaN of the same type are different, which
is wrong. We will need to fix it.
Thank you. That explains what I was seeing.
Appreciate the help,
Rhys