changeset 31676:9be3a2706d62 stable

nchoosek.m: Fix regression with column vector input (bug #63538) * nchoosek.m: Alway convert input to row vector. Add BIST test for bug #63538.
author Arun Giridhar <arungiridhar@gmail.com>
date Mon, 19 Dec 2022 10:13:04 -0800
parents e3b0fac6acde
children 8db976e36127 96d321d59ee3
files scripts/specfun/nchoosek.m
diffstat 1 files changed, 6 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/specfun/nchoosek.m	Mon Dec 19 12:00:11 2022 -0500
+++ b/scripts/specfun/nchoosek.m	Mon Dec 19 10:13:04 2022 -0800
@@ -108,6 +108,7 @@
     endif
   endif
 
+  v = v(:).';  # convert to row vector
   n = numel (v);
 
   if (n == 1 && isnumeric (v))
@@ -158,7 +159,7 @@
   elseif (k == 1)
     C = v(:);
   elseif (k == n)
-    C = v(:).';
+    C = v;
   elseif (k > n)
     C = v(zeros (0, k));  # return 0xk object for Matlab compatibility
   elseif (k == 2)
@@ -167,7 +168,6 @@
     y = cat (1, cellslices (v(:), 2:n, n*ones (1, n-1)){:});
     C = [x, y];
   elseif (k < n)
-    v = v(:).';
     C = v(k:n);
     l = 1:n-k+1;
     for j = 2:k
@@ -283,6 +283,10 @@
 %! assert (x, uint8 (252));
 %! assert (class (x), "uint8");
 
+%!test <*63538>
+%! x = nchoosek ([1:3]', 2);
+%! assert (x, [1 2; 1 3; 2 3]);
+
 ## Test input validation
 %!error <Invalid call> nchoosek ()
 %!error <Invalid call> nchoosek (1)