Safe Haskell | None |
---|---|
Language | Haskell2010 |
Vectors and Matrices with statically typed dimensions.
Synopsis
- type VectorClass = Vector
- doubleton :: Vector v x => x -> x -> Vector v 2 x
- range :: forall v n x. (Vector v x, KnownNat n, Fractional x) => x -> x -> Vector v n x
- breakEvery :: forall v n k a. (Vector v a, Vector v (Vector v k a), KnownNat n, KnownNat k) => Vector v (n * k) a -> Vector v n (Vector v k a)
- concat :: (KnownNat n, Vector v x, Vector v (Vector v n x)) => Vector v m (Vector v n x) -> Vector v (m * n) x
- newtype Matrix v (m :: Nat) (n :: Nat) a = Matrix {}
- nRows :: forall v m n a. KnownNat m => Matrix v m n a -> Int
- nColumns :: forall v m n a. KnownNat n => Matrix v m n a -> Int
- fromRows :: (Vector v x, Vector v (Vector v n x), KnownNat n) => Vector v m (Vector v n x) -> Matrix v m n x
- fromColumns :: (Vector v x, Vector v Int, Vector v (Vector v n x), Vector v (Vector v m x), KnownNat n, KnownNat m) => Vector v n (Vector v m x) -> Matrix v m n x
- toPair :: Vector v a => Vector v 2 a -> (a, a)
- toRows :: (Vector v a, Vector v (Vector v n a), KnownNat n, KnownNat m) => Matrix v m n a -> Vector v m (Vector v n a)
- toColumns :: (Vector v a, Vector v (Vector v m a), KnownNat m, KnownNat n, Vector v Int) => Matrix v m n a -> Vector v n (Vector v m a)
- columnVector :: Vector v n a -> Matrix v n 1 a
- rowVector :: Vector v n a -> Matrix v 1 n a
- transpose :: forall v m n a. (KnownNat m, KnownNat n, Vector v Int, Vector v a, Vector v (Vector v m a)) => Matrix v m n a -> Matrix v n m a
- dotProduct :: (Vector v x, Num x) => Vector v n x -> Vector v n x -> x
- weakDotProduct :: (Vector v x, Num x) => v x -> v x -> x
- outerProduct :: (KnownNat m, KnownNat n, Num x, Vector v Int, Vector v x, Vector v (Vector v n x), Vector v (Vector v m x), Vector v (Vector v 1 x)) => Vector v n x -> Vector v m x -> Matrix v n m x
- matrixVectorMultiply :: (KnownNat m, KnownNat n, Vector v x, Vector v (Vector v n x), Num x) => Matrix v m n x -> Vector v n x -> Vector v m x
- matrixMatrixMultiply :: (KnownNat m, KnownNat n, KnownNat o, Num x, Vector v Int, Vector v x, Vector v (Vector v m x), Vector v (Vector v n x), Vector v (Vector v o x)) => Matrix v m n x -> Matrix v n o x -> Matrix v m o x
Vector
type VectorClass = Vector Source #
Construction
doubleton :: Vector v x => x -> x -> Vector v 2 x Source #
Collect two values into a length 2 Vector
.
range :: forall v n x. (Vector v x, KnownNat n, Fractional x) => x -> x -> Vector v n x Source #
Uniform partition of an interval into a Vector
.
breakEvery :: forall v n k a. (Vector v a, Vector v (Vector v k a), KnownNat n, KnownNat k) => Vector v (n * k) a -> Vector v n (Vector v k a) Source #
Breaks a Vector
into a Vector of Vectors.
Deconstruction
concat :: (KnownNat n, Vector v x, Vector v (Vector v n x)) => Vector v m (Vector v n x) -> Vector v (m * n) x Source #
Create a Matrix
from a Vector
of Vector
s which represent the rows.
Matrix
newtype Matrix v (m :: Nat) (n :: Nat) a Source #
Matrices with static dimensions.
Instances
Eq (v a) => Eq (Matrix v m n a) Source # | |
(KnownNat m, KnownNat n, Numeric x, Floating x) => Floating (Matrix Vector m n x) Source # | |
Defined in Goal.Core.Vector.Generic exp :: Matrix Vector m n x -> Matrix Vector m n x # log :: Matrix Vector m n x -> Matrix Vector m n x # sqrt :: Matrix Vector m n x -> Matrix Vector m n x # (**) :: Matrix Vector m n x -> Matrix Vector m n x -> Matrix Vector m n x # logBase :: Matrix Vector m n x -> Matrix Vector m n x -> Matrix Vector m n x # sin :: Matrix Vector m n x -> Matrix Vector m n x # cos :: Matrix Vector m n x -> Matrix Vector m n x # tan :: Matrix Vector m n x -> Matrix Vector m n x # asin :: Matrix Vector m n x -> Matrix Vector m n x # acos :: Matrix Vector m n x -> Matrix Vector m n x # atan :: Matrix Vector m n x -> Matrix Vector m n x # sinh :: Matrix Vector m n x -> Matrix Vector m n x # cosh :: Matrix Vector m n x -> Matrix Vector m n x # tanh :: Matrix Vector m n x -> Matrix Vector m n x # asinh :: Matrix Vector m n x -> Matrix Vector m n x # acosh :: Matrix Vector m n x -> Matrix Vector m n x # atanh :: Matrix Vector m n x -> Matrix Vector m n x # log1p :: Matrix Vector m n x -> Matrix Vector m n x # expm1 :: Matrix Vector m n x -> Matrix Vector m n x # | |
(KnownNat m, KnownNat n, Numeric x, Fractional x) => Fractional (Matrix Vector m n x) Source # | |
(KnownNat m, KnownNat n, Numeric x, Num x) => Num (Matrix Vector m n x) Source # | |
Defined in Goal.Core.Vector.Generic (+) :: Matrix Vector m n x -> Matrix Vector m n x -> Matrix Vector m n x # (-) :: Matrix Vector m n x -> Matrix Vector m n x -> Matrix Vector m n x # (*) :: Matrix Vector m n x -> Matrix Vector m n x -> Matrix Vector m n x # negate :: Matrix Vector m n x -> Matrix Vector m n x # abs :: Matrix Vector m n x -> Matrix Vector m n x # signum :: Matrix Vector m n x -> Matrix Vector m n x # fromInteger :: Integer -> Matrix Vector m n x # | |
Show (v a) => Show (Matrix v m n a) Source # | |
(KnownNat m, KnownNat n, Storable x) => Storable (Matrix Vector m n x) Source # | |
Defined in Goal.Core.Vector.Generic sizeOf :: Matrix Vector m n x -> Int # alignment :: Matrix Vector m n x -> Int # peekElemOff :: Ptr (Matrix Vector m n x) -> Int -> IO (Matrix Vector m n x) # pokeElemOff :: Ptr (Matrix Vector m n x) -> Int -> Matrix Vector m n x -> IO () # peekByteOff :: Ptr b -> Int -> IO (Matrix Vector m n x) # pokeByteOff :: Ptr b -> Int -> Matrix Vector m n x -> IO () # peek :: Ptr (Matrix Vector m n x) -> IO (Matrix Vector m n x) # poke :: Ptr (Matrix Vector m n x) -> Matrix Vector m n x -> IO () # | |
NFData (v a) => NFData (Matrix v m n a) Source # | |
Defined in Goal.Core.Vector.Generic |
nRows :: forall v m n a. KnownNat m => Matrix v m n a -> Int Source #
The number of rows in the Matrix
.
nColumns :: forall v m n a. KnownNat n => Matrix v m n a -> Int Source #
The number of columns in the Matrix
.
Construction
fromRows :: (Vector v x, Vector v (Vector v n x), KnownNat n) => Vector v m (Vector v n x) -> Matrix v m n x Source #
Create a Matrix
from a Vector
of Vector
s which represent the rows.
fromColumns :: (Vector v x, Vector v Int, Vector v (Vector v n x), Vector v (Vector v m x), KnownNat n, KnownNat m) => Vector v n (Vector v m x) -> Matrix v m n x Source #
Create a Matrix
from a Vector
of Vector
s which represent the columns.
Deconstruction
toPair :: Vector v a => Vector v 2 a -> (a, a) Source #
Reshapes a length 2 Vector
into a pair of values.
toRows :: (Vector v a, Vector v (Vector v n a), KnownNat n, KnownNat m) => Matrix v m n a -> Vector v m (Vector v n a) Source #
Convert a Matrix
into a Vector
of Vector
s of rows.
toColumns :: (Vector v a, Vector v (Vector v m a), KnownNat m, KnownNat n, Vector v Int) => Matrix v m n a -> Vector v n (Vector v m a) Source #
Convert a Matrix
into a Vector
of Vector
s of columns.
Manipulation
columnVector :: Vector v n a -> Matrix v n 1 a Source #
Turn a Vector
into a single column Matrix
.
BLAS
transpose :: forall v m n a. (KnownNat m, KnownNat n, Vector v Int, Vector v a, Vector v (Vector v m a)) => Matrix v m n a -> Matrix v n m a Source #
Pure implementation of Matrix
transposition.
dotProduct :: (Vector v x, Num x) => Vector v n x -> Vector v n x -> x Source #
Pure implementation of the dot product.
weakDotProduct :: (Vector v x, Num x) => v x -> v x -> x Source #
Pure implementation of the dot product on standard vectors.
outerProduct :: (KnownNat m, KnownNat n, Num x, Vector v Int, Vector v x, Vector v (Vector v n x), Vector v (Vector v m x), Vector v (Vector v 1 x)) => Vector v n x -> Vector v m x -> Matrix v n m x Source #
Pure implementation of the outer product.