changeset 30218:750de16fd35c

nchoosek.m: Fix algorithm for even K in cset f5aba4d7e651 (bug #61191). * nchoosek.m: When doing pairwise multiplication, flip the second range so that an even number is always multiplied by an odd number.
author Rik <rik@octave.org>
date Wed, 29 Sep 2021 09:57:01 -0700
parents f5aba4d7e651
children 1e336156fcb6
files scripts/specfun/nchoosek.m
diffstat 1 files changed, 3 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/specfun/nchoosek.m	Tue Sep 28 17:03:25 2021 -0700
+++ b/scripts/specfun/nchoosek.m	Wed Sep 29 09:57:01 2021 -0700
@@ -124,9 +124,9 @@
       numer = [(v-k+1:v-(k+1)/2) .* (v-1:-1:v-(k-1)/2) / 2, v];
       denom = [(1:k/2) .* (k-1:-1:(k+1)/2) / 2, k];
     else             # k is even
-      numer = (v-k+1:v-k/2) .* (v-k/2+1:v) / 2;
-      denom = (1:k/2) .* (k/2+1:k) / 2;
-    end
+      numer = (v-k+1:v-k/2) .* (v:-1:v-k/2+1) / 2;
+      denom = (1:k/2) .* (k:-1:k/2+1) / 2;
+    endif
 
     # Remove common factors from numerator and denominator
     do