Stability | experimental |
---|---|
Maintainer | [email protected], [email protected] |
Data.VectorSpace
Description
Vector spaces
This version uses associated types instead of fundeps and requires ghc-6.10 or later
- 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 => InnerSpace v where
- lerp :: (VectorSpace v, s ~ Scalar v, Num s) => v -> v -> s -> 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
Documentation
module Data.AdditiveGroup
class AdditiveGroup v => VectorSpace v whereSource
Vector space v
over a scalar field s
. Extends AdditiveGroup
with scalar multiplication.
Instances
VectorSpace Double | |
VectorSpace Float | |
(RealFloat v, VectorSpace v) => VectorSpace (Complex v) | |
VectorSpace v => VectorSpace (a -> v) | |
(s ~ Scalar u, s ~ Scalar v, VectorSpace u, VectorSpace v) => VectorSpace (u, v) | |
(HasTrie a, VectorSpace v) => VectorSpace (:->: a v) | |
(s ~ Scalar u, HasBasis a, HasTrie (Basis a), VectorSpace u) => VectorSpace (:> a u) | |
(s ~ Scalar u, s ~ Scalar v, s ~ Scalar w, VectorSpace u, VectorSpace v, VectorSpace w) => VectorSpace (u, v, w) |
(^/) :: (VectorSpace v, s ~ Scalar v, Fractional s) => v -> s -> vSource
Vector divided by scalar
(^*) :: (VectorSpace v, s ~ Scalar v) => v -> s -> vSource
Vector multiplied by scalar
class VectorSpace v => InnerSpace v whereSource
Adds inner (dot) products.
Instances
InnerSpace Double | |
InnerSpace Float | |
(s ~ Scalar v, RealFloat v, InnerSpace v, AdditiveGroup s) => InnerSpace (Complex v) | |
(s ~ Scalar u, s ~ Scalar v, InnerSpace u, InnerSpace v, AdditiveGroup (Scalar v)) => InnerSpace (u, v) | |
(s ~ Scalar u, s ~ Scalar s, InnerSpace u, InnerSpace s, HasBasis a, HasTrie (Basis a)) => InnerSpace (:> a u) | |
(s ~ Scalar u, s ~ Scalar v, s ~ Scalar w, InnerSpace u, InnerSpace v, InnerSpace w, AdditiveGroup s) => InnerSpace (u, v, w) |
lerp :: (VectorSpace v, s ~ Scalar v, Num s) => v -> v -> s -> vSource
Linear interpolation between a
(when t==0
) and b
(when t==1
).
magnitudeSq :: (InnerSpace v, s ~ Scalar v) => v -> sSource
Square of the length of a vector. Sometimes useful for efficiency.
See also magnitude
.
magnitude :: (InnerSpace v, s ~ Scalar v, Floating s) => v -> sSource
Length of a vector. See also magnitudeSq
.
normalized :: (InnerSpace v, s ~ Scalar v, Floating s) => v -> vSource
Vector in same direction as given one but with length of one. If given the zero vector, then return it.