cmath-js 3.0.0 → 4.0.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.
Files changed (44) hide show
  1. package/README.md +9 -9
  2. package/dist/internal/index.d.ts +0 -3
  3. package/dist/internal/index.js +0 -3
  4. package/dist/internal/index.js.map +1 -1
  5. package/dist/namespace-std/integers/abs.js.map +1 -1
  6. package/dist/namespace-std/integers/count-left-or-right-bits/create_countl_one.d.ts +4 -0
  7. package/dist/namespace-std/integers/count-left-or-right-bits/create_countl_one.js +9 -0
  8. package/dist/namespace-std/integers/count-left-or-right-bits/create_countl_one.js.map +1 -0
  9. package/dist/namespace-std/integers/{create_countl_zero.d.ts → count-left-or-right-bits/create_countl_zero.d.ts} +1 -1
  10. package/dist/namespace-std/integers/count-left-or-right-bits/create_countl_zero.js +18 -0
  11. package/dist/namespace-std/integers/count-left-or-right-bits/create_countl_zero.js.map +1 -0
  12. package/dist/namespace-std/integers/count-left-or-right-bits/create_countr_one.d.ts +4 -0
  13. package/dist/namespace-std/integers/count-left-or-right-bits/create_countr_one.js +9 -0
  14. package/dist/namespace-std/integers/count-left-or-right-bits/create_countr_one.js.map +1 -0
  15. package/dist/namespace-std/integers/count-left-or-right-bits/create_countr_zero.d.ts +4 -0
  16. package/dist/namespace-std/integers/count-left-or-right-bits/create_countr_zero.js +20 -0
  17. package/dist/namespace-std/integers/count-left-or-right-bits/create_countr_zero.js.map +1 -0
  18. package/dist/namespace-std/integers/count-left-or-right-bits/index.d.ts +4 -0
  19. package/dist/namespace-std/integers/count-left-or-right-bits/index.js +5 -0
  20. package/dist/namespace-std/integers/count-left-or-right-bits/index.js.map +1 -0
  21. package/dist/namespace-std/integers/index.d.ts +1 -4
  22. package/dist/namespace-std/integers/index.js +1 -4
  23. package/dist/namespace-std/integers/index.js.map +1 -1
  24. package/package.json +1 -1
  25. package/dist/internal/bitsInUnsignedInteger.d.ts +0 -1
  26. package/dist/internal/bitsInUnsignedInteger.js +0 -30
  27. package/dist/internal/bitsInUnsignedInteger.js.map +0 -1
  28. package/dist/internal/sanitizeSmallUnsignedInteger.d.ts +0 -1
  29. package/dist/internal/sanitizeSmallUnsignedInteger.js +0 -7
  30. package/dist/internal/sanitizeSmallUnsignedInteger.js.map +0 -1
  31. package/dist/internal/sanitizeUnsignedInteger.d.ts +0 -1
  32. package/dist/internal/sanitizeUnsignedInteger.js +0 -11
  33. package/dist/internal/sanitizeUnsignedInteger.js.map +0 -1
  34. package/dist/namespace-std/integers/countl_one.d.ts +0 -2
  35. package/dist/namespace-std/integers/countl_one.js +0 -10
  36. package/dist/namespace-std/integers/countl_one.js.map +0 -1
  37. package/dist/namespace-std/integers/countr_one.d.ts +0 -1
  38. package/dist/namespace-std/integers/countr_one.js +0 -6
  39. package/dist/namespace-std/integers/countr_one.js.map +0 -1
  40. package/dist/namespace-std/integers/countr_zero.d.ts +0 -2
  41. package/dist/namespace-std/integers/countr_zero.js +0 -6
  42. package/dist/namespace-std/integers/countr_zero.js.map +0 -1
  43. package/dist/namespace-std/integers/create_countl_zero.js +0 -12
  44. package/dist/namespace-std/integers/create_countl_zero.js.map +0 -1
package/README.md CHANGED
@@ -14,17 +14,17 @@ Implementation of parts of C's & C++'s numerics libraries in TypeScript/JavaScri
14
14
  ## Integer functions
