-- Initial linearmap-family.cabal generated by cabal init. For further
-- documentation, see http://haskell.org/cabal/users-guide/
name: linearmap-category
version: 0.6.0.0
synopsis: Native, complete-ish, matrix-free linear algebra.
description: 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.
homepage: https://github.com/leftaroundabout/linearmap-family
license: GPL-3
license-file: LICENSE
author: Justus Sagemüller
maintainer: (@) jsag $ hvl.no
-- copyright:
category: Math
build-type: Simple
-- extra-source-files:
cabal-version: >=1.10
flag singletons3
description: Whether to use a version of the singletons package after its split in a core- and base part
default: True
manual: False
library
exposed-modules: Math.LinearMap.Category
Math.LinearMap.Category.Instances.Deriving
Math.LinearMap.Coercion
Math.VectorSpace.ZeroDimensional
Math.VectorSpace.Dual
Math.VectorSpace.MiscUtil.MultiConstraints
Math.LinearMap.Category.Derivatives
Math.VectorSpace.DimensionAware.Theorems.MaybeNat
Math.VectorSpace.DimensionAware
other-modules: Math.LinearMap.Category.Class
Math.LinearMap.Asserted
Math.LinearMap.Category.TensorQuot
Math.LinearMap.Category.Instances
Math.VectorSpace.Docile
other-extensions: FlexibleInstances, UndecidableInstances, FunctionalDependencies, TypeOperators, TypeFamilies
build-depends: base >=4.8 && <5,
vector-space >=0.11 && <0.18, MemoTrie,
constrained-categories >=0.3 && <0.5,
containers,
vector >=0.12 && <0.14,
tagged,
free-vector-spaces >= 0.1.4 && < 0.3,
linear, lens, transformers,
manifolds-core >= 0.5.1.0 && < 0.7,
semigroups, hashable,
data-default-class,
ieee754 >= 0.7 && < 0.9,
call-stack,
template-haskell >=2.12 && <2.20,
th-abstraction >=0.4 && <0.5,
ghc-typelits-natnormalise >=0.7 && <0.8,
type-natural >=1.0 && <1.2,
QuickCheck >=2.11 && <2.15
if flag(singletons3)
build-depends:
singletons >=3.0 && <3.1,
singletons-base >=3.0 && <3.1
else
build-depends:
singletons >=2.7 && <3.0
-- hs-source-dirs:
default-language: Haskell2010
test-suite tasty
main-is: test.hs
type: exitcode-stdio-1.0
hs-source-dirs: test/tasty
build-depends: base, linearmap-category, vector-space
, QuickCheck
, manifolds-core
, linear, vector
, constrained-categories
, tasty, tasty-quickcheck
ghc-options: -threaded "-with-rtsopts -N8 -M2G"
default-language: Haskell2010