cmath-js 5.11.0 → 5.13.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
@@ -29,6 +29,7 @@ These functions accept either a `bigint` or an integer `number`:
29
29
  - [`abs`](https://en.cppreference.com/c/numeric/math/abs)
30
30
  - [`bit_ceil`](https://en.cppreference.com/cpp/numeric/bit_ceil)
31
31
  - [`bit_floor`](https://en.cppreference.com/cpp/numeric/bit_floor)
32
+ - [`bit_width`](https://en.cppreference.com/cpp/numeric/bit_width)
32
33
  - [`countl_one`](https://en.cppreference.com/cpp/numeric/countl_one) as `create_countl_one`, which is used this way:
33
34
  ```ts
34
35
  import { create_countl_one } from "cmath-js";
@@ -3,16 +3,12 @@ export function frexp(num) {
3
3
  return { exponent: 0, fraction: num };
4
4
  }
5
5
  const absNum = Math.abs(num);
6
- let exponent = Math.max(-1023, Math.floor(Math.log2(absNum)) + 1);
6
+ let exponent = Math.max(-1023, Math.floor(Math.log2(absNum)) + 2);
7
7
  let fraction = absNum * 2 ** -exponent;
8
8
  while (fraction < 0.5) {
9
9
  fraction *= 2;
10
10
  --exponent;
11
11
  }
12
- while (fraction >= 1) {
13
- fraction *= 0.5;
14
- ++exponent;
15
- }
16
12
  if (num < 0) {
17
13
  fraction = -fraction;
18
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"frexp.js","sourceRoot":"","sources":["../../../src/namespace-std/doubles/frexp.ts"],"names":[],"mappings":"AAkCA,MAAM,UAAU,KAAK,CAAC,GAAW;IAChC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IACvC,CAAC;IAED,MAAM,MAAM,GAAW,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAErC,IAAI,QAAQ,GAAW,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1E,IAAI,QAAQ,GAAW,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;IAI/C,OAAO,QAAQ,GAAG,GAAG,EAAE,CAAC;QACvB,QAAQ,IAAI,CAAC,CAAC;QACd,EAAE,QAAQ,CAAC;IACZ,CAAC;IAID,OAAO,QAAQ,IAAI,CAAC,EAAE,CAAC;QACtB,QAAQ,IAAI,GAAG,CAAC;QAChB,EAAE,QAAQ,CAAC;IACZ,CAAC;IAGD,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACb,QAAQ,GAAG,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,OAAO;QACN,QAAQ;QACR,QAAQ;KACR,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"frexp.js","sourceRoot":"","sources":["../../../src/namespace-std/doubles/frexp.ts"],"names":[],"mappings":"AAkCA,MAAM,UAAU,KAAK,CAAC,GAAW;IAChC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IACvC,CAAC;IAED,MAAM,MAAM,GAAW,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAIrC,IAAI,QAAQ,GAAW,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1E,IAAI,QAAQ,GAAW,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;IAE/C,OAAO,QAAQ,GAAG,GAAG,EAAE,CAAC;QACvB,QAAQ,IAAI,CAAC,CAAC;QACd,EAAE,QAAQ,CAAC;IACZ,CAAC;IAED,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACb,QAAQ,GAAG,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,OAAO;QACN,QAAQ;QACR,QAAQ;KACR,CAAC;AACH,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,6 +1,7 @@
1
1
  export { abs } from "./abs.ts";
2
2
  export { bit_ceil } from "./bit_ceil/bit_ceil.ts";
3
3
  export { bit_floor } from "./bit_floor/bit_floor.ts";
4
+ export { bit_width } from "./bit_width.ts";
4
5
  export * from "./count-left-or-right-bits/index.ts";
5
6
  export { div, type div_t, type div_t_bigint, type div_t_number } from "./div/index.ts";
6
7
  export { gcd } from "./gcd/gcd.ts";
@@ -1,6 +1,7 @@
1
1
  export { abs } from "./abs.js";
2
2
  export { bit_ceil } from "./bit_ceil/bit_ceil.js";
3
3
  export { bit_floor } from "./bit_floor/bit_floor.js";
4
+ export { bit_width } from "./bit_width.js";
4
5
  export * from "./count-left-or-right-bits/index.js";
5
6
  export { div } from "./div/index.js";
6
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,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,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.11.0",
8
+ "version": "5.13.0",
9
9
  "exports": {
10
10
  ".": {
11
11
  "types": "./dist/index.d.ts",