@lakuna/umath 1.1.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"factorial.d.ts","sourceRoot":"","sources":["../../src/algorithms/factorial.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD"}
1
+ {"version":3,"file":"factorial.d.ts","sourceRoot":"","sources":["../../src/algorithms/factorial.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAMnD"}
@@ -1,4 +1,8 @@
1
1
  export default function factorial(n) {
2
- return n == 0 ? 1 : n * factorial(n - 1);
2
+ return n < 0
3
+ ? Infinity * (n % 2 ? 1 : -1)
4
+ : n == 0
5
+ ? 1
6
+ : n * factorial(n - 1);
3
7
  }
4
8
  //# sourceMappingURL=factorial.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"factorial.js","sourceRoot":"","sources":["../../src/algorithms/factorial.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,CAAS;IAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"factorial.js","sourceRoot":"","sources":["../../src/algorithms/factorial.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,CAAS;IAC1C,OAAO,CAAC,GAAG,CAAC;QACX,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC,IAAI,CAAC;YACP,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export default function hypergeometricPmf(N: number, K: number, n: number, k: number): number;
2
+ //# sourceMappingURL=hypergeometricPmf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hypergeometricPmf.d.ts","sourceRoot":"","sources":["../../src/algorithms/hypergeometricPmf.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5F"}
@@ -0,0 +1,5 @@
1
+ import combinations from "#algorithms/combinations";
2
+ export default function hypergeometricPmf(N, K, n, k) {
3
+ return (combinations(K, k) * combinations(N - K, n - k)) / combinations(N, n);
4
+ }
5
+ //# sourceMappingURL=hypergeometricPmf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hypergeometricPmf.js","sourceRoot":"","sources":["../../src/algorithms/hypergeometricPmf.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,0BAA0B,CAAC;AAWpD,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;IAChF,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"summation.d.ts","sourceRoot":"","sources":["../../src/algorithms/summation.ts"],"names":[],"mappings":"AAoBA,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAE/F"}
1
+ {"version":3,"file":"summation.d.ts","sourceRoot":"","sources":["../../src/algorithms/summation.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAQ/F"}
@@ -1,7 +1,8 @@
1
- function summationInternal(i, max, term) {
2
- return term(i) + (i < max ? summationInternal(i + 1, max, term) : 0);
3
- }
4
1
  export default function summation(min, max, term) {
5
- return summationInternal(min, max, term);
2
+ let out = 0;
3
+ for (let i = min; i <= max; i++) {
4
+ out += term(i);
5
+ }
6
+ return out;
6
7
  }
7
8
  //# sourceMappingURL=summation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"summation.js","sourceRoot":"","sources":["../../src/algorithms/summation.ts"],"names":[],"mappings":"AAQA,SAAS,iBAAiB,CAAC,CAAS,EAAE,GAAW,EAAE,IAA2B;IAC7E,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAUD,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,GAAW,EAAE,GAAW,EAAE,IAA2B;IACtF,OAAO,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"summation.js","sourceRoot":"","sources":["../../src/algorithms/summation.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,GAAW,EAAE,GAAW,EAAE,IAA2B;IAEtF,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE;QAChC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;KACf;IAED,OAAO,GAAG,CAAC;AACZ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -3,6 +3,7 @@ export { default as degreesToRadians } from "#algorithms/degreesToRadians";
3
3
  export { default as factorial } from "#algorithms/factorial";
4
4
  export { default as fibonacci } from "#algorithms/fibonacci";
5
5
  export { default as greatestCommonDivisor } from "#algorithms/greatestCommonDivisor";
6
+ export { default as hypergeometricPmf } from "#algorithms/hypergeometricPmf";
6
7
  export { default as isPrime } from "#algorithms/isPrime";
7
8
  export { default as permutations } from "#algorithms/permutations";
8
9
  export { default as primeFactorization } from "#algorithms/primeFactorization";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,KAAK,kBAAkB,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC5F,YAAY,EAAE,UAAU,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,KAAK,WAAW,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,KAAK,WAAW,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,KAAK,WAAW,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,KAAK,cAAc,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACvE,YAAY,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpE,YAAY,EAAE,UAAU,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,KAAK,WAAW,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,KAAK,WAAW,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,KAAK,WAAW,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvE,YAAY,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjE,YAAY,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,KAAK,kBAAkB,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC5F,YAAY,EAAE,UAAU,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,KAAK,WAAW,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,KAAK,WAAW,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,KAAK,WAAW,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,KAAK,cAAc,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACvE,YAAY,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpE,YAAY,EAAE,UAAU,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,KAAK,WAAW,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,KAAK,WAAW,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,KAAK,WAAW,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvE,YAAY,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjE,YAAY,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,8BAA8B,CAAC"}
package/dist/index.js CHANGED
@@ -3,6 +3,7 @@ export { default as degreesToRadians } from "#algorithms/degreesToRadians";
3
3
  export { default as factorial } from "#algorithms/factorial";
4
4
  export { default as fibonacci } from "#algorithms/fibonacci";
5
5
  export { default as greatestCommonDivisor } from "#algorithms/greatestCommonDivisor";
6
+ export { default as hypergeometricPmf } from "#algorithms/hypergeometricPmf";
6
7
  export { default as isPrime } from "#algorithms/isPrime";
7
8
  export { default as permutations } from "#algorithms/permutations";
8
9
  export { default as primeFactorization } from "#algorithms/primeFactorization";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAA2B,OAAO,IAAI,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE5F,OAAO,EAAoB,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAoB,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAoB,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAuB,OAAO,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGvE,OAAO,EAAoB,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAoB,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAoB,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAIvE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAA2B,OAAO,IAAI,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE5F,OAAO,EAAoB,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAoB,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAoB,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAuB,OAAO,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGvE,OAAO,EAAoB,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAoB,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAoB,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAIvE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,8BAA8B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lakuna/umath",
3
- "version": "1.1.1",
3
+ "version": "1.2.0",
4
4
  "description": "A lightweight math library.",
5
5
  "keywords": [
6
6
  "math"
@@ -5,5 +5,9 @@
5
5
  * @see [Factorial](https://en.wikipedia.org/wiki/Factorial)
6
6
  */
7
7
  export default function factorial(n: number): number {
8
- return n == 0 ? 1 : n * factorial(n - 1);
8
+ return n < 0
9
+ ? Infinity * (n % 2 ? 1 : -1) // Division by zero returns `Infinity` in JavaScript.
10
+ : n == 0
11
+ ? 1
12
+ : n * factorial(n - 1);
9
13
  }
@@ -0,0 +1,14 @@
1
+ import combinations from "#algorithms/combinations";
2
+
3
+ /**
4
+ * The probability mass function for the hypergeometric distribution.
5
+ * @param N The size of the finite population.
6
+ * @param K The number of objects with the desired feature in the finite population.
7
+ * @param n The number of draws without replacement.
8
+ * @param k The desired number of successes.
9
+ * @see [Hypergeometric distribution](https://en.wikipedia.org/wiki/Hypergeometric_distribution)
10
+ * @see [Probability mass function](https://en.wikipedia.org/wiki/Probability_mass_function)
11
+ */
12
+ export default function hypergeometricPmf(N: number, K: number, n: number, k: number): number {
13
+ return (combinations(K, k) * combinations(N - K, n - k)) / combinations(N, n);
14
+ }
@@ -1,15 +1,3 @@
1
- /**
2
- * Recursively sums up the results of the given function.
3
- * @param i The index of summation.
4
- * @param max The upper bound of the index of summation.
5
- * @param term The function used to generate each term.
6
- * @returns The sum.
7
- * @see [Summation](https://en.wikipedia.org/wiki/Summation)
8
- */
9
- function summationInternal(i: number, max: number, term: (i: number) => number): number {
10
- return term(i) + (i < max ? summationInternal(i + 1, max, term) : 0);
11
- }
12
-
13
1
  /**
14
2
  * Performs a summation.
15
3
  * @param min The lower bound (inclusive) of the index of summation.
@@ -19,5 +7,11 @@ function summationInternal(i: number, max: number, term: (i: number) => number):
19
7
  * @see [Summation](https://en.wikipedia.org/wiki/Summation)
20
8
  */
21
9
  export default function summation(min: number, max: number, term: (i: number) => number): number {
22
- return summationInternal(min, max, term);
10
+ // Not recursive to avoid exceeding the maximum call stack size.
11
+ let out = 0;
12
+ for (let i = min; i <= max; i++) {
13
+ out += term(i);
14
+ }
15
+
16
+ return out;
23
17
  }
package/src/index.ts CHANGED
@@ -3,6 +3,7 @@ export { default as degreesToRadians } from "#algorithms/degreesToRadians";
3
3
  export { default as factorial } from "#algorithms/factorial";
4
4
  export { default as fibonacci } from "#algorithms/fibonacci";
5
5
  export { default as greatestCommonDivisor } from "#algorithms/greatestCommonDivisor";
6
+ export { default as hypergeometricPmf } from "#algorithms/hypergeometricPmf";
6
7
  export { default as isPrime } from "#algorithms/isPrime";
7
8
  export { default as permutations } from "#algorithms/permutations";
8
9
  export { default as primeFactorization } from "#algorithms/primeFactorization";