vector-space-0.4: Vector & affine spaces, linear maps, and derivatives (requires ghc 6.9)




Vector spaces. Fundep version. GHC-6.9 isn't quite up to the nicer version in Data.VectorSpace, which uses associated types.



class AdditiveGroup v => VectorSpace v s | v -> s whereSource

Vector space v over a scalar field s. Extends AdditiveGroup with scalar multiplication.


(*^) :: s -> v -> vSource

Scale a vector


VectorSpace Double Double 
VectorSpace Float Float 
(RealFloat v, VectorSpace v s) => VectorSpace (Complex v) s 
VectorSpace v s => VectorSpace (a -> v) s 
(VectorSpace u s, VectorSpace v s) => VectorSpace (u, v) s 
(HasTrie a, VectorSpace v s) => VectorSpace (:->: a v) s 
(HasBasis a s, HasTrie (Basis a), VectorSpace u s, VectorSpace s s) => VectorSpace (:> a u) (:> a s) 
(VectorSpace u s, VectorSpace v s, VectorSpace w s) => VectorSpace (u, v, w) s 

(^/) :: (Fractional s, VectorSpace v s) => v -> s -> vSource

Vector divided by scalar

(^*) :: VectorSpace v s => v -> s -> vSource

Vector multiplied by scalar

class VectorSpace v s => InnerSpace v s whereSource

Adds inner (dot) products.


(<.>) :: v -> v -> sSource

Inner/dot product

lerp :: (VectorSpace v s, Num s) => v -> v -> s -> vSource

Linear interpolation between a (when t==0) and b (when t==1).

magnitudeSq :: InnerSpace v s => v -> sSource

Square of the length of a vector. Sometimes useful for efficiency. See also magnitude.

magnitude :: (InnerSpace v s, Floating s) => v -> sSource

Length of a vector. See also magnitudeSq.

normalized :: (InnerSpace v s, Floating s) => v -> vSource

Vector in same direction as given one but with length of one. If given the zero vector, then return it.