```1`math::combinatorics(n)         Tcl Math Library         math::combinatorics(n)`
2
3
4
5`______________________________________________________________________________`
6
```

## NAME

```8`       math::combinatorics - Combinatorial functions in the Tcl Math Library`
9
```

## SYNOPSIS

```11`       package require Tcl  8.2`
12
13`       package require math  ?1.2.3?`
14
15`       ::math::ln_Gamma z`
16
17`       ::math::factorial x`
18
19`       ::math::choose n k`
20
21`       ::math::Beta z w`
22
23`______________________________________________________________________________`
24
```

## DESCRIPTION

```26`       The  math  package contains implementations of several functions useful`
27`       in combinatorial problems.`
28
```

## COMMANDS

```30`       ::math::ln_Gamma z`
31`              Returns the natural logarithm of  the  Gamma  function  for  the`
32`              argument z.`
33
34`              The Gamma function is defined as the improper integral from zero`
35`              to positive infinity of`
36
37
38`                t**(x-1)*exp(-t) dt`
39
40
41`       The approximation used in the Tcl Math Library is from  Lanczos,  ISIAM`
42`       J.  Numerical  Analysis,  series  B, volume 1, p. 86.  For "x > 1", the`
43`       absolute error of the result is claimed to be smaller than  5.5*10**-10`
44`       -- that is, the resulting value of Gamma when`
45
46
47`                exp( ln_Gamma( x) )`
48
49
50`              is  computed  is expected to be precise to better than nine sig‐`
51`              nificant figures.`
52
53`       ::math::factorial x`
54`              Returns the factorial of the argument x.`
55
56`              For integer x, 0  <=  x  <=  12,  an  exact  integer  result  is`
57`              returned.`
58
59`              For  integer x, 13 <= x <= 21, an exact floating-point result is`
60`              returned on machines with IEEE floating point.`
61
62`              For integer x, 22 <= x <= 170, the result is exact to 1 ULP.`
63
64`              For real x, x >= 0, the  result  is  approximated  by  computing`
65`              Gamma(x+1)  using  the ::math::ln_Gamma function, and the result`
66`              is expected to be precise to better than nine  significant  fig‐`
67`              ures.`
68
69`              It  is  an  error to present x <= -1 or x > 170, or a value of x`
70`              that is not numeric.`
71
72`       ::math::choose n k`
73`              Returns the binomial coefficient C(n, k)`
74
75
76`                 C(n,k) = n! / k! (n-k)!`
77
78
79`              If both parameters are integers and the result fits in 32  bits,`
80`              the result is rounded to an integer.`
81
82`              Integer results are exact up to at least n = 34.  Floating point`
83`              results are precise to better than nine significant figures.`
84
85`       ::math::Beta z w`
86`              Returns the Beta function of the parameters z and w.`
87
88
89`                 Beta(z,w) = Beta(w,z) = Gamma(z) * Gamma(w) / Gamma(z+w)`
90
91
92`              Results are returned as a floating point number precise to  bet‐`
93`              ter  than nine significant digits provided that w and z are both`
94`              at least 1.`
95
```

## BUGS, IDEAS, FEEDBACK

```97`       This document, and the package it describes, will  undoubtedly  contain`
98`       bugs  and  other  problems.  Please report such in the category math of`
99`       the  Tcllib  Trackers  [http://core.tcl.tk/tcllib/reportlist].   Please`
100`       also  report any ideas for enhancements you may have for either package`
101`       and/or documentation.`
102
103`       When proposing code changes, please provide unified diffs, i.e the out‐`
104`       put of diff -u.`
105
106`       Note  further  that  attachments  are  strongly  preferred over inlined`
107`       patches. Attachments can be made by going  to  the  Edit  form  of  the`
108`       ticket  immediately  after  its  creation, and then using the left-most`
109`       button in the secondary navigation bar.`
110
```

## CATEGORY

```112`       Mathematics`
113
114
115
116`tcllib                               1.2.3              math::combinatorics(n)`
```