Hi SLATE Team,
In BLAS, LAPACK, etc., skew-symmetric and skew-Hermitian
matrices are not
supported. Recently I encountered some applications where
skew-symmetric
eigensolvers are needed. Modifying existing symmetric
eigensolvers is a big
pain, especially when accuracy and performance are important.
It might be a
good idea to take care of these matrices already at the
designing stage of the
library so that the users can avoid performing this type of
development.
Skew-Hermitian matrices are relatively easy to handle because
they can be
directly transformed to Hermitian matrices by multiplying the
imaginary unit.
This type of conversion is sufficient for solving both linear
systems and
eigenvalue problems. Providing support for skew-Hermitian
matrices is just
some simple additional work on interfacing. Even if no support
is provided,
it is not a big deal.
But skew-symmetric matrices have a different role because the
conversion
mentioned above is not sufficient.
In general we do not want to convert a real skew-symmetric
matrix to a complex
Hermitian matrix. In addition, when solving eigenvalue
problems, the
eigenvalues of a real skew-symmetric matrix appear in pairs.
Tailored solvers
are required to take care of such a property.
There might exist some applications that complex skew-symmetric
matrices are
of interest. Even in this case there is a special property that
the rank is
always even, which is (numerically) lost by scaling to a complex
symmetric
matrix and then performing LDL^T type factorizations.
Taking care of a skew-symmetric version of function at the same
time of
developing a symmetric version is reasonably easy. But if
skew-symmetric
matrices are never taken into account until the very end stage,
the developers
will have to repeat some painful process of debugging because
transporting a
complicated symmetric solver (e.g., two-stage tridiagonal
reduction) to its
skew-symmetric counterpart is not simple at all. Therefore, I
strongly
recommend adding support for skew-symmetric matrices
(preferably, also for
skew-Hermitian matrices) at the early stage of development.
Since I am not aware of applications on solving skew-symmetric
linear systems,
I am not sure whether LDL^T decomposition would be useful or
not.
Operations that are helpful for real skew-symmetric eigensolvers
include:
1. skew-symmetric matrix--matrix/matrix--vector multiplication
2. skew-symmetric tridiagonal reduction
3. skew-symmetric congruence transformation (A -> X^TAX)
(It seems that even symmetric congruence transformation is not
supported in
BLAS/LAPACK for a general or triangular X.)
Best,
Meiyue