15
15
  These functions accept either a `bigint` or an integer `number`:
16
16
  - [`abs`](https://en.cppreference.com/w/c/numeric/math/abs)
17
- - [`countl_one`](https://en.cppreference.com/w/cpp/numeric/countl_one)
18
- - [`countl_zero`](https://en.cppreference.com/w/cpp/numeric/countl_zero) in the form of
17
+ - [`countl_one`](https://en.cppreference.com/w/cpp/numeric/countl_one) as `create_countl_one`, which is used this way:
19
18
  ```ts
20
- import { create_countl_zero } from "cmath-js";
21
- const countl_zero_u16 = create_countl_zero({ bits: 16 });
22
- const integer = 0x0FFF;
23
- // Prints "0000111111111111 has 4 leading zero bits."
24
- console.log(`${integer.toString(2).padStart(16, "0")} has ${countl_zero_u16(integer)} leading zero bits.`);
19
+ import { create_countl_one } from "cmath-js";
20
+ const countl_one_u16 = create_countl_one({ bits: 16 });
21
+ const integer = 0xF0_00;
22
+ // Prints "1111000000000000 has 4 leading zero bits."
23
+ console.log(`${integer.toString(2).padStart(16, "0")} has ${countl_one_u16(integer)} leading one bits.`);
25
24
  ```
26
- - [`countr_one`](https://en.cppreference.com/w/cpp/numeric/countr_one)
27
- - [`countr_zero`](https://en.cppreference.com/w/cpp/numeric/countr_zero)
25
+ - [`countl_zero`](https://en.cppreference.com/w/cpp/numeric/countl_zero) as `create_countl_zero`
26
+ - [`countr_one`](https://en.cppreference.com/w/cpp/numeric/countr_one) as `create_countr_one`
27
+ - [`countr_zero`](https://en.cppreference.com/w/cpp/numeric/countr_zero) as `create_countr_zero`
28
28
  - [`div`](https://en.cppreference.com/w/cpp/numeric/math/div)
29
29
  - [`gcd`](https://en.cppreference.com/w/cpp/numeric/gcd). Example:
30
30
  ```ts
@@ -1,5 +1,2 @@
1
- export { bitsInUnsignedInteger } from "./bitsInUnsignedInteger.js";
2
1
  export { floatFromBits } from "./floatFromBits.js";
3
2
  export { floatOctets } from "./floatOctets.js";
4
- export { sanitizeSmallUnsignedInteger } from "./sanitizeSmallUnsignedInteger.js";
5
- export { sanitizeUnsignedInteger } from "./sanitizeUnsignedInteger.js";
@@ -1,6 +1,3 @@
1
- export { bitsInUnsignedInteger } from "./bitsInUnsignedInteger.js";
2
1
  export { floatFromBits } from "./floatFromBits.js";
3
2
  export { floatOctets } from "./floatOctets.js";
4
- export { sanitizeSmallUnsignedInteger } from "./sanitizeSmallUnsignedInteger.js";
5
- export { sanitizeUnsignedInteger } from "./sanitizeUnsignedInteger.js";
6
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/internal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/internal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"abs.js","sourceRoot":"","sources":["../../../src/namespace-std/integers/abs.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,GAAG,CAAC,OAAwB;IAC3C,IAAI,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"abs.js","sourceRoot":"","sources":["../../../src/namespace-std/integers/abs.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,GAAG,CAAC,OAAwB;IAC3C,IAAI,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export type countl_one_function = (integer: bigint | number) => number;
2
+ export declare function create_countl_one({ bits, }: {
3
+ bits: number;
4
+ }): countl_one_function;
@@ -0,0 +1,9 @@
1
+ import { create_countl_zero } from "./index.js";
2
+ export function create_countl_one({ bits, }) {
3
+ const countl_zero = create_countl_zero({ bits });
4
+ if (bits <= 32) {
5
+ return (integer) => countl_zero(~integer);
6
+ }
7
+ return (integer) => countl_zero(~BigInt(integer));
8
+ }
9
+ //# sourceMappingURL=create_countl_one.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create_countl_one.js","sourceRoot":"","sources":["../../../../src/namespace-std/integers/count-left-or-right-bits/create_countl_one.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AA8BhD,MAAM,UAAU,iBAAiB,CAAC,EACjC,IAAI,GASJ;IACA,MAAM,WAAW,GAAG,kBAAkB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAEjD,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QAEhB,OAAO,CAAC,OAAwB,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IAGD,OAAO,CAAC,OAAwB,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACpE,CAAC"}
@@ -1,4 +1,4 @@
1
1
  export type countl_zero_function = (integer: bigint | number) => number;
2
- export declare function create_countl_zero(options: {
2
+ export declare function create_countl_zero({ bits, }: {
3
3
  bits: number;
4
4
  }): countl_zero_function;
@@ -0,0 +1,18 @@
1
+ export function create_countl_zero({ bits, }) {
2
+ if (bits <= 32) {
3
+ const bitsLessThan32 = 32 - bits;
4
+ const mask = (2 ** bits - 1) | 0;
5
+ return (integer) => {
6
+ const truncated = (typeof integer === "number" ? integer : Number(BigInt.asIntN(32, integer))) & mask;
7
+ return Math.clz32(truncated) - bitsLessThan32;
8
+ };
9
+ }
10
+ return (integer) => {
11
+ const truncated = BigInt.asUintN(bits, BigInt(integer));
12
+ if (truncated === 0n) {
13
+ return bits;
14
+ }
15
+ return bits - truncated.toString(2).length;
16
+ };
17
+ }
18
+ //# sourceMappingURL=create_countl_zero.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create_countl_zero.js","sourceRoot":"","sources":["../../../../src/namespace-std/integers/count-left-or-right-bits/create_countl_zero.ts"],"names":[],"mappings":"AA4BA,MAAM,UAAU,kBAAkB,CAAC,EAClC,IAAI,GASJ;IACA,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QAGhB,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC;QACjC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO,CAAC,OAAO,EAAE,EAAE;YAClB,MAAM,SAAS,GACd,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACrF,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,cAAc,CAAC;QAC/C,CAAC,CAAC;IACH,CAAC;IAID,OAAO,CAAC,OAAO,EAAE,EAAE;QAClB,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5C,CAAC,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ export type countr_one_function = (integer: bigint | number) => number;
2
+ export declare const create_countr_one: ({ bits }: {
3
+ bits: number;
4
+ }) => countr_one_function;
@@ -0,0 +1,9 @@
1
+ import { create_countr_zero } from "./index.js";
2
+ export const create_countr_one = ({ bits }) => {
3
+ const countr_zero = create_countr_zero({ bits });
4
+ if (bits <= 32) {
5
+ return (integer) => countr_zero(~integer);
6
+ }
7
+ return (integer) => countr_zero(~BigInt(integer));
8
+ };
9
+ //# sourceMappingURL=create_countr_one.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create_countr_one.js","sourceRoot":"","sources":["../../../../src/namespace-std/integers/count-left-or-right-bits/create_countr_one.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAyBhD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAE,IAAI,EAAoB,EAAuB,EAAE;IACpF,MAAM,WAAW,GAAG,kBAAkB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAEjD,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QAEhB,OAAO,CAAC,OAAwB,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IAGD,OAAO,CAAC,OAAwB,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACpE,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export type countr_zero_function = (integer: bigint | number) => number;
2
+ export declare function create_countr_zero({ bits }: {
3
+ bits: number;
4
+ }): countr_zero_function;
@@ -0,0 +1,20 @@
1
+ export function create_countr_zero({ bits }) {
2
+ if (bits <= 32) {
3
+ const mask = (2 ** bits - 1) | 0;
4
+ return (integer) => {
5
+ const truncated = (typeof integer === "number" ? integer : Number(BigInt.asIntN(32, integer))) & mask;
6
+ const zeroesAsOnes = truncated ^ (truncated - 1);
7
+ const trailLength = 31 - Math.clz32(zeroesAsOnes);
8
+ return truncated === 0 ? bits : trailLength;
9
+ };
10
+ }
11
+ return (integer) => {
12
+ const truncated = BigInt.asUintN(bits, BigInt(integer));
13
+ if (truncated === 0n) {
14
+ return bits;
15
+ }
16
+ const digits = truncated.toString(2);
17
+ return digits.length - digits.lastIndexOf("1") - 1;
18
+ };
19
+ }
20
+ //# sourceMappingURL=create_countr_zero.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create_countr_zero.js","sourceRoot":"","sources":["../../../../src/namespace-std/integers/count-left-or-right-bits/create_countr_zero.ts"],"names":[],"mappings":"AAuBA,MAAM,UAAU,kBAAkB,CAAC,EAAE,IAAI,EAAoB;IAC5D,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QAGhB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO,CAAC,OAAwB,EAAU,EAAE;YAC3C,MAAM,SAAS,GACd,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAGrF,MAAM,YAAY,GAAG,SAAS,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;YAEjD,MAAM,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAClD,OAAO,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QAC7C,CAAC,CAAC;IACH,CAAC;IAID,OAAO,CAAC,OAAwB,EAAU,EAAE;QAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAErC,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { create_countl_one, type countl_one_function } from "./create_countl_one.js";
2
+ export { create_countl_zero, type countl_zero_function } from "./create_countl_zero.js";
3
+ export { create_countr_one, type countr_one_function } from "./create_countr_one.js";
4
+ export { create_countr_zero, type countr_zero_function } from "./create_countr_zero.js";
@@ -0,0 +1,5 @@
1
+ export { create_countl_one } from "./create_countl_one.js";
2
+ export { create_countl_zero } from "./create_countl_zero.js";
3
+ export { create_countr_one } from "./create_countr_one.js";
4
+ export { create_countr_zero } from "./create_countr_zero.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/namespace-std/integers/count-left-or-right-bits/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA4B,MAAM,wBAAwB,CAAC;AAErF,OAAO,EAAE,kBAAkB,EAA6B,MAAM,yBAAyB,CAAC;AAExF,OAAO,EAAE,iBAAiB,EAA4B,MAAM,wBAAwB,CAAC;AAErF,OAAO,EAAE,kBAAkB,EAA6B,MAAM,yBAAyB,CAAC"}
@@ -1,8 +1,5 @@
1
1
  export { abs } from "./abs.js";
2
- export { countl_one } from "./countl_one.js";
3
- export { create_countl_zero, type countl_zero_function } from "./create_countl_zero.js";
4
- export { countr_one } from "./countr_one.js";
5
- export { countr_zero } from "./countr_zero.js";
2
+ export * from "./count-left-or-right-bits/index.js";
6
3
  export { div, type div_t, type div_t_bigint, type div_t_number } from "./div/index.js";
7
4
  export { gcd } from "./gcd.js";
8
5
  export { lcm } from "./lcm.js";
@@ -1,8 +1,5 @@
1
1
  export { abs } from "./abs.js";
2
- export { countl_one } from "./countl_one.js";
3
- export { create_countl_zero } from "./create_countl_zero.js";
4
- export { countr_one } from "./countr_one.js";
5
- export { countr_zero } from "./countr_zero.js";
2
+ export * from "./count-left-or-right-bits/index.js";
6
3
  export { div } from "./div/index.js";
7
4
  export { gcd } from "./gcd.js";
8
5
  export { lcm } from "./lcm.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/namespace-std/integers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAA6B,MAAM,yBAAyB,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAoD,MAAM,gBAAgB,CAAC;AACvF,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/namespace-std/integers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,cAAc,qCAAqC,CAAC;AACpD,OAAO,EAAE,GAAG,EAAoD,MAAM,gBAAgB,CAAC;AACvF,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC"}
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/oskarlh/cmath-js.git"
7
7
  },
8
- "version": "3.0.0",
8
+ "version": "4.0.0",
9
9
  "exports": {
10
10
  ".": {
11
11
  "default": "./dist/index.js",
@@ -1 +0,0 @@
1
- export declare function bitsInUnsignedInteger(values: [fixedIntegerSizeInBits: number, integer: bigint | number] | [integer: bigint | number]): Uint8Array;
@@ -1,30 +0,0 @@
1
- export function bitsInUnsignedInteger(values) {
2
- let integer;
3
- let fixedIntegerSizeInBits = NaN;
4
- if (values.length === 1) {
5
- [integer] = values;
6
- }
7
- else {
8
- [fixedIntegerSizeInBits, integer] = values;
9
- if (fixedIntegerSizeInBits <= 0 || !Number.isInteger(fixedIntegerSizeInBits)) {
10
- return new Uint8Array();
11
- }
12
- }
13
- const integerIsZeroOrInvalid = integer <= 0 || (typeof integer === "number" && !Number.isInteger(integer));
14
- if (integerIsZeroOrInvalid) {
15
- if (!fixedIntegerSizeInBits) {
16
- return new Uint8Array();
17
- }
18
- integer = 0;
19
- }
20
- let bitString = BigInt(integer).toString(2);
21
- if (bitString.length < fixedIntegerSizeInBits) {
22
- bitString = bitString.padStart(fixedIntegerSizeInBits, "0");
23
- }
24
- const digits = Uint8Array.from(bitString);
25
- if (digits.length > fixedIntegerSizeInBits) {
26
- return digits.slice(-fixedIntegerSizeInBits);
27
- }
28
- return digits;
29
- }
30
- //# sourceMappingURL=bitsInUnsignedInteger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bitsInUnsignedInteger.js","sourceRoot":"","sources":["../../src/internal/bitsInUnsignedInteger.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,qBAAqB,CACpC,MAA+F;IAE/F,IAAI,OAAwB,CAAC;IAC7B,IAAI,sBAAsB,GAAG,GAAG,CAAC;IAEjC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;IACpB,CAAC;SAAM,CAAC;QACP,CAAC,sBAAsB,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;QAE3C,IAAI,sBAAsB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,CAAC;YAC9E,OAAO,IAAI,UAAU,EAAE,CAAC;QACzB,CAAC;IACF,CAAC;IAED,MAAM,sBAAsB,GAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7E,IAAI,sBAAsB,EAAE,CAAC;QAC5B,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC7B,OAAO,IAAI,UAAU,EAAE,CAAC;QACzB,CAAC;QACD,OAAO,GAAG,CAAC,CAAC;IACb,CAAC;IAED,IAAI,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAI,SAAS,CAAC,MAAM,GAAG,sBAAsB,EAAE,CAAC;QAC/C,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;IAC7D,CAAC;IAGD,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,SAAqD,CAAC,CAAC;IAEtF,IAAI,MAAM,CAAC,MAAM,GAAG,sBAAsB,EAAE,CAAC;QAC5C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC"}
@@ -1 +0,0 @@
1
- export declare function sanitizeSmallUnsignedInteger(someNumber: number): number;
@@ -1,7 +0,0 @@
1
- export function sanitizeSmallUnsignedInteger(someNumber) {
2
- if (Number.isInteger(someNumber) && someNumber > 0) {
3
- return someNumber;
4
- }
5
- return 0;
6
- }
7
- //# sourceMappingURL=sanitizeSmallUnsignedInteger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sanitizeSmallUnsignedInteger.js","sourceRoot":"","sources":["../../src/internal/sanitizeSmallUnsignedInteger.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,4BAA4B,CAAC,UAAkB;IAC9D,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACpD,OAAO,UAAU,CAAC;IACnB,CAAC;IACD,OAAO,CAAC,CAAC;AACV,CAAC"}
@@ -1 +0,0 @@
1
- export declare function sanitizeUnsignedInteger(someNumber: number | bigint): bigint;
@@ -1,11 +0,0 @@
1
- import { sanitizeSmallUnsignedInteger } from "./index.js";
2
- export function sanitizeUnsignedInteger(someNumber) {
3
- if (typeof someNumber === "bigint") {
4
- if (someNumber < 0n) {
5
- return 0n;
6
- }
7
- return someNumber;
8
- }
9
- return BigInt(sanitizeSmallUnsignedInteger(someNumber));
10
- }
11
- //# sourceMappingURL=sanitizeUnsignedInteger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sanitizeUnsignedInteger.js","sourceRoot":"","sources":["../../src/internal/sanitizeUnsignedInteger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAE1D,MAAM,UAAU,uBAAuB,CAAC,UAA2B;IAClE,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACpC,IAAI,UAAU,GAAG,EAAE,EAAE,CAAC;YACrB,OAAO,EAAE,CAAC;QACX,CAAC;QACD,OAAO,UAAU,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC,CAAC;AACzD,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function countl_one(fixedIntegerSizeInBits: number, integer: bigint | number): number;
2
- export declare function countl_one(integer: bigint | number): number;
@@ -1,10 +0,0 @@
1
- import { bitsInUnsignedInteger } from "../../internal/index.js";
2
- export function countl_one(...values) {
3
- const digits = bitsInUnsignedInteger(values);
4
- const endOfOnes = digits.indexOf(0);
5
- if (endOfOnes === -1) {
6
- return digits.length;
7
- }
8
- return endOfOnes;
9
- }
10
- //# sourceMappingURL=countl_one.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"countl_one.js","sourceRoot":"","sources":["../../../src/namespace-std/integers/countl_one.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAShE,MAAM,UAAU,UAAU,CACzB,GAAG,MAA+F;IAElG,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAEpC,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC,MAAM,CAAC;IACtB,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC"}
@@ -1 +0,0 @@
1
- export declare function countr_one(integer: bigint | number): number;
@@ -1,6 +0,0 @@
1
- import { sanitizeUnsignedInteger } from "../../internal/sanitizeUnsignedInteger.js";
2
- export function countr_one(integer) {
3
- const digits = sanitizeUnsignedInteger(integer).toString(2);
4
- return digits.length - digits.lastIndexOf("0") - 1;
5
- }
6
- //# sourceMappingURL=countr_one.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"countr_one.js","sourceRoot":"","sources":["../../../src/namespace-std/integers/countr_one.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAqBpF,MAAM,UAAU,UAAU,CAAC,OAAwB;IAClD,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5D,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpD,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function countr_zero(fixedIntegerSizeInBits: number, integer: bigint | number): number;
2
- export declare function countr_zero(integer: bigint | number): number;
@@ -1,6 +0,0 @@
1
- import { bitsInUnsignedInteger } from "../../internal/index.js";
2
- export function countr_zero(...values) {
3
- const digits = bitsInUnsignedInteger(values);
4
- return digits.length - digits.lastIndexOf(1) - 1;
5
- }
6
- //# sourceMappingURL=countr_zero.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"countr_zero.js","sourceRoot":"","sources":["../../../src/namespace-std/integers/countr_zero.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAUhE,MAAM,UAAU,WAAW,CAC1B,GAAG,MAA+F;IAElG,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAClD,CAAC"}
@@ -1,12 +0,0 @@
1
- import { sanitizeSmallUnsignedInteger, sanitizeUnsignedInteger } from "../../internal/index.js";
2
- export function create_countl_zero(options) {
3
- const bits = sanitizeSmallUnsignedInteger(options.bits);
4
- return (integer) => {
5
- const truncated = BigInt.asUintN(bits, sanitizeUnsignedInteger(integer));
6
- if (truncated === 0n) {
7
- return bits;
8
- }
9
- return bits - truncated.toString(2).length;
10
- };
11
- }
12
- //# sourceMappingURL=create_countl_zero.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create_countl_zero.js","sourceRoot":"","sources":["../../../src/namespace-std/integers/create_countl_zero.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AA4BhG,MAAM,UAAU,kBAAkB,CAAC,OAQlC;IACA,MAAM,IAAI,GAAG,4BAA4B,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,OAAO,CAAC,OAAwB,EAAU,EAAE;QAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;QACzE,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5C,CAAC,CAAC;AACH,CAAC"}