-
Notifications
You must be signed in to change notification settings - Fork 2
/
linearmap-category.cabal
113 lines (108 loc) · 5.79 KB
/
linearmap-category.cabal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
-- 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.1
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 <0.7,
constrained-categories >=0.3 && <0.5,
containers <0.7,
vector >=0.12 && <0.14,
tagged <0.9,
free-vector-spaces >= 0.1.4 && < 0.3,
linear <1.23, lens <5.3, transformers <0.7,
manifolds-core >= 0.6.1.0 && < 0.7,
semigroups <0.21, hashable <1.5,
data-default-class <0.2,
ieee754 >= 0.7 && < 0.9,
call-stack <0.5,
template-haskell >=2.12 && <2.21,
th-abstraction >=0.4 && <0.7,
ghc-typelits-natnormalise >=0.7 && <0.8,
type-natural >=1.0 && <1.4,
QuickCheck >=2.11 && <2.15
if flag(singletons3)
build-depends:
singletons >=3.0 && <3.3,
singletons-base >=3.0 && <3.3
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 <1.5, tasty-quickcheck <0.11
ghc-options: -threaded "-with-rtsopts -N8 -M2G"
default-language: Haskell2010