• Pavel Kus's avatar
    Introducing analytical test · 8a9c9df1
    Pavel Kus authored
    Introducing new test in which matrix and its eigendecomposition is
    known and thus can be easily created and checked directly, without the
    need to use scalapack or any other communication (apart from reducing
    The test is based on the fact, that if L_A and S_A are eigenvalues and
    eigenvectors of matrix A, respectively, and L_B and S_B eigenvalues and
    eigenvectors of B, then kron(L_A, L_B) and kron (S_A, S_B) are
    eigenvalues and eigenvectors of kron(A, B).
    Since it is easy to know exact eigendecomposition of a small matrix (e.g.
    2x2), and kron operator has very simple structure, we can construct
    arbitrarily large matrix and its eigendecomposition. We only have to
    select small matrices such that the resulting matrix has unique and
    ordered eigenvalues, so that the checking of the result is than easy.
    Each element of matrix, eigenvector matrix and eigenvalue vector can
    be quickly computed independently, just using its global coordinates.
    The test is currently limited to matrices of size 2^n, but by
    storing eigendecompositions of more small matrices (e.g. 3x3 and 5x5) we
    could construct any matrix of size 2^n*3^m*5^o, which would probably be
    sufficient, since most often used sizes (150, 1000, 5000, 2000, 60000)
    are of this form.