20 lines
547 B
Text
20 lines
547 B
Text
def permutation(k): . as $n
|
|
| reduce range($n-k+1; 1+$n) as $i (1; . * $i);
|
|
|
|
def combination(k): . as $n
|
|
| if k > ($n/2) then combination($n-k)
|
|
else reduce range(0; k) as $i (1; (. * ($n - $i)) / ($i + 1))
|
|
end;
|
|
|
|
# natural log of n!
|
|
def log_factorial: (1+.) | tgamma | log;
|
|
|
|
def log_permutation(k):
|
|
(log_factorial - ((.-k) | log_factorial));
|
|
|
|
def log_combination(k):
|
|
(log_factorial - ((. - k)|log_factorial) - (k|log_factorial));
|
|
|
|
def big_permutation(k): log_permutation(k) | exp;
|
|
|
|
def big_combination(k): log_combination(k) | exp;
|