/*! \page dense Dense Solvers

STRUMPACK provides several rank-structured formats for dense matrix
approximation. Included are HSS (Hierarchically Semi-Separable), BLR
(Block Low Rank), HODLR (Hierarchically Off-Diagonal Low Rank),
Butterfly, HODBF (Hierarchically Off-Diagonal Butterfly).


## StructuredMatrix Interface

We provide an interface to these different formats through a single
class strumpack::structured::StructuredMatrix. See the documentation
for this class for more information. Multiple scenarios for
construction are supported, such as

- Construction from a dense input matrix
- Matrix-free construction, using only a matrix-vector product
- Construction using only selected matrix entries

Moreover, \link strumpack::structured::StructuredMatrix
StructuredMatrix \endlink defines several operations, such as

- Matrix-vector multiplication (and transpose product)
- Factorization and solve
- Query memory usage
- Check maximum rank

Example usage of this \link strumpack::structured::StructuredMatrix
StructuredMatrix \endlink class can be found in
examples/dense/testStructured.cpp and
examples/dense/testStructuredMPI.cpp.


If you require additional functionality, then feel free to reach out
and \link contact \endlink us.


## C Interface

The C interface to the \link strumpack::structured::StructuredMatrix
StructuredMatrix \endlink class can be found in \link
structured/StructuredMatrix.h structured/StructuredMatrix.h
\endlink. An example is available in examples/dense/dstructured.c.


## Fortran Interface

The Fortran interface for the structured matrix functionality is based
on the C interface (which is based on the C++ class
strumpack::structured::StructuredMatrix), so we refer to the C and C++
interfaces for more detailed information. The Fortran interface can be
found in \link structured/fortran/strumpack_dense.f90
structured/fortran/strumpack_dense.f90 \endlink. A Fortran example is
available in examples/dense/fstructured.f90.


Note that the HODLR, HODBF, Butterfly and Low Rank formats are
implemented using ButterflyPACK, which is written in Fortran. So a
Fortran user can directly use ButterflyPACK.


## Specific Formats

We recommend you use the \link strumpack::structured::StructuredMatrix
StructuredMatrix \endlink interface. However, the following pages are
specific for certain formats:

- \subpage hss_matrices "HSS Approximation of Dense Matrices"
- \subpage hodlr_matrices "HODLR Approximation of Dense Matrices"
- \subpage blr_matrices "BLR Approximation of Dense Matrices"

These are all implemented as sub-classes of the StructuredMatrix
class.

*/
