linear-1.9.0.1: Linear Algebra

Portability portable provisional Edward Kmett Trustworthy

Linear.Vector

Description

Operations on free vector spaces.

Synopsis

# Documentation

class Functor f => Additive f whereSource

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`.

Instances

newtype E t Source

Basis element

Constructors

 E Fieldsel :: forall x. Lens' (t x) x

Instances

 (Num r, TrivialConjugate r) => Coalgebra r (E Quaternion) Num r => Coalgebra r (E Complex) Num r => Coalgebra r (E V4) Num r => Coalgebra r (E V3) Num r => Coalgebra r (E V2) Num r => Coalgebra r (E V1) Num r => Coalgebra r (E V0) (Num r, TrivialConjugate r) => Algebra r (E Quaternion) Num r => Algebra r (E Complex) Num r => Algebra r (E V1) Num r => Algebra r (E V0) FunctorWithIndex (E V0) V0 FunctorWithIndex (E V1) V1 FunctorWithIndex (E V2) V2 FunctorWithIndex (E V3) V3 FunctorWithIndex (E V4) V4 FunctorWithIndex (E Plucker) Plucker FunctorWithIndex (E Quaternion) Quaternion FoldableWithIndex (E V0) V0 FoldableWithIndex (E V1) V1 FoldableWithIndex (E V2) V2 FoldableWithIndex (E V3) V3 FoldableWithIndex (E V4) V4 FoldableWithIndex (E Plucker) Plucker FoldableWithIndex (E Quaternion) Quaternion TraversableWithIndex (E V0) V0 TraversableWithIndex (E V1) V1 TraversableWithIndex (E V2) V2 TraversableWithIndex (E V3) V3 TraversableWithIndex (E V4) V4 TraversableWithIndex (E Plucker) Plucker TraversableWithIndex (E Quaternion) Quaternion

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
```