Mercurial > octave
changeset 31306:ef3cd4d7691f
maint: Merge stable to default
author | Nicholas R. Jankowski <jankowski.nicholas@gmail.com> |
---|---|
date | Sat, 15 Oct 2022 09:30:55 -0400 |
parents | d3231a604a62 (current diff) 3b16c2d90326 (diff) |
children | 94dc0f5ba8a3 |
files | etc/NEWS.7.md scripts/statistics/var.m |
diffstat | 2 files changed, 30 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/etc/NEWS.7.md Sat Oct 15 13:34:05 2022 +0200 +++ b/etc/NEWS.7.md Sat Oct 15 09:30:55 2022 -0400 @@ -22,6 +22,7 @@ - Accept negative inputs to -2^63 for `dec2bin` and `dec2hex` (bug #63089). - Fix incorrect `lambda` outputs for `lsqnonneg` and `pqpnonneg` (bug #63178). - `addtodate.m`: Fix wrong month returned when subtracting a month from some end-of-month dates (bug #60671). +- `var.m`: Fix some Inf and NaN inputs returning 0 instead of NaN (bug #63203) ### GUI
--- a/scripts/statistics/var.m Sat Oct 15 13:34:05 2022 +0200 +++ b/scripts/statistics/var.m Sat Oct 15 09:30:55 2022 -0400 @@ -203,6 +203,7 @@ v = zeros (sz); mu = x; endif + v(isnan (x) | isinf (x)) = NaN; else ## Regular algorithm if (isscalar (w)) @@ -310,6 +311,34 @@ %! [~, m] = var (ones (1,3,0,2)); %! assert (m, NaN(1,1,0,2)); +## Test Inf and NaN inputs +%!assert <*63203> (var (Inf), NaN) +%!assert <*63203> (var (NaN), NaN) +%!assert <*63203> (var ([1, Inf, 3]), NaN) +%!assert <*63203> (var ([1, Inf, 3]'), NaN) +%!assert <*63203> (var ([1, NaN, 3]), NaN) +%!assert <*63203> (var ([1, NaN, 3]'), NaN) +%!assert <*63203> (var ([1, Inf, 3], [], 1), [0, NaN, 0]) +%!assert <*63203> (var ([1, Inf, 3], [], 2), NaN) +%!assert <*63203> (var ([1, Inf, 3], [], 3), [0, NaN, 0]) +%!assert <*63203> (var ([1, NaN, 3], [], 1), [0, NaN, 0]) +%!assert <*63203> (var ([1, NaN, 3], [], 2), NaN) +%!assert <*63203> (var ([1, NaN, 3], [], 3), [0, NaN, 0]) +%!assert <*63203> (var ([1, 2, 3; 3, Inf, 5]), [2, NaN, 2]) +%!assert <*63203> (var ([1, Inf, 3; 3, Inf, 5]), [2, NaN, 2]) +%!assert <*63203> (var ([1, 2, 3; 3, NaN, 5]), [2, NaN, 2]) +%!assert <*63203> (var ([1, NaN, 3; 3, NaN, 5]), [2, NaN, 2]) +%!assert <*63203> (var ([Inf, 2, NaN]), NaN) +%!assert <*63203> (var ([Inf, 2, NaN]'), NaN) +%!assert <*63203> (var ([NaN, 2, Inf]), NaN) +%!assert <*63203> (var ([NaN, 2, Inf]'), NaN) +%!assert <*63203> (var ([Inf, 2, NaN], [], 1), [NaN, 0, NaN]) +%!assert <*63203> (var ([Inf, 2, NaN], [], 2), NaN) +%!assert <*63203> (var ([NaN, 2, Inf], [], 1), [NaN, 0, NaN]) +%!assert <*63203> (var ([NaN, 2, Inf], [], 2), NaN) +%!assert <*63203> (var ([1, 3, NaN; 3, 5, Inf]), [2, 2, NaN]) +%!assert <*63203> (var ([1, 3, Inf; 3, 5, NaN]), [2, 2, NaN]); + ## Test input validation %!error <Invalid call> var () %!error <X must be a numeric> var (['A'; 'B'])