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

Copyright(c) Conal Elliott 2008
LicenseBSD3
Maintainerconal@conal.net
Stabilityexperimental
Safe HaskellSafe
LanguageHaskell98

Data.Basis

Description

Basis of a vector space, as an associated type This module requires ghc-6.10 or later

Synopsis

Documentation

class VectorSpace v => HasBasis v where #

Minimal complete definition

Nothing

Associated Types

type Basis v :: * #

Representation of the canonical basis for v

Methods

basisValue :: Basis v -> v #

Interpret basis rep as a vector

basisValue :: (Generic v, HasBasis (VRep v), Basis (VRep v) ~ Basis v) => Basis v -> v #

Interpret basis rep as a vector

decompose :: v -> [(Basis v, Scalar v)] #

Extract coordinates

decompose :: (Generic v, HasBasis (VRep v), Scalar (VRep v) ~ Scalar v, Basis (VRep v) ~ Basis v) => v -> [(Basis v, Scalar v)] #

Extract coordinates

decompose' :: v -> Basis v -> Scalar v #

Experimental version. More elegant definitions, and friendly to infinite-dimensional vector spaces.

decompose' :: (Generic v, HasBasis (VRep v), Scalar (VRep v) ~ Scalar v, Basis (VRep v) ~ Basis v) => v -> Basis v -> Scalar v #

Experimental version. More elegant definitions, and friendly to infinite-dimensional vector spaces.

Instances
HasBasis Double # 
Instance details

Defined in Data.Basis

Associated Types

type Basis Double :: Type #

HasBasis Float # 
Instance details

Defined in Data.Basis

Associated Types

type Basis Float :: Type #

HasBasis CFloat # 
Instance details

Defined in Data.Basis

Associated Types

type Basis CFloat :: Type #

HasBasis CDouble # 
Instance details

Defined in Data.Basis

Associated Types

type Basis CDouble :: Type #

Integral a => HasBasis (Ratio a) # 
Instance details

Defined in Data.Basis

Associated Types

type Basis (Ratio a) :: Type #

Methods

basisValue :: Basis (Ratio a) -> Ratio a #

decompose :: Ratio a -> [(Basis (Ratio a), Scalar (Ratio a))] #

decompose' :: Ratio a -> Basis (Ratio a) -> Scalar (Ratio a) #

(HasBasis u, s ~ Scalar u, HasBasis v, s ~ Scalar v) => HasBasis (u, v) # 
Instance details

Defined in Data.Basis

Associated Types

type Basis (u, v) :: Type #

Methods

basisValue :: Basis (u, v) -> (u, v) #

decompose :: (u, v) -> [(Basis (u, v), Scalar (u, v))] #

decompose' :: (u, v) -> Basis (u, v) -> Scalar (u, v) #

HasBasis a => HasBasis (Rec0 a s) # 
Instance details

Defined in Data.Basis

Associated Types

type Basis (Rec0 a s) :: Type #

Methods

basisValue :: Basis (Rec0 a s) -> Rec0 a s #

decompose :: Rec0 a s -> [(Basis (Rec0 a s), Scalar (Rec0 a s))] #

decompose' :: Rec0 a s -> Basis (Rec0 a s) -> Scalar (Rec0 a s) #

(HasBasis u, s ~ Scalar u, HasBasis v, s ~ Scalar v, HasBasis w, s ~ Scalar w) => HasBasis (u, v, w) # 
Instance details

Defined in Data.Basis

Associated Types

type Basis (u, v, w) :: Type #

Methods

basisValue :: Basis (u, v, w) -> (u, v, w) #

decompose :: (u, v, w) -> [(Basis (u, v, w), Scalar (u, v, w))] #

decompose' :: (u, v, w) -> Basis (u, v, w) -> Scalar (u, v, w) #

(HasBasis (f p), HasBasis (g p), Scalar (f p) ~ Scalar (g p)) => HasBasis ((f :*: g) p) # 
Instance details

Defined in Data.Basis

Associated Types

type Basis ((f :*: g) p) :: Type #

Methods

basisValue :: Basis ((f :*: g) p) -> (f :*: g) p #

decompose :: (f :*: g) p -> [(Basis ((f :*: g) p), Scalar ((f :*: g) p))] #

decompose' :: (f :*: g) p -> Basis ((f :*: g) p) -> Scalar ((f :*: g) p) #

HasBasis (f p) => HasBasis (M1 i c f p) # 
Instance details

Defined in Data.Basis

Associated Types

type Basis (M1 i c f p) :: Type #

Methods

basisValue :: Basis (M1 i c f p) -> M1 i c f p #

decompose :: M1 i c f p -> [(Basis (M1 i c f p), Scalar (M1 i c f p))] #

decompose' :: M1 i c f p -> Basis (M1 i c f p) -> Scalar (M1 i c f p) #

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

Linear combination of vectors

recompose :: HasBasis v => [(Basis v, Scalar v)] -> v #