vector-space-0.10.4: Vector & affine spaces, linear maps, and derivatives

Copyright(c) Conal Elliott and Andy J Gill 2008
LicenseBSD3
Maintainerconal@conal.net, andygill@ku.edu
Stabilityexperimental
Safe HaskellSafe
LanguageHaskell98

Data.VectorSpace

Description

Vector spaces

This version uses associated types instead of fundeps and requires ghc-6.10 or later

Synopsis

Documentation

class AdditiveGroup v => VectorSpace v where #

Vector space v.

Minimal complete definition

(*^)

Associated Types

type Scalar v :: * #

Methods

(*^) :: Scalar v -> v -> v infixr 7 #

Scale a vector

Instances

VectorSpace Double # 

Associated Types

type Scalar Double :: * #

Methods

(*^) :: Scalar Double -> Double -> Double #

VectorSpace Float # 

Associated Types

type Scalar Float :: * #

Methods

(*^) :: Scalar Float -> Float -> Float #

VectorSpace Int # 

Associated Types

type Scalar Int :: * #

Methods

(*^) :: Scalar Int -> Int -> Int #

VectorSpace Integer # 

Associated Types

type Scalar Integer :: * #

VectorSpace CSChar # 

Associated Types

type Scalar CSChar :: * #

Methods

(*^) :: Scalar CSChar -> CSChar -> CSChar #

VectorSpace CShort # 

Associated Types

type Scalar CShort :: * #

Methods

(*^) :: Scalar CShort -> CShort -> CShort #

VectorSpace CInt # 

Associated Types

type Scalar CInt :: * #

Methods

(*^) :: Scalar CInt -> CInt -> CInt #

VectorSpace CLong # 

Associated Types

type Scalar CLong :: * #

Methods

(*^) :: Scalar CLong -> CLong -> CLong #

VectorSpace CLLong # 

Associated Types

type Scalar CLLong :: * #

Methods

(*^) :: Scalar CLLong -> CLLong -> CLLong #

VectorSpace CFloat # 

Associated Types

type Scalar CFloat :: * #

Methods

(*^) :: Scalar CFloat -> CFloat -> CFloat #

VectorSpace CDouble # 

Associated Types

type Scalar CDouble :: * #

VectorSpace CIntMax # 

Associated Types

type Scalar CIntMax :: * #

VectorSpace v => VectorSpace (Maybe v) # 

Associated Types

type Scalar (Maybe v) :: * #

Methods

(*^) :: Scalar (Maybe v) -> Maybe v -> Maybe v #

Integral a => VectorSpace (Ratio a) # 

Associated Types

type Scalar (Ratio a) :: * #

Methods

(*^) :: Scalar (Ratio a) -> Ratio a -> Ratio a #

(RealFloat v, VectorSpace v) => VectorSpace (Complex v) # 

Associated Types

type Scalar (Complex v) :: * #

Methods

(*^) :: Scalar (Complex v) -> Complex v -> Complex v #

VectorSpace v => VectorSpace (a -> v) # 

Associated Types

type Scalar (a -> v) :: * #

Methods

(*^) :: Scalar (a -> v) -> (a -> v) -> a -> v #

(VectorSpace u, (~) * s (Scalar u), VectorSpace v, (~) * s (Scalar v)) => VectorSpace (u, v) # 

Associated Types

type Scalar (u, v) :: * #

Methods

(*^) :: Scalar (u, v) -> (u, v) -> (u, v) #

(HasTrie a, VectorSpace v) => VectorSpace ((:->:) a v) # 

Associated Types

type Scalar ((:->:) a v) :: * #

Methods

(*^) :: Scalar (a :->: v) -> (a :->: v) -> a :->: v #

(HasTrie (Basis u), VectorSpace v) => VectorSpace ((:-*) u v) # 

Associated Types

type Scalar ((:-*) u v) :: * #

Methods

(*^) :: Scalar (u :-* v) -> (u :-* v) -> u :-* v #

(HasBasis a, HasTrie (Basis a), VectorSpace u) => VectorSpace ((:>) a u) # 

Associated Types

type Scalar ((:>) a u) :: * #

Methods

(*^) :: Scalar (a :> u) -> (a :> u) -> a :> u #

(VectorSpace u, (~) * s (Scalar u), VectorSpace v, (~) * s (Scalar v), VectorSpace w, (~) * s (Scalar w)) => VectorSpace (u, v, w) # 

Associated Types

type Scalar (u, v, w) :: * #

Methods

(*^) :: Scalar (u, v, w) -> (u, v, w) -> (u, v, w) #

(VectorSpace u, (~) * s (Scalar u), VectorSpace v, (~) * s (Scalar v), VectorSpace w, (~) * s (Scalar w), VectorSpace x, (~) * s (Scalar x)) => VectorSpace (u, v, w, x) # 

Associated Types

type Scalar (u, v, w, x) :: * #

Methods

(*^) :: Scalar (u, v, w, x) -> (u, v, w, x) -> (u, v, w, x) #

(^/) :: (VectorSpace v, s ~ Scalar v, Fractional s) => v -> s -> v infixr 7 #

Vector divided by scalar

(^*) :: (VectorSpace v, s ~ Scalar v) => v -> s -> v infixl 7 #

Vector multiplied by scalar

class (VectorSpace v, AdditiveGroup (Scalar v)) => InnerSpace v where #

Adds inner (dot) products.

Minimal complete definition

(<.>)

Methods

(<.>) :: v -> v -> Scalar v infixr 7 #

Inner/dot product

Instances

InnerSpace Double # 

Methods

(<.>) :: Double -> Double -> Scalar Double #

InnerSpace Float # 

Methods

(<.>) :: Float -> Float -> Scalar Float #

InnerSpace Int # 

Methods

(<.>) :: Int -> Int -> Scalar Int #

InnerSpace Integer # 
InnerSpace CSChar # 

Methods

(<.>) :: CSChar -> CSChar -> Scalar CSChar #

InnerSpace CShort # 

Methods

(<.>) :: CShort -> CShort -> Scalar CShort #

InnerSpace CInt # 

Methods

(<.>) :: CInt -> CInt -> Scalar CInt #

InnerSpace CLong # 

Methods

(<.>) :: CLong -> CLong -> Scalar CLong #

InnerSpace CLLong # 

Methods

(<.>) :: CLLong -> CLLong -> Scalar CLLong #

InnerSpace CFloat # 

Methods

(<.>) :: CFloat -> CFloat -> Scalar CFloat #

InnerSpace CDouble # 
InnerSpace CIntMax # 
InnerSpace a => InnerSpace (Maybe a) # 

Methods

(<.>) :: Maybe a -> Maybe a -> Scalar (Maybe a) #

Integral a => InnerSpace (Ratio a) # 

Methods

(<.>) :: Ratio a -> Ratio a -> Scalar (Ratio a) #

(RealFloat v, InnerSpace v) => InnerSpace (Complex v) # 

Methods

(<.>) :: Complex v -> Complex v -> Scalar (Complex v) #

InnerSpace v => InnerSpace (a -> v) # 

Methods

(<.>) :: (a -> v) -> (a -> v) -> Scalar (a -> v) #

(InnerSpace u, (~) * s (Scalar u), InnerSpace v, (~) * s (Scalar v)) => InnerSpace (u, v) # 

Methods

(<.>) :: (u, v) -> (u, v) -> Scalar (u, v) #

(InnerSpace u, (~) * s (Scalar u), AdditiveGroup s, HasBasis a, HasTrie (Basis a)) => InnerSpace ((:>) a u) # 

Methods

(<.>) :: (a :> u) -> (a :> u) -> Scalar (a :> u) #

(InnerSpace u, (~) * s (Scalar u), InnerSpace v, (~) * s (Scalar v), InnerSpace w, (~) * s (Scalar w)) => InnerSpace (u, v, w) # 

Methods

(<.>) :: (u, v, w) -> (u, v, w) -> Scalar (u, v, w) #

(InnerSpace u, (~) * s (Scalar u), InnerSpace v, (~) * s (Scalar v), InnerSpace w, (~) * s (Scalar w), InnerSpace x, (~) * s (Scalar x)) => InnerSpace (u, v, w, x) # 

Methods

(<.>) :: (u, v, w, x) -> (u, v, w, x) -> Scalar (u, v, w, x) #

lerp :: VectorSpace v => v -> v -> Scalar v -> v #

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

linearCombo :: VectorSpace v => [(v, Scalar v)] -> v #

Linear combination of vectors

magnitudeSq :: (InnerSpace v, s ~ Scalar v) => v -> s #

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

magnitude :: (InnerSpace v, s ~ Scalar v, Floating s) => v -> s #

Length of a vector. See also magnitudeSq.

normalized :: (InnerSpace v, s ~ Scalar v, Floating s) => v -> v #

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

project :: (InnerSpace v, s ~ Scalar v, Fractional s) => v -> v -> v #

project u v computes the projection of v onto u.