cmath-js 5.9.0 → 5.10.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.
package/README.md CHANGED
@@ -27,6 +27,7 @@ Implementation of parts of C++'s numerics libraries in TypeScript/JavaScript, in
27
27
  These functions accept either a `bigint` or an integer `number`:
28
28
 
29
29
  - [`abs`](https://en.cppreference.com/c/numeric/math/abs)
30
+ - [`bit_ceil`](https://en.cppreference.com/cpp/numeric/bit_ceil)
30
31
  - [`countl_one`](https://en.cppreference.com/cpp/numeric/countl_one) as `create_countl_one`, which is used this way:
31
32
  ```ts
32
33
  import { create_countl_one } from "cmath-js";
@@ -0,0 +1 @@
1
+ export declare function bit_ceil<Integer extends bigint | number>(integer: Integer): Integer;
@@ -0,0 +1,8 @@
1
+ import { bit_ceil_bigint } from "./bit_ceil_bigint.js";
2
+ import { bit_ceil_number } from "./bit_ceil_number.js";
3
+ export function bit_ceil(integer) {
4
+ return typeof integer === "number"
5
+ ? bit_ceil_number(integer)
6
+ : bit_ceil_bigint(integer);
7
+ }
8
+ //# sourceMappingURL=bit_ceil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bit_ceil.js","sourceRoot":"","sources":["../../../../src/namespace-std/integers/bit_ceil/bit_ceil.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AASvD,MAAM,UAAU,QAAQ,CAAkC,OAAgB;IACzE,OAAO,OAAO,OAAO,KAAK,QAAQ;QACjC,CAAC,CAAE,eAAe,CAAC,OAAO,CAAa;QACvC,CAAC,CAAE,eAAe,CAAC,OAAO,CAAa,CAAC;AAC1C,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function bit_ceil_bigint(integer: bigint): bigint;
@@ -0,0 +1,7 @@
1
+ export function bit_ceil_bigint(integer) {
2
+ if (integer < 2n) {
3
+ return 1n;
4
+ }
5
+ return 1n << BigInt((integer - 1n).toString(2).length);
6
+ }
7
+ //# sourceMappingURL=bit_ceil_bigint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bit_ceil_bigint.js","sourceRoot":"","sources":["../../../../src/namespace-std/integers/bit_ceil/bit_ceil_bigint.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAC,OAAe;IAC9C,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;IACX,CAAC;IAED,OAAO,EAAE,IAAI,MAAM,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function bit_ceil_number(integer: number): number;
@@ -0,0 +1,14 @@
1
+ export function bit_ceil_number(integer) {
2
+ if (!Number.isSafeInteger(integer) || integer < 1 || integer > 2 ** 52) {
3
+ return 1;
4
+ }
5
+ let minusOne = integer - 1;
6
+ let power = 32;
7
+ if (minusOne >= 2 ** 32) {
8
+ power = 64;
9
+ minusOne /= 2 ** 32;
10
+ }
11
+ power -= Math.clz32(minusOne);
12
+ return 2 ** power;
13
+ }
14
+ //# sourceMappingURL=bit_ceil_number.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bit_ceil_number.js","sourceRoot":"","sources":["../../../../src/namespace-std/integers/bit_ceil/bit_ceil_number.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAC,OAAe;IAC9C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QACxE,OAAO,CAAC,CAAC;IACV,CAAC;IAED,IAAI,QAAQ,GAAG,OAAO,GAAG,CAAC,CAAC;IAE3B,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,QAAQ,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACzB,KAAK,GAAG,EAAE,CAAC;QACX,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IACD,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC9B,OAAO,CAAC,IAAI,KAAK,CAAC;AACnB,CAAC"}
@@ -2,6 +2,7 @@ export function has_single_bit(integer) {
2
2
  if (typeof integer === "number" && !Number.isInteger(integer)) {
3
3
  return false;
4
4
  }
5
- return String(BigInt(integer)).lastIndexOf("1") === 0;
5
+ const asBigInt = BigInt(integer);
6
+ return asBigInt !== 0n && !(asBigInt & (asBigInt - 1n));
6
7
  }
7
8
  //# sourceMappingURL=has_single_bit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"has_single_bit.js","sourceRoot":"","sources":["../../../src/namespace-std/integers/has_single_bit.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,cAAc,CAAC,OAAwB;IACtD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/D,OAAO,KAAK,CAAC;IACd,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"has_single_bit.js","sourceRoot":"","sources":["../../../src/namespace-std/integers/has_single_bit.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,cAAc,CAAC,OAAwB;IACtD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/D,OAAO,KAAK,CAAC;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACjC,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export { abs } from "./abs.ts";
2
+ export { bit_ceil } from "./bit_ceil/bit_ceil.ts";
2
3
  export * from "./count-left-or-right-bits/index.ts";
3
4
  export { div, type div_t, type div_t_bigint, type div_t_number } from "./div/index.ts";
4
5
  export { gcd } from "./gcd/gcd.ts";
@@ -1,4 +1,5 @@
1
1
  export { abs } from "./abs.js";
2
+ export { bit_ceil } from "./bit_ceil/bit_ceil.js";
2
3
  export * from "./count-left-or-right-bits/index.js";
3
4
  export { div } from "./div/index.js";
4
5
  export { gcd } from "./gcd/gcd.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,cAAc,qCAAqC,CAAC;AACpD,OAAO,EAAE,GAAG,EAAoD,MAAM,gBAAgB,CAAC;AACvF,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,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,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,OAAO,EAAE,GAAG,EAAoD,MAAM,gBAAgB,CAAC;AACvF,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,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": "5.9.0",
8
+ "version": "5.10.0",
9
9
  "exports": {
10
10
  ".": {
11
11
  "types": "./dist/index.d.ts",