Mercurial > jwe > octave
changeset 30223: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