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

[ gpl, library, math ] [ Propose Tags ]

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.


Automatic Flags

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


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


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

Package maintainers

For package maintainers and hackage trustees


  • No Candidates
Versions [RSS],,,,,,,,,,,,,,,
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.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 $
Revised Revision 1 made by leftaroundabout at 2023-05-21T17:28:46Z
Category Math
Home page
Uploaded by leftaroundabout at 2023-05-20T14:17:45Z
Reverse Dependencies 4 direct, 1 indirect [details]
Downloads 6116 total (34 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]