# linearmap-category: Native, complete-ish, matrix-free linear algebra.

The term *numerical linear algebra* is often used almost
synonymous with *matrix modifications*. However, what's interesting
for most applications are really just *points in some vector space*
and linear mappings between them, not matrices (which represent
points or mappings, but inherently depend on a particular choice
of basis / coordinate system).

This library implements the crucial LA operations like solving linear equations and eigenvalue problems, without requiring that the vectors are represented in some particular basis. This appoach offers: 1. conceptual elegance (only operations that are actually geometrically sensible will typecheck – this is far stronger than just confirming that the dimensions match, as some other libraries do) 2. opportunity to type tensors more expressively. E.g. instead of having a tensor with many dimensions that can easily be confused, one can have e.g. a space of images and take the tensor product with a linear batch space, etc.. 3. it opens up optimisation possibilities: the vectors can be unboxed, use dedicated sparse compression, possibly carry out the computations on accelerated hardware (GPU etc.). The spaces can in principle even be infinite-dimensional (e.g. function spaces).

The linear algebra algorithms in this package only require the vectors to support fundamental operations like addition, scalar products, double-dual-space coercion and tensor products. These are expressed by a hierarchy of type classes, none of which requires a basis representation. Basis representations are optional to allow storage in matrix-based backends, but this too is done in a way that allows e.g. taking the tensor product of a lazy function space with a static-dimensional matrix space with a low-dimensional channels space, and then only the inner dimensions will be stored in a packed format.

## Flags

## Automatic Flags

Name | Description | Default |
---|---|---|

singletons3 | Whether to use a version of the singletons package after its split in a core- and base part | Enabled |

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

## Downloads

- linearmap-category-0.6.0.1.tar.gz [browse] (Cabal source package)
- Package description (revised from the package)

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

#### Maintainer's Corner

For package maintainers and hackage trustees

Candidates

- No Candidates

Versions [RSS] | 0.1.0.0, 0.1.0.1, 0.2.0.0, 0.3.0.1, 0.3.2.0, 0.3.4.0, 0.3.5.0, 0.4.0.0, 0.4.0.1, 0.4.1.0, 0.4.2.0, 0.4.3.0, 0.5.0.0, 0.5.0.1, 0.6.0.0, 0.6.0.1 |
---|---|

Dependencies | base (>=4.8 && <5), call-stack (<0.5), constrained-categories (>=0.3 && <0.5), containers (<0.7), data-default-class (<0.2), free-vector-spaces (>=0.1.4 && <0.3), ghc-typelits-natnormalise (>=0.7 && <0.8), hashable (<1.5), ieee754 (>=0.7 && <0.9), lens (<5.3), linear (<1.23), manifolds-core (>=0.6.1.0 && <0.7), MemoTrie (<0.7), QuickCheck (>=2.11 && <2.15), semigroups (<0.21), singletons (>=2.7 && <3.3), singletons-base (>=3.0 && <3.3), tagged (<0.9), template-haskell (>=2.12 && <2.21), th-abstraction (>=0.4 && <0.6), transformers (<0.6), type-natural (>=1.0 && <1.4), vector (>=0.12 && <0.14), vector-space (>=0.11 && <0.18) [details] |

License | GPL-3.0-only |

Author | Justus Sagemüller |

Maintainer | (@) jsag $ hvl.no |

Revised | Revision 1 made by leftaroundabout at 2023-05-21T17:28:46Z |

Category | Math |

Home page | https://github.com/leftaroundabout/linearmap-family |

Uploaded | by leftaroundabout at 2023-05-20T14:17:45Z |

Distributions | |

Reverse Dependencies | 4 direct, 1 indirect [details] |

Downloads | 6212 total (31 in the last 30 days) |

Rating | (no votes yet) [estimated by Bayesian average] |

Your Rating | |

Status | Docs uploaded by user Build status unknown [no reports yet] |