cmath-js 5.10.0 → 5.12.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
@@ -28,6 +28,8 @@ These functions accept either a `bigint` or an integer `number`:
28
28
 
29
29
  - [`abs`](https://en.cppreference.com/c/numeric/math/abs)
30
30
  - [`bit_ceil`](https://en.cppreference.com/cpp/numeric/bit_ceil)
31
+ - [`bit_floor`](https://en.cppreference.com/cpp/numeric/bit_floor)
32
+ - [`bit_width`](https://en.cppreference.com/cpp/numeric/bit_width)
31
33
  - [`countl_one`](https://en.cppreference.com/cpp/numeric/countl_one) as `create_countl_one`, which is used this way:
32
34
  ```ts
33
35
  import { create_countl_one } from "cmath-js";
@@ -2,13 +2,10 @@ export function bit_ceil_number(integer) {
2
2
  if (!Number.isSafeInteger(integer) || integer < 1 || integer > 2 ** 52) {
3
3
  return 1;
4
4
  }
5
- let minusOne = integer - 1;
6
- let power = 32;
5
+ const minusOne = integer - 1;
7
6
  if (minusOne >= 2 ** 32) {
8
- power = 64;
9
- minusOne /= 2 ** 32;
7
+ return 2 ** (64 - Math.clz32(minusOne / 2 ** 32));
10
8
  }
11
- power -= Math.clz32(minusOne);
12
- return 2 ** power;
9
+ return 2 ** (32 - Math.clz32(minusOne));
13
10
  }
14
11
  //# sourceMappingURL=bit_ceil_number.js.map
@@ -1 +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"}
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,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,CAAC;IAE7B,IAAI,QAAQ,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function bit_floor<Integer extends bigint | number>(integer: Integer): Integer;
@@ -0,0 +1,8 @@
1
+ import { bit_floor_bigint } from "./bit_floor_bigint.js";
2
+ import { bit_floor_number } from "./bit_floor_number.js";
3
+ export function bit_floor(integer) {
4
+ return typeof integer === "number"
5
+ ? bit_floor_number(integer)
6
+ : bit_floor_bigint(integer);
7
+ }
8
+ //# sourceMappingURL=bit_floor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bit_floor.js","sourceRoot":"","sources":["../../../../src/namespace-std/integers/bit_floor/bit_floor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AASzD,MAAM,UAAU,SAAS,CAAkC,OAAgB;IAC1E,OAAO,OAAO,OAAO,KAAK,QAAQ;QACjC,CAAC,CAAE,gBAAgB,CAAC,OAAO,CAAa;QACxC,CAAC,CAAE,gBAAgB,CAAC,OAAO,CAAa,CAAC;AAC3C,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function bit_floor_bigint(integer: bigint): bigint;
@@ -0,0 +1,7 @@
1
+ export function bit_floor_bigint(integer) {
2
+ if (integer < 1n) {
3
+ return 0n;
4
+ }
5
+ return 1n << BigInt(integer.toString(2).length - 1);
6
+ }
7
+ //# sourceMappingURL=bit_floor_bigint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bit_floor_bigint.js","sourceRoot":"","sources":["../../../../src/namespace-std/integers/bit_floor/bit_floor_bigint.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC/C,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;IACX,CAAC;IAED,OAAO,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACrD,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function bit_floor_number(integer: number): number;
@@ -0,0 +1,10 @@
1
+ export function bit_floor_number(integer) {
2
+ if (!Number.isSafeInteger(integer) || integer < 1) {
3
+ return 0;
4
+ }
5
+ if (integer >= 2 ** 32) {
6
+ return 2 ** (63 - Math.clz32(integer / 2 ** 32));
7
+ }
8
+ return 2 ** (31 - Math.clz32(integer));
9
+ }
10
+ //# sourceMappingURL=bit_floor_number.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bit_floor_number.js","sourceRoot":"","sources":["../../../../src/namespace-std/integers/bit_floor/bit_floor_number.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC/C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,CAAC;IACV,CAAC;IAED,IAAI,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function bit_width(integer: bigint | number): number;
@@ -0,0 +1,7 @@
1
+ export function bit_width(integer) {
2
+ if (integer < 1 || (typeof integer === "number" && !Number.isSafeInteger(integer))) {
3
+ return 0;
4
+ }
5
+ return BigInt(integer).toString(2).length;
6
+ }
7
+ //# sourceMappingURL=bit_width.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bit_width.js","sourceRoot":"","sources":["../../../src/namespace-std/integers/bit_width.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,SAAS,CAAC,OAAwB;IACjD,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACpF,OAAO,CAAC,CAAC;IACV,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC3C,CAAC"}
@@ -1,5 +1,7 @@
1
1
  export { abs } from "./abs.ts";
2
2
  export { bit_ceil } from "./bit_ceil/bit_ceil.ts";
3
+ export { bit_floor } from "./bit_floor/bit_floor.ts";
4
+ export { bit_width } from "./bit_width.ts";
3
5
  export * from "./count-left-or-right-bits/index.ts";
4
6
  export { div, type div_t, type div_t_bigint, type div_t_number } from "./div/index.ts";
5
7
  export { gcd } from "./gcd/gcd.ts";
@@ -1,5 +1,7 @@
1
1
  export { abs } from "./abs.js";
2
2
  export { bit_ceil } from "./bit_ceil/bit_ceil.js";
3
+ export { bit_floor } from "./bit_floor/bit_floor.js";
4
+ export { bit_width } from "./bit_width.js";
3
5
  export * from "./count-left-or-right-bits/index.js";
4
6
  export { div } from "./div/index.js";
5
7
  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,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"}
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,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,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.10.0",
8
+ "version": "5.12.0",
9
9
  "exports": {
10
10
  ".": {
11
11
  "types": "./dist/index.d.ts",