@siegesailor/cryptography 2.0.0 → 2.1.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.
Files changed (28) hide show
  1. package/README.md +3 -4
  2. package/build/algorithms/baby-step-giant-step/index.js +13 -8
  3. package/build/algorithms/baby-step-giant-step/index.js.map +1 -1
  4. package/build/algorithms/blum-blum-shub/index.js +12 -6
  5. package/build/algorithms/blum-blum-shub/index.js.map +1 -1
  6. package/build/algorithms/chinese-remainder/index.js +12 -6
  7. package/build/algorithms/chinese-remainder/index.js.map +1 -1
  8. package/build/algorithms/euclidean/index.js +7 -5
  9. package/build/algorithms/euclidean/index.js.map +1 -1
  10. package/build/algorithms/extended-euclidean/index.js +10 -5
  11. package/build/algorithms/extended-euclidean/index.js.map +1 -1
  12. package/build/algorithms/fast-modular-exponentiation/index.js +9 -6
  13. package/build/algorithms/fast-modular-exponentiation/index.js.map +1 -1
  14. package/build/algorithms/miller-rabin-primarily-test/index.js +11 -5
  15. package/build/algorithms/miller-rabin-primarily-test/index.js.map +1 -1
  16. package/build/algorithms/multiplicative-inverse/index.js +12 -5
  17. package/build/algorithms/multiplicative-inverse/index.js.map +1 -1
  18. package/build/algorithms/naor-reingo/index.js +9 -4
  19. package/build/algorithms/naor-reingo/index.js.map +1 -1
  20. package/build/algorithms/pollard-p-1-factorization/index.js +11 -4
  21. package/build/algorithms/pollard-p-1-factorization/index.js.map +1 -1
  22. package/build/algorithms/pollard-rho/index.js +7 -3
  23. package/build/algorithms/pollard-rho/index.js.map +1 -1
  24. package/build/algorithms/primitive-root-search/index.js +39 -15
  25. package/build/algorithms/primitive-root-search/index.js.map +1 -1
  26. package/build/algorithms/primitive-root-search/index.test.js +3 -0
  27. package/build/algorithms/primitive-root-search/index.test.js.map +1 -1
  28. package/package.json +1 -1
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
  [![Test](https://github.com/SiegeSailor/Cryptography/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/SiegeSailor/Cryptography/actions/workflows/test.yml)
5
5
  [![Release](https://github.com/SiegeSailor/Cryptography/actions/workflows/release.yml/badge.svg?branch=main)](https://github.com/SiegeSailor/Cryptography/actions/workflows/release.yml)
6
6
 
7
- This project is inspired by [Boston University MET CS 789 Cryptography](https://www.bu.edu/academics/met/courses/met-cs-789/) for understanding the implementation of various cryptographic algorithms and their applications in key encryption flows. The library is production-ready, with a focus on security and performance. It includes implementations for:
7
+ Zero configuration needed. WebAssembly availability is determined at runtime, with a safe fallback to JavaScript with TypeScript support implemented. The library is production-ready, with a focus on security and performance, providing implementations for:
8
8
 
9
9
  | Algorithm | JavaScript | TypeScript | WebAssembly |
10
10
  | --------------------------- | ---------- | ---------- | ----------- |
@@ -21,15 +21,14 @@ This project is inspired by [Boston University MET CS 789 Cryptography](https://
21
21
  | Pollard Rho | ✅ | ✅ | ✅ |
22
22
  | Primitive Root Search | ✅ | ✅ | ✅ |
23
23
 
24
- > [!tip]
25
- > Zero configuration needed. WebAssembly availability is determined at runtime, with a safe fallback to JavaScript with TypeScript support implemented.
26
-
27
24
  And, a CLI is available to interact with these algorithms and demonstrate the 3 key encryption flows:
28
25
 
29
26
  - [Diffie Hellman Key Exchange](./source/key-encryptions/DiffieHellman.ts)
30
27
  - [ElGamal](./source/key-encryptions/ElGamal.ts)
31
28
  - [RSA](./source/key-encryptions/RSA.ts)
32
29
 
30
+ > This project is inspired by [Boston University MET CS 789 Cryptography](https://www.bu.edu/academics/met/courses/met-cs-789/) for understanding the implementation of various cryptographic algorithms and their applications in key encryption flows.
31
+
33
32
  ## Installation
34
33
 
35
34
  The package is available on NPM:
@@ -26,16 +26,21 @@ const runWASMBabyStepGiantStep = (0, wasm_1.createWASMInvoker)("baby-step-giant-
26
26
  return result < 0n ? null : result;
27
27
  });
28
28
  /**
29
- * Solves the discrete logarithm problem by finding an exponent x such that
30
- * generator^x is congruent to base modulo modulo.
29
+ * Solves the discrete logarithm problem by finding an exponent `x` such that
30
+ * `generator^x` is congruent to `base` modulo `modulo`.
31
31
  *
32
- * The congruence is evaluated in the multiplicative group modulo modulo, so the
33
- * generator and base must both be coprime with the modulus.
32
+ * The congruence is evaluated in the multiplicative group modulo `modulo`, so
33
+ * `generator` and `base` must both be coprime with the modulus. The
34
+ * TypeScript fallback uses the baby-step giant-step meet-in-the-middle method,
35
+ * validates those coprimality conditions with the Euclidean algorithm, and
36
+ * builds its collision table with fast modular exponentiation.
34
37
  *
35
- * @param generator Base whose powers are searched in the congruence relation.
36
- * @param base Target residue in the congruence relation.
37
- * @param modulo Modulus of the congruence; must be greater than 1.
38
- * @returns The exponent x when a solution is found, or -1n when no solution is found.
38
+ * @param generator Candidate generator `g` whose powers are searched in the
39
+ * congruence relation.
40
+ * @param base Target residue `h` in the congruence `g^x h (mod m)`.
41
+ * @param modulo Modulus `m` of the congruence; it must be greater than `1`.
42
+ * @returns An exponent `x` satisfying the congruence when one is found, or
43
+ * `-1n` when no solution is found.
39
44
  * @throws {Error} When modulo is not greater than 1.
40
45
  * @throws {Error} When generator and modulo are not coprime.
41
46
  * @throws {Error} When base and modulo are not coprime.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/algorithms/baby-step-giant-step/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/algorithms/baby-step-giant-step/index.ts"],"names":[],"mappings":";;;;;AAyDA,uBAoCC;AA6CD,wBAEC;AA5ID,uEAA+C;AAC/C,2GAAiF;AACjF,kDAAuE;AACvE,+DAAuC;AACvC,gDAG6B;AAC7B,kDAA6C;AAE7C,MAAM,wBAAwB,GAAG,IAAA,wBAAiB,EAGhD,sBAAsB,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IACjE,IACE,CAAC,WAAW,CAAC,wBAAwB;QACrC,MAAM,IAAI,EAAE;QACZ,SAAS,GAAG,EAAE;QACd,IAAI,GAAG,EAAE;QACT,CAAC,IAAA,gBAAS,EAAC,SAAS,CAAC;QACrB,CAAC,IAAA,gBAAS,EAAC,IAAI,CAAC;QAChB,CAAC,IAAA,gBAAS,EAAC,MAAM,CAAC,EAClB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,GAAG,QAAU,CAAC,CAAC,CAAC,QAAU,CAAC,CAAC,CAAC,MAAM,CAAC;IACxD,MAAM,MAAM,GAAG,WAAW,CAAC,wBAAwB,CACjD,SAAS,EACT,IAAI,EACJ,MAAM,EACN,KAAK,CACN,CAAC;IAEF,OAAO,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AACrC,CAAC,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAwB,IAAI,CAAC,SAAiB,EAAE,IAAY,EAAE,MAAc;IAC1E,IAAI,MAAM,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACvE,IAAI,IAAA,mBAAS,EAAC,SAAS,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,IAAI,IAAA,mBAAS,EAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAEnE,MAAM,eAAe,GAAG,wBAAwB,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1E,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;QAC7B,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAExE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,KAAK,IAAI,CAAC,GAAG,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,IAAA,qCAAyB,EACzC,SAAS,EACT,CAAC,GAAG,aAAa,EACjB,MAAM,CACP,CAAC;QACF,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,YAAY,GAChB,CAAC,IAAA,qCAAyB,EAAC,SAAS,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC;QACpE,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAEzC,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,IAAI,GAAG,aAAa,GAAG,CAAC,CAAC;YACxC,IAAI,MAAM,GAAG,MAAM;gBAAE,OAAO,MAAM,CAAC;QACrC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,SAAS,GAAG,IAAA,8BAAqB,EACrC,sBAAsB,EACtB,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE;IAC3B,SAAS,CAAC,iBAAiB,mBAAO,CAAC,SAAS,4BAA4B,CAAC,CAAC;IAC1E,SAAS,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,mBAAO,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC;IAEnE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAI1C;QACD;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,SAAS,eAAK,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG;YAC9C,OAAO,EAAE,CAAC;SACX;QACD;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,SAAS,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG;YACzC,OAAO,EAAE,CAAC;SACX;QACD;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,SAAS,eAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG;YAC3C,OAAO,EAAE,CAAC;SACX;KACF,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACrE,SAAS,CACP,KAAK,SAAS,MAAM,mBAAO,CAAC,SAAS,IAAI,IAAI,MAAM,MAAM,SAAS,MAAM,EAAE,CAC3E,CAAC;IAEF,OAAO;QACL,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE;QACnC,MAAM;KACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEK,KAAK,UAAU,MAAM,CAAC,OAAwB;IACnD,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;AAC5B,CAAC"}
@@ -22,14 +22,20 @@ const runWASMBlumBlumShubNext = (0, wasm_1.createWASMInvoker)("blum-blum-shub",
22
22
  return wasmExports.blum_blum_shub_next_u64(state, modulus);
23
23
  });
24
24
  /**
25
- * Initializes a Blum Blum Shub generator over quadratic residues modulo M = pq,
26
- * where p and q are distinct Blum primes with p ≡ q ≡ 3 (mod 4).
25
+ * Initializes a Blum Blum Shub generator over quadratic residues modulo
26
+ * `M = p * q`, where `p` and `q` are distinct Blum primes satisfying
27
+ * `p ≡ q ≡ 3 (mod 4)`.
27
28
  *
28
- * The returned closure advances the recurrence x_(n+1) = x_n^2 mod M and yields
29
- * the next generator state each time it is called.
29
+ * The returned closure advances the recurrence `x_(n+1) = x_n^2 mod M` and
30
+ * yields the next generator state each time it is called. This implementation
31
+ * samples candidate primes with the Miller-Rabin primality test, screens the
32
+ * seed with the Euclidean algorithm so `gcd(seed, M) = 1`, and then iterates
33
+ * the quadratic-residue recurrence.
30
34
  *
31
- * @param bits Bit length used when generating each Blum prime factor.
32
- * @returns A stateful zero-argument generator function that produces successive pseudorandom states.
35
+ * @param bits Bit length used when generating each Blum prime factor `p` and
36
+ * `q`.
37
+ * @returns A stateful zero-argument generator function that produces
38
+ * successive pseudorandom states `x_n`.
33
39
  * @throws {Error} When bits is not an integer or is smaller than 8.
34
40
  */
35
41
  function main(bits) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/algorithms/blum-blum-shub/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/algorithms/blum-blum-shub/index.ts"],"names":[],"mappings":"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"}
@@ -37,14 +37,20 @@ const runWASMChineseRemainder = (0, wasm_1.createWASMInvoker)("chinese-remainder
37
37
  return result === wasm_1.MIN_I64 ? null : result;
38
38
  });
39
39
  /**
40
- * Solves a system of simultaneous congruences with the Chinese Remainder Theorem.
40
+ * Solves a system of simultaneous congruences `x r_i (mod m_i)` with the
41
+ * Chinese Remainder Theorem.
41
42
  *
42
- * When the moduli are pairwise coprime, the system has a unique solution modulo
43
- * the product of all moduli, and this function returns its least non-negative representative.
43
+ * When the moduli are pairwise coprime, the system has a unique solution
44
+ * modulo `M = m_i`, and this function returns its least non-negative
45
+ * representative. The implementation checks pairwise coprimality with the
46
+ * Euclidean algorithm and computes each modular inverse for `M_i = M / m_i`
47
+ * with the Extended Euclidean algorithm.
44
48
  *
45
- * @param arrayOfBase Remainders r_i in congruences of the form x ≡ r_i (mod m_i).
46
- * @param arrayOfModulo Moduli m_i that define each congruence.
47
- * @returns The least non-negative solution as a JavaScript number.
49
+ * @param arrayOfBase Remainders `r_i` in congruences of the form
50
+ * `x r_i (mod m_i)`.
51
+ * @param arrayOfModulo Moduli `m_i` that define each congruence.
52
+ * @returns The least non-negative solution `x` modulo `M` as a JavaScript
53
+ * number.
48
54
  * @throws {Error} When the remainder and modulus arrays have different lengths.
49
55
  * @throws {Error} When the moduli are not pairwise coprime.
50
56
  * @throws {Error} When a required modular inverse cannot be computed.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/algorithms/chinese-remainder/index.ts"],"names":[],"mappings":";;;;;AA0EA,uBAiDC;AAwCD,wBAEC;AArKD,uEAA+C;AAC/C,yFAAgE;AAChE,kDAOiC;AACjC,+DAAuC;AACvC,gDAG6B;AAE7B,MAAM,uBAAuB,GAAG,IAAA,wBAAiB,EAC/C,mBAAmB,EACnB,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;IACnC,IACE,CAAC,WAAW,CAAC,qBAAqB;QAClC,UAAU,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM;QACpC,UAAU,CAAC,MAAM,KAAK,CAAC,EACvB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IACE,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAA,gBAAS,EAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,IAAA,gBAAS,EAAC,KAAK,CAAC,CAAC,EACzD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,IAAA,yBAAkB,EAAC,WAAW,CAAC,CAAC;IAClD,SAAS,CAAC,KAAK,EAAE,CAAC;IAElB,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,GAAG,gBAAS,CAAC;IAC5C,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;IAE9B,IAAI,aAAa,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC,aAAa,GAAG,gBAAS,GAAG,KAAK,CAAC,GAAG,IAAA,mBAAY,EAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,UAAU,GAAG,gBAAS,GAAG,KAAK,CAAC,GAAG,IAAA,mBAAY,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,CAAC,qBAAqB,CAC9C,aAAa,EACb,UAAU,EACV,UAAU,CAAC,MAAM,CAClB,CAAC;IACF,OAAO,MAAM,KAAK,cAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AAC5C,CAAC,CACF,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,SAAwB,IAAI,CAAC,WAAqB,EAAE,aAAuB;IACzE,IAAI,WAAW,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM;QAC7C,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAE7E,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAEzD,MAAM,eAAe,GAAG,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9D,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;QAC7B,IAAI,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,MAAM,CAAC,eAAe,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,IAAI,IAAA,mBAAS,EAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC3C,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACtB,OAAO,IAAI,IAAI,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,EAAE,CAAC;IAEX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,IAAA,4BAAiB,EAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnE,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,iBAAiB,GAAG,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,aAAa,GAAG,iBAAiB,CAAC;IACnD,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC;IAEnD,IAAI,MAAM,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,SAAS,GAAG,IAAA,8BAAqB,EACrC,mBAAmB,EACnB,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE;IAC3B,SAAS,CAAC,2CAA2C,CAAC,CAAC;IACvD,SAAS,CAAC,eAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC,CAAC;IAExE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAmC;QACnE;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,SAAS,eAAK,CAAC,MAAM,CAAC,YAAY,CAAC,qBAAqB;YACjE,OAAO,EAAE,OAAO;SACjB;QACD;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,SAAS,eAAK,CAAC,MAAM,CAAC,SAAS,CAAC,qBAAqB;YAC9D,OAAO,EAAE,UAAU;SACpB;KACF,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;SAC5B,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;SAC3B,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAEtC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACzC,SAAS,CAAC,gBAAgB,MAAM,EAAE,CAAC,CAAC;IAEpC,OAAO;QACL,MAAM,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE;QAC/B,MAAM;KACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEK,KAAK,UAAU,MAAM,CAAC,OAAwB;IACnD,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/algorithms/chinese-remainder/index.ts"],"names":[],"mappings":"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"}
@@ -19,13 +19,15 @@ const runWASMGcd = (0, wasm_1.createWASMInvoker)("euclidean", (wasmExports, left
19
19
  return wasmExports.gcd_u64(left, right);
20
20
  });
21
21
  /**
22
- * Computes the greatest common divisor of two integers with the Euclidean algorithm.
22
+ * Computes `gcd(left, right)` with the Euclidean algorithm.
23
23
  *
24
- * The result is the largest integer that divides both inputs, and it is 0n only when both inputs are 0n.
24
+ * The result is the largest integer dividing both inputs, and it is `0n` only
25
+ * when both inputs are `0n`. The fallback implementation repeatedly replaces
26
+ * the pair `(a, b)` with `(b, a mod b)` until the remainder becomes `0`.
25
27
  *
26
- * @param left First integer in the gcd computation.
27
- * @param right Second integer in the gcd computation.
28
- * @returns The greatest common divisor of left and right.
28
+ * @param left First integer `a` in the `gcd(a, b)` computation.
29
+ * @param right Second integer `b` in the `gcd(a, b)` computation.
30
+ * @returns The greatest common divisor of `left` and `right`.
29
31
  */
30
32
  function main(left, right) {
31
33
  const wasmResult = runWASMGcd(left, right);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/algorithms/euclidean/index.ts"],"names":[],"mappings":";;;;;AAiCA,uBAYC;AAiCD,wBAEC;AAhFD,kDAAuE;AACvE,+DAAuC;AACvC,gDAG6B;AAE7B,MAAM,UAAU,GAAG,IAAA,wBAAiB,EAClC,WAAW,EACX,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAC3B,IACE,CAAC,WAAW,CAAC,OAAO;QACpB,IAAI,GAAG,EAAE;QACT,KAAK,GAAG,EAAE;QACV,CAAC,IAAA,gBAAS,EAAC,IAAI,CAAC;QAChB,CAAC,IAAA,gBAAS,EAAC,KAAK,CAAC,EACjB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC1C,CAAC,CACF,CAAC;AAEF;;;;;;;;GAQG;AACH,SAAwB,IAAI,CAAC,IAAY,EAAE,KAAa;IACtD,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC3C,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC;QACpB,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;QACrB,IAAI,GAAG,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,SAAS,GAAG,IAAA,8BAAqB,EACrC,WAAW,EACX,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE;IAC3B,SAAS,CAAC,6BAA6B,CAAC,CAAC;IACzC,SAAS,CAAC,eAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAE7C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,GAAG,CAAkC;QACjE;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,SAAS,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG;YACzC,OAAO,EAAE,CAAC;SACX;QACD;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,SAAS,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG;YAC1C,OAAO,EAAE,CAAC;SACX;KACF,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACjD,SAAS,CAAC,SAAS,IAAI,KAAK,KAAK,OAAO,MAAM,EAAE,CAAC,CAAC;IAElD,OAAO;QACL,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;QACvB,MAAM;KACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEK,KAAK,UAAU,MAAM,CAAC,OAAwB;IACnD,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/algorithms/euclidean/index.ts"],"names":[],"mappings":";;;;;AAmCA,uBAYC;AAiCD,wBAEC;AAlFD,kDAAuE;AACvE,+DAAuC;AACvC,gDAG6B;AAE7B,MAAM,UAAU,GAAG,IAAA,wBAAiB,EAClC,WAAW,EACX,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAC3B,IACE,CAAC,WAAW,CAAC,OAAO;QACpB,IAAI,GAAG,EAAE;QACT,KAAK,GAAG,EAAE;QACV,CAAC,IAAA,gBAAS,EAAC,IAAI,CAAC;QAChB,CAAC,IAAA,gBAAS,EAAC,KAAK,CAAC,EACjB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC1C,CAAC,CACF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,SAAwB,IAAI,CAAC,IAAY,EAAE,KAAa;IACtD,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC3C,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC;QACpB,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;QACrB,IAAI,GAAG,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,SAAS,GAAG,IAAA,8BAAqB,EACrC,WAAW,EACX,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE;IAC3B,SAAS,CAAC,6BAA6B,CAAC,CAAC;IACzC,SAAS,CAAC,eAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAE7C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,GAAG,CAAkC;QACjE;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,SAAS,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG;YACzC,OAAO,EAAE,CAAC;SACX;QACD;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,SAAS,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG;YAC1C,OAAO,EAAE,CAAC;SACX;KACF,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACjD,SAAS,CAAC,SAAS,IAAI,KAAK,KAAK,OAAO,MAAM,EAAE,CAAC,CAAC;IAElD,OAAO;QACL,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;QACvB,MAAM;KACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEK,KAAK,UAAU,MAAM,CAAC,OAAwB;IACnD,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;AAC5B,CAAC"}
@@ -31,13 +31,18 @@ const runWASMExtendedEuclidean = (0, wasm_1.createWASMInvoker)("extended-euclide
31
31
  ];
32
32
  });
33
33
  /**
34
- * Computes the greatest common divisor together with Bezout coefficients for two integers.
34
+ * Computes `gcd(left, right)` together with Bezout coefficients for two
35
+ * integers.
35
36
  *
36
- * The returned tuple [gcd, x, y] satisfies left * x + right * y = gcd, which is the standard Bezout identity.
37
+ * The returned tuple `[gcd, x, y]` satisfies `left * x + right * y = gcd`,
38
+ * which is the standard Bezout identity. The fallback implementation performs
39
+ * recursive Euclidean reduction and back-substitutes the quotients to recover
40
+ * the coefficients.
37
41
  *
38
- * @param left First integer in the Bezout identity.
39
- * @param right Second integer in the Bezout identity.
40
- * @returns A tuple [gcd, x, y] where gcd is the greatest common divisor of the inputs.
42
+ * @param left First integer `a` in the identity `a * x + b * y = gcd(a, b)`.
43
+ * @param right Second integer `b` in the identity `a * x + b * y = gcd(a, b)`.
44
+ * @returns A tuple `[gcd, x, y]` where `gcd` is the greatest common divisor of
45
+ * the inputs and `x`, `y` are Bezout coefficients.
41
46
  */
42
47
  function main(left, right) {
43
48
  const wasmResult = runWASMExtendedEuclidean(left, right);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/algorithms/extended-euclidean/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/algorithms/extended-euclidean/index.ts"],"names":[],"mappings":"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"}
@@ -22,14 +22,17 @@ const runWASMPowMod = (0, wasm_1.createWASMInvoker)("fast-modular-exponentiation
22
22
  return wasmExports.powmod_u64(base, exponent, modulo);
23
23
  });
24
24
  /**
25
- * Computes modular exponentiation by evaluating base^exponent modulo modulo.
25
+ * Computes the residue `base^exponent mod modulo` with binary exponentiation.
26
26
  *
27
- * The result is calculated with binary exponentiation, which keeps the intermediate values inside the residue class ring modulo modulo.
27
+ * The result is calculated with repeated squaring, which keeps every
28
+ * intermediate value inside the residue class ring modulo `modulo` and reduces
29
+ * the exponent one bit at a time. The WASM path calls the equivalent modular
30
+ * power routine for the same recurrence.
28
31
  *
29
- * @param base Base value whose power is computed.
30
- * @param exponent Non-negative exponent applied to the base.
31
- * @param modulo Positive modulus that defines the residue class ring.
32
- * @returns The least non-negative residue of base^exponent modulo modulo.
32
+ * @param base Base `a` whose power is computed.
33
+ * @param exponent Non-negative exponent `e` applied to `base`.
34
+ * @param modulo Positive modulus `m` that defines the residue class ring.
35
+ * @returns The least non-negative residue of `base^exponent mod modulo`.
33
36
  * @throws {Error} When modulo is not greater than 0.
34
37
  * @throws {Error} When exponent is negative.
35
38
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/algorithms/fast-modular-exponentiation/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/algorithms/fast-modular-exponentiation/index.ts"],"names":[],"mappings":"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"}
@@ -21,13 +21,19 @@ const runWASMMillerRabin = (0, wasm_1.createWASMInvoker)("miller-rabin-primarily
21
21
  return wasmExports.miller_rabin_u64(input, level) === 1;
22
22
  });
23
23
  /**
24
- * Performs the Miller-Rabin probable-prime test on an integer.
24
+ * Performs the Miller-Rabin probable-prime test on an integer `input`.
25
25
  *
26
- * Each witness round checks whether input behaves like a prime in the multiplicative group modulo input, so a true result means input is a probable prime rather than a proof of primality.
26
+ * Each witness round checks whether `input` behaves like a prime in the
27
+ * multiplicative group modulo `input`, so a true result means `input` is a
28
+ * probable prime rather than a proof of primality. The algorithm decomposes
29
+ * `input - 1 = 2^s d` with odd `d` and uses fast modular exponentiation for
30
+ * each random witness.
27
31
  *
28
- * @param input Integer to classify as composite or probable prime.
29
- * @param level Number of witness rounds used to reduce the probability of a false positive.
30
- * @returns False when a witness proves the number composite, or true when all rounds pass.
32
+ * @param input Integer `n` to classify as composite or probable prime.
33
+ * @param level Number of witness rounds `k` used to reduce the probability of
34
+ * a false positive.
35
+ * @returns `false` when a witness proves the number composite, or `true` when
36
+ * all rounds pass.
31
37
  * @throws {Error} When level is not a positive integer.
32
38
  */
33
39
  function main(input, level) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/algorithms/miller-rabin-primarily-test/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/algorithms/miller-rabin-primarily-test/index.ts"],"names":[],"mappings":"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"}
@@ -25,12 +25,19 @@ const runWASMMultiplicativeInverse = (0, wasm_1.createWASMInvoker)("multiplicati
25
25
  /**
26
26
  * Computes a modular inverse and lists its first positive integer multiples.
27
27
  *
28
- * When gcd(base, modulo) = 1, the first returned value is the least non-negative x such that base * x ≡ 1 (mod modulo), and each later value is the next positive multiple of that inverse.
28
+ * When `gcd(base, modulo) = 1`, the first returned value is the least
29
+ * non-negative `x` such that `base * x ≡ 1 (mod modulo)`, and each later value
30
+ * is the next positive multiple of that inverse. The implementation computes
31
+ * the inverse with the Extended Euclidean algorithm and then normalizes it into
32
+ * the interval `[0, modulo - 1]`.
29
33
  *
30
- * @param base Integer whose multiplicative inverse is computed modulo modulo.
31
- * @param modulo Modulus that defines the congruence relation and must be greater than 1.
32
- * @param number Count of positive multiples to return.
33
- * @returns An array whose first element is the modular inverse and whose remaining elements are successive positive multiples of that inverse.
34
+ * @param base Integer `a` whose multiplicative inverse is computed modulo
35
+ * `modulo`.
36
+ * @param modulo Modulus `m` that defines the congruence relation and must be
37
+ * greater than `1`.
38
+ * @param number Count `k` of positive multiples to return.
39
+ * @returns An array `[inverse, 2 * inverse, ..., k * inverse]` where
40
+ * `inverse` is the least non-negative inverse modulo `m`.
34
41
  * @throws {Error} When modulo is not greater than 1.
35
42
  * @throws {Error} When number is not a positive integer.
36
43
  * @throws {Error} When base and modulo are not coprime.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/algorithms/multiplicative-inverse/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/algorithms/multiplicative-inverse/index.ts"],"names":[],"mappings":"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"}
@@ -39,11 +39,16 @@ const runWASMNaorReingo = (0, wasm_1.createWASMInvoker)("naor-reingo", (wasmExpo
39
39
  /**
40
40
  * Generates pseudorandom positive integers with a fixed decimal digit length.
41
41
  *
42
- * Each returned value lies in the interval [10^(digits - 1), 10^digits - 1], so every output has exactly the requested number of decimal digits.
42
+ * Each returned value lies in the interval
43
+ * `[10^(digits - 1), 10^digits - 1]`, so every output has exactly the
44
+ * requested number of decimal digits. The TypeScript fallback uses the shared
45
+ * uniform `randomBigIntBetween` sampler, while the WASM path fills the result
46
+ * buffer with the same bounded generation strategy.
43
47
  *
44
- * @param count Number of values to generate.
45
- * @param digits Decimal digit length required for each generated value.
46
- * @returns An array of generated values as JavaScript numbers.
48
+ * @param count Number `k` of values to generate.
49
+ * @param digits Decimal digit length `d` required for each generated value.
50
+ * @returns An array of generated values as JavaScript numbers, each having
51
+ * exactly `digits` decimal digits.
47
52
  * @throws {Error} When count is not a positive integer.
48
53
  * @throws {Error} When digits is not a positive integer.
49
54
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/algorithms/naor-reingo/index.ts"],"names":[],"mappings":";;;;;AAmEA,uBAsBC;AAmCD,wBAEC;AA9HD,kDAKiC;AACjC,sDAAgE;AAChE,+DAAuC;AACvC,gDAG6B;AAE7B,MAAM,iBAAiB,GAAG,IAAA,wBAAiB,EACzC,aAAa,EACb,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;IACnC,IACE,CAAC,WAAW,CAAC,oBAAoB;QACjC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;QACxB,KAAK,IAAI,CAAC;QACV,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;QACzB,MAAM,IAAI,CAAC;QACX,MAAM,GAAG,EAAE;QACX,CAAC,IAAA,gBAAS,EAAC,IAAI,CAAC,EAChB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,IAAA,yBAAkB,EAAC,WAAW,CAAC,CAAC;IAClD,SAAS,CAAC,KAAK,EAAE,CAAC;IAElB,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,GAAG,gBAAS,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,oBAAoB,CAC9C,KAAK,EACL,MAAM,EACN,IAAI,EACJ,MAAM,CACP,CAAC;IACF,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,gBAAS,GAAG,KAAK,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CACF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,SAAwB,IAAI,CAAC,KAAa,EAAE,MAAc;IACxD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IAE9C,MAAM,eAAe,GAAG,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC7E,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;QAC7B,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAA,4BAAmB,EAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,SAAS,GAAG,IAAA,8BAAqB,EACrC,aAAa,EACb,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE;IAC3B,SAAS,CACP,mEAAmE,CACpE,CAAC;IACF,SAAS,CAAC,eAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,CAAC;IAEjE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAoC;QACrE;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,SAAS,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG;YAC1C,OAAO,EAAE,CAAC;SACX;QACD;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,SAAS,eAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG;YAC3C,OAAO,EAAE,CAAC;SACX;KACF,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,SAAS,CAAC,cAAc,MAAM,EAAE,CAAC,CAAC;IAElC,OAAO;QACL,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;QACzB,MAAM;KACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEK,KAAK,UAAU,MAAM,CAAC,OAAwB;IACnD,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/algorithms/naor-reingo/index.ts"],"names":[],"mappings":";;;;;AAwEA,uBAsBC;AAmCD,wBAEC;AAnID,kDAKiC;AACjC,sDAAgE;AAChE,+DAAuC;AACvC,gDAG6B;AAE7B,MAAM,iBAAiB,GAAG,IAAA,wBAAiB,EACzC,aAAa,EACb,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;IACnC,IACE,CAAC,WAAW,CAAC,oBAAoB;QACjC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;QACxB,KAAK,IAAI,CAAC;QACV,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;QACzB,MAAM,IAAI,CAAC;QACX,MAAM,GAAG,EAAE;QACX,CAAC,IAAA,gBAAS,EAAC,IAAI,CAAC,EAChB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,IAAA,yBAAkB,EAAC,WAAW,CAAC,CAAC;IAClD,SAAS,CAAC,KAAK,EAAE,CAAC;IAElB,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,GAAG,gBAAS,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,oBAAoB,CAC9C,KAAK,EACL,MAAM,EACN,IAAI,EACJ,MAAM,CACP,CAAC;IACF,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,gBAAS,GAAG,KAAK,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CACF,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,SAAwB,IAAI,CAAC,KAAa,EAAE,MAAc;IACxD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IAE9C,MAAM,eAAe,GAAG,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC7E,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;QAC7B,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAA,4BAAmB,EAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,SAAS,GAAG,IAAA,8BAAqB,EACrC,aAAa,EACb,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE;IAC3B,SAAS,CACP,mEAAmE,CACpE,CAAC;IACF,SAAS,CAAC,eAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,CAAC;IAEjE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAoC;QACrE;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,SAAS,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG;YAC1C,OAAO,EAAE,CAAC;SACX;QACD;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,SAAS,eAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG;YAC3C,OAAO,EAAE,CAAC;SACX;KACF,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,SAAS,CAAC,cAAc,MAAM,EAAE,CAAC,CAAC;IAElC,OAAO;QACL,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;QACzB,MAAM;KACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEK,KAAK,UAAU,MAAM,CAAC,OAAwB;IACnD,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;AAC5B,CAAC"}
@@ -23,12 +23,19 @@ const runWASMPollardP1 = (0, wasm_1.createWASMInvoker)("pollard-p-1-factorizatio
23
23
  return result > 1n ? result : null;
24
24
  });
25
25
  /**
26
- * Factors a composite integer by recursively applying Pollard's p - 1 method.
26
+ * Factors a composite integer by recursively applying Pollard's `p - 1`
27
+ * method.
27
28
  *
28
- * The search succeeds quickly when a prime divisor p of the input has a smooth p - 1, and the implementation falls back to Pollard rho when that condition does not yield a non-trivial split.
29
+ * The search succeeds quickly when a prime divisor `p` of the input has a
30
+ * smooth `p - 1`, and the implementation falls back to Pollard rho when that
31
+ * condition does not yield a non-trivial split. The routine combines fast
32
+ * modular exponentiation for the powering steps, the Euclidean algorithm for
33
+ * `gcd(a - 1, n)`, Miller-Rabin to stop recursion on primes, and Pollard rho
34
+ * as a fallback splitter.
29
35
  *
30
- * @param input Composite integer to factor.
31
- * @returns An array of prime factors, including repeated factors, as JavaScript numbers.
36
+ * @param input Composite integer `n` to factor.
37
+ * @returns An array of prime factors of `n`, including repeated factors, as
38
+ * JavaScript numbers.
32
39
  * @throws {Error} When input is not greater than 1.
33
40
  * @throws {Error} When input is prime.
34
41
  * @throws {Error} When recursive factorization fails to produce non-trivial prime factors.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/algorithms/pollard-p-1-factorization/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/algorithms/pollard-p-1-factorization/index.ts"],"names":[],"mappings":"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"}
@@ -25,10 +25,14 @@ const runWASMPollardRho = (0, wasm_1.createWASMInvoker)("pollard-rho", (wasmExpo
25
25
  /**
26
26
  * Searches for a non-trivial divisor of an integer with Pollard's rho method.
27
27
  *
28
- * The iteration uses the polynomial x^2 + c modulo input together with cycle detection to turn repeated residues into a gcd computation that can expose a factor.
28
+ * The iteration uses the polynomial `f(x) = x^2 + c mod input` together with
29
+ * Floyd cycle detection to turn repeated residues into a divisor search. Each
30
+ * step applies the Euclidean algorithm to `|x - y|` and `input`, which can
31
+ * expose a non-trivial factor when the iterates collide modulo a prime divisor.
29
32
  *
30
- * @param input Integer to factor.
31
- * @returns A non-trivial factor of input, 2n for even inputs, or 1n when no factor is found after the retry limit.
33
+ * @param input Integer `n` to factor.
34
+ * @returns A non-trivial factor of `input`, `2n` for even inputs, or `1n`
35
+ * when no factor is found after the retry limit.
32
36
  * @throws {Error} When input is not greater than 1.
33
37
  */
34
38
  function main(input) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/algorithms/pollard-rho/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/algorithms/pollard-rho/index.ts"],"names":[],"mappings":"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"}
@@ -35,19 +35,47 @@ const runWASMPrimitiveRoots = (0, wasm_1.createWASMInvoker)("primitive-root-sear
35
35
  }
36
36
  return result;
37
37
  });
38
+ function listPrimeFactors(value) {
39
+ const factors = [];
40
+ let remainder = value;
41
+ for (let factor = 2; factor * factor <= remainder; factor++) {
42
+ if (remainder % factor !== 0) {
43
+ continue;
44
+ }
45
+ factors.push(factor);
46
+ while (remainder % factor === 0) {
47
+ remainder /= factor;
48
+ }
49
+ }
50
+ if (remainder > 1) {
51
+ factors.push(remainder);
52
+ }
53
+ return factors;
54
+ }
38
55
  /**
39
- * Enumerates primitive roots modulo a prime and builds the corresponding power table.
56
+ * Enumerates primitive roots modulo a prime and builds the corresponding power
57
+ * table.
40
58
  *
41
- * For a prime p, the non-zero residue classes form a cyclic multiplicative group of order p - 1; this function identifies the generators of that group and records their powers modulo p.
59
+ * For a prime `p`, the non-zero residue classes form a cyclic multiplicative
60
+ * group of order `phi = p - 1`; this function identifies the generators of
61
+ * that group by checking `g^(phi / q) ≠ 1 (mod p)` for every prime divisor `q`
62
+ * of `phi`, and it records the power table for every candidate. The
63
+ * implementation validates `p` with the Miller-Rabin test and uses fast
64
+ * modular exponentiation both for the primitive-root checks and for the table
65
+ * entries.
42
66
  *
43
- * @param prime Prime modulus whose multiplicative group is analyzed.
44
- * @returns A tuple [table, roots] where table[row][column] stores (row + 1)^(column + 1) mod prime and roots lists the primitive roots modulo prime.
67
+ * @param prime Prime modulus `p` whose multiplicative group is analyzed.
68
+ * @returns A tuple `[table, roots]` where `table[row][column]` stores
69
+ * `(row + 1)^(column + 1) mod p` and `roots` lists the primitive roots modulo
70
+ * `p`.
45
71
  * @throws {Error} When prime is not prime.
46
72
  */
47
73
  function main(prime) {
48
74
  if (!(0, miller_rabin_primarily_test_1.default)(BigInt(prime), 10))
49
75
  throw new Error("The Given number must be prime.");
76
+ const primeBigInt = BigInt(prime);
50
77
  const phi = prime - 1;
78
+ const primitiveRootExponents = listPrimeFactors(phi).map((factor) => BigInt(phi / factor));
51
79
  const table = Array.from({ length: phi }, () => Array.from({ length: phi }, () => 0));
52
80
  const arrayOfResult = [];
53
81
  const maybeWASMRoots = runWASMPrimitiveRoots(BigInt(prime));
@@ -57,26 +85,22 @@ function main(prime) {
57
85
  }
58
86
  for (let indexRow = 0; indexRow < table.length; indexRow++) {
59
87
  for (let indexColumn = 0; indexColumn < table[0].length; indexColumn++) {
60
- const exponent = (0, fast_modular_exponentiation_1.default)(BigInt(indexRow + 1), BigInt(indexColumn + 1), BigInt(prime));
88
+ const exponent = (0, fast_modular_exponentiation_1.default)(BigInt(indexRow + 1), BigInt(indexColumn + 1), primeBigInt);
61
89
  table[indexRow][indexColumn] = Number(exponent);
62
90
  }
63
91
  }
64
92
  return [table, arrayOfResult];
65
93
  }
66
94
  for (let indexRow = 0; indexRow < table.length; indexRow++) {
67
- const set = new Set();
68
- let isPrimitiveRoot = true;
95
+ const candidate = BigInt(indexRow + 1);
69
96
  for (let indexColumn = 0; indexColumn < table[0].length; indexColumn++) {
70
- const exponent = (0, fast_modular_exponentiation_1.default)(BigInt(indexRow + 1), BigInt(indexColumn + 1), BigInt(prime));
71
- const index = Number(exponent);
72
- table[indexRow][indexColumn] = index;
73
- if (set.has(index)) {
74
- isPrimitiveRoot = false;
75
- }
76
- set.add(index);
97
+ const exponent = (0, fast_modular_exponentiation_1.default)(candidate, BigInt(indexColumn + 1), primeBigInt);
98
+ table[indexRow][indexColumn] = Number(exponent);
77
99
  }
78
- if (isPrimitiveRoot)
100
+ const isPrimitiveRoot = primitiveRootExponents.every((primitiveRootExponent) => table[indexRow][Number(primitiveRootExponent) - 1] !== 1);
101
+ if (isPrimitiveRoot) {
79
102
  arrayOfResult.push(indexRow + 1);
103
+ }
80
104
  }
81
105
  return [table, arrayOfResult];
82
106
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/algorithms/primitive-root-search/index.ts"],"names":[],"mappings":";;;;;AA+DA,uBAqDC;AA+BD,wBAEC;AArJD,2GAAiF;AACjF,2GAAgF;AAChF,kDAKiC;AACjC,+DAAuC;AACvC,gDAG6B;AAE7B,MAAM,qBAAqB,GAAG,IAAA,wBAAiB,EAC7C,uBAAuB,EACvB,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE;IACrB,IACE,CAAC,WAAW,CAAC,yBAAyB;QACtC,KAAK,IAAI,EAAE;QACX,CAAC,IAAA,gBAAS,EAAC,KAAK,CAAC,EACjB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,GAAG,MAAM,EAAE,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,IAAA,yBAAkB,EAAC,WAAW,CAAC,CAAC;IAClD,SAAS,CAAC,KAAK,EAAE,CAAC;IAElB,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,GAAG,gBAAS,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,yBAAyB,CACjD,KAAK,EACL,QAAQ,EACR,QAAQ,CACT,CAAC;IACF,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACxC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,gBAAS,GAAG,KAAK,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CACF,CAAC;AAEF;;;;;;;;GAQG;AACH,SAAwB,IAAI,CAAC,KAAa;IACxC,IAAI,CAAC,IAAA,qCAAwB,EAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAErD,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;IACtB,MAAM,KAAK,GAAe,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CACzD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CACrC,CAAC;IAEF,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,MAAM,cAAc,GAAG,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;YAClC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,CAAC;QAED,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;YAC3D,KAAK,IAAI,WAAW,GAAG,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC;gBACvE,MAAM,QAAQ,GAAG,IAAA,qCAAyB,EACxC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,EACpB,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,EACvB,MAAM,CAAC,KAAK,CAAC,CACd,CAAC;gBACF,KAAK,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QAED,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;QAC3D,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;QAC9B,IAAI,eAAe,GAAG,IAAI,CAAC;QAC3B,KAAK,IAAI,WAAW,GAAG,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC;YACvE,MAAM,QAAQ,GAAG,IAAA,qCAAyB,EACxC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,EACpB,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,EACvB,MAAM,CAAC,KAAK,CAAC,CACd,CAAC;YACF,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC/B,KAAK,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;YAErC,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnB,eAAe,GAAG,KAAK,CAAC;YAC1B,CAAC;YACD,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;QAED,IAAI,eAAe;YAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,SAAS,GAAG,IAAA,8BAAqB,EACrC,uBAAuB,EACvB,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE;IAC3B,SAAS,CAAC,yCAAyC,CAAC,CAAC;IACrD,SAAS,CACP,eAAK,CAAC,IAAI,CACR,iEAAiE,CAClE,CACF,CAAC;IAEF,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,GAAG,CAAoB;QAC7C;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,SAAS,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG;YAC1C,OAAO,EAAE,CAAC;SACX;KACF,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,SAAS,CAAC,uBAAuB,KAAK,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEhE,OAAO;QACL,MAAM,EAAE,EAAE,KAAK,EAAE;QACjB,MAAM;KACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEK,KAAK,UAAU,MAAM,CAAC,OAAwB;IACnD,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/algorithms/primitive-root-search/index.ts"],"names":[],"mappings":";;;;;AA8FA,uBAyDC;AA+BD,wBAEC;AAxLD,2GAAiF;AACjF,2GAAgF;AAChF,kDAKiC;AACjC,+DAAuC;AACvC,gDAG6B;AAE7B,MAAM,qBAAqB,GAAG,IAAA,wBAAiB,EAC7C,uBAAuB,EACvB,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE;IACrB,IACE,CAAC,WAAW,CAAC,yBAAyB;QACtC,KAAK,IAAI,EAAE;QACX,CAAC,IAAA,gBAAS,EAAC,KAAK,CAAC,EACjB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,GAAG,MAAM,EAAE,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,IAAA,yBAAkB,EAAC,WAAW,CAAC,CAAC;IAClD,SAAS,CAAC,KAAK,EAAE,CAAC;IAElB,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,GAAG,gBAAS,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,yBAAyB,CACjD,KAAK,EACL,QAAQ,EACR,QAAQ,CACT,CAAC;IACF,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACxC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,gBAAS,GAAG,KAAK,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CACF,CAAC;AAEF,SAAS,gBAAgB,CAAC,KAAa;IACrC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,IAAI,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;QAC5D,IAAI,SAAS,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,SAAS;QACX,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,OAAO,SAAS,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,SAAS,IAAI,MAAM,CAAC;QACtB,CAAC;IACH,CAAC;IAED,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAwB,IAAI,CAAC,KAAa;IACxC,IAAI,CAAC,IAAA,qCAAwB,EAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAErD,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;IACtB,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAClE,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,CACrB,CAAC;IACF,MAAM,KAAK,GAAe,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CACzD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CACrC,CAAC;IAEF,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,MAAM,cAAc,GAAG,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;YAClC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,CAAC;QAED,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;YAC3D,KAAK,IAAI,WAAW,GAAG,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC;gBACvE,MAAM,QAAQ,GAAG,IAAA,qCAAyB,EACxC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,EACpB,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,EACvB,WAAW,CACZ,CAAC;gBACF,KAAK,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QAED,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;QAC3D,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACvC,KAAK,IAAI,WAAW,GAAG,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC;YACvE,MAAM,QAAQ,GAAG,IAAA,qCAAyB,EACxC,SAAS,EACT,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,EACvB,WAAW,CACZ,CAAC;YACF,KAAK,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,eAAe,GAAG,sBAAsB,CAAC,KAAK,CAClD,CAAC,qBAAqB,EAAE,EAAE,CACxB,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAC3D,CAAC;QAEF,IAAI,eAAe,EAAE,CAAC;YACpB,aAAa,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,SAAS,GAAG,IAAA,8BAAqB,EACrC,uBAAuB,EACvB,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE;IAC3B,SAAS,CAAC,yCAAyC,CAAC,CAAC;IACrD,SAAS,CACP,eAAK,CAAC,IAAI,CACR,iEAAiE,CAClE,CACF,CAAC;IAEF,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,GAAG,CAAoB;QAC7C;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,SAAS,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG;YAC1C,OAAO,EAAE,CAAC;SACX;KACF,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,SAAS,CAAC,uBAAuB,KAAK,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEhE,OAAO;QACL,MAAM,EAAE,EAAE,KAAK,EAAE;QACjB,MAAM;KACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEK,KAAK,UAAU,MAAM,CAAC,OAAwB;IACnD,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;AAC5B,CAAC"}
@@ -42,5 +42,8 @@ describe("Finding the Primitive Roots of the given numbers", () => {
42
42
  test("keeps the same error with and without WASM for non-prime input", () => {
43
43
  (0, wasm_1.expectSameErrorWithAndWithoutWASM)(() => (0, primitive_root_search_1.default)(21), "The Given number must be prime.");
44
44
  });
45
+ test("returns the primitive root table for the smallest prime", () => {
46
+ expect((0, primitive_root_search_1.default)(2)).toEqual([[[1]], [1]]);
47
+ });
45
48
  });
46
49
  //# sourceMappingURL=index.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../source/algorithms/primitive-root-search/index.test.ts"],"names":[],"mappings":";;;;;AAAA,+FAAqE;AACrE,+DAAuC;AACvC,gDAG+B;AAE/B,QAAQ,CAAC,kDAAkD,EAAE,GAAG,EAAE;IAChE,IAAI,CAAC,IAAI,CAAC;QACR,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5C;YACE,GAAG;YACH;gBACE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;gBACvE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;gBACrE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;aAC3D;SACF;QACD;YACE,EAAE;YACF;gBACE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;gBACrE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;aACf;SACF;QACD,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACnB;YACE,EAAE;YACF;gBACE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;gBACrE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;aACvB;SACF;KACF,CAAC,CACA,qDAAqD,eAAK,CAAC,WAAW,CACpE,IAAI,CACL,EAAE,EACH,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAChB,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,OAAO,IAAA,+BAAmB,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CACvC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,CAC9B,CAAC;QACJ,CAAC,CAAC;QAEF,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CACvB,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,CAChD,CAAC;QACF,IAAA,yCAAkC,EAAC,OAAO,CAAC,CAAC;IAC9C,CAAC,CACF,CAAC;IAEF,IAAI,CAAC,gEAAgE,EAAE,GAAG,EAAE;QAC1E,IAAA,wCAAiC,EAC/B,GAAG,EAAE,CAAC,IAAA,+BAAmB,EAAC,EAAE,CAAC,EAC7B,iCAAiC,CAClC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../source/algorithms/primitive-root-search/index.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -70,5 +70,5 @@
70
70
  "test": "jest",
71
71
  "test:coverage": "jest --coverage"
72
72
  },
73
- "version": "2.0.0"
73
+ "version": "2.1.0"
74
74
  }