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 +1 -0
- package/dist/namespace-std/integers/bit_ceil/bit_ceil.d.ts +1 -0
- package/dist/namespace-std/integers/bit_ceil/bit_ceil.js +8 -0
- package/dist/namespace-std/integers/bit_ceil/bit_ceil.js.map +1 -0
- package/dist/namespace-std/integers/bit_ceil/bit_ceil_bigint.d.ts +1 -0
- package/dist/namespace-std/integers/bit_ceil/bit_ceil_bigint.js +7 -0
- package/dist/namespace-std/integers/bit_ceil/bit_ceil_bigint.js.map +1 -0
- package/dist/namespace-std/integers/bit_ceil/bit_ceil_number.d.ts +1 -0
- package/dist/namespace-std/integers/bit_ceil/bit_ceil_number.js +14 -0
- package/dist/namespace-std/integers/bit_ceil/bit_ceil_number.js.map +1 -0
- package/dist/namespace-std/integers/has_single_bit.js +2 -1
- package/dist/namespace-std/integers/has_single_bit.js.map +1 -1
- package/dist/namespace-std/integers/index.d.ts +1 -0
- package/dist/namespace-std/integers/index.js +1 -0
- package/dist/namespace-std/integers/index.js.map +1 -1
- package/package.json +1 -1
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 @@
|
|
|
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
|
-
|
|
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;
|
|
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 +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"}
|