1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#define UINT8_BIT(i) (UINT8_C(1) << (uint8_t)(i))
#define FACTORIAL_MAX INT64_C(12)
#define POW_2_11 INT64_C(2048)
#define POW_3_7 INT64_C(2187)
#define FACT_12 INT64_C(479001600)
#define FACT_8 INT64_C(40320)
#define COMB_12_4 INT64_C(495)
#define COMB_8_4 INT64_C(70)
#define UINT8_ERROR UINT8_MAX
STATIC int64_t binomial[12][12] = {
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 4, 6, 4, 1, 0, 0, 0, 0, 0, 0, 0},
{1, 5, 10, 10, 5, 1, 0, 0, 0, 0, 0, 0},
{1, 6, 15, 20, 15, 6, 1, 0, 0, 0, 0, 0},
{1, 7, 21, 35, 35, 21, 7, 1, 0, 0, 0, 0},
{1, 8, 28, 56, 70, 56, 28, 8, 1, 0, 0, 0},
{1, 9, 36, 84, 126, 126, 84, 36, 9, 1, 0, 0},
{1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1, 0},
{1, 11, 55, 165, 330, 462, 462, 330, 165, 55, 11, 1},
};
|