36# include <gtest/gtest.h>
106 std::mt19937_64
rng(42);
107 for (
int i = 0; i < 100; ++i)
115 for (
uint64_t d = 2; d * d <= n; ++d)
116 if (n % d == 0) {
oracle =
false;
break; }
136 std::mt19937_64
rng(1337);
137 for (
int i = 0; i < 20; ++i)
143 for (
const auto f :
res)
148 EXPECT_EQ(
prod, n) <<
"Product of factors doesn't match original n";
154 if (
not std::getenv(
"ENABLE_PERF_TESTS"))
155 GTEST_SKIP() <<
"Skipping performance regression (set ENABLE_PERF_TESTS to enable)";
162 auto start = std::chrono::steady_clock::now();
164 auto end = std::chrono::steady_clock::now();
166 auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
Simple dynamic array with automatic resizing and functional operations.
T & append(const T &data)
Append a copy of data
Dynamic matrix with sparse storage.
Combinatorics operations modulo a prime.
Matrix operations modulo a prime.
uint64_t determinant() const
Computes the determinant of the matrix modulo p.
std::optional< Modular_Matrix< MatrixT > > inverse() const
Computes the inverse of the matrix modulo p.
Safe modular arithmetic, extended Euclidean algorithm, and Chinese Remainder Theorem.
Modular combinatorics utilities.
Linear algebra operations over finite fields (modulo a prime).
Main namespace for Aleph-w library functions.
uint64_t mod_inv(const uint64_t a, const uint64_t m)
Modular Inverse.
Array< uint64_t > pollard_rho(uint64_t n)
Compute the prime factorization of a number using Pollard's rho.
Divide_Conquer_DP_Result< Cost > divide_and_conquer_partition_dp(const size_t groups, const size_t n, Transition_Cost_Fn transition_cost, const Cost inf=dp_optimization_detail::default_inf< Cost >())
Optimize partition DP using divide-and-conquer optimization.
bool miller_rabin(uint64_t n) noexcept
Miller-Rabin primality test for 64-bit integers.
uint64_t mod_exp(uint64_t base, uint64_t exp, const uint64_t m)
Modular exponentiation.
uint64_t mod_mul(uint64_t a, uint64_t b, uint64_t m)
Safe 64-bit modular multiplication.
uint64_t crt(const Array< uint64_t > &rem, const Array< uint64_t > &mod)
Chinese Remainder Theorem (CRT).
Integer factorization using Pollard's rho algorithm.
Advanced primality testing algorithms.
FooMap m(5, fst_unit_pair_hash, snd_unit_pair_hash)
Dynamic matrix with lazy allocation.