blas-0.7.6: Bindings to the BLAS library

Stabilityexperimental
MaintainerPatrick Perry <patperry@stanford.edu>

Data.Tensor.Class.MTensor

Contents

Description

Overloaded interface for mutable tensors. This modules includes tensors which can be read in a monad, ReadTensor, as well as tensors which can be modified in a monad, WriteTensor.

Synopsis

Read-only tensor type class

class (Shaped x i, Monad m) => ReadTensor x i e m | x -> i whereSource

Class for mutable read-only tensors.

Methods

getSize :: x n e -> m IntSource

Get the number of elements stored in the tensor.

unsafeReadElem :: x n e -> i -> m eSource

Get the value at the specified index, without doing any range-checking.

getIndices :: x n e -> m [i]Source

Returns a lazy list of the indices in the tensor. Because of the laziness, this function should be used with care. See also getIndices'.

getIndices' :: x n e -> m [i]Source

Returns a list of the indices in the tensor. See also getIndices.

getElems :: x n e -> m [e]Source

Returns a lazy list of the elements in the tensor. Because of the laziness, this function should be used with care. See also getElems'.

getElems' :: x n e -> m [e]Source

Returns a list of the elements in the tensor. See also getElems.

getAssocs :: x n e -> m [(i, e)]Source

Returns a lazy list of the elements-index pairs in the tensor. Because of the laziness, this function should be used with care. See also getAssocs'.

getAssocs' :: x n e -> m [(i, e)]Source

Returns a list of the index-elements pairs in the tensor. See also getAssocs.

Instances

Elem e => ReadTensor IOVector Int e IO 
(BLAS1 e, Monad m) => ReadTensor Vector Int e m 
Elem e => ReadTensor IOMatrix (Int, Int) e IO 
(BLAS3 e, Monad m) => ReadTensor Matrix (Int, Int) e m 
BLAS3 e => ReadTensor IOBanded (Int, Int) e IO 
(BLAS3 e, Monad m) => ReadTensor Banded (Int, Int) e m 
Elem e => ReadTensor (STVector s) Int e (ST s) 
Elem e => ReadTensor (STMatrix s) (Int, Int) e (ST s) 
BLAS3 e => ReadTensor (STBanded s) (Int, Int) e (ST s) 

readElem :: ReadTensor x i e m => x n e -> i -> m eSource

Gets the value at the specified index after checking that the argument is in bounds.

Modifiable tensor type class

class ReadTensor x i e m => WriteTensor x i e m | x -> m whereSource

Class for modifiable mutable tensors.

Methods

getMaxSize :: x n e -> m IntSource

Get the maximum number of elements that can be stored in the tensor.

setZero :: Num e => x n e -> m ()Source

Sets all stored elements to zero.

setConstant :: e -> x n e -> m ()Source

Sets all stored elements to the given value.

canModifyElem :: x n e -> i -> m BoolSource

True if the value at a given index can be changed

unsafeWriteElem :: x n e -> i -> e -> m ()Source

Set the value of the element at the given index, without doing any range checking.

unsafeModifyElem :: x n e -> i -> (e -> e) -> m ()Source

Modify the value of the element at the given index, without doing any range checking.

modifyWith :: (e -> e) -> x n e -> m ()Source

Replace each element by a function applied to it

unsafeSwapElems :: x n e -> i -> i -> m ()Source

Same as swapElem but arguments are not range-checked.

doConj :: Elem e => x n e -> m ()Source

Replace every element with its complex conjugate.

scaleBy :: Num e => e -> x n e -> m ()Source

Scale every element in the vector by the given value.

shiftBy :: Num e => e -> x n e -> m ()Source

Add a value to every element in a vector.

Instances

writeElem :: WriteTensor x i e m => x n e -> i -> e -> m ()Source

Set the value of the element at the given index.

modifyElem :: WriteTensor x i e m => x n e -> i -> (e -> e) -> m ()Source

Update the value of the element at the given index.

swapElems :: WriteTensor x i e m => x n e -> i -> i -> m ()Source

Swap the values stored at two positions in the tensor.