Class BinomialCoefficient
- java.lang.Object
-
- org.apache.commons.numbers.combinatorics.BinomialCoefficient
-
public final class BinomialCoefficient extends java.lang.ObjectRepresentation of the binomial coefficient. It is "n choose k", the number ofk-element subsets that can be selected from ann-element set.
-
-
Field Summary
Fields Modifier and Type Field Description private static intLIMIT_NThe maximum n that can be computed without overflow of a long for any m.private static intMAX_MThe maximum m that can be computed without overflow of a long.private static intSMALL_NThe maximum n that can be computed without intermediate overflow for any m.
-
Constructor Summary
Constructors Modifier Constructor Description privateBinomialCoefficient()Private constructor.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description (package private) static intcheckBinomial(int n, int k)Check binomial preconditions.static longvalue(int n, int k)Computes the binomial coefficient.
-
-
-
Field Detail
-
MAX_M
private static final int MAX_M
The maximum m that can be computed without overflow of a long.C(68, 34) > 2^63.- See Also:
- Constant Field Values
-
SMALL_N
private static final int SMALL_N
The maximum n that can be computed without intermediate overflow for any m.C(61, 30) * 30 < 2^63.- See Also:
- Constant Field Values
-
LIMIT_N
private static final int LIMIT_N
The maximum n that can be computed without overflow of a long for any m.C(66, 33) < 2^63.- See Also:
- Constant Field Values
-
-
Method Detail
-
value
public static long value(int n, int k)Computes the binomial coefficient.The largest value of
nfor which all coefficients can fit into alongis 66. Largernmay result in anArithmeticExceptiondepending on the value ofk.Any
min(k, n - k) >= 34cannot fit into alongand will result in anArithmeticException.- Parameters:
n- Size of the set.k- Size of the subsets to be counted.- Returns:
n choose k.- Throws:
java.lang.IllegalArgumentException- ifn < 0,k < 0ork > n.java.lang.ArithmeticException- if the result is too large to be represented by along.
-
checkBinomial
static int checkBinomial(int n, int k)Check binomial preconditions.For convenience in implementations this returns the smaller of
korn - kallowing symmetry to be exploited in computing the binomial coefficient.- Parameters:
n- Size of the set.k- Size of the subsets to be counted.- Returns:
- min(k, n - k)
- Throws:
java.lang.IllegalArgumentException- ifn < 0.java.lang.IllegalArgumentException- ifk > nork < 0.
-
-