### Overview of package fm

Full Matrices

- cp_blacs_calls
- wrappers for the actual blacs calls. all functionality needed in the code should actually be provide by cp_blacs_env these functions should be private members of that module
- cp_blacs_env
- methods related to the blacs parallel environment
- cp_cfm_basic_linalg
- Basic linear algebra operations for complex full matrices.
- cp_cfm_diag
- used for collecting diagonalization schemes available for cp_cfm_type
- cp_cfm_types
- Represents a complex full matrix distributed on many processors.
- cp_fm_basic_linalg
- basic linear algebra operations for full matrices
- cp_fm_cholesky
- various cholesky decomposition related routines
- cp_fm_diag
- used for collecting some of the diagonalization shemes available for cp_fm_type. cp_fm_power also moved here as it is very related
- cp_fm_diag_utils
- Auxiliary tools to redistribute cp_fm_type matrices before and after diagonalization. Heuristics are used to determine the optimal number of CPUs for diagonalization and the input matrices are redistributed if necessary
- cp_fm_elpa
- Wrapper for ELPA
- cp_fm_pool_types
- pool for for elements that are retained and released
- cp_fm_struct
- represent the structure of a full matrix
- cp_fm_types
- represent a full matrix distributed on many processors
- cp_fm_vect
- routine to handle vectors of full matrixes
- cp_linked_list_fm
- ...