bellNumbers.js (1311B)
1 import { factory } from '../../utils/factory.js'; 2 var name = 'bellNumbers'; 3 var dependencies = ['typed', 'addScalar', 'isNegative', 'isInteger', 'stirlingS2']; 4 export 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 });