def test_exp_sparse(self): a = rand_herm(100, sparse=True, density=0.1) k = rand_ket(100) out = mfn_multiply_slepc(a, k) al, av = eigh(a.A) expected = av @ np.diag(np.exp(al)) @ av.conj().T @ k assert_allclose(out, expected)
def test_sqrt_sparse(self): import scipy.sparse as sp a = rand_pos(32, sparse=True, density=0.1) a = a + 0.001 * sp.eye(32) k = rand_ket(32) out = mfn_multiply_slepc(a, k, fntype='sqrt', isherm=True) al, av = eigh(a.A) al[al < 0] = 0.0 # very small neg values spoil sqrt expected = av @ np.diag(np.sqrt(al)) @ av.conj().T @ k assert_allclose(out, expected, rtol=1e-6)