def test_bench_krylovschursparse_dense(benchmark, n=N_BENCHMARK, m=M_BENCHMARK): if not pcca.HAS_SLEPC: return from scipy import sparse T = utils.randompropagator(n) T = sparse.csr_matrix(T) solver = pcca.KrylovSchur(onseperation="continue") benchmark(solver.solve, T, m)
def test_krylovschur(n=30, m=5, N=100): if pcca.HAS_SLEPC: for i in range(N): A = utils.randompropagator(n, reversible=False) try: S = pcca.scipyschur(A, m, onseperation="error") except RuntimeError: continue K = pcca.krylovschur(A, m) R = np.linalg.matrix_rank(np.concatenate([S, K], axis=1), tol=1e-6) assert R == m
def test_scipyschur(n=10, m=3): T = utils.randompropagator(n) massmatrix = np.diag(np.ones(n)) solver = pcca.ScipySchur() X1 = solver.solve(T, m) X2 = solver.solve(T, m, massmatrix) # check if X1 and X2 span the same space tol = 1e-12 assert np.linalg.matrix_rank(np.hstack([X1, X2]), tol) == m
def test_bench_krylovschur(benchmark, n=N_BENCHMARK, m=M_BENCHMARK): if not pcca.HAS_SLEPC: return T = utils.randompropagator(n) solver = pcca.KrylovSchur(onseperation="continue") benchmark(solver.solve, T, m)
def test_bench_scipyqz(benchmark, n=N_BENCHMARK, m=M_BENCHMARK): T = utils.randompropagator(n) massmatrix = np.diag(np.ones(n)) solver = pcca.ScipySchur() benchmark(solver.solve, T, m, massmatrix)
def test_bench_scipyschur(benchmark, n=N_BENCHMARK, m=M_BENCHMARK): T = utils.randompropagator(n) solver = pcca.ScipySchur() benchmark(solver.solve, T, m)
def test_random(): T = utils.randompropagator(10) m = pcca.pcca(T, 3) assert utils.is_rowstochastic(m)