diff scripts/specfun/nchoosek.m @ 6316:a3a2580435c2

[project @ 2007-02-16 07:23:49 by jwe]
author jwe
date Fri, 16 Feb 2007 07:23:49 +0000
parents 1fe78adb91bc
children bae85c1e0e2a
line wrap: on
line diff
--- a/scripts/specfun/nchoosek.m	Fri Feb 16 04:52:42 2007 +0000
+++ b/scripts/specfun/nchoosek.m	Fri Feb 16 07:23:49 2007 +0000
@@ -49,30 +49,34 @@
 ## resulting @var{c} has size @code{[nchoosek (length (@var{n}), 
 ## @var{k}), @var{k}]}.
 ##
+## @seealso{bincoeff}
 ## @end deftypefn
 
-##AUTHORS Rolf Fabian  <fabian@tu-cottbus.de>
-##        Paul Kienzle <pkienzle@users.sf.net>
+## Author: Rolf Fabian  <fabian@tu-cottbus.de>
+## Author: Paul Kienzle <pkienzle@users.sf.net>
 
-## XXX FIXME XXX This function is identical to bincoeff for scalar
+## FIXME -- This function is identical to bincoeff for scalar
 ## values, and so should probably be combined with bincoeff.
 
 function A = nchoosek (v, k)
 
-  n = length (v);
-
-  if (n == 1)
-     A = round (exp (sum (log (k+1:v)) - sum (log (2:v-k))));
-  elseif (k == 0)
-    A = [];
-  elseif (k == 1)
-    A = v(:);
-  elseif (k == n)
-     A = v(:).';
+  if (nargin == 2)
+    n = length (v);
+    if (n == 1)
+       A = round (exp (sum (log (k+1:v)) - sum (log (2:v-k))));
+    elseif (k == 0)
+      A = [];
+    elseif (k == 1)
+      A = v(:);
+    elseif (k == n)
+       A = v(:).';
+    else
+      m = round (exp (sum (log (k:n-1)) - sum (log (2:n-k))));
+      A = [v(1)*ones(m,1), nchoosek(v(2:n),k-1);
+	   nchoosek(v(2:n),k)];
+    endif
   else
-    m = round (exp (sum (log (k:n-1)) - sum (log (2:n-k))));
-    A = [v(1)*ones(m,1), nchoosek(v(2:n),k-1);
-	 nchoosek(v(2:n),k)];
+    print_usage ();
   endif
 
 endfunction