Combinatorial Functions#

Factorial(n): RngIntElt -> RngIntElt#

The factorial \(n!\) for non-negative small integer \(n\).

NumberOfPermutations(n, k): RngIntElt, RngIntElt -> RngIntElt#

The number of permutations of \(n\) distinct objects taken \(k\) at a time.

Binomial(n, r): RngIntElt, RngIntElt -> RngIntElt#

The binomial coefficient \(n\choose r\).

Multinomial(n, [r₁, ... rₙ]): RngIntElt, [RngIntElt] -> RngIntElt#

Given a sequence \(Q = [r_1, \ldots, r_k]\) of positive integers such that \(n = r_1 + ... + r_k\), return the multinomial coefficient \(n\choose r_1, \ldots, r_k\).

Fibonacci(n): RngIntElt -> RngIntElt#

Given an integer \(n\), this function returns the \(n\)-th Fibonacci number \(F_n\), which can be defined via the recursion \(F_0 = 0\), \(F_1 = 1\), \(F_n = F_{n-1} + F_{n-2}\) for all integers \(n\). Note that \(n\) is allowed to be negative, and that \(F_{-n} = (-1)^{n+1} F_n\).

Catalan(n): RngIntElt -> RngIntElt#

Given a small non-negative integer \(n\), this function returns the \(n\)-th Catalan number \(C_n\), defined via the recursion \(C_0 = 1\), \(C_{n+1} = C_n\cdot(4n+2)/(n+2)\).

Lucas(n): RngIntElt -> RngIntElt#

Given an integer \(n\), this function returns the \(n\)-th Lucas number \(L_n\), which can be defined via the recursion \(L_0 = 2\), \(L_1 = 1\), \(L_n = L_{n-1} + L_{n-2}\) for all integers \(n\). Note that \(n\) is allowed to be negative, and that \(L_{-n} = (-1)^{n}L_n\).

GeneralizedFibonacciNumber(g0, g1, n): RngIntElt, RngIntElt, RngIntElt -> RngIntElt#

The \(n\)th member of the generalized Fibonacci sequence defined by \(G_0 = g_0\), \(G_1 = g_1\), \(G_n = G_{n-1} + G_{n-2}\) for all integers \(n\). Note that \(n\) is allowed to be negative. The Fibonacci and Lucas numbers are special cases where \((g_0, g_1) = (0, 1)\) or \((2, 1)\) respectively.

StirlingFirst(n, k): RngIntElt, RngIntElt -> RngIntElt#

The Stirling number of the first type, \([{n\atop k}]\), where \(n\) and \(k\) are non-negative integers.

StirlingSecond(n, k): RngIntElt, RngIntElt -> RngIntElt#

The Stirling number of the second type, \(\{{n\atop k}\}\), where \(n\) and \(k\) are non-negative integers.

Bell(n): RngIntElt -> RngIntElt#

The \(n\)th Bell number, giving the number of partitions of a set of size \(n\). (Not to be confused with NumberOfPartitions(n), which gives the number of partitions of the integer \(n\).) This is equal to the sum of StirlingSecond(n,k) for \(k\) between 0 and \(n\) (inclusive).

EulerianNumber(n, r): RngIntElt, RngIntElt -> RngIntElt#

The number \(E(n,r)\) of permutations \(p\) of \(\{1, \dots, n\}\) having exactly \(r\) ascents (i.e., places where \(p_i < p_{i+1}\))

HarmonicNumber(n): RngIntElt -> FldRatElt#

The \(n\)th harmonic number \(H_n = \Sigma_{i=1}^n {1\over i}\).

BernoulliNumber(n): RngIntElt -> FldRatElt#

Returns the \(n\)th Bernoulli number \(B_n\) as a rational number.

BernoulliApproximation(n): RngIntElt -> FldPrElt#

Returns a real approximation to the \(n\)th Bernoulli number \(B_n\).

BernoulliPolynomial(n): RngIntElt -> RngUPolElt#

The \(n\)th Bernoulli polynomial \(B_n(x) = \sum_{k=0}^n {n \choose k} B_k x^{n-k}\) where \(B_n\) is the \(n\)th Bernoulli number.