cmath-js 1.0.18 → 1.0.19

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
@@ -12,12 +12,14 @@ Implementation of parts of C's & C++'s numerics libraries in TypeScript/JavaScri
12
12
  - [`signbit`](https://en.cppreference.com/w/c/numeric/math/signbit)
13
13
 
14
14
  ## Integer functions
15
- These functions accept either a `number` or a `bigint`:
15
+ These functions accept either a `bigint` or an integer `number`:
16
16
  - [`abs`](https://en.cppreference.com/w/c/numeric/math/abs)
17
17
  - [`countl_one`](https://en.cppreference.com/w/cpp/numeric/countl_one)
18
18
  - [`countl_zero`](https://en.cppreference.com/w/cpp/numeric/countl_zero)
19
19
  - [`countr_one`](https://en.cppreference.com/w/cpp/numeric/countr_one)
20
20
  - [`countr_zero`](https://en.cppreference.com/w/cpp/numeric/countr_zero)
21
+ - [`gcd`](https://en.cppreference.com/w/cpp/numeric/gcd)
22
+ - [`lcm`](https://en.cppreference.com/w/cpp/numeric/lcm)
21
23
  - [`popcount`](https://en.cppreference.com/w/cpp/numeric/popcount)
22
24
 
23
25
  ## Test coverage
@@ -1 +1 @@
1
- {"version":3,"file":"frexp.js","sourceRoot":"","sources":["../../src/double/frexp.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,KAAK,CACT,GAAW;IAEtB,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACvC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;KAChB;IAED,MAAM,MAAM,GAAW,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAErC,IAAI,GAAG,GAAW,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACrE,IAAI,CAAC,GAAW,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;IAInC,OAAO,CAAC,GAAG,GAAG,EAAE;QACf,CAAC,IAAI,CAAC,CAAC;QACP,EAAE,GAAG,CAAC;KACN;IAGD,OAAO,CAAC,IAAI,CAAC,EAAE;QACd,CAAC,IAAI,GAAG,CAAC;QACT,EAAE,GAAG,CAAC;KACN;IAED,IAAI,GAAG,GAAG,CAAC,EAAE;QACZ,CAAC,GAAG,CAAC,CAAC,CAAC;KACP;IAED,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"frexp.js","sourceRoot":"","sources":["../../src/double/frexp.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,KAAK,CACT,GAAW;IAEtB,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,MAAM,GAAW,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAErC,IAAI,GAAG,GAAW,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACrE,IAAI,CAAC,GAAW,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;IAInC,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC;QAChB,CAAC,IAAI,CAAC,CAAC;QACP,EAAE,GAAG,CAAC;IACP,CAAC;IAGD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACf,CAAC,IAAI,GAAG,CAAC;QACT,EAAE,GAAG,CAAC;IACP,CAAC;IAED,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACb,CAAC,GAAG,CAAC,CAAC,CAAC;IACR,CAAC;IAED,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"hypot.js","sourceRoot":"","sources":["../../src/double/hypot.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,KAAK,CAAY,CAAS,EAAa,CAAS,EAAa,CAAU;IACtF,IAAI,CAAC,KAAK,SAAS,EAAE;QAEpB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAC3B;IACD,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;QAC3E,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACvB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1C;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACxB;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"hypot.js","sourceRoot":"","sources":["../../src/double/hypot.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,KAAK,CAAY,CAAS,EAAa,CAAS,EAAa,CAAU;IACtF,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QAErB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC5E,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"nextafter.js","sourceRoot":"","sources":["../../src/double/nextafter.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,SAAS,CAAY,GAAW,EAAa,MAAc;IAC1E,IAAI,GAAG,KAAK,MAAM,EAAE;QACnB,OAAO,MAAM,CAAC;KACd;IACD,IAAI,GAAG,KAAK,CAAC,EAAE;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;KAC5C;IACD,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE;QAC1C,OAAO,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACzC;IACD,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,GAAG,GAAG,EAAE;QAC9C,OAAO,CAAC,CAAC,CAAC;KACV;IACD,IAAI,oBAAoB,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAI,MAAc,CAAC;IACnB,GAAG;QACF,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,oBAAoB,CAAC,CAAC;QAC7D,oBAAoB,IAAI,CAAC,CAAC;KAC1B,QAAQ,MAAM,KAAK,GAAG,EAAE;IACzB,OAAO,MAAM,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"nextafter.js","sourceRoot":"","sources":["../../src/double/nextafter.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,SAAS,CAAY,GAAW,EAAa,MAAc;IAC1E,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC;IACf,CAAC;IACD,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;IAC7C,CAAC;IACD,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC3C,OAAO,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QAC/C,OAAO,CAAC,CAAC,CAAC;IACX,CAAC;IACD,IAAI,oBAAoB,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAI,MAAc,CAAC;IACnB,GAAG,CAAC;QACH,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,oBAAoB,CAAC,CAAC;QAC7D,oBAAoB,IAAI,CAAC,CAAC;IAC3B,CAAC,QAAQ,MAAM,KAAK,GAAG,EAAE;IACzB,OAAO,MAAM,CAAC;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"pow.js","sourceRoot":"","sources":["../../src/double/pow.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,GAAG,CAAY,IAAY,EAAa,QAAgB;IACvE,IAAI,MAAM,GAAG,IAAI,IAAI,QAAQ,CAAC;IAC9B,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;QACrF,MAAM,GAAG,CAAC,CAAC;KACX;IACD,OAAO,MAAM,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"pow.js","sourceRoot":"","sources":["../../src/double/pow.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,GAAG,CAAY,IAAY,EAAa,QAAgB;IACvE,IAAI,MAAM,GAAG,IAAI,IAAI,QAAQ,CAAC;IAC9B,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QACtF,MAAM,GAAG,CAAC,CAAC;IACZ,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"abs.js","sourceRoot":"","sources":["../../src/integer/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;QAC1C,OAAO,CAAC,OAAO,CAAC;KAChB;IACD,OAAO,OAAO,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"abs.js","sourceRoot":"","sources":["../../src/integer/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 +1 @@
1
- {"version":3,"file":"bitsInUnsignedInteger.js","sourceRoot":"","sources":["../../src/integer/bitsInUnsignedInteger.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,qBAAqB,CACpC,MAA+F;IAE/F,IAAI,OAAwB,CAAC;IAC7B,IAAI,sBAAsB,GAAW,GAAG,CAAC;IAEzC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACxB,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;KACnB;SAAM;QACN,CAAC,sBAAsB,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;QAE3C,IAAI,sBAAsB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE;YAC7E,OAAO,IAAI,UAAU,EAAE,CAAC;SACxB;KACD;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;QAC3B,IAAI,CAAC,sBAAsB,EAAE;YAC5B,OAAO,IAAI,UAAU,EAAE,CAAC;SACxB;QACD,OAAO,GAAG,CAAC,CAAC;KACZ;IAED,IAAI,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAI,SAAS,CAAC,MAAM,GAAG,sBAAsB,EAAE;QAC9C,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;KAC5D;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,SAAqD,CAAC,CAAC;IAEtF,IAAI,MAAM,CAAC,MAAM,GAAG,sBAAsB,EAAE;QAC3C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC,CAAC;KAC7C;IAED,OAAO,MAAM,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"bitsInUnsignedInteger.js","sourceRoot":"","sources":["../../src/integer/bitsInUnsignedInteger.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,qBAAqB,CACpC,MAA+F;IAE/F,IAAI,OAAwB,CAAC;IAC7B,IAAI,sBAAsB,GAAW,GAAG,CAAC;IAEzC,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;IAED,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 +1 @@
1
- {"version":3,"file":"countl_one.js","sourceRoot":"","sources":["../../src/integer/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;QACrB,OAAO,MAAM,CAAC,MAAM,CAAC;KACrB;IACD,OAAO,SAAS,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"countl_one.js","sourceRoot":"","sources":["../../src/integer/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 +1 @@
1
- {"version":3,"file":"countl_zero.js","sourceRoot":"","sources":["../../src/integer/countl_zero.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAShE,MAAM,UAAU,WAAW,CAAC,sBAA8B,EAAE,OAAwB;IACnF,MAAM,MAAM,GAAG,qBAAqB,CAAC,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC,CAAC;IAExE,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAEtC,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;QACvB,OAAO,MAAM,CAAC,MAAM,CAAC;KACrB;IACD,OAAO,WAAW,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"countl_zero.js","sourceRoot":"","sources":["../../src/integer/countl_zero.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAShE,MAAM,UAAU,WAAW,CAAC,sBAA8B,EAAE,OAAwB;IACnF,MAAM,MAAM,GAAG,qBAAqB,CAAC,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC,CAAC;IAExE,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAEtC,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,MAAM,CAAC;IACtB,CAAC;IACD,OAAO,WAAW,CAAC;AACpB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function gcd(aInteger: bigint, bInteger: bigint): bigint;
2
+ export declare function gcd(aInteger: number, bInteger: number): number;
@@ -0,0 +1,8 @@
1
+ import { gcd_bigint } from "./gcd_bigint";
2
+ import { gcd_number } from "./gcd_number";
3
+ export function gcd(aInteger, bInteger) {
4
+ return typeof aInteger === "number"
5
+ ? gcd_number(aInteger, bInteger)
6
+ : gcd_bigint(aInteger, bInteger);
7
+ }
8
+ //# sourceMappingURL=gcd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gcd.js","sourceRoot":"","sources":["../../src/integer/gcd.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C,MAAM,UAAU,GAAG,CAAC,QAAyB,EAAE,QAAyB;IACvE,OAAO,OAAO,QAAQ,KAAK,QAAQ;QAClC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAkB,CAAC;QAC1C,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAkB,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function gcd_bigint(aInteger: bigint, bInteger: bigint): bigint;
@@ -0,0 +1,30 @@
1
+ export function gcd_bigint(aInteger, bInteger) {
2
+ let a = aInteger < 0n ? -aInteger : aInteger;
3
+ let b = bInteger < 0n ? -bInteger : bInteger;
4
+ if (!a || !b) {
5
+ return a || b;
6
+ }
7
+ let trailingZeroesInA = 0;
8
+ while (a && !(a & 1n)) {
9
+ a >>= 1n;
10
+ trailingZeroesInA += 1;
11
+ }
12
+ let trailingZeroesInB = 0;
13
+ while (b && !(b & 1n)) {
14
+ b >>= 1n;
15
+ trailingZeroesInB += 1;
16
+ }
17
+ while (true) {
18
+ if (a > b) {
19
+ [a, b] = [b, a];
20
+ }
21
+ b -= a;
22
+ if (!b) {
23
+ return a << BigInt(Math.min(trailingZeroesInA, trailingZeroesInB));
24
+ }
25
+ while (b && !(b & 1n)) {
26
+ b >>= 1n;
27
+ }
28
+ }
29
+ }
30
+ //# sourceMappingURL=gcd_bigint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gcd_bigint.js","sourceRoot":"","sources":["../../src/integer/gcd_bigint.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU,CAAC,QAAgB,EAAE,QAAgB;IAC5D,IAAI,CAAC,GAAG,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC7C,IAAI,CAAC,GAAG,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IAE7C,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QACvB,CAAC,KAAK,EAAE,CAAC;QACT,iBAAiB,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QACvB,CAAC,KAAK,EAAE,CAAC;QACT,iBAAiB,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,IAAI,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACX,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,CAAC,IAAI,CAAC,CAAC;QACP,IAAI,CAAC,CAAC,EAAE,CAAC;YACR,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YACvB,CAAC,KAAK,EAAE,CAAC;QACV,CAAC;IACF,CAAC;AACF,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function gcd_number(aInteger: number, bInteger: number): number;
@@ -0,0 +1,33 @@
1
+ export function gcd_number(aInteger, bInteger) {
2
+ if (!Number.isSafeInteger(aInteger) || !Number.isSafeInteger(bInteger)) {
3
+ return 0;
4
+ }
5
+ let a = Math.abs(aInteger);
6
+ let b = Math.abs(bInteger);
7
+ if (!a || !b) {
8
+ return a || b;
9
+ }
10
+ let trailingZeroesInA = 0;
11
+ while (a && !(a & 1)) {
12
+ a /= 2;
13
+ trailingZeroesInA += 1;
14
+ }
15
+ let trailingZeroesInB = 0;
16
+ while (b && !(b & 1)) {
17
+ b /= 2;
18
+ trailingZeroesInB += 1;
19
+ }
20
+ while (true) {
21
+ if (a > b) {
22
+ [a, b] = [b, a];
23
+ }
24
+ b -= a;
25
+ if (!b) {
26
+ return a << Math.min(trailingZeroesInA, trailingZeroesInB);
27
+ }
28
+ while (b && !(b & 1)) {
29
+ b /= 2;
30
+ }
31
+ }
32
+ }
33
+ //# sourceMappingURL=gcd_number.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gcd_number.js","sourceRoot":"","sources":["../../src/integer/gcd_number.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU,CAAC,QAAgB,EAAE,QAAgB;IAC5D,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxE,OAAO,CAAC,CAAC;IACV,CAAC;IAED,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC3B,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC3B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACtB,CAAC,IAAI,CAAC,CAAC;QACP,iBAAiB,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACtB,CAAC,IAAI,CAAC,CAAC;QACP,iBAAiB,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,IAAI,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACX,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,CAAC,IAAI,CAAC,CAAC;QACP,IAAI,CAAC,CAAC,EAAE,CAAC;YACR,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACtB,CAAC,IAAI,CAAC,CAAC;QACR,CAAC;IACF,CAAC;AACF,CAAC"}
@@ -3,4 +3,6 @@ export { countl_one } from "./countl_one.js";
3
3
  export { countl_zero } from "./countl_zero.js";
4
4
  export { countr_one } from "./countr_one.js";
5
5
  export { countr_zero } from "./countr_zero.js";
6
+ export { gcd } from "./gcd.js";
7
+ export { lcm } from "./lcm.js";
6
8
  export { popcount } from "./popcount.js";
@@ -3,5 +3,7 @@ export { countl_one } from "./countl_one.js";
3
3
  export { countl_zero } from "./countl_zero.js";
4
4
  export { countr_one } from "./countr_one.js";
5
5
  export { countr_zero } from "./countr_zero.js";
6
+ export { gcd } from "./gcd.js";
7
+ export { lcm } from "./lcm.js";
6
8
  export { popcount } from "./popcount.js";
7
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,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"}
@@ -0,0 +1,2 @@
1
+ export declare function lcm(aInteger: bigint, bInteger: bigint): bigint;
2
+ export declare function lcm(aInteger: number, bInteger: number): number;
@@ -0,0 +1,8 @@
1
+ import { lcm_bigint } from "./lcm_bigint";
2
+ import { lcm_number } from "./lcm_number";
3
+ export function lcm(aInteger, bInteger) {
4
+ return typeof aInteger === "number"
5
+ ? lcm_number(aInteger, bInteger)
6
+ : lcm_bigint(aInteger, bInteger);
7
+ }
8
+ //# sourceMappingURL=lcm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lcm.js","sourceRoot":"","sources":["../../src/integer/lcm.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C,MAAM,UAAU,GAAG,CAAC,QAAyB,EAAE,QAAyB;IACvE,OAAO,OAAO,QAAQ,KAAK,QAAQ;QAClC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAkB,CAAC;QAC1C,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAkB,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function lcm_bigint(aInteger: bigint, bInteger: bigint): bigint;
@@ -0,0 +1,11 @@
1
+ import { gcd_bigint } from "./gcd_bigint";
2
+ export function lcm_bigint(aInteger, bInteger) {
3
+ const a = aInteger < 0n ? -aInteger : aInteger;
4
+ const b = bInteger < 0n ? -bInteger : bInteger;
5
+ const denominator = gcd_bigint(a, b);
6
+ if (denominator === 0n) {
7
+ return 0n;
8
+ }
9
+ return a * (b / denominator);
10
+ }
11
+ //# sourceMappingURL=lcm_bigint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lcm_bigint.js","sourceRoot":"","sources":["../../src/integer/lcm_bigint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,UAAU,CAAC,QAAgB,EAAE,QAAgB;IAC5D,MAAM,CAAC,GAAG,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC/C,MAAM,CAAC,GAAG,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC/C,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAErC,IAAI,WAAW,KAAK,EAAE,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACX,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;AAC9B,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function lcm_number(aInteger: number, bInteger: number): number;
@@ -0,0 +1,14 @@
1
+ import { gcd_number } from "./gcd_number";
2
+ export function lcm_number(aInteger, bInteger) {
3
+ if (!Number.isSafeInteger(aInteger) || !Number.isSafeInteger(bInteger)) {
4
+ return 0;
5
+ }
6
+ const a = Math.abs(aInteger);
7
+ const b = Math.abs(bInteger);
8
+ const denominator = gcd_number(a, b);
9
+ if (denominator === 0) {
10
+ return 0;
11
+ }
12
+ return a * (b / denominator);
13
+ }
14
+ //# sourceMappingURL=lcm_number.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lcm_number.js","sourceRoot":"","sources":["../../src/integer/lcm_number.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,UAAU,CAAC,QAAgB,EAAE,QAAgB;IAC5D,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxE,OAAO,CAAC,CAAC;IACV,CAAC;IAED,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE7B,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAErC,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,CAAC;IACV,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;AAC9B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"popcount.js","sourceRoot":"","sources":["../../src/integer/popcount.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,QAAQ,CAAC,OAAwB;IAChD,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE;QAChF,OAAO,CAAC,CAAC;KACT;IACD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;QAChD,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;KACvB;IACD,OAAO,KAAK,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"popcount.js","sourceRoot":"","sources":["../../src/integer/popcount.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,QAAQ,CAAC,OAAwB;IAChD,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACjF,OAAO,CAAC,CAAC;IACV,CAAC;IACD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,KAAK,CAAC;AACd,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": "1.0.18",
8
+ "version": "1.0.19",
9
9
  "exports": "./dist/index.js",
10
10
  "types": "./dist/index.d.ts",
11
11
  "type": "module",
@@ -14,8 +14,10 @@
14
14
  "Oskar Larsson Högfeldt <oskar@oskar.pm>"
15
15
  ],
16
16
  "license": "MIT",
17
- "description": "C's math functions in TypeScript & JavaScript",
17
+ "description": "C's and C++'s math functions in TypeScript & JavaScript",
18
18
  "keywords": [
19
+ "Bit operations",
20
+ "Bits",
19
21
  "C",
20
22
  "C++",
21
23
  "cmath",
@@ -23,26 +25,29 @@
23
25
  "frexp",
24
26
  "JavaScript",
25
27
  "Math",
28
+ "Mathematics",
26
29
  "Maths",
27
30
  "Node",
28
31
  "NodeJS",
32
+ "Numerics",
33
+ "popcount",
29
34
  "TypeScript"
30
35
  ],
31
36
  "devDependencies": {
32
- "@swc/cli": "^0.1",
37
+ "@swc/cli": "^0.3",
33
38
  "@swc/core": "^1",
34
39
  "@swc/jest": "^0.2",
35
40
  "@types/jest": "^29",
36
41
  "@types/node": "^20",
37
- "@typescript-eslint/eslint-plugin": "^6",
38
- "@typescript-eslint/parser": "^6",
42
+ "@typescript-eslint/eslint-plugin": "^7",
43
+ "@typescript-eslint/parser": "^7",
39
44
  "eslint": "^8",
40
45
  "eslint-config-prettier": "^9",
41
46
  "eslint-plugin-prettier": "^5",
42
47
  "jest": "^29",
43
48
  "prettier": "^3",
44
49
  "ts-jest": "^29",
45
- "typescript": "~5.2"
50
+ "typescript": "~5.4"
46
51
  },
47
52
  "scripts": {
48
53
  "build": "tsc",