Highly polymorphic vector space operations on sparse and free vector spaces.

Contact Information

Contributions and bug reports are welcome!

Please feel free to contact me through github or on the #haskell IRC channel on irc.freenode.net.

-Edward Kmett

Changes

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 for System.Random. We had an indirect dependency
through vector anyways.

Add “obvious” zipping Semigroup and Monoid instances to all the
representable vector spaces.

Add R1..R4 instances to Quaternion. _w is the scalar component so that
_x,_y,_z can be directional.

Add more solvers to Linear.Matrix, available with base-4.8 or later.

Add unangle function to Linear.V2.

1.20.9 [2019.05.02]

Derive Lift instances for Plucker, Quaternion, and V{0,1,2,3,4}.

1.20.8 [2018.07.03]

Add instances of the Field classes from lens.

Add Epsilon instance for Complex.

Use specialized implementations of the null and length methods in
Foldable instances.

Add Hashable1 instances for data types in linear. Also add a
Hashable instance for V.

Fix a bug in which Quaternions were incorrectly exponentiated.

1.20.7

Support semigroupoids-5.2.1 and doctest-0.12

1.20.6

Revamp Setup.hs to use cabal-doctest. This makes it build
with Cabal-2.0, and makes the doctests work with cabal new-build and
sandboxes.

Make (1 / x) and recip x agree in the Fractional instance for Quaternion

Use newtype instances for Point vectors in Linear.Affine

Enable PolyKinds in Linear.Trace. Also enable PolyKinds when GHC 7.6 or
later is used (previously, it was GHC 7.8 or later).

Fix a segfault arising from the MVector instance for V

Add Finite class for conversion between V 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 with stack 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 and inv44 no longer attempt an epsilon check. They no longer return a Maybe 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 use Int as the index type. This makes V n a lot easier to use.

1.18.3

Compile warning-free on GHC 7.10.

1.18.2

Added NFData instance for Point

1.18.1

Added an -f-template-haskell option to allow disabling template-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 single identity combinator.

Fixed the Data instance V n a for GHC 7.10-RC3.

1.17.1.1

filepath 1.4 support

1.17.1

Added support for Data.Functor.Classes from transformers 0.5 via transformers-compat.

Added missing support for binary, bytes and cereal for Point

1.17

Better support for binary. Added support for bytes and cereal

1.16.4

ortho and inverseOrtho now only require a Fractional 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 for V1.

1.16

Renamed kronecker to scaled.

1.15.5

Added Metric instances for [], ZipList, Maybe

Added det44 and inv44 to Linear.Matrix

Added Data instance for Point

1.15.4

Added Typeable and Data instances for V

1.15.3

Added missing FunctorWithIndex, FoldableWithIndex and TraversableWithIndex Int (V n) instances for V

1.15.2

Added frustum, analogous to the old glFrustum call.