linear-1.10.1: Linear Algebra

Portabilityportable
Stabilityprovisional
MaintainerEdward Kmett <ekmett@gmail.com>
Safe HaskellTrustworthy

Linear.Vector

Description

Operations on free vector spaces.

Synopsis

Documentation

class Functor f => Additive f whereSource

A vector is an additive group with additional structure.

Methods

zero :: Num a => f aSource

The zero vector

(^+^) :: Num a => f a -> f a -> f aSource

Compute the sum of two vectors

>>> V2 1 2 ^+^ V2 3 4
V2 4 6

(^-^) :: Num a => f a -> f a -> f aSource

Compute the difference between two vectors

>>> V2 4 5 - V2 3 1
V2 1 4

lerp :: Num a => a -> f a -> f a -> f aSource

Linearly interpolate between two vectors.

liftU2 :: (a -> a -> a) -> f a -> f a -> f aSource

Apply a function to merge the 'non-zero' components of two vectors, unioning the rest of the values.

  • For a dense vector this is equivalent to liftA2.
  • For a sparse vector this is equivalent to unionWith.

liftI2 :: (a -> b -> c) -> f a -> f b -> f cSource

Apply a function to the components of two vectors.

  • For a dense vector this is equivalent to liftA2.
  • For a sparse vector this is equivalent to intersectionWith.

negated :: (Functor f, Num a) => f a -> f aSource

Compute the negation of a vector

>>> negated (V2 2 4)
V2 (-2) (-4)

(^*) :: (Functor f, Num a) => f a -> a -> f aSource

Compute the right scalar product

>>> V2 3 4 ^* 2
V2 6 8

(*^) :: (Functor f, Num a) => a -> f a -> f aSource

Compute the left scalar product

>>> 2 *^ V2 3 4
V2 6 8

(^/) :: (Functor f, Fractional a) => f a -> a -> f aSource

Compute division by a scalar on the right.

sumV :: (Foldable f, Additive v, Num a) => f (v a) -> v aSource

Sum over multiple vectors

>>> sumV [V2 1 1, V2 3 4]
V2 4 5

basis :: (Applicative t, Traversable t, Num a) => [t a]Source

Produce a default basis for a vector space. If the dimensionality of the vector space is not statically known, see basisFor.

basisFor :: (Traversable t, Num a) => t b -> [t a]Source

Produce a default basis for a vector space from which the argument is drawn.

kronecker :: (Traversable t, Num a) => t a -> t (t a)Source

Produce a diagonal matrix from a vector.

outer :: (Functor f, Functor g, Num a) => f a -> g a -> f (g a)Source

Outer (tensor) product of two vectors

unit :: (Applicative t, Num a) => ASetter' (t a) a -> t aSource

Create a unit vector.

>>> unit _x :: V2 Int
V2 1 0