Mercurial > octave
changeset 30850:82c1554c4a64 stable
* test/range.tst: Avoid issues with double precision floating point numbers.
author | Markus Mützel <markus.muetzel@gmx.de> |
---|---|
date | Sat, 19 Mar 2022 16:55:30 +0100 |
parents | cb0a54576eb0 |
children | 95725e6ad9c1 |
files | test/range.tst |
diffstat | 1 files changed, 17 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/test/range.tst Sat Mar 19 15:37:13 2022 +0100 +++ b/test/range.tst Sat Mar 19 16:55:30 2022 +0100 @@ -611,17 +611,30 @@ %!test # ascending ranges %! types = {"int8", "int16", "int32", "int64"}; %! for i_type = 1:numel (types) -%! assert (intmin (types{i_type}) : double (intmax (types{i_type})) + 1 : intmax (types{i_type}), ... +%! assert (intmin (types{i_type}) : -double (intmin (types{i_type})) : intmax (types{i_type}), ... %! [intmin(types{i_type}), 0]); +%! ## FIXME: This test leads to a deadlock for "int64". +%! ## assert (intmin (types{i_type}) : -2*double (intmin (types{i_type})) : intmax (types{i_type}), ... +%! ## intmin (types{i_type})); +%! if (! strcmp (types, "int64")) +%! ## The increment cannot be represented in double precision for "int64" +%! assert (intmin (types{i_type}) : 2*double (intmax (types{i_type})) : intmin (types{i_type}), ... +%! [intmin(types{i_type}), intmax(types{i_type})-1]); +%! endif %! endfor %!test # descending ranges %! types = {"int8", "int16", "int32", "int64"}; %! for i_type = 1:numel (types) %! assert (intmax (types{i_type}) : double (intmin (types{i_type})) : intmin (types{i_type}), ... %! [intmax(types{i_type}), -1]); -%! ## FIXME: This leads to a deadlock for "int64". -%! ## assert (intmax (types{i_type}) : -2*double (intmax (types{i_type})) : intmin (types{i_type}), ... -%! ## [intmax(types{i_type}), -intmax(types{i_type})]); +%! ## FIXME: This test leads to a deadlock for "int64". +%! ## assert (intmax (types{i_type}) : 2*double (intmin (types{i_type})) : intmin (types{i_type}), ... +%! ## intmax (types{i_type})); +%! if (! strcmp (types, "int64")) +%! ## The increment cannot be represented in double precision for "int64" +%! assert (intmax (types{i_type}) : -2*double (intmax (types{i_type})) : intmin (types{i_type}), ... +%! [intmax(types{i_type}), -intmax(types{i_type})]); +%! endif %! endfor ## integer range near intmax