# Matrix¶

There are several different classes in `libsemigroups`

for representing
matrices over various semirings. There are up to three different
representations for every type of matrix:

those whose dimension and arithmetic operations can be defined at compile time:

`StaticMatrix`

.those whose arithmetic operation can be defined at compile time but whose dimensions can be set at run time:

`DynamicMatrix`

those whose arithmetic operations and dimensions can be set at run time:

`DynamicMatrix`

It’s unlikely that you will want to use the classes described on this page
directly, but rather through the aliases described on the other matrix pages
(such as, for example, `BMat`

).

## Over specific semirings¶

The following matrix classes are provided which define matrices over some specific semirings:

## Over arbitrary semirings¶

The following general matrix classes are provided which can be used to define matrices over arbitrary semirings:

## Row views¶

A row view is a lightweight representation of a row of a matrix. The following row view classes are provided:

## Helpers¶

The namespace `matrix_helpers`

contains a number of helper functions
for certain types of matrices:

## Adapters¶

There are various specialisations of the adapters described on this page<Adapters> for the matrices described on this page: