# Introduction

*HLIBpro* is a software library implementing algorithms for Hierarchical
matrices, or H-matrices. It is freely available in binary form for academic
purposes (see Download). For changes to HLIBpro please refer to the
News section.

H-matrices are a powerful tool for representing and working with dense (and sparse) matrices, e.g. from integral or partial differential equations. They allow the complete matrix algebra, e.g. matrix-vector multiplication, matrix addition, multiplication, inversion and factorisation in almost linear time with respect to the number of rows and columns. For an introduction to this field, please refer to the various papers and books in the literature section.

HLIBpro contains various algorithms for the approximation of dense matrices, e.g. ACA and HCA, the complete set of available H-algebra, various clustering techniques, e.g. geometric and algebraic clustering, many functions for discretising integral equations, e.g. Laplace, Helmholtz and Maxwell equations.

A special focus of HLIBpro lies in the parallelisation of these methods on shared (threads) and distributed memory machines (MPI). This allows the treatment of very large problems on todays workstations with a multi-/many-core architecture or parallel clusters with a fast interconnect.

Another focus of the development of HLIBpro is the robustness of the various algorithms. This includes fault-tolerant algorithms and, even more important for industrial applications, a controlled handling of errors arising during computations, e.g. due to erroneous input data.

For an easy transfer of existing data, many widely used file formats are supported, e.g. Matlab, Harwell-Boeing, MatrixMarket, SAMG for matrices and vectors, PLY, SurfaceMesh, GMSH for grids. Visualisation of computed data, e.g. surface functions or matrices, is available in VTK, PostScript or PDF file format.

HLIBpro was implemented in the C++ programming language. A special interface is available for C. HLIBpro uses BLAS/LAPACK for all low-level algorithms and therefore requires a corresponding software library.

For more information on the available algorithms, please refer to the Features section.