linear-0.7: Linear Algebra

Portability portable provisional Edward Kmett None

Linear.Vector

Description

Operations on free vector spaces.

Synopsis

# Documentation

class Bind 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.

Instances

 Additive Complex Additive IntMap Additive V2 Additive V3 Additive V4 Additive Plucker Additive Quaternion Bind ((->) b) => Additive ((->) b) (Bind (Map k), Ord k) => Additive (Map k) (Bind (HashMap k), Eq k, Hashable k) => Additive (HashMap k)

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.

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, Enum a, Num a) => t a -> [t a]Source

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