Copyright | (C) 2016 Marco Zocca |
---|---|
License | GPL-3 (see LICENSE) |
Maintainer | zocca.marco gmail |
Stability | provisional |
Portability | portable |
Safe Haskell | None |
Language | Haskell2010 |
- data SpVector a = SV {}
- spySV :: Fractional b => SpVector a -> b
- nzSV :: SpVector a -> Int
- sizeStrSV :: SpVector a -> String
- dotS :: InnerSpace (IntM t) => SpVector t -> SpVector t -> Scalar (IntM t)
- dotSSafe :: (InnerSpace (IntM t), MonadThrow m) => SpVector t -> SpVector t -> m (Scalar (IntM t))
- zeroSV :: Int -> SpVector a
- singletonSV :: a -> SpVector a
- ei :: Num a => Int -> Key -> SpVector a
- mkSpVector :: Epsilon a => Int -> IntMap a -> SpVector a
- mkSpVector1 :: Int -> IntMap a -> SpVector a
- mkSpVR :: Int -> [Double] -> SpVector Double
- mkSpVC :: Int -> [Complex Double] -> SpVector (Complex Double)
- fromListDenseSV :: Int -> [a] -> SpVector a
- spVectorDenseIx :: Epsilon a => (Int -> a) -> UB -> [Int] -> SpVector a
- spVectorDenseLoHi :: Epsilon a => (Int -> a) -> UB -> Int -> Int -> SpVector a
- oneHotSVU :: Num a => Int -> IxRow -> SpVector a
- oneHotSV :: Num a => Int -> IxRow -> SpVector a
- onesSV :: Num a => Int -> SpVector a
- zerosSV :: Num a => Int -> SpVector a
- constv :: Int -> a -> SpVector a
- fromVector :: Vector a -> SpVector a
- toVector :: SpVector a -> Vector a
- toVectorDense :: Num a => SpVector a -> Vector a
- insertSpVector :: Key -> a -> SpVector a -> SpVector a
- insertSpVectorSafe :: MonadThrow m => Int -> a -> SpVector a -> m (SpVector a)
- fromListSV :: Foldable t => Int -> t (Int, a) -> SpVector a
- createv :: [a] -> SpVector a
- vr :: [Double] -> SpVector Double
- vc :: [Complex Double] -> SpVector (Complex Double)
- toListSV :: SpVector a -> [(Int, a)]
- toDenseListSV :: Num b => SpVector b -> [b]
- ifoldSV :: (Key -> a -> b -> b) -> b -> SpVector a -> b
- lookupSV :: Key -> SpVector a -> Maybe a
- lookupDefaultSV :: a -> Key -> SpVector a -> a
- lookupDenseSV :: Num a => Key -> SpVector a -> a
- tailSV :: SpVector a -> SpVector a
- headSV :: Num a => SpVector a -> a
- takeSV :: Int -> SpVector a -> SpVector a
- dropSV :: Int -> SpVector a -> SpVector a
- rangeSV :: (Key, Key) -> SpVector a -> SpVector a
- concatSV :: SpVector a -> SpVector a -> SpVector a
- filterSV :: (a -> Bool) -> SpVector a -> SpVector a
- ifilterSV :: (Int -> a -> Bool) -> SpVector a -> SpVector a
- sparsifySV :: Epsilon a => SpVector a -> SpVector a
- orthogonalSV :: (Scalar (SpVector t) ~ t, InnerSpace (SpVector t), Fractional t) => SpVector t -> SpVector t
Sparse Vector
spySV :: Fractional b => SpVector a -> b Source #
SpVector sparsity
dotSSafe :: (InnerSpace (IntM t), MonadThrow m) => SpVector t -> SpVector t -> m (Scalar (IntM t)) Source #
Creation
singletonSV :: a -> SpVector a Source #
Singleton sparse vector (length 1)
mkSpVector :: Epsilon a => Int -> IntMap a -> SpVector a Source #
Sparse vector from an association list while discarding all zero entries
mkSpVC :: Int -> [Complex Double] -> SpVector (Complex Double) Source #
Dense complex SpVector (monomorphic Double)
fromListDenseSV :: Int -> [a] -> SpVector a Source #
Create new sparse vector, assumin 0-based, contiguous indexing
spVectorDenseIx :: Epsilon a => (Int -> a) -> UB -> [Int] -> SpVector a Source #
Map a function over a range of indices and filter the result (indices and values) to fit in a n
-long SpVector
spVectorDenseLoHi :: Epsilon a => (Int -> a) -> UB -> Int -> Int -> SpVector a Source #
", using just the integer bounds of the interval
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
Vector-related
fromVector :: Vector a -> SpVector a Source #
Populate a SpVector with the contents of a Vector.
toVector :: SpVector a -> Vector a Source #
Populate a Vector with the entries of a SpVector, discarding the indices (NB: loses sparsity information).
toVectorDense :: Num a => SpVector a -> Vector a Source #
Populate a Vector with the entries of a SpVector, replacing the missing entries with 0
Element insertion
insertSpVector :: Key -> a -> SpVector a -> SpVector a Source #
insert element x
at index i
in a preexisting SpVector; discards out-of-bounds entries
insertSpVectorSafe :: MonadThrow m => Int -> a -> SpVector a -> m (SpVector a) Source #
fromList
fromListSV :: Foldable t => Int -> t (Int, a) -> SpVector a Source #
Create new SpVector using data from a Foldable (e.g. a list) in (index, value) form
vc :: [Complex Double] -> SpVector (Complex Double) Source #
Create a dense SpVector from a list of Complex Double's
toList
toDenseListSV :: Num b => SpVector b -> [b] Source #
To dense list (default = 0)
Lookup
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
takeSV :: Int -> SpVector a -> SpVector a Source #
Keep the first n components of the SpVector (like take
for lists)
Sparsify : remove almost-0 elements (|x| < eps)
Orthogonal vector
orthogonalSV :: (Scalar (SpVector t) ~ t, InnerSpace (SpVector t), Fractional t) => SpVector t -> SpVector t Source #
Generate an arbitrary (not random) vector u
such that `v dot u = 0`