| Copyright | (c) Conal Elliott and Andy J Gill 2008 |
|---|---|
| License | BSD3 |
| Maintainer | conal@conal.net, andygill@ku.edu |
| Stability | experimental |
| Safe Haskell | Safe-Inferred |
| Language | Haskell2010 |
Data.VectorSpace
Description
Vector spaces
This version uses associated types instead of fundeps and requires ghc-6.10 or later
Synopsis
- module Data.AdditiveGroup
- class AdditiveGroup v => VectorSpace v where
- (^/) :: (VectorSpace v, s ~ Scalar v, Fractional s) => v -> s -> v
- (^*) :: (VectorSpace v, s ~ Scalar v) => v -> s -> v
- class (VectorSpace v, AdditiveGroup (Scalar v)) => InnerSpace v where
- lerp :: VectorSpace v => v -> v -> Scalar v -> v
- linearCombo :: VectorSpace v => [(v, Scalar v)] -> v
- magnitudeSq :: (InnerSpace v, s ~ Scalar v) => v -> s
- magnitude :: (InnerSpace v, s ~ Scalar v, Floating s) => v -> s
- normalized :: (InnerSpace v, s ~ Scalar v, Floating s) => v -> v
- project :: (InnerSpace v, s ~ Scalar v, Fractional s) => v -> v -> v
Documentation
module Data.AdditiveGroup
class AdditiveGroup v => VectorSpace v where Source #
Vector space v.
Minimal complete definition
Nothing
Instances
| VectorSpace CDouble Source # | |||||
Defined in Data.VectorSpace Associated Types
| |||||
| VectorSpace CFloat Source # | |||||
Defined in Data.VectorSpace Associated Types
| |||||
| VectorSpace CInt Source # | |||||
Defined in Data.VectorSpace Associated Types
| |||||
| VectorSpace CIntMax Source # | |||||
Defined in Data.VectorSpace Associated Types
| |||||
| VectorSpace CLLong Source # | |||||
Defined in Data.VectorSpace Associated Types
| |||||
| VectorSpace CLong Source # | |||||
Defined in Data.VectorSpace Associated Types
| |||||
| VectorSpace CSChar Source # | |||||
Defined in Data.VectorSpace Associated Types
| |||||
| VectorSpace CShort Source # | |||||
Defined in Data.VectorSpace Associated Types
| |||||
| VectorSpace Integer Source # | |||||
Defined in Data.VectorSpace Associated Types
| |||||
| VectorSpace Double Source # | |||||
Defined in Data.VectorSpace Associated Types
| |||||
| VectorSpace Float Source # | |||||
Defined in Data.VectorSpace Associated Types
| |||||
| VectorSpace Int Source # | |||||
Defined in Data.VectorSpace Associated Types
| |||||
| (RealFloat v, VectorSpace v) => VectorSpace (Complex v) Source # | |||||
Defined in Data.VectorSpace Associated Types
| |||||
| Integral a => VectorSpace (Ratio a) Source # | |||||
Defined in Data.VectorSpace Associated Types
| |||||
| VectorSpace v => VectorSpace (Maybe v) Source # | |||||
Defined in Data.VectorSpace Associated Types
| |||||
| (HasTrie a, VectorSpace v) => VectorSpace (a :->: v) Source # | |||||
Defined in Data.VectorSpace Associated Types
| |||||
| (HasTrie (Basis u), VectorSpace v) => VectorSpace (u :-* v) Source # | |||||
| (HasBasis a, HasTrie (Basis a), VectorSpace u) => VectorSpace (a :> u) Source # | |||||
| (VectorSpace u, s ~ Scalar u, VectorSpace v, s ~ Scalar v) => VectorSpace (u, v) Source # | |||||
Defined in Data.VectorSpace Associated Types
| |||||
| VectorSpace v => VectorSpace (a -> v) Source # | |||||
Defined in Data.VectorSpace Associated Types
| |||||
| VectorSpace a => VectorSpace (Rec0 a s) Source # | |||||
Defined in Data.VectorSpace Associated Types
| |||||
| (VectorSpace u, s ~ Scalar u, VectorSpace v, s ~ Scalar v, VectorSpace w, s ~ Scalar w) => VectorSpace (u, v, w) Source # | |||||
Defined in Data.VectorSpace Associated Types
| |||||
| (VectorSpace (f p), VectorSpace (g p), Scalar (f p) ~ Scalar (g p)) => VectorSpace ((f :*: g) p) Source # | |||||
Defined in Data.VectorSpace Associated Types
| |||||
| (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) Source # | |||||
Defined in Data.VectorSpace Associated Types
| |||||
| VectorSpace (f p) => VectorSpace (M1 i c f p) Source # | |||||
Defined in Data.VectorSpace Associated Types
| |||||
(^/) :: (VectorSpace v, s ~ Scalar v, Fractional s) => v -> s -> v infixr 7 Source #
Vector divided by scalar
(^*) :: (VectorSpace v, s ~ Scalar v) => v -> s -> v infixl 7 Source #
Vector multiplied by scalar
class (VectorSpace v, AdditiveGroup (Scalar v)) => InnerSpace v where Source #
Adds inner (dot) products.
Minimal complete definition
Nothing
Instances
lerp :: VectorSpace v => v -> v -> Scalar v -> v Source #
Linear interpolation between a (when t==0) and b (when t==1).
linearCombo :: VectorSpace v => [(v, Scalar v)] -> v Source #
Linear combination of vectors
magnitudeSq :: (InnerSpace v, s ~ Scalar v) => v -> s Source #
Square of the length of a vector. Sometimes useful for efficiency.
See also magnitude.
magnitude :: (InnerSpace v, s ~ Scalar v, Floating s) => v -> s Source #
Length of a vector. See also magnitudeSq.
normalized :: (InnerSpace v, s ~ Scalar v, Floating s) => v -> v Source #
Vector in same direction as given one but with length of one. Divides by zero for the zero vector.
project :: (InnerSpace v, s ~ Scalar v, Fractional s) => v -> v -> v Source #
project u v computes the projection of v onto u.