cifl-math-library-1.1.1.0: Math libraries
Safe HaskellSafe
LanguageHaskell2010

Math.Matrix.Simple

Description

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

Documentation

type (:&:) row col elem = (row -> elem) :-> (col -> elem) Source #

type Matrix3S row col dep elem = (row -> dep -> elem) :-> (col :&: dep) elem Source #

type Matrix4S row col dep tim elem = (row -> (dep :&: tim) elem) :-> Matrix3S col dep tim elem Source #

type MatrixA arr row col elem = arr row elem :-> arr col elem Source #

type SMatrix1 elem = (OneD :&: OneD) elem Source #

type SMatrix2 elem = (TwoD :&: TwoD) elem Source #

type SMatrix3 elem = (ThreeD :&: ThreeD) elem Source #

type SMatrix4 elem = (FourD :&: FourD) elem Source #

type InfMatrix elem = (Integer :&: Integer) 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 #

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 #

set_index :: Eq ind => ind -> s -> (ind -> s) -> ind -> s Source #

update_row_index :: Eq ind => g a -> ind -> ((->) ind :*: g) a -> ((->) ind :*: g) a Source #

update_column_index :: (Applicative f, Eq ind) => f a -> ind -> (f :*: (->) ind) a -> (f :*: (->) ind) a Source #

sumS :: (Num b, Universe a) => (a -> b) -> b Source #

productS :: (Num b, Universe a) => (a -> b) -> 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 #

Methods

cofactorDim :: (Num a, ConjugateSymmetric a) => dim -> (dim :&: dim) a -> a Source #

Instances

Instances details
CoFactorDimension FourD Source # 
Instance details

Defined in Math.Matrix.Simple

Methods

cofactorDim :: (Num a, ConjugateSymmetric a) => FourD -> (FourD :&: FourD) a -> a Source #

CoFactorDimension ThreeD Source # 
Instance details

Defined in Math.Matrix.Simple

Methods

cofactorDim :: (Num a, ConjugateSymmetric a) => ThreeD -> (ThreeD :&: ThreeD) a -> a Source #

CoFactorDimension TwoD Source # 
Instance details

Defined in Math.Matrix.Simple

Methods

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).

leviCivita :: Num a => [a] -> a Source #

https://en.wikipedia.org/wiki/Levi-Civita_symbol Note indices are from 0..(n-1).

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 #

swapIndex :: Eq a => a -> a -> a -> 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 #

sdeterminant :: (ConjugateSymmetric a, Num a, Integral dim, Universe dim, CoFactorDimension dim) => (dim :&: dim) a -> a Source #

Orphan instances

(Num a, Universe col) => LinearTransform Vector1 ((->) col) a Source # 
Instance details

Methods

(<*>>) :: (col -> a) -> (Vector1 :*: (->) col) a -> Vector1 a Source #

(<<*>) :: (Vector1 :*: (->) col) a -> Vector1 a -> col -> a Source #

(Num a, Universe col) => LinearTransform Vector2 ((->) col) a Source # 
Instance details

Methods

(<*>>) :: (col -> a) -> (Vector2 :*: (->) col) a -> Vector2 a Source #

(<<*>) :: (Vector2 :*: (->) col) a -> Vector2 a -> col -> a Source #

(Num a, Universe col) => LinearTransform Vector3 ((->) col) a Source # 
Instance details

Methods

(<*>>) :: (col -> a) -> (Vector3 :*: (->) col) a -> Vector3 a Source #

(<<*>) :: (Vector3 :*: (->) col) a -> Vector3 a -> col -> a Source #

(Universe col, Num a) => LinearTransform Vector4 ((->) col) a Source # 
Instance details

Methods

(<*>>) :: (col -> a) -> (Vector4 :*: (->) col) a -> Vector4 a Source #

(<<*>) :: (Vector4 :*: (->) col) a -> Vector4 a -> col -> a Source #

Num a => DecomposableVectorSpace (Vector1 a) ((->) OneD) Source # 
Instance details

Methods

decompose :: (Scalar (Vector1 a) -> res) -> Vector1 a -> OneD -> res Source #

project :: Vector1 a -> OneD -> Scalar (Vector1 a) Source #

Num a => DecomposableVectorSpace (Vector2 a) ((->) TwoD) Source # 
Instance details

Methods

decompose :: (Scalar (Vector2 a) -> res) -> Vector2 a -> TwoD -> res Source #

project :: Vector2 a -> TwoD -> Scalar (Vector2 a) Source #

Num a => DecomposableVectorSpace (Vector3 a) ((->) ThreeD) Source # 
Instance details

Methods

decompose :: (Scalar (Vector3 a) -> res) -> Vector3 a -> ThreeD -> res Source #

project :: Vector3 a -> ThreeD -> Scalar (Vector3 a) Source #

Num a => DecomposableVectorSpace (Vector4 a) ((->) FourD) Source # 
Instance details

Methods

decompose :: (Scalar (Vector4 a) -> res) -> Vector4 a -> FourD -> res Source #

project :: Vector4 a -> FourD -> Scalar (Vector4 a) Source #

Num a => DecomposableVectorSpace (Stream a) ((->) Integer) Source # 
Instance details

Methods

decompose :: (Scalar (Stream a) -> res) -> Stream a -> Integer -> res Source #

project :: Stream a -> Integer -> Scalar (Stream a) Source #

Num a => Num (FourD -> a) Source # 
Instance details

Methods

(+) :: (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 # 
Instance details

Methods

(+) :: (OneD -> a) -> (OneD -> a) -> OneD -> a #

(-) :: (OneD -> a) -> (OneD -> a) -> OneD -> a #

(*) :: (OneD -> a) -> (OneD -> a) -> OneD -> a #

negate :: (OneD -> a) -> OneD -> a #

abs :: (OneD -> a) -> OneD -> a #

signum :: (OneD -> a) -> OneD -> a #

fromInteger :: Integer -> OneD -> a #

Num a => Num (ThreeD -> a) Source # 
Instance details

Methods

(+) :: (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 # 
Instance details

Methods

(+) :: (TwoD -> a) -> (TwoD -> a) -> TwoD -> a #

(-) :: (TwoD -> a) -> (TwoD -> a) -> TwoD -> a #

(*) :: (TwoD -> a) -> (TwoD -> a) -> TwoD -> a #

negate :: (TwoD -> a) -> TwoD -> a #

abs :: (TwoD -> a) -> TwoD -> a #

signum :: (TwoD -> a) -> TwoD -> a #

fromInteger :: Integer -> TwoD -> a #

(Floating b, Universe a) => NormedSpace (a -> b) Source # 
Instance details

Methods

norm :: (a -> b) -> Scalar (a -> b) Source #

norm_squared :: (a -> b) -> Scalar (a -> b) Source #

(Integral a, Universe a, Num b, ConjugateSymmetric b) => Dualizable (a -> b) Dual Source # 
Instance details

Methods

covector :: ((a -> b) -> Scalar (a -> b)) -> Dual (a -> b) Source #

bracket :: Dual (a -> b) -> (a -> b) -> Scalar (a -> b) 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 # 
Instance details

Methods

divergence :: LinearMap (a -> b) (a -> b) -> Dual (a -> b) Source #

grad :: Dual (a -> b) -> LinearMap (a -> b) (a -> b) Source #

directional_derivative :: (a -> b) -> Dual (a -> b) -> Dual (a -> b) Source #

laplace :: Dual (a -> b) -> Dual (a -> b) 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 # 
Instance details

Methods

(+) :: (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 # 
Instance details

Methods

(%<>%) :: (row :&: row) a -> (row :&: row) a -> (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 # 
Instance details

Methods

norm :: (row :&: col) a -> Scalar ((row :&: col) a) Source #

norm_squared :: (row :&: col) a -> Scalar ((row :&: col) a) Source #

Eq ind => UpdateableMatrixDimension ((->) ind) Source # 
Instance details

Methods

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 # 
Instance details

Methods

extract :: (FiveD -> a) -> a Source #

duplicate :: (FiveD -> a) -> FiveD -> (FiveD -> a) Source #

extend :: ((FiveD -> a) -> b) -> (FiveD -> a) -> FiveD -> b Source #

(=>>) :: (FiveD -> a) -> ((FiveD -> a) -> b) -> FiveD -> b Source #

(.>>) :: (FiveD -> a) -> b -> FiveD -> b Source #

Comonad ((->) FourD) Source # 
Instance details

Methods

extract :: (FourD -> a) -> a Source #

duplicate :: (FourD -> a) -> FourD -> (FourD -> a) Source #

extend :: ((FourD -> a) -> b) -> (FourD -> a) -> FourD -> b Source #

(=>>) :: (FourD -> a) -> ((FourD -> a) -> b) -> FourD -> b Source #

(.>>) :: (FourD -> a) -> b -> FourD -> b Source #

Comonad ((->) SixD) Source # 
Instance details

Methods

extract :: (SixD -> a) -> a Source #

duplicate :: (SixD -> a) -> SixD -> (SixD -> a) Source #

extend :: ((SixD -> a) -> b) -> (SixD -> a) -> SixD -> b Source #

(=>>) :: (SixD -> a) -> ((SixD -> a) -> b) -> SixD -> b Source #

(.>>) :: (SixD -> a) -> b -> SixD -> b Source #

Comonad ((->) ThreeD) Source # 
Instance details

Methods

extract :: (ThreeD -> a) -> a Source #

duplicate :: (ThreeD -> a) -> ThreeD -> (ThreeD -> a) Source #

extend :: ((ThreeD -> a) -> b) -> (ThreeD -> a) -> ThreeD -> b Source #

(=>>) :: (ThreeD -> a) -> ((ThreeD -> a) -> b) -> ThreeD -> b Source #

(.>>) :: (ThreeD -> a) -> b -> ThreeD -> b Source #

Comonad ((->) TwoD) Source # 
Instance details

Methods

extract :: (TwoD -> a) -> a Source #

duplicate :: (TwoD -> a) -> TwoD -> (TwoD -> a) Source #

extend :: ((TwoD -> a) -> b) -> (TwoD -> a) -> TwoD -> b Source #

(=>>) :: (TwoD -> a) -> ((TwoD -> a) -> b) -> TwoD -> b Source #

(.>>) :: (TwoD -> a) -> b -> TwoD -> b Source #

Universe a => PpShowF ((->) a) Source # 
Instance details

Methods

ppf :: PpShow a0 => (a -> a0) -> Doc Source #

Universe a => PpShowVerticalF ((->) a) Source # 
Instance details

Methods

ppf_vertical :: PpShow a0 => (a -> a0) -> Doc Source #

(Num a, Eq dim, Integral dim) => Diagonalizable ((->) dim) a Source # 
Instance details

Methods

identity_impl :: (dim -> Integer) -> ((->) dim :*: (->) dim) a Source #

identity :: ((->) dim :*: (->) dim) a Source #

diagonal_impl :: ((->) dim :*: (->) dim) a -> dim -> a Source #

diagonal_matrix_impl :: (dim -> a) -> ((->) dim :*: (->) dim) a Source #

(Num a, Integral row) => Indexable ((->) row) a Source # 
Instance details

Methods

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 # 
Instance details

Methods

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 # 
Instance details

Methods

(<*>>) :: Vector1 a -> ((->) row :*: Vector1) a -> row -> a Source #

(<<*>) :: ((->) row :*: Vector1) a -> (row -> a) -> Vector1 a Source #

(Universe row, Num a) => LinearTransform ((->) row) Vector2 a Source # 
Instance details

Methods

(<*>>) :: Vector2 a -> ((->) row :*: Vector2) a -> row -> a Source #

(<<*>) :: ((->) row :*: Vector2) a -> (row -> a) -> Vector2 a Source #

(Universe row, Num a) => LinearTransform ((->) row) Vector3 a Source # 
Instance details

Methods

(<*>>) :: Vector3 a -> ((->) row :*: Vector3) a -> row -> a Source #

(<<*>) :: ((->) row :*: Vector3) a -> (row -> a) -> Vector3 a Source #

(Universe row, Num a) => LinearTransform ((->) row) Vector4 a Source # 
Instance details

Methods

(<*>>) :: Vector4 a -> ((->) row :*: Vector4) a -> row -> a Source #

(<<*>) :: ((->) row :*: Vector4) a -> (row -> a) -> Vector4 a Source #

(Num a, Universe row, Universe col) => LinearTransform ((->) row) ((->) col) a Source # 
Instance details

Methods

(<*>>) :: (col -> a) -> ((->) row :*: (->) col) a -> row -> a Source #

(<<*>) :: ((->) row :*: (->) col) a -> (row -> a) -> col -> a Source #

(Integral col, Integral row, Universe row, Universe col, Num a, ConjugateSymmetric a) => InnerProductSpace (((->) row :*: (->) col) a) Source #

https://en.wikipedia.org/wiki/Frobenius_inner_product

Instance details

Methods

(%.) :: ((->) row :*: (->) col) a -> ((->) row :*: (->) col) a -> Scalar (((->) row :*: (->) col) a) Source #

(Integral row, Integral col, Floating a, Universe row, Universe col, ConjugateSymmetric a) => NormedSpace (((->) row :*: (->) col) a) Source # 
Instance details

Methods

norm :: ((->) row :*: (->) col) a -> Scalar (((->) row :*: (->) col) a) Source #

norm_squared :: ((->) row :*: (->) col) a -> Scalar (((->) row :*: (->) col) a) Source #

Num a => VectorSpace ((Vector1 :*: (->) col) a) Source # 
Instance details

Associated Types

type Scalar ((Vector1 :*: (->) col) a) Source #

Methods

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 # 
Instance details

Associated Types

type Scalar ((Vector2 :*: (->) col) a) Source #

Methods

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 # 
Instance details

Associated Types

type Scalar ((Vector3 :*: (->) col) a) Source #

Methods

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 # 
Instance details

Associated Types

type Scalar ((Vector4 :*: (->) col) a) Source #

Methods

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 # 
Instance details

Associated Types

type Scalar (((->) row :*: Vector1) a) Source #

Methods

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 # 
Instance details

Associated Types

type Scalar (((->) row :*: Vector2) a) Source #

Methods

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 # 
Instance details

Associated Types

type Scalar (((->) row :*: Vector3) a) Source #

Methods

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 # 
Instance details

Associated Types

type Scalar (((->) row :*: Vector4) a) Source #

Methods

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 # 
Instance details

Associated Types

type Scalar (((->) row :*: (->) col) a) Source #

Methods

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 #