vector-space-0.16: Vector & affine spaces, linear maps, and derivatives
Copyright (c) Conal Elliott 2008
License BSD3
Maintainer conal@conal.net
Stability experimental
Safe Haskell Safe-Inferred
Language Haskell98

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 Source #

Minimal complete definition

Nothing

Associated Types

type Basis v :: * Source #

Representation of the canonical basis for v

type Basis v = Basis (VRep v)

Methods

basisValue :: Basis v -> v Source #

Interpret basis rep as a vector

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

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

Extract coordinates

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

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

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

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

Instances

Instances details
HasBasis Double Source #
Instance details

Defined in Data.Basis

Associated Types

type Basis Double Source #

HasBasis Float Source #
Instance details

Defined in Data.Basis

Associated Types

type Basis Float Source #

HasBasis CFloat Source #
Instance details

Defined in Data.Basis

Associated Types

type Basis CFloat Source #

HasBasis CDouble Source #
Instance details

Defined in Data.Basis

Associated Types

type Basis CDouble Source #

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

Defined in Data.Basis

Associated Types

type Basis ( Ratio a) Source #

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

Defined in Data.Basis

Associated Types

type Basis (u, v) Source #

Methods

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

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

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

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

Defined in Data.Basis

Associated Types

type Basis ( Rec0 a s) Source #

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

Defined in Data.Basis

Associated Types

type Basis (u, v, w) Source #

Methods

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

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

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

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

Defined in Data.Basis

Associated Types

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

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

Defined in Data.Basis

Associated Types

type Basis ( M1 i c f p) Source #

Methods

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

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

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

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

Linear combination of vectors