## Library contents

The PSBLAS library consists of various classes of subroutines:

Computational routines
  comprising:
  - Sparse matrix by dense matrix product;
  - Sparse triangular systems solution for block diagonal matrices;
  - Vector and matrix norms;
  - Dense matrix sums;
  - Dot products.
Communication routines
  handling halo and overlap communications;
Data management and auxiliary routines
  including:
  - Parallel environment management
  - Communication descriptors allocation;
  - Dense and sparse matrix allocation;
  - Dense and sparse matrix build and update;
  - Sparse matrix and data distribution preprocessing.
Preconditioner routines
Iterative methods
  a subset of Krylov subspace iterative methods

The following naming scheme has been adopted for all the symbols internally defined in the PSBLAS software package:

- all symbols (i.e. subroutine names, data types...) are prefixed by `psb_`
- all data type names are suffixed by `_type`
- all constants are suffixed by `_`
- all top-level subroutine names follow the rule `psb_xxname` where `xx` can be either:
  - `ge`: the routine is related to dense data,
  - `sp`: the routine is related to sparse data,
  - `cd`: the routine is related to communication descriptor (see 3).
  For example the `psb_geins`, `psb_spins` and `psb_cdins` perform the same action (see 6) on dense matrices, sparse matrices and communication descriptors respectively. Interface overloading allows the usage of the same subroutine names for both real and complex data.

In the description of the subroutines, arguments or argument entries are classified as:

global
  For input arguments, the value must be the same on all processes participating in the subroutine call; for output arguments the value is guaranteed to be the same.
local
  Each process has its own value(s) independently.

To finish our general description, we define a version string with the constant

whose current value is `3.4.0`