sparse-linear-algebra-0.2.0.9: Numerical computation in native Haskell

Safe HaskellSafe
LanguageHaskell2010

Data.Sparse.SpVector

Contents

Synopsis

Sparse Vector

data SpVector a Source #

Constructors

SV 

Fields

Instances

Functor SpVector Source # 

Methods

fmap :: (a -> b) -> SpVector a -> SpVector b #

(<$) :: a -> SpVector b -> SpVector a #

Foldable SpVector Source # 

Methods

fold :: Monoid m => SpVector m -> m #

foldMap :: Monoid m => (a -> m) -> SpVector a -> m #

foldr :: (a -> b -> b) -> b -> SpVector a -> b #

foldr' :: (a -> b -> b) -> b -> SpVector a -> b #

foldl :: (b -> a -> b) -> b -> SpVector a -> b #

foldl' :: (b -> a -> b) -> b -> SpVector a -> b #

foldr1 :: (a -> a -> a) -> SpVector a -> a #

foldl1 :: (a -> a -> a) -> SpVector a -> a #

toList :: SpVector a -> [a] #

null :: SpVector a -> Bool #

length :: SpVector a -> Int #

elem :: Eq a => a -> SpVector a -> Bool #

maximum :: Ord a => SpVector a -> a #

minimum :: Ord a => SpVector a -> a #

sum :: Num a => SpVector a -> a #

product :: Num a => SpVector a -> a #

Set SpVector Source # 

Methods

liftU2 :: (a -> a -> a) -> SpVector a -> SpVector a -> SpVector a Source #

liftI2 :: (a -> b -> c) -> SpVector a -> SpVector b -> SpVector c Source #

FiniteDim SpVector Source # 

Associated Types

type FDSize (SpVector :: * -> *) :: * Source #

Normed SpVector Source # 

Methods

norm :: (Floating a, Eq a) => a -> SpVector a -> a Source #

Hilbert SpVector Source # 

Methods

dot :: Num a => SpVector a -> SpVector a -> a Source #

VectorSpace SpVector Source # 

Methods

(.*) :: Num a => a -> SpVector a -> SpVector a Source #

Additive SpVector Source # 

Methods

zero :: Num a => SpVector a Source #

(^+^) :: Num a => SpVector a -> SpVector a -> SpVector a Source #

Sparse SpVector a Source # 

Methods

spy :: Fractional b => SpVector a -> b Source #

HasData SpVector a Source # 

Associated Types

type HDData (SpVector :: * -> *) a :: * Source #

Methods

dat :: SpVector a -> HDData SpVector a Source #

Eq a => Eq (SpVector a) Source # 

Methods

(==) :: SpVector a -> SpVector a -> Bool #

(/=) :: SpVector a -> SpVector a -> Bool #

Show a => Show (SpVector a) Source # 

Methods

showsPrec :: Int -> SpVector a -> ShowS #

show :: SpVector a -> String #

showList :: [SpVector a] -> ShowS #

type FDSize SpVector Source # 
type HDData SpVector a Source # 

spySV :: Fractional b => SpVector a -> b Source #

SpVector sparsity

nzSV :: SpVector a -> Int Source #

Number of nonzeros

Creation

zeroSV :: Int -> SpVector a Source #

empty sparse vector (length n, no entries)

singletonSV :: a -> SpVector a Source #

singleton sparse vector (length 1)

mkSpVector :: (Num a, Eq a) => Int -> IntMap a -> SpVector a Source #

create a sparse vector from an association list while discarding all zero entries

mkSpVectorD :: (Num a, Eq a) => Int -> [a] -> SpVector a Source #

", from logically dense array (consecutive indices)

fromListDenseSV :: Int -> [a] -> SpVector a Source #

Create new sparse vector, assumin 0-based, contiguous indexing

oneHotSVU :: Num a => Int -> IxRow -> SpVector a Source #

one-hot encoding : `oneHotSV n k` produces a SpVector of length n having 1 at the k-th position

onesSV :: Num a => Int -> SpVector a Source #

DENSE vector of `1`s

zerosSV :: Num a => Int -> SpVector a Source #

DENSE vector of `0`s

Element insertion

insertSpVector :: Int -> a -> SpVector a -> SpVector a Source #

insert element x at index i in a preexisting SpVector

fromList

fromListSV :: Int -> [(Int, a)] -> SpVector a Source #

toList

toListSV :: SpVector a -> [(Key, a)] Source #

toDenseListSV :: Num b => SpVector b -> [b] Source #

To dense list (default = 0)

Lookup

lookupSV :: Key -> SpVector a -> Maybe a Source #

Lookup an index in a SpVector

lookupDefaultSV :: a -> Key -> SpVector a -> a Source #

Lookup an index, return a default value if lookup fails

lookupDenseSV :: Num a => Key -> SpVector a -> a Source #

Lookup an index in a SpVector, returns 0 if lookup fails

Sub-vectors

tailSV :: SpVector a -> SpVector a Source #

Tail elements

headSV :: Num a => SpVector a -> a Source #

Head element

concatSV :: SpVector a -> SpVector a -> SpVector a Source #

Concatenate two sparse vectors

filterSV :: (a -> Bool) -> SpVector a -> SpVector a Source #

Filter

ifilterSV :: (Int -> a -> Bool) -> SpVector a -> SpVector a Source #

Indexed filter

Orthogonal vector

orthogonalSV :: Fractional a => SpVector a -> SpVector a Source #

Generate an arbitrary (not random) vector u such that `v dot u = 0`