Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
This module provides matrices with indices. Matrices are constructed using smatrix and svec operations, example:
let m = smatrix (*) (svec3 1 2 3) (svec4 5 4 3 2) :: (ThreeD :&: FourD) Int == 5 4 3 2 10 8 6 4 15 12 9 6
indexing occurs with the (#)
operator, for example, m # (1,0) == 10
.
The number after svec is the number of elements in the dimension along row or column. Indices start from zero. The binary operation is applied to each pair of elements to construct the matrix element.
Matrices can also be constructed using Matrix
constructor, with
indices as input, e.g.:
identity :: (ThreeD :&: ThreeD) Integer
identity = Matrix $ \i j -> if i == j then 1 else 0
Note that index types are specifically restricted to be small types, since the Universe type class operations are often used to enumerate all elements of the type. This is enforced in show operations, which only show ten elements per dimension. For convenience, pre-defined index types, OneD, TwoD, ThreeD, FourD, FiveD are defined, for up to 5 dimensional matrices.
Synopsis
- type (:&:) row col elem = (row -> elem) :-> (col -> elem)
- type Matrix3S row col dep elem = (row -> dep -> elem) :-> (col :&: dep) elem
- type Matrix4S row col dep tim elem = (row -> (dep :&: tim) elem) :-> Matrix3S col dep tim elem
- type MatrixA arr row col elem = arr row elem :-> arr col elem
- type SMatrix1 elem = (OneD :&: OneD) elem
- type SMatrix2 elem = (TwoD :&: TwoD) elem
- type SMatrix3 elem = (ThreeD :&: ThreeD) elem
- type SMatrix4 elem = (FourD :&: FourD) elem
- type InfMatrix elem = (Integer :&: Integer) elem
- type RatioMatrix elem = (Rational :&: Rational) elem
- mapDimensions :: (Universe a, Universe b, Integral a, ConjugateSymmetric c, Num c) => ((->) a :~> f) -> ((->) b :~> g) -> (a :&: b) c -> (f :*: g) c
- simpleMatrix :: (Integral a, Universe b, Universe a, ConjugateSymmetric c, Num c, Functor m, Functor n) => (a :&: b) c -> m a -> n b -> (m :*: n) c
- index_delta :: (Eq ind, Num a) => ind -> a -> (ind -> a) -> ind -> a
- partial_derivate_ind :: (Integral ind, Universe ind, Eq ind, ConjugateSymmetric a, Closed a, Infinitesimal Stream a) => ind -> Dual (ind -> a) -> Dual (ind -> a)
- partial_derivate_list :: (Universe a, Eq a, Integral a, ConjugateSymmetric b, Closed b, Infinitesimal Stream b) => [Dual (a -> b) -> Dual (a -> b)]
- divergence_index :: (ConjugateSymmetric b, Closed b, Infinitesimal Stream b, Integral ind, Eq ind, Universe a, Universe ind) => ((ind -> b) :-> (a -> b)) -> Dual (ind -> b)
- grad_index :: (Scalar (ind -> a) ~ a, Integral ind, Universe ind, ConjugateSymmetric a, Closed a, Infinitesimal Stream a, Eq ind) => Dual (ind -> a) -> (ind -> a) :-> (ind -> a)
- laplace_index :: (ConjugateSymmetric a, Closed a, Infinitesimal Stream a, Integral ind, Eq ind, Universe ind) => Dual (ind -> a) -> Dual (ind -> a)
- set_index :: Eq ind => ind -> s -> (ind -> s) -> ind -> s
- update_row_index :: Eq ind => g a -> ind -> ((->) ind :*: g) a -> ((->) ind :*: g) a
- update_column_index :: (Applicative f, Eq ind) => f a -> ind -> (f :*: (->) ind) a -> (f :*: (->) ind) a
- sumS :: (Num b, Universe a) => (a -> b) -> b
- productS :: (Num b, Universe a) => (a -> b) -> b
- cov_index :: (Integral a, Universe a, Num (Scalar a), ConjugateSymmetric (Scalar a)) => a -> Dual (a -> Scalar a)
- kronecker_delta :: (Eq a, Num b) => a -> a -> b
- (%***%) :: (Integral row, Integral mid, Universe row, Universe col, Universe mid, SupportsMatrixMultiplication ((->) row) ((->) col) ((->) mid) a) => (row :&: mid) a -> (mid :&: col) a -> (row :&: col) a
- class CoFactorDimension dim where
- cofactorDim :: (Num a, ConjugateSymmetric a) => dim -> (dim :&: dim) a -> a
- leviCivita2S :: Num a => ((->) TwoD :*: (->) TwoD) a
- leviCivita3S :: ((FUN 'Many ThreeD :: Type -> Type) :*: ((FUN 'Many ThreeD :: Type -> Type) :*: (FUN 'Many ThreeD :: Type -> Type))) Integer
- leviCivita4S :: ((FUN 'Many FourD :: Type -> Type) :*: ((FUN 'Many FourD :: Type -> Type) :*: ((FUN 'Many FourD :: Type -> Type) :*: (FUN 'Many FourD :: Type -> Type)))) Integer
- leviCivitaS :: (Num b, Enum a, Universe a) => (a -> b) -> b
- leviCivita :: Num a => [a] -> a
- crossProductS :: (Integral a, Num b, Universe a) => (a -> b) -> (a -> b) -> a -> b
- crossProduct :: (Integral a, Monoid a) => [a] -> [a] -> [a]
- smatrix :: (Universe col, Integral row, Universe row, ConjugateSymmetric c, Num c) => (a -> b -> c) -> (row -> a) -> (col -> b) -> (row :&: col) c
- swapRows :: (Num a, ConjugateSymmetric a, Eq row, Integral row, Universe row, Universe col) => row -> row -> (row :&: col) a -> (row :&: col) a
- mulRow :: (Eq row, ConjugateSymmetric a, Num a, Integral row, Universe row, Universe col) => a -> row -> (row :&: col) a -> (row :&: col) a
- swapIndex :: Eq a => a -> a -> a -> a
- smatrixA :: (Arrow arr, Diagonalizable (arr row) c, Linearizable LinearMap (:*:) (arr row) (arr col) c, LinearTransform (arr row) (arr col) c) => arr (a, b) c -> arr row a -> arr col b -> MatrixA arr row col c
- smatrix3 :: (a -> b -> c -> d) -> (row -> a) -> (col -> b) -> (depth -> c) -> ((->) row :*: ((->) col :*: (->) depth)) d
- function_smatrix :: (Universe a, Universe b, Integral a, ConjugateSymmetric c, Num c) => (a -> b -> c) -> (a :&: b) c
- smatrix_inverse_image :: (ConjugateSymmetric a, Num a, Integral row, Integral row', Universe col', Universe row', Universe row, Universe col) => ((row, col) -> (row', col')) -> (row' :&: col') a -> (row :&: col) a
- inverse_image_smatrix :: (Integral row', Integral row, Universe row, ConjugateSymmetric a, Num a, Universe row', Universe col', Universe col) => (row -> row', col -> col') -> (row' :&: col') a -> (row :&: col) a
- sapply :: (Integral (a -> b), ConjugateSymmetric b, Num b, Eq a, Universe a, Universe b) => ((a -> b) :&: a) b
- (#) :: (ConjugateSymmetric a, Integral row, Num a, Universe row, Universe col) => (row :&: col) a -> (row, col) -> a
- indexA :: (ArrowApply arr, Diagonalizable (arr row) a, Linearizable LinearMap (:*:) (arr row) (arr col) a, LinearTransform (arr row) (arr col) a) => MatrixA arr row col a -> arr (row, col) a
- sdeterminant2 :: (ConjugateSymmetric a, Num a) => (TwoD :&: TwoD) a -> a
- cofactor4_11 :: (ConjugateSymmetric a, Num a) => (FourD :&: FourD) a -> a
- cofactor4_21 :: (ConjugateSymmetric a, Num a) => (FourD :&: FourD) a -> a
- cofactor4_31 :: (ConjugateSymmetric a, Num a) => (FourD :&: FourD) a -> a
- cofactor4_41 :: (ConjugateSymmetric a, Num a) => (FourD :&: FourD) a -> a
- cofactor3_11 :: (ConjugateSymmetric a, Num a) => (ThreeD :&: ThreeD) a -> a
- cofactor3_21 :: (ConjugateSymmetric a, Num a) => (ThreeD :&: ThreeD) a -> a
- cofactor3_31 :: (ConjugateSymmetric a, Num a) => (ThreeD :&: ThreeD) a -> a
- cofactor2_11 :: (ConjugateSymmetric a, Num a) => (TwoD :&: TwoD) a -> a
- cofactor2_21 :: (ConjugateSymmetric a, Num a) => (TwoD :&: TwoD) a -> a
- cofactorDim2 :: (ConjugateSymmetric a, Num a) => TwoD -> (TwoD :&: TwoD) a -> a
- cofactorDim3 :: (ConjugateSymmetric a, Num a) => ThreeD -> (ThreeD :&: ThreeD) a -> a
- cofactorDim4 :: (ConjugateSymmetric a, Num a) => FourD -> (FourD :&: FourD) a -> a
- sdeterminant :: (ConjugateSymmetric a, Num a, Integral dim, Universe dim, CoFactorDimension dim) => (dim :&: dim) a -> a
- sdeterminant3 :: (Num a, ConjugateSymmetric a) => (ThreeD :&: ThreeD) a -> a
- sdeterminant4 :: (Num a, ConjugateSymmetric a) => (FourD :&: FourD) a -> a
- svec_inf :: Stream a -> Integer -> a
- srotate_x :: (Floating a, ConjugateSymmetric a) => a -> SMatrix3 a
Documentation
type Matrix4S row col dep tim elem = (row -> (dep :&: tim) elem) :-> Matrix3S col dep tim elem Source #
mapDimensions :: (Universe a, Universe b, Integral a, ConjugateSymmetric c, Num c) => ((->) a :~> f) -> ((->) b :~> g) -> (a :&: b) c -> (f :*: g) c Source #
simpleMatrix :: (Integral a, Universe b, Universe a, ConjugateSymmetric c, Num c, Functor m, Functor n) => (a :&: b) c -> m a -> n b -> (m :*: n) c Source #
index_delta :: (Eq ind, Num a) => ind -> a -> (ind -> a) -> ind -> a Source #
partial_derivate_ind :: (Integral ind, Universe ind, Eq ind, ConjugateSymmetric a, Closed a, Infinitesimal Stream a) => ind -> Dual (ind -> a) -> Dual (ind -> a) Source #
partial_derivate_list :: (Universe a, Eq a, Integral a, ConjugateSymmetric b, Closed b, Infinitesimal Stream b) => [Dual (a -> b) -> Dual (a -> b)] Source #
divergence_index :: (ConjugateSymmetric b, Closed b, Infinitesimal Stream b, Integral ind, Eq ind, Universe a, Universe ind) => ((ind -> b) :-> (a -> b)) -> Dual (ind -> b) Source #
grad_index :: (Scalar (ind -> a) ~ a, Integral ind, Universe ind, ConjugateSymmetric a, Closed a, Infinitesimal Stream a, Eq ind) => Dual (ind -> a) -> (ind -> a) :-> (ind -> a) Source #
laplace_index :: (ConjugateSymmetric a, Closed a, Infinitesimal Stream a, Integral ind, Eq ind, Universe ind) => Dual (ind -> a) -> Dual (ind -> a) Source #
update_column_index :: (Applicative f, Eq ind) => f a -> ind -> (f :*: (->) ind) a -> (f :*: (->) ind) a Source #
cov_index :: (Integral a, Universe a, Num (Scalar a), ConjugateSymmetric (Scalar a)) => a -> Dual (a -> Scalar a) Source #
kronecker_delta :: (Eq a, Num b) => a -> a -> b Source #
(%***%) :: (Integral row, Integral mid, Universe row, Universe col, Universe mid, SupportsMatrixMultiplication ((->) row) ((->) col) ((->) mid) a) => (row :&: mid) a -> (mid :&: col) a -> (row :&: col) a Source #
class CoFactorDimension dim where Source #
cofactorDim :: (Num a, ConjugateSymmetric a) => dim -> (dim :&: dim) a -> a Source #
Instances
CoFactorDimension FourD Source # | |
Defined in Math.Matrix.Simple cofactorDim :: (Num a, ConjugateSymmetric a) => FourD -> (FourD :&: FourD) a -> a Source # | |
CoFactorDimension ThreeD Source # | |
Defined in Math.Matrix.Simple cofactorDim :: (Num a, ConjugateSymmetric a) => ThreeD -> (ThreeD :&: ThreeD) a -> a Source # | |
CoFactorDimension TwoD Source # | |
Defined in Math.Matrix.Simple cofactorDim :: (Num a, ConjugateSymmetric a) => TwoD -> (TwoD :&: TwoD) a -> a Source # |
leviCivita2S :: Num a => ((->) TwoD :*: (->) TwoD) a Source #
https://en.wikipedia.org/wiki/Levi-Civita_symbol Note indices are from 0..(n-1).
leviCivita3S :: ((FUN 'Many ThreeD :: Type -> Type) :*: ((FUN 'Many ThreeD :: Type -> Type) :*: (FUN 'Many ThreeD :: Type -> Type))) Integer Source #
https://en.wikipedia.org/wiki/Levi-Civita_symbol Note indices are from 0..(n-1).
leviCivita4S :: ((FUN 'Many FourD :: Type -> Type) :*: ((FUN 'Many FourD :: Type -> Type) :*: ((FUN 'Many FourD :: Type -> Type) :*: (FUN 'Many FourD :: Type -> Type)))) Integer Source #
https://en.wikipedia.org/wiki/Levi-Civita_symbol Note indices are from 0..(n-1).
leviCivita :: Num a => [a] -> a Source #
https://en.wikipedia.org/wiki/Levi-Civita_symbol Note indices are from 0..(n-1).
crossProduct :: (Integral a, Monoid a) => [a] -> [a] -> [a] Source #
smatrix :: (Universe col, Integral row, Universe row, ConjugateSymmetric c, Num c) => (a -> b -> c) -> (row -> a) -> (col -> b) -> (row :&: col) c Source #
swapRows :: (Num a, ConjugateSymmetric a, Eq row, Integral row, Universe row, Universe col) => row -> row -> (row :&: col) a -> (row :&: col) a Source #
mulRow :: (Eq row, ConjugateSymmetric a, Num a, Integral row, Universe row, Universe col) => a -> row -> (row :&: col) a -> (row :&: col) a Source #
smatrixA :: (Arrow arr, Diagonalizable (arr row) c, Linearizable LinearMap (:*:) (arr row) (arr col) c, LinearTransform (arr row) (arr col) c) => arr (a, b) c -> arr row a -> arr col b -> MatrixA arr row col c Source #
smatrix3 :: (a -> b -> c -> d) -> (row -> a) -> (col -> b) -> (depth -> c) -> ((->) row :*: ((->) col :*: (->) depth)) d Source #
function_smatrix :: (Universe a, Universe b, Integral a, ConjugateSymmetric c, Num c) => (a -> b -> c) -> (a :&: b) c Source #
smatrix_inverse_image :: (ConjugateSymmetric a, Num a, Integral row, Integral row', Universe col', Universe row', Universe row, Universe col) => ((row, col) -> (row', col')) -> (row' :&: col') a -> (row :&: col) a Source #
inverse_image_smatrix :: (Integral row', Integral row, Universe row, ConjugateSymmetric a, Num a, Universe row', Universe col', Universe col) => (row -> row', col -> col') -> (row' :&: col') a -> (row :&: col) a Source #
sapply :: (Integral (a -> b), ConjugateSymmetric b, Num b, Eq a, Universe a, Universe b) => ((a -> b) :&: a) b Source #
(#) :: (ConjugateSymmetric a, Integral row, Num a, Universe row, Universe col) => (row :&: col) a -> (row, col) -> a Source #
indexA :: (ArrowApply arr, Diagonalizable (arr row) a, Linearizable LinearMap (:*:) (arr row) (arr col) a, LinearTransform (arr row) (arr col) a) => MatrixA arr row col a -> arr (row, col) a Source #
sdeterminant2 :: (ConjugateSymmetric a, Num a) => (TwoD :&: TwoD) a -> a Source #
cofactor4_11 :: (ConjugateSymmetric a, Num a) => (FourD :&: FourD) a -> a Source #
cofactor4_21 :: (ConjugateSymmetric a, Num a) => (FourD :&: FourD) a -> a Source #
cofactor4_31 :: (ConjugateSymmetric a, Num a) => (FourD :&: FourD) a -> a Source #
cofactor4_41 :: (ConjugateSymmetric a, Num a) => (FourD :&: FourD) a -> a Source #
cofactor3_11 :: (ConjugateSymmetric a, Num a) => (ThreeD :&: ThreeD) a -> a Source #
cofactor3_21 :: (ConjugateSymmetric a, Num a) => (ThreeD :&: ThreeD) a -> a Source #
cofactor3_31 :: (ConjugateSymmetric a, Num a) => (ThreeD :&: ThreeD) a -> a Source #
cofactor2_11 :: (ConjugateSymmetric a, Num a) => (TwoD :&: TwoD) a -> a Source #
cofactor2_21 :: (ConjugateSymmetric a, Num a) => (TwoD :&: TwoD) a -> a Source #
cofactorDim2 :: (ConjugateSymmetric a, Num a) => TwoD -> (TwoD :&: TwoD) a -> a Source #
cofactorDim3 :: (ConjugateSymmetric a, Num a) => ThreeD -> (ThreeD :&: ThreeD) a -> a Source #
cofactorDim4 :: (ConjugateSymmetric a, Num a) => FourD -> (FourD :&: FourD) a -> a Source #
sdeterminant :: (ConjugateSymmetric a, Num a, Integral dim, Universe dim, CoFactorDimension dim) => (dim :&: dim) a -> a Source #
sdeterminant3 :: (Num a, ConjugateSymmetric a) => (ThreeD :&: ThreeD) a -> a Source #
sdeterminant4 :: (Num a, ConjugateSymmetric a) => (FourD :&: FourD) a -> a Source #
Orphan instances
(Num a, Universe col) => LinearTransform Vector1 ((->) col) a Source # | |
(Num a, Universe col) => LinearTransform Vector2 ((->) col) a Source # | |
(Num a, Universe col) => LinearTransform Vector3 ((->) col) a Source # | |
(Universe col, Num a) => LinearTransform Vector4 ((->) col) a Source # | |
Num a => DecomposableVectorSpace (Vector1 a) ((->) OneD) Source # | |
Num a => DecomposableVectorSpace (Vector2 a) ((->) TwoD) Source # | |
Num a => DecomposableVectorSpace (Vector3 a) ((->) ThreeD) Source # | |
Num a => DecomposableVectorSpace (Vector4 a) ((->) FourD) Source # | |
Num a => DecomposableVectorSpace (Stream a) ((->) Integer) Source # | |
Num a => Num (FourD -> a) Source # | |
(+) :: (FourD -> a) -> (FourD -> a) -> FourD -> a # (-) :: (FourD -> a) -> (FourD -> a) -> FourD -> a # (*) :: (FourD -> a) -> (FourD -> a) -> FourD -> a # negate :: (FourD -> a) -> FourD -> a # abs :: (FourD -> a) -> FourD -> a # signum :: (FourD -> a) -> FourD -> a # fromInteger :: Integer -> FourD -> a # | |
Num a => Num (OneD -> a) Source # | |
Num a => Num (ThreeD -> a) Source # | |
(+) :: (ThreeD -> a) -> (ThreeD -> a) -> ThreeD -> a # (-) :: (ThreeD -> a) -> (ThreeD -> a) -> ThreeD -> a # (*) :: (ThreeD -> a) -> (ThreeD -> a) -> ThreeD -> a # negate :: (ThreeD -> a) -> ThreeD -> a # abs :: (ThreeD -> a) -> ThreeD -> a # signum :: (ThreeD -> a) -> ThreeD -> a # fromInteger :: Integer -> ThreeD -> a # | |
Num a => Num (TwoD -> a) Source # | |
(Floating b, Universe a) => NormedSpace (a -> b) Source # | |
(Integral a, Universe a, Num b, ConjugateSymmetric b) => Dualizable (a -> b) Dual Source # | |
(b ~ Scalar a, Scalar (a -> b) ~ b, Integral a, VectorSpace b, ConjugateSymmetric b, Closed b, Infinitesimal Stream b, Eq a, Universe a) => VectorDerivative (a -> b) Dual LinearMap Source # | |
(Integral col, Floating elem, Scalar (col -> elem) ~ elem, VectorSpace elem, Fractional (Scalar elem), Integral row, Universe row, Universe col, ConjugateSymmetric elem) => Num ((row :&: col) elem) Source # | |
(+) :: (row :&: col) elem -> (row :&: col) elem -> (row :&: col) elem # (-) :: (row :&: col) elem -> (row :&: col) elem -> (row :&: col) elem # (*) :: (row :&: col) elem -> (row :&: col) elem -> (row :&: col) elem # negate :: (row :&: col) elem -> (row :&: col) elem # abs :: (row :&: col) elem -> (row :&: col) elem # signum :: (row :&: col) elem -> (row :&: col) elem # fromInteger :: Integer -> (row :&: col) elem # | |
(Integral row, Universe row, SupportsMatrixMultiplication ((->) row) ((->) row) ((->) row) a) => LieAlgebra ((row :&: row) a) Source # | |
(VectorSpace a, Integral col, Integral row, Universe row, ConjugateSymmetric a, Universe col, Floating a, Integral row, Scalar (col -> a) ~ a) => NormedSpace ((row :&: col) a) Source # | |
Eq ind => UpdateableMatrixDimension ((->) ind) Source # | |
write_row :: Applicative h => h a -> ind -> (((->) ind :*: h) a -> ((->) ind :*: h) a) Source # write_column :: Applicative h => h a -> ind -> ((h :*: (->) ind) a -> (h :*: (->) ind) a) Source # | |
Comonad ((->) FiveD) Source # | |
Comonad ((->) FourD) Source # | |
Comonad ((->) SixD) Source # | |
Comonad ((->) ThreeD) Source # | |
Comonad ((->) TwoD) Source # | |
Universe a => PpShowF ((->) a) Source # | |
Universe a => PpShowVerticalF ((->) a) Source # | |
ppf_vertical :: PpShow a0 => (a -> a0) -> Doc Source # | |
(Num a, Eq dim, Integral dim) => Diagonalizable ((->) dim) a Source # | |
(Num a, Integral row) => Indexable ((->) row) a Source # | |
diagonal_projections :: row -> Index ((->) row) a Source # basis_vector :: Index ((->) row) a -> row -> a Source # index_project :: Index ((->) row) a -> (row -> a) -> a Source # indexable_indices :: row -> a Source # | |
(Eq dim, Num dim, Integral dim, Universe dim, CoFactorDimension dim, ConjugateSymmetric a, Num a) => Traceable ((->) dim) a Source # | |
trace_impl :: ((->) dim :*: (->) dim) a -> a Source # determinant_impl :: ((->) dim :*: (->) dim) a -> a Source # vector_dimension :: (dim -> a) -> a Source # | |
(Universe row, Num a) => LinearTransform ((->) row) Vector1 a Source # | |
(Universe row, Num a) => LinearTransform ((->) row) Vector2 a Source # | |
(Universe row, Num a) => LinearTransform ((->) row) Vector3 a Source # | |
(Universe row, Num a) => LinearTransform ((->) row) Vector4 a Source # | |
(Num a, Universe row, Universe col) => LinearTransform ((->) row) ((->) col) a Source # | |
(Integral col, Integral row, Universe row, Universe col, Num a, ConjugateSymmetric a) => InnerProductSpace (((->) row :*: (->) col) a) Source # | |
(Integral row, Integral col, Floating a, Universe row, Universe col, ConjugateSymmetric a) => NormedSpace (((->) row :*: (->) col) a) Source # | |
Num a => VectorSpace ((Vector1 :*: (->) col) a) Source # | |
vzero :: (Vector1 :*: (->) col) a Source # vnegate :: (Vector1 :*: (->) col) a -> (Vector1 :*: (->) col) a Source # (%+) :: (Vector1 :*: (->) col) a -> (Vector1 :*: (->) col) a -> (Vector1 :*: (->) col) a Source # (%*) :: Scalar ((Vector1 :*: (->) col) a) -> (Vector1 :*: (->) col) a -> (Vector1 :*: (->) col) a Source # | |
Num a => VectorSpace ((Vector2 :*: (->) col) a) Source # | |
vzero :: (Vector2 :*: (->) col) a Source # vnegate :: (Vector2 :*: (->) col) a -> (Vector2 :*: (->) col) a Source # (%+) :: (Vector2 :*: (->) col) a -> (Vector2 :*: (->) col) a -> (Vector2 :*: (->) col) a Source # (%*) :: Scalar ((Vector2 :*: (->) col) a) -> (Vector2 :*: (->) col) a -> (Vector2 :*: (->) col) a Source # | |
Num a => VectorSpace ((Vector3 :*: (->) col) a) Source # | |
vzero :: (Vector3 :*: (->) col) a Source # vnegate :: (Vector3 :*: (->) col) a -> (Vector3 :*: (->) col) a Source # (%+) :: (Vector3 :*: (->) col) a -> (Vector3 :*: (->) col) a -> (Vector3 :*: (->) col) a Source # (%*) :: Scalar ((Vector3 :*: (->) col) a) -> (Vector3 :*: (->) col) a -> (Vector3 :*: (->) col) a Source # | |
Num a => VectorSpace ((Vector4 :*: (->) col) a) Source # | |
vzero :: (Vector4 :*: (->) col) a Source # vnegate :: (Vector4 :*: (->) col) a -> (Vector4 :*: (->) col) a Source # (%+) :: (Vector4 :*: (->) col) a -> (Vector4 :*: (->) col) a -> (Vector4 :*: (->) col) a Source # (%*) :: Scalar ((Vector4 :*: (->) col) a) -> (Vector4 :*: (->) col) a -> (Vector4 :*: (->) col) a Source # | |
Num a => VectorSpace (((->) row :*: Vector1) a) Source # | |
vzero :: ((->) row :*: Vector1) a Source # vnegate :: ((->) row :*: Vector1) a -> ((->) row :*: Vector1) a Source # (%+) :: ((->) row :*: Vector1) a -> ((->) row :*: Vector1) a -> ((->) row :*: Vector1) a Source # (%*) :: Scalar (((->) row :*: Vector1) a) -> ((->) row :*: Vector1) a -> ((->) row :*: Vector1) a Source # | |
Num a => VectorSpace (((->) row :*: Vector2) a) Source # | |
vzero :: ((->) row :*: Vector2) a Source # vnegate :: ((->) row :*: Vector2) a -> ((->) row :*: Vector2) a Source # (%+) :: ((->) row :*: Vector2) a -> ((->) row :*: Vector2) a -> ((->) row :*: Vector2) a Source # (%*) :: Scalar (((->) row :*: Vector2) a) -> ((->) row :*: Vector2) a -> ((->) row :*: Vector2) a Source # | |
Num a => VectorSpace (((->) row :*: Vector3) a) Source # | |
vzero :: ((->) row :*: Vector3) a Source # vnegate :: ((->) row :*: Vector3) a -> ((->) row :*: Vector3) a Source # (%+) :: ((->) row :*: Vector3) a -> ((->) row :*: Vector3) a -> ((->) row :*: Vector3) a Source # (%*) :: Scalar (((->) row :*: Vector3) a) -> ((->) row :*: Vector3) a -> ((->) row :*: Vector3) a Source # | |
Num a => VectorSpace (((->) row :*: Vector4) a) Source # | |
vzero :: ((->) row :*: Vector4) a Source # vnegate :: ((->) row :*: Vector4) a -> ((->) row :*: Vector4) a Source # (%+) :: ((->) row :*: Vector4) a -> ((->) row :*: Vector4) a -> ((->) row :*: Vector4) a Source # (%*) :: Scalar (((->) row :*: Vector4) a) -> ((->) row :*: Vector4) a -> ((->) row :*: Vector4) a Source # | |
Num a => VectorSpace (((->) row :*: (->) col) a) Source # | |
vzero :: ((->) row :*: (->) col) a Source # vnegate :: ((->) row :*: (->) col) a -> ((->) row :*: (->) col) a Source # (%+) :: ((->) row :*: (->) col) a -> ((->) row :*: (->) col) a -> ((->) row :*: (->) col) a Source # (%*) :: Scalar (((->) row :*: (->) col) a) -> ((->) row :*: (->) col) a -> ((->) row :*: (->) col) a Source # |