linear
Linear Algebra
http://github.com/ekmett/linear/
LTS Haskell 22.42: | 1.22@rev:3 |
Stackage Nightly 2024-11-22: | 1.23@rev:1 |
Latest on Hackage: | 1.23@rev:1 |
BSD-3-Clause licensed by Edward A. Kmett
Maintained by Edward A. Kmett
This version can be pinned in stack with:
linear-1.23@sha256:d1b1a382b6b7e43cf638466d8f5e95915e35def41e577762229135d9e54054dd,4357
Module documentation for 1.23
Depends on 23 packages(full list with versions):
Used by 14 packages in nightly-2024-10-01(full list with versions):
Changes
1.23 [2024.04.15]
- The direction of interpolation of
lerp
has been reversed; nowlerp 0 a b == a
andlerp 1 a b == b
. This bringslerp
in line not only with its implementation in other languages and frameworks, but also withslerp
in this package.
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
vector-0.13.*
.
1.21.9 [2022.05.18]
- Allow building with
transformers-0.6.*
.
1.21.8 [2021.11.15]
- Allow building with
hashable-1.4.*
. - Drop support for pre-8.0 versions of GHC.
1.21.7 [2021.09.20]
- Fix a build error when using
random-1.2.1
or later.
1.21.6 [2021.07.05]
- Fix a build error when configured with
-template-haskell
.
1.21.5 [2021.02.18]
- Allow building with
lens-5.*
.
1.21.4 [2021.01.29]
- Allow building with
vector-0.12.2
or later. - The build-type has been changed from
Custom
toSimple
. To achieve this, thedoctests
test suite has been removed in favor of usingcabal-docspec
to run the doctests.
1.21.3 [2020.10.03]
- Allow building with GHC 9.0.
1.21.2 [2020.09.30]
- Use
base-orphans-0.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
frombase-orphans
.
1.21.1 [2020.06.25]
- Allow building with
random-1.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 Gauss-Jordan 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 withbase-4.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
semigroupoids-5.2.1
anddoctest-0.12
1.20.6
- Revamp
Setup.hs
to usecabal-doctest
. This makes it build withCabal-2.0
, and makes thedoctest
s work withcabal new-build
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 fixed-size vector types
1.20.5
- GHC 8 compatibility
- Fixed the
perspective
calculation.
1.20.4
- Compatibility with
base-orphans
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 non-standard 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 warning-free on GHC 7.10.
1.18.2
- Added
NFData
instance forPoint
1.18.1
- Added an
-f-template-haskell
option to allow disablingtemplate-haskell
support. This is an unsupported configuration but may be useful for expert users in sandbox configurations. - Added lenses for extracting corner various sub-matrices 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.10-RC3.
1.17.1.1
filepath
1.4 support
1.17.1
- Added support for
Data.Functor.Classes
fromtransformers
0.5 viatransformers-compat
. - 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
re-exporting 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