linear
Linear Algebra
http://github.com/ekmett/linear/
Version on this page:  1.22@rev:3 
LTS Haskell 22.34:  1.22@rev:3 
Stackage Nightly 20240911:  1.23@rev:1 
Latest on Hackage:  1.23@rev:1 
BSD3Clause licensed by Edward A. Kmett
Maintained by Edward A. Kmett
This version can be pinned in stack with:
linear1.22@sha256:6402f0140156d2792ca0cbef3f5af2ec3675660e381574ac968cd5884724b8ba,4132
Module documentation for 1.22
Depends on 23 packages(full list with versions):
Used by 14 packages in nightly20240616(full list with versions):
Changes
1.22 [2022.11.30]

The types of
_Point
andlensP
have been generalized:_Point :: Iso' (Point f a) (f a) +_Point :: Iso (Point f a) (Point g b) (f a) (g b) lensP :: Lens' (Point g a) (g a) +lensP :: Lens (Point f a) (Point g b) (f a) (g b)
There is a chance that existing uses of
_Point
orlensP
will fail to typecheck due to their more general types. You can use_Point.simple
orlensP.simple
to restore their old, more restricted types (wheresimple
comes fromControl.Lens
in thelens
library).
1.21.10 [2022.06.21]
 Allow building with
vector0.13.*
.
1.21.9 [2022.05.18]
 Allow building with
transformers0.6.*
.
1.21.8 [2021.11.15]
 Allow building with
hashable1.4.*
.  Drop support for pre8.0 versions of GHC.
1.21.7 [2021.09.20]
 Fix a build error when using
random1.2.1
or later.
1.21.6 [2021.07.05]
 Fix a build error when configured with
templatehaskell
.
1.21.5 [2021.02.18]
 Allow building with
lens5.*
.
1.21.4 [2021.01.29]
 Allow building with
vector0.12.2
or later.  The buildtype has been changed from
Custom
toSimple
. To achieve this, thedoctests
test suite has been removed in favor of usingcabaldocspec
to run the doctests.
1.21.3 [2020.10.03]
 Allow building with GHC 9.0.
1.21.2 [2020.09.30]
 Use
baseorphans0.8.3
or later. This means that theLinear.Instances
module no longer defines any orphan instances of its own, and the module is now a simple shim on top ofData.Orphans
frombaseorphans
.
1.21.1 [2020.06.25]
 Allow building with
random1.2.*
.
1.21 [2020.02.03]
 Add instances for direct sums (
Product
) and tensor products (Compose
) of other vector spaces. This makes is much more convenient to do things like treat a matrix temporarily as a vector through Compose, or to consider things like GaussJordan elimination, which wants augmented structures.  Add
frobenius
for computing the Frobenius norm of a matrix.  Added
Random
instances forSystem.Random
. We had an indirect dependency throughvector
anyways.  Add “obvious” zipping
Semigroup
andMonoid
instances to all the representable vector spaces.  Add
R1
..R4
instances toQuaternion
._w
is the scalar component so that_x
,_y
,_z
can be directional.  Add more solvers to
Linear.Matrix
, available withbase4.8
or later.  Add
unangle
function toLinear.V2
.
1.20.9 [2019.05.02]
 Derive
Lift
instances forPlucker
,Quaternion
, andV{0,1,2,3,4}
.
1.20.8 [2018.07.03]
 Add instances of the
Field
classes fromlens
.  Add
Epsilon
instance forComplex
.  Use specialized implementations of the
null
andlength
methods inFoldable
instances.  Add
Hashable1
instances for data types inlinear
. Also add aHashable
instance forV
.  Fix a bug in which
Quaternion
s were incorrectly exponentiated.
1.20.7
 Support
semigroupoids5.2.1
anddoctest0.12
1.20.6
 Revamp
Setup.hs
to usecabaldoctest
. This makes it build withCabal2.0
, and makes thedoctest
s work withcabal newbuild
and sandboxes.  Make
(1 / x)
andrecip x
agree in theFractional
instance forQuaternion
 Use newtype instances for
Point
vectors inLinear.Affine
 Enable
PolyKinds
inLinear.Trace
. Also enablePolyKinds
when GHC 7.6 or later is used (previously, it was GHC 7.8 or later).  Fix a segfault arising from the
MVector
instance forV
 Add
Finite
class for conversion betweenV
and fixedsize vector types
1.20.5
 GHC 8 compatibility
 Fixed the
perspective
calculation.
1.20.4
 Compatibility with
baseorphans
0.5
1.20.3
 Support
vector
0.11.0.0.  Support
cereal
0.5  You can now unboxed vectors of
V n
vectors.
1.20.2
 Modified the
doctest
machinery to work withstack
and builds to nonstandard locations.  Removed the local
.ghci
file.  Various numerical stability improvements were made to the quaternion and projection functions.
1.20.1
 Fixed doctests broken by the previous change.
 Unboxed vector instances for various linear data types now use unpacked integers even on older GHCs.
1.20
inv22
,inv33
andinv44
no longer attempt an epsilon check. They no longer return aMaybe
result as a consequence. You should filter for the 0 determinant case yourself.
1.19.1.3
vector
0.11.0.0 support
1.19.1.2
 Fix GHC 7.4.
1.19.1.1
 Proper
reflection
2 support
1.19.1
reflection
2 support
1.19
 Change the Ixed instance for
Linear.V
to useInt
as the index type. This makesV n
a lot easier to use.
1.18.3
 Compile warningfree on GHC 7.10.
1.18.2
 Added
NFData
instance forPoint
1.18.1
 Added an
ftemplatehaskell
option to allow disablingtemplatehaskell
support. This is an unsupported configuration but may be useful for expert users in sandbox configurations.  Added lenses for extracting corner various submatrices e.g.
_m22
,_m33
1.18.0.2
 Fixed builds on even older GHCs.
1.18.0.1
 Fixed the test suite.
 Fixed builds on older GHCs.
1.18
 Consolidated
eye2
..eye4
into a singleidentity
combinator.  Fixed the
Data
instanceV n a
for GHC 7.10RC3.
1.17.1.1
filepath
1.4 support
1.17.1
 Added support for
Data.Functor.Classes
fromtransformers
0.5 viatransformerscompat
.  Added missing support for
binary
,bytes
andcereal
forPoint
1.17
 Better support for
binary
. Added support forbytes
andcereal
1.16.4
ortho
andinverseOrtho
now only require aFractional
constraint. Added missing
Floating
instances.
1.16.3
 Improve the performance of
fromQuaternion
,mkTransformation
,mkTransformationMat
,basisFor
,scaled
by using implementations that inline well for functions that were previously reference implementations.
1.16.2
 Added
NFData
instances for the various vector types.  Added
!!/
operator for matrix division by scalar.
1.16.1
 Added
Trace
instance forV1
.
1.16
 Renamed
kronecker
toscaled
.
1.15.5
 Added
Metric
instances for[]
,ZipList
,Maybe
 Added
det44
andinv44
toLinear.Matrix
 Added
Data
instance forPoint
1.15.4
 Added Typeable and Data instances for V
1.15.3
 Added missing
FunctorWithIndex
,FoldableWithIndex
andTraversableWithIndex Int (V n)
instances forV
1.15.2
 Added
frustum
, analogous to the oldglFrustum
call.  Added
inverseInfinitePerspective
,inverseOrtho
,inverseFrustum
.
1.15.1
 Added
inversePerspective
. It is much more accurate to compute it directly than to compute an inverse.
1.15.0.1
 Fixed build failures caused by
Linear
reexporting the old name.
1.15
 Renamed
Linear.Perspective
toLinear.Projection
.  Fixed a build issue with GHC HEAD.
1.14.0.1
 Fixed test failures caused by 1.14
1.14
 Moved
Coincides
toLinear.Plucker.Coincides
. The constructorsLine
andRay
oft collided with user code.
1.13
 Switched ‘ortho’ to follow the OpenGL handedness.
1.12.1
 Added “swizzle” lenses e.g.
_yzx
, which are useful for working with libraries likegl
.
1.12
 Added ‘transpose’
 Added missing ‘Mxy’ matrices up to 4 dimensions – they were commonly reimplemented by users.
1.11.3
 Fixed an issue with
UndecidableInstances
on GHC 7.6.3
1.11.2
 Added
Linear.Perspective
.
1.11.1
 Added
_Point
,relative
and a few instances forPoint
.
1.11
 Changed the ‘representation’ of
V n
fromE (V n)
, which was hard to use, toInt
, which is a bit too permissive, but is easy to use.
1.10.1
 Added
Linear.V2.angle
.
1.10
 Added
Hashable
instances.
1.9.1
 Added a role annotation to
V n a
to prevent users from using GHC 7.8’sCoercible
machinery to violate invariants.
1.9.0.1
 Fixed a broken build
1.9
 Added
MonadZip
instances.  Added
MonadFix
instances.  Added
Control.Lens.Each.Each
instances
1.8.1
 Bugfixed
slerp
1.8
 Added missing
Unbox
instances for working with unboxed vectors oflinear
data types.
1.7
 Fixed
axisAngle
unit
now has a rank 1 type.
1.5
lens
4 compatibility
1.4
 Renamed
incore
tocolumn
and added an example.
1.3.1.1
 Build bugfix
1.3.1
 Better implementations of
basis
andbasisFor
.  Derived Generic instances.
1.2
 Improved matrix multiplication to properly support the sparse/sparse case.
1.1.4
 Marked modules
Trustworthy
as necessary.
1.1.2
 Dependency bump for
reflection
compatibility
1.1.1
 Fixed an infinite loop in the default definition of
liftI2
.
1.1
 Added
Additive
instances for[]
,Maybe
andVector
.
1.0
 Strict vectors
 Exported
mkTransformationMat
 Bumped dependency bounds
0.9.1 [bug fix]
 Exported
Linear.V0
!
0.9
 Added sparse vector support.
0.8
 Added
Linear.V0
0.7
 Added
Linear.Instances
 More documentation
0.6
 Removed the direct dependency on
lens
.  Added
Linear.Core
to cover vector spaces as corepresentable functors.
0.5
 Added
Ix
instances forV2
,V3
, andV4
0.4.2.2
 Removed the upper bound on
distributive
0.2
 Initial hackage release