blas-0.6: Bindings to the BLAS librarySource codeContentsIndex
Data.Vector.Dense.Class
Stabilityexperimental
MaintainerPatrick Perry <patperry@stanford.edu>
Contents
The dense vector type classes
Vector shape
Conjugating vectors
Creating new vectors
Reading and writing vector elements
Special vectors
Vector views
Copying vectors
Vector Properties
Vector operations
Unary
Binary
Unsafe
Low-level functions
Description
Synopsis
class BaseTensor x Int => BaseVector x where
vectorViewArray :: ForeignPtr e -> Ptr e -> Int -> Int -> Bool -> x n e
arrayFromVector :: x n e -> (ForeignPtr e, Ptr e, Int, Int, Bool)
class (BaseVector x, UnsafeIOToM m, ReadTensor x Int m) => ReadVector x m
class (ReadVector x m, WriteTensor x Int m) => WriteVector x m | x -> m, m -> x
dim :: BaseVector x => x n e -> Int
coerceVector :: BaseVector x => x n e -> x n' e
module BLAS.Tensor.Base
module BLAS.Conj
newVector_ :: (WriteVector x m, Elem e) => Int -> m (x n e)
newVector :: (WriteVector x m, Elem e) => Int -> [(Int, e)] -> m (x n e)
newListVector :: (WriteVector x m, Elem e) => Int -> [e] -> m (x n e)
unsafeNewVector :: (WriteVector x m, Elem e) => Int -> [(Int, e)] -> m (x n e)
module BLAS.Tensor.Read
module BLAS.Tensor.Write
newZeroVector :: (WriteVector y m, Elem e) => Int -> m (y n e)
newConstantVector :: (WriteVector y m, Elem e) => Int -> e -> m (y n e)
newBasisVector :: (WriteVector x m, Elem e) => Int -> Int -> m (x n e)
setZeroVector :: (WriteVector y m, Elem e) => y n e -> m ()
setConstantVector :: (WriteVector y m, Elem e) => e -> y n e -> m ()
setBasisVector :: (WriteVector x m, Elem e) => Int -> x n e -> m ()
subvector :: (BaseVector x, Storable e) => x n e -> Int -> Int -> x n' e
subvectorWithStride :: (BaseVector x, Storable e) => Int -> x n e -> Int -> Int -> x n' e
unsafeSubvector :: (BaseVector x, Storable e) => x n e -> Int -> Int -> x n' e
unsafeSubvectorWithStride :: (BaseVector x, Storable e) => Int -> x n e -> Int -> Int -> x n' e
newCopyVector :: (BLAS1 e, ReadVector x m, WriteVector y m) => x n e -> m (y n e)
copyVector :: (BLAS1 e, WriteVector y m, ReadVector x m) => y n e -> x n e -> m ()
swapVector :: (BLAS1 e, WriteVector y m) => y n e -> y n e -> m ()
unsafeCopyVector :: (BLAS1 e, WriteVector y m, ReadVector x m) => y n e -> x n e -> m ()
unsafeSwapVector :: (BLAS1 e, WriteVector y m) => y n e -> y n e -> m ()
getSumAbs :: (ReadVector x m, BLAS1 e) => x n e -> m Double
getNorm2 :: (ReadVector x m, BLAS1 e) => x n e -> m Double
getWhichMaxAbs :: (ReadVector x m, BLAS1 e) => x n e -> m (Int, e)
getDot :: (ReadVector x m, ReadVector y m, BLAS1 e) => x n e -> y n e -> m e
unsafeGetDot :: (ReadVector x m, ReadVector y m, BLAS1 e) => x n e -> y n e -> m e
getConjVector :: (ReadVector x m, WriteVector y m, BLAS1 e) => x n e -> m (y n e)
getScaledVector :: (ReadVector x m, WriteVector y m, BLAS1 e) => e -> x n e -> m (y n e)
getShiftedVector :: (ReadVector x m, WriteVector y m, BLAS1 e) => e -> x n e -> m (y n e)
getAddVector :: (ReadVector x m, ReadVector y m, WriteVector z m, BLAS1 e) => x n e -> y n e -> m (z n e)
getSubVector :: (ReadVector x m, ReadVector y m, WriteVector z m, BLAS1 e) => x n e -> y n e -> m (z n e)
getMulVector :: (ReadVector x m, ReadVector y m, WriteVector z m, BLAS1 e) => x n e -> y n e -> m (z n e)
getDivVector :: (ReadVector x m, ReadVector y m, WriteVector z m, BLAS1 e) => x n e -> y n e -> m (z n e)
addVector :: (WriteVector y m, ReadVector x m, BLAS1 e) => y n e -> x n e -> m ()
subVector :: (WriteVector y m, ReadVector x m, BLAS1 e) => y n e -> x n e -> m ()
axpyVector :: (ReadVector x m, WriteVector y m, BLAS1 e) => e -> x n e -> y n e -> m ()
mulVector :: (WriteVector y m, ReadVector x m, BLAS1 e) => y n e -> x n e -> m ()
divVector :: (WriteVector y m, ReadVector x m, BLAS1 e) => y n e -> x n e -> m ()
unsafeGetAddVector :: (ReadVector x m, ReadVector y m, WriteVector z m, BLAS1 e) => x n e -> y n e -> m (z n e)
unsafeGetSubVector :: (ReadVector x m, ReadVector y m, WriteVector z m, BLAS1 e) => x n e -> y n e -> m (z n e)
unsafeGetMulVector :: (ReadVector x m, ReadVector y m, WriteVector z m, BLAS1 e) => x n e -> y n e -> m (z n e)
unsafeGetDivVector :: (ReadVector x m, ReadVector y m, WriteVector z m, BLAS1 e) => x n e -> y n e -> m (z n e)
unsafeAddVector :: (WriteVector y m, ReadVector x m, BLAS1 e) => y n e -> x n e -> m ()
unsafeSubVector :: (WriteVector y m, ReadVector x m, BLAS1 e) => y n e -> x n e -> m ()
unsafeAxpyVector :: (ReadVector x m, WriteVector y m, BLAS1 e) => e -> x n e -> y n e -> m ()
unsafeMulVector :: (WriteVector y m, ReadVector x m, BLAS1 e) => y n e -> x n e -> m ()
unsafeDivVector :: (WriteVector y m, ReadVector x m, BLAS1 e) => y n e -> x n e -> m ()
stride :: BaseVector x => x n e -> Int
isConj :: BaseVector x => x n e -> Bool
withVectorPtr :: BaseVector x => x n e -> (Ptr e -> IO a) -> IO a
The dense vector type classes
class BaseTensor x Int => BaseVector x whereSource
Methods
vectorViewArray :: ForeignPtr e -> Ptr e -> Int -> Int -> Bool -> x n eSource
arrayFromVector :: x n e -> (ForeignPtr e, Ptr e, Int, Int, Bool)Source
show/hide Instances
class (BaseVector x, UnsafeIOToM m, ReadTensor x Int m) => ReadVector x m Source
show/hide Instances
class (ReadVector x m, WriteTensor x Int m) => WriteVector x m | x -> m, m -> xSource
show/hide Instances
Vector shape
dim :: BaseVector x => x n e -> IntSource
coerceVector :: BaseVector x => x n e -> x n' eSource
Cast the shape type of the vector.
module BLAS.Tensor.Base
Conjugating vectors
module BLAS.Conj
Creating new vectors
newVector_ :: (WriteVector x m, Elem e) => Int -> m (x n e)Source
Creates a new vector of the given length. The elements will be uninitialized.
newVector :: (WriteVector x m, Elem e) => Int -> [(Int, e)] -> m (x n e)Source
Creates a new vector with the given association list. Unspecified indices will get initialized to zero.
newListVector :: (WriteVector x m, Elem e) => Int -> [e] -> m (x n e)Source
Creates a new vector of the given dimension with the given elements. If the list has length less than the passed-in dimenson, the tail of the vector will be uninitialized.
unsafeNewVector :: (WriteVector x m, Elem e) => Int -> [(Int, e)] -> m (x n e)Source
Same as newVector but indices are not range-checked.
Reading and writing vector elements
module BLAS.Tensor.Read
module BLAS.Tensor.Write
Special vectors
newZeroVector :: (WriteVector y m, Elem e) => Int -> m (y n e)Source
Create a zero vector of the specified length.
newConstantVector :: (WriteVector y m, Elem e) => Int -> e -> m (y n e)Source
Create a constant vector of the specified length.
newBasisVector :: (WriteVector x m, Elem e) => Int -> Int -> m (x n e)Source
newBasisVector n i creates a vector of length n that is all zero except for at position i, where it equal to one.
setZeroVector :: (WriteVector y m, Elem e) => y n e -> m ()Source
Set every element in the vector to zero.
setConstantVector :: (WriteVector y m, Elem e) => e -> y n e -> m ()Source
Set every element in the vector to a constant.
setBasisVector :: (WriteVector x m, Elem e) => Int -> x n e -> m ()Source
setBasis x i sets the ith coordinate of x to 1, and all other coordinates to 0. If the vector has been scaled, it is possible that readVector x i will not return exactly 1. See setElem.
Vector views
subvector :: (BaseVector x, Storable e) => x n e -> Int -> Int -> x n' eSource
subvector x o n creates a subvector view of x starting at index o and having length n.
subvectorWithStride :: (BaseVector x, Storable e) => Int -> x n e -> Int -> Int -> x n' eSource
subvectorWithStride s x o n creates a subvector view of x starting at index o, having length n and stride s.
unsafeSubvector :: (BaseVector x, Storable e) => x n e -> Int -> Int -> x n' eSource
unsafeSubvectorWithStride :: (BaseVector x, Storable e) => Int -> x n e -> Int -> Int -> x n' eSource
Copying vectors
newCopyVector :: (BLAS1 e, ReadVector x m, WriteVector y m) => x n e -> m (y n e)Source
Creats a new vector by copying another one.
copyVector :: (BLAS1 e, WriteVector y m, ReadVector x m) => y n e -> x n e -> m ()Source
copyVector dst src replaces the values in dst with those in source. The operands must be the same shape.
swapVector :: (BLAS1 e, WriteVector y m) => y n e -> y n e -> m ()Source
Swap the values stored in two vectors.
unsafeCopyVector :: (BLAS1 e, WriteVector y m, ReadVector x m) => y n e -> x n e -> m ()Source
Same as copyVector but the sizes of the arguments are not checked.
unsafeSwapVector :: (BLAS1 e, WriteVector y m) => y n e -> y n e -> m ()Source
Same as swapVector but the sizes of the arguments are not checked.
Vector Properties
getSumAbs :: (ReadVector x m, BLAS1 e) => x n e -> m DoubleSource
Gets the sum of the absolute values of the vector entries.
getNorm2 :: (ReadVector x m, BLAS1 e) => x n e -> m DoubleSource
Gets the 2-norm of a vector.
getWhichMaxAbs :: (ReadVector x m, BLAS1 e) => x n e -> m (Int, e)Source
Gets the index and norm of the element with maximum magnitude. This is undefined if any of the elements are NaN. It will throw an exception if the dimension of the vector is 0.
getDot :: (ReadVector x m, ReadVector y m, BLAS1 e) => x n e -> y n e -> m eSource
Computes the dot product of two vectors.
unsafeGetDot :: (ReadVector x m, ReadVector y m, BLAS1 e) => x n e -> y n e -> m eSource
Vector operations
Unary
getConjVector :: (ReadVector x m, WriteVector y m, BLAS1 e) => x n e -> m (y n e)Source
Get a new vector with elements with the conjugates of the elements of the given vector
getScaledVector :: (ReadVector x m, WriteVector y m, BLAS1 e) => e -> x n e -> m (y n e)Source
Get a new vector by scaling the elements of another vector by a given value.
getShiftedVector :: (ReadVector x m, WriteVector y m, BLAS1 e) => e -> x n e -> m (y n e)Source
Get a new vector by shifting the elements of another vector by a given value.
Binary
getAddVector :: (ReadVector x m, ReadVector y m, WriteVector z m, BLAS1 e) => x n e -> y n e -> m (z n e)Source
getAddVector x y creates a new vector equal to the sum x+y. The operands must have the same dimension.
getSubVector :: (ReadVector x m, ReadVector y m, WriteVector z m, BLAS1 e) => x n e -> y n e -> m (z n e)Source
getSubVector x y creates a new tensor equal to the difference x-y. The operands must have the same dimension.
getMulVector :: (ReadVector x m, ReadVector y m, WriteVector z m, BLAS1 e) => x n e -> y n e -> m (z n e)Source
getMulVector x y creates a new vector equal to the elementwise product x*y. The operands must have the same dimensino
getDivVector :: (ReadVector x m, ReadVector y m, WriteVector z m, BLAS1 e) => x n e -> y n e -> m (z n e)Source
getDivVector x y creates a new vector equal to the elementwise ratio x/y. The operands must have the same shape.
addVector :: (WriteVector y m, ReadVector x m, BLAS1 e) => y n e -> x n e -> m ()Source
addVector y x replaces y with y+x.
subVector :: (WriteVector y m, ReadVector x m, BLAS1 e) => y n e -> x n e -> m ()Source
subVector y x replaces y with y-x.
axpyVector :: (ReadVector x m, WriteVector y m, BLAS1 e) => e -> x n e -> y n e -> m ()Source
axpyVector alpha x y replaces y with alpha * x + y.
mulVector :: (WriteVector y m, ReadVector x m, BLAS1 e) => y n e -> x n e -> m ()Source
mulVector y x replaces y with y*x.
divVector :: (WriteVector y m, ReadVector x m, BLAS1 e) => y n e -> x n e -> m ()Source
divVector y x replaces y with y/x.
Unsafe
unsafeGetAddVector :: (ReadVector x m, ReadVector y m, WriteVector z m, BLAS1 e) => x n e -> y n e -> m (z n e)Source
unsafeGetSubVector :: (ReadVector x m, ReadVector y m, WriteVector z m, BLAS1 e) => x n e -> y n e -> m (z n e)Source
unsafeGetMulVector :: (ReadVector x m, ReadVector y m, WriteVector z m, BLAS1 e) => x n e -> y n e -> m (z n e)Source
unsafeGetDivVector :: (ReadVector x m, ReadVector y m, WriteVector z m, BLAS1 e) => x n e -> y n e -> m (z n e)Source
unsafeAddVector :: (WriteVector y m, ReadVector x m, BLAS1 e) => y n e -> x n e -> m ()Source
unsafeSubVector :: (WriteVector y m, ReadVector x m, BLAS1 e) => y n e -> x n e -> m ()Source
unsafeAxpyVector :: (ReadVector x m, WriteVector y m, BLAS1 e) => e -> x n e -> y n e -> m ()Source
unsafeMulVector :: (WriteVector y m, ReadVector x m, BLAS1 e) => y n e -> x n e -> m ()Source
unsafeDivVector :: (WriteVector y m, ReadVector x m, BLAS1 e) => y n e -> x n e -> m ()Source
Low-level functions
stride :: BaseVector x => x n e -> IntSource
isConj :: BaseVector x => x n e -> BoolSource
withVectorPtr :: BaseVector x => x n e -> (Ptr e -> IO a) -> IO aSource
Produced by Haddock version 2.3.0