feldspar-language-0.4.0.2: A functional embedded language for DSP and parallelism

Feldspar.Matrix

Contents

Description

Operations on matrices (doubly-nested parallel vectors). All operations in this module assume rectangular matrices.

Synopsis

Documentation

freezeMatrix :: Type a => Matrix a -> Data [[a]]Source

Converts a matrix to a core array.

unfreezeMatrix :: Type a => Data [[a]] -> Matrix aSource

Converts a core array to a matrix.

unfreezeMatrix' :: Type a => Length -> Length -> Data [[a]] -> Matrix aSource

Converts a core array to a matrix. The first length argument is the number of rows (outer vector), and the second argument is the number of columns (inner argument).

matrix :: Type a => [[a]] -> Matrix aSource

Constructs a matrix. The elements are stored in a core array.

indexedMat :: Data Length -> Data Length -> (Data Index -> Data Index -> Data a) -> Matrix aSource

Constructing a matrix from an index function.

indexedMat m n ixf:

  • m is the number of rows.
  • n is the number of columns.
  • ifx is a function mapping indexes to elements (first argument is row index; second argument is column index).

transpose :: Type a => Matrix a -> Matrix aSource

Transpose of a matrix

flatten :: Type a => Matrix a -> Vector (Data a)Source

Concatenates the rows of a matrix.

diagonal :: Type a => Matrix a -> Vector (Data a)Source

The diagonal vector of a square matrix. It happens to work if the number of rows is less than the number of columns, but not the other way around (this would require some overhead).

distributeL :: (a -> b -> c) -> a -> Vector b -> Vector cSource

distributeR :: (a -> b -> c) -> Vector a -> b -> Vector cSource

class Mul a b whereSource

Associated Types

type Prod a b Source

Methods

(***) :: a -> b -> Prod a bSource

General multiplication operator

Instances

Numeric a => Mul (Data a) (Matrix a) 
Numeric a => Mul (Data a) (DVector a) 
Numeric a => Mul (Data a) (Data a) 
Numeric a => Mul (DVector a) (Matrix a) 
Numeric a => Mul (DVector a) (DVector a) 
Numeric a => Mul (DVector a) (Data a) 
Numeric a => Mul (Matrix a) (Matrix a) 
Numeric a => Mul (Matrix a) (DVector a) 
Numeric a => Mul (Matrix a) (Data a) 

mulMat :: Numeric a => Matrix a -> Matrix a -> Matrix aSource

Matrix multiplication

class Syntactic a => ElemWise a whereSource

Associated Types

type Elem a Source

Methods

elemWise :: (Elem a -> Elem a -> Elem a) -> a -> a -> aSource

Operator for general element-wise multiplication

Instances

(.+) :: (ElemWise a, Num (Elem a)) => a -> a -> aSource

(.-) :: (ElemWise a, Num (Elem a)) => a -> a -> aSource

(.*) :: (ElemWise a, Num (Elem a)) => a -> a -> aSource

Wrapping for matrices