Number of partitions of an integer

Share:

Description

Given an integer, P() returns the number of additive partitions, Q() returns the number of unequal partitions, and R() returns the number of restricted partitions. Function S() returns the number of block partitions.

Usage

1
2
3
4
P(n, give = FALSE)
Q(n, give = FALSE)
R(m, n, include.zero = FALSE)
S(f, n = NULL, include.fewer = FALSE)

Arguments

n

Integer whose partition number is desired. In function S(), the default of NULL means to return the number of partitions of any size

m

In function R(), the order of the decomposition

give

Boolean, with default FALSE meaning to return just P(n) or Q(n) and TRUE meaning to return P(1:n) or Q(1:n) (this option takes no extra computation)

include.zero

In restrictedparts(), Boolean with default FALSE meaning to count only partitions of n into exactly m parts; and TRUE meaning to include partitions of n into at most m parts (because parts of zero are included)

include.fewer

In function blockparts(), Boolean with default FALSE meaning to return partitions into exactly n and TRUE meaning to return partitions into at most n

f

In function S(), the stack vector

Details

Functions P() and Q() use Euler's recursion formula. Function R() enumerates the partitions using Hindenburg's method (see Andrews) and counts them until the recursion bottoms out.

Function S() finds the coefficient of x^n in the generating function prod_{i=1}^{L}(1+x+x^2+...+x^(f[i])), where L is the length of f, using the polynom package.

All these functions return a double.

Note

Functions P() and Q() use unsigned long long integers, a type which is system-dependent. For me, P() works for n equal to or less than 416, and Q() works for n less than or equal to 792. YMMV; none of the methods test for overflow, so use with care!

Author(s)

Robin K. S. Hankin; S() is due to an anonymous JSS referee

Examples

1
2
3
4
5
6
P(10,give=TRUE)
Q(10,give=TRUE)
R(10,20,include.zero=FALSE)
R(10,20,include.zero=TRUE)

S(1:4,5)