UNPKG

1.31 kBJavaScriptView Raw
1import { factory } from '../../utils/factory.js';
2var name = 'bellNumbers';
3var dependencies = ['typed', 'addScalar', 'isNegative', 'isInteger', 'stirlingS2'];
4export var createBellNumbers = /* #__PURE__ */factory(name, dependencies, _ref => {
5 var {
6 typed,
7 addScalar,
8 isNegative,
9 isInteger,
10 stirlingS2
11 } = _ref;
12
13 /**
14 * The Bell Numbers count the number of partitions of a set. A partition is a pairwise disjoint subset of S whose union is S.
15 * bellNumbers only takes integer arguments.
16 * The following condition must be enforced: n >= 0
17 *
18 * Syntax:
19 *
20 * math.bellNumbers(n)
21 *
22 * Examples:
23 *
24 * math.bellNumbers(3) // returns 5
25 * math.bellNumbers(8) // returns 4140
26 *
27 * See also:
28 *
29 * stirlingS2
30 *
31 * @param {Number | BigNumber} n Total number of objects in the set
32 * @return {Number | BigNumber} B(n)
33 */
34 return typed(name, {
35 'number | BigNumber': function numberBigNumber(n) {
36 if (!isInteger(n) || isNegative(n)) {
37 throw new TypeError('Non-negative integer value expected in function bellNumbers');
38 } // Sum (k=0, n) S(n,k).
39
40
41 var result = 0;
42
43 for (var i = 0; i <= n; i++) {
44 result = addScalar(result, stirlingS2(n, i));
45 }
46
47 return result;
48 }
49 });
50});
\No newline at end of file