Safe Haskell | None |
---|---|
Language | Haskell2010 |
- class Functor f => Additive f where
- negated :: (Num a, Functor f) => f a -> f a
- minus :: (Additive f, Num a) => f a -> f a -> f a
- class Additive f => VectorSpace f where
- lerp :: (VectorSpace f, Num a) => a -> f a -> f a -> f a
- class VectorSpace f => Hilbert f where
- class Hilbert f => Normed f where
- normSq :: (Hilbert f, Num a) => f a -> a
- norm1 :: (Foldable t, Num a, Functor t) => t a -> a
- norm2 :: (Hilbert f, Floating a) => f a -> a
- normP :: (Foldable t, Functor t, Floating a) => a -> t a -> a
- normInfty :: (Foldable t, Ord a) => t a -> a
- normalize :: (Normed f, Floating a, Eq a) => a -> f a -> f a
- dotLp :: (Set t, Foldable t, Floating a) => a -> t a -> t a -> a
- reciprocal :: (Functor f, Fractional b) => f b -> f b
- scale :: (Num b, Functor f) => b -> f b -> f b
- class Additive f => FiniteDim f where
- withDim :: (FiniteDim f, Show e) => f a -> (FDSize f -> f a -> Bool) -> (f a -> c) -> String -> (f a -> e) -> c
- withDim2 :: (FiniteDim f, FiniteDim g, Show e) => f a -> g b -> (FDSize f -> FDSize g -> f a -> g b -> Bool) -> (f a -> g b -> c) -> String -> (f a -> g b -> e) -> c
- class Additive f => HasData f a where
- class (FiniteDim f, HasData f a) => Sparse f a where
- class Functor f => Set f where
- data SpVector a = SV {}
- dimSV :: SpVector a -> Int
- spySV :: Fractional b => SpVector a -> b
- imSV :: SpVector a -> IntMap a
- zeroSV :: Int -> SpVector a
- singletonSV :: a -> SpVector a
- mkSpVector :: (Num a, Eq a) => Int -> IntMap a -> SpVector a
- mkSpVectorD :: (Num a, Eq a) => Int -> [a] -> SpVector a
- mkSpVector1 :: Int -> IntMap a -> SpVector a
- mkSpVector1D :: Int -> [a] -> SpVector a
- onesSV :: Num a => Int -> SpVector a
- zerosSV :: Num a => Int -> SpVector a
- insertSpVector :: Int -> a -> SpVector a -> SpVector a
- fromListSV :: Int -> [(Int, a)] -> SpVector a
- toListSV :: SpVector a -> [(Key, a)]
- toDenseListSV :: Num b => SpVector b -> [b]
- lookupDenseSV :: Num a => Key -> SpVector a -> a
- findWithDefault0IM :: Num a => Key -> IntMap a -> a
- tailSV :: SpVector a -> SpVector a
- headSV :: Num a => SpVector a -> a
- concatSV :: SpVector a -> SpVector a -> SpVector a
- svToSM :: SpVector a -> SpMatrix a
- outerProdSV :: Num a => SpVector a -> SpVector a -> SpMatrix a
- (><) :: Num a => SpVector a -> SpVector a -> SpMatrix a
- data SpMatrix a = SM {}
- maxTup :: Ord t => (t, t) -> (t, t) -> (t, t)
- minTup :: Ord t => (t, t) -> (t, t) -> (t, t)
- emptySpMatrix :: (Int, Int) -> SpMatrix a
- matScale :: Num a => a -> SpMatrix a -> SpMatrix a
- normFrobenius :: SpMatrix Double -> Double
- type Rows = Int
- type Cols = Int
- type IxRow = Int
- type IxCol = Int
- validIxSM :: SpMatrix a -> (Int, Int) -> Bool
- isSquareSM :: SpMatrix a -> Bool
- isDiagonalSM :: SpMatrix a -> Bool
- immSM :: SpMatrix t -> IntMap (IntMap t)
- dimSM :: SpMatrix t -> (Rows, Cols)
- nelSM :: SpMatrix t -> Int
- nrows :: SpMatrix a -> Int
- ncols :: SpMatrix a -> Int
- data SMInfo = SMInfo {}
- infoSM :: SpMatrix a -> SMInfo
- nzSM :: SpMatrix a -> Int
- spySM :: Fractional b => SpMatrix a -> b
- nzRowU :: SpMatrix a -> Key -> Int
- nzRow :: SpMatrix a -> Key -> Int
- bwMinSM :: SpMatrix a -> Int
- bwMaxSM :: SpMatrix a -> Int
- bwBoundsSM :: SpMatrix a -> (Int, Int)
- zeroSM :: Int -> Int -> SpMatrix a
- insertSpMatrix :: IxRow -> IxCol -> a -> SpMatrix a -> SpMatrix a
- fromListSM' :: Foldable t => t (IxRow, IxCol, a) -> SpMatrix a -> SpMatrix a
- fromListSM :: Foldable t => (Int, Int) -> t (IxRow, IxCol, a) -> SpMatrix a
- fromListDenseSM :: Int -> [a] -> SpMatrix a
- toDenseListSM :: Num t => SpMatrix t -> [(IxRow, IxCol, t)]
- mkDiagonal :: Int -> [a] -> SpMatrix a
- eye :: Num a => Int -> SpMatrix a
- ones :: Num a => Int -> [a]
- mkSubDiagonal :: Int -> Int -> [a] -> SpMatrix a
- encode :: (Int, Int) -> (Rows, Cols) -> Int
- decode :: (Int, Int) -> Int -> (Rows, Cols)
- extractSubmatrixSM :: SpMatrix a -> (Int, Int) -> (Int, Int) -> SpMatrix a
- extractRowSM :: SpMatrix a -> Int -> SpMatrix a
- extractColSM :: SpMatrix a -> Int -> SpMatrix a
- toSV :: SpMatrix a -> SpVector a
- extractCol :: SpMatrix a -> Int -> SpVector a
- extractRow :: SpMatrix a -> Int -> SpVector a
- vertStackSM :: SpMatrix a -> SpMatrix a -> SpMatrix a
- (-=-) :: SpMatrix a -> SpMatrix a -> SpMatrix a
- horizStackSM :: SpMatrix a -> SpMatrix a -> SpMatrix a
- (-||-) :: SpMatrix a -> SpMatrix a -> SpMatrix a
- lookupSM :: SpMatrix a -> Key -> Key -> Maybe a
- lookupWD_SM :: Num a => SpMatrix a -> (Key, Key) -> a
- (@@) :: Num a => SpMatrix a -> (Key, Key) -> a
- lookupWD_IM :: Num a => IntMap (IntMap a) -> (Key, Key) -> a
- foldlSM :: (a -> b -> b) -> b -> SpMatrix a -> b
- ifoldlSM :: (Key -> Key -> a -> b -> b) -> b -> SpMatrix a -> b
- countSubdiagonalNZSM :: SpMatrix a -> Int
- extractDiagonalDSM :: Num a => SpMatrix a -> SpVector a
- subdiagIndicesSM :: SpMatrix a -> [(Key, Key)]
- sparsifyIM2 :: IntMap (IntMap Double) -> IntMap (IntMap Double)
- sparsifySM :: SpMatrix Double -> SpMatrix Double
- roundZeroOneSM :: SpMatrix Double -> SpMatrix Double
- transposeSM :: SpMatrix a -> SpMatrix a
- (#^) :: SpMatrix a -> SpMatrix a
- (#^#) :: SpMatrix Double -> SpMatrix Double -> SpMatrix Double
- (##^) :: SpMatrix Double -> SpMatrix Double -> SpMatrix Double
- matVec :: Num a => SpMatrix a -> SpVector a -> SpVector a
- (#>) :: Num a => SpMatrix a -> SpVector a -> SpVector a
- vecMat :: Num a => SpVector a -> SpMatrix a -> SpVector a
- (<#) :: Num a => SpVector a -> SpMatrix a -> SpVector a
- matMatU :: Num a => SpMatrix a -> SpMatrix a -> SpMatrix a
- matMat :: Num a => SpMatrix a -> SpMatrix a -> SpMatrix a
- (##) :: Num a => SpMatrix a -> SpMatrix a -> SpMatrix a
- matMatSparsified :: SpMatrix Double -> SpMatrix Double -> SpMatrix Double
- (#~#) :: SpMatrix Double -> SpMatrix Double -> SpMatrix Double
- isOrthogonalSM :: SpMatrix Double -> Bool
- conditionNumberSM :: SpMatrix Double -> Double
- hhMat :: Num a => a -> SpVector a -> SpMatrix a
- hhRefl :: SpVector Double -> SpMatrix Double
- hypot :: Floating a => a -> a -> a
- sign :: (Ord a, Num a) => a -> a
- givensCoef :: (Ord a, Floating a) => a -> a -> (a, a, a)
- givens :: SpMatrix Double -> Int -> Int -> SpMatrix Double
- firstNonZeroColumn :: IntMap a -> Key -> Bool
- candidateRows :: IntMap (IntMap a) -> Key -> Key -> Maybe [Key]
- qr :: SpMatrix Double -> (SpMatrix Double, SpMatrix Double)
- gmats :: SpMatrix Double -> [SpMatrix Double]
- eigsQR :: Int -> SpMatrix Double -> SpVector Double
- rayleighStep :: SpMatrix Double -> (SpVector Double, Double) -> (SpVector Double, Double)
- eigRayleigh :: Int -> SpMatrix Double -> (SpVector Double, Double) -> (SpVector Double, Double)
- hhV :: SpVector Double -> (SpVector Double, Double)
- eps :: Double
- residual :: Num a => SpMatrix a -> SpVector a -> SpVector a -> SpVector a
- converged :: SpMatrix Double -> SpVector Double -> SpVector Double -> Bool
- cgsStep :: SpMatrix Double -> SpVector Double -> CGS -> CGS
- data CGS = CGS {}
- cgs :: SpMatrix Double -> SpVector Double -> SpVector Double -> SpVector Double -> CGS
- bicgstabStep :: SpMatrix Double -> SpVector Double -> BICGSTAB -> BICGSTAB
- data BICGSTAB = BICGSTAB {}
- bicgstab :: SpMatrix Double -> SpVector Double -> SpVector Double -> SpVector Double -> BICGSTAB
- data LinSolveMethod
- linSolveM :: PrimMonad m => LinSolveMethod -> SpMatrix Double -> SpVector Double -> m (SpVector Double)
- linSolve :: LinSolveMethod -> SpMatrix Double -> SpVector Double -> SpVector Double
- (<\>) :: SpMatrix Double -> SpVector Double -> SpVector Double
- sizeStr :: SpMatrix a -> String
- showNonZero :: (Show a, Num a, Eq a) => a -> String
- toDenseRow :: Num a => SpMatrix a -> Key -> [a]
- toDenseRowClip :: (Show a, Num a) => SpMatrix a -> Key -> Int -> String
- newline :: IO ()
- printDenseSM :: (Show t, Num t) => SpMatrix t -> IO ()
- toDenseListClip :: (Show a, Num a) => SpVector a -> Int -> String
- printDenseSV :: (Show t, Num t) => SpVector t -> IO ()
- class PrintDense a where
- almostZero :: Double -> Bool
- almostOne :: Double -> Bool
- withDefault :: (t -> Bool) -> t -> t -> t
- roundZero :: Double -> Double
- roundOne :: Double -> Double
- with2Defaults :: (t -> Bool) -> (t -> Bool) -> t -> t -> t -> t
- roundZeroOne :: Double -> Double
- modifyUntil :: MonadState s m => (s -> Bool) -> (s -> s) -> m s
- loopUntilAcc :: Int -> ([t] -> Bool) -> (t -> t) -> t -> t
- modifyInspectN :: MonadState s m => Int -> ([s] -> Bool) -> (s -> s) -> m s
- meanl :: (Foldable t, Fractional a) => t a -> a
- norm2l :: (Foldable t, Functor t, Floating a) => t a -> a
- diffSqL :: Floating a => [a] -> a
- untilConverged :: MonadState a m => (a -> SpVector Double) -> (a -> a) -> m a
- normDiffConverged :: (Foldable t, Functor t) => (a -> SpVector Double) -> t a -> Bool
- runAppendN :: ([t] -> Bool) -> (t -> t) -> Int -> t -> [t]
- runAppendN' :: (t -> t) -> Int -> t -> [t]
- randMat :: PrimMonad m => Int -> m (SpMatrix Double)
- randVec :: PrimMonad m => Int -> m (SpVector Double)
- randSpMat :: Int -> Int -> IO (SpMatrix Double)
- randSpVec :: Int -> Int -> IO (SpVector Double)
- denseIxArray :: [b] -> [(Int, b)]
- denseIxArray2 :: Int -> [c] -> [(Int, Int, c)]
- foldrMap :: (Foldable t, Functor t) => (a -> b) -> (b -> c -> c) -> c -> t a -> c
- foldlStrict :: (a -> b -> a) -> a -> [b] -> a
- ifoldr :: Num i => (a -> b -> b) -> b -> (i -> c -> d -> a) -> c -> [d] -> b
- type LB = Int
- type UB = Int
- inBounds :: LB -> UB -> Int -> Bool
- inBounds2 :: (LB, UB) -> (Int, Int) -> Bool
- inBounds0 :: UB -> Int -> Bool
- inBounds02 :: (UB, UB) -> (Int, Int) -> Bool
- tm0 :: SpMatrix Double
- tm1 :: SpMatrix Double
- tm2 :: SpMatrix Double
- tm3 :: SpMatrix Double
- tm4 :: SpMatrix Double
- tv0 :: SpVector Double
- tv1 :: SpVector Double
- tm1g1 :: SpMatrix Double
- tm1a2 :: SpMatrix Double
- tm1g2 :: SpMatrix Double
- tm1a3 :: SpMatrix Double
- tm1q :: SpMatrix Double
- tm3g1 :: SpMatrix Double
- untilC :: (a -> Bool) -> Int -> (a -> a) -> a -> a
Documentation
class Functor f => Additive f where Source #
=== CLASSES and common operations
Additive ring
class Additive f => VectorSpace f where Source #
Vector space
lerp :: (VectorSpace f, Num a) => a -> f a -> f a -> f a Source #
linear interpolation
class VectorSpace f => Hilbert f where Source #
Hilbert space (inner product)
reciprocal :: (Functor f, Fractional b) => f b -> f b Source #
withDim :: (FiniteDim f, Show e) => f a -> (FDSize f -> f a -> Bool) -> (f a -> c) -> String -> (f a -> e) -> c Source #
withDim2 :: (FiniteDim f, FiniteDim g, Show e) => f a -> g b -> (FDSize f -> FDSize g -> f a -> g b -> Bool) -> (f a -> g b -> c) -> String -> (f a -> g b -> e) -> c Source #
class (FiniteDim f, HasData f a) => Sparse f a where Source #
Sparse : sparse datastructures
spy :: Fractional b => f a -> b Source #
=================================================
Sparse Vector
Functor SpVector Source # | instances for SpVector |
Foldable SpVector Source # | |
Set SpVector Source # | |
FiniteDim SpVector Source # | |
Normed SpVector Source # | |
Hilbert SpVector Source # | |
VectorSpace SpVector Source # | |
Additive SpVector Source # | |
Sparse SpVector a Source # | |
HasData SpVector a Source # | |
Eq a => Eq (SpVector a) Source # | |
Show a => Show (SpVector a) Source # | |
(Show a, Num a) => PrintDense (SpVector a) Source # | |
type FDSize SpVector Source # | |
type HDData SpVector a Source # | |
spySV :: Fractional b => SpVector a -> b Source #
singletonSV :: a -> SpVector a Source #
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)
mkSpVector1D :: Int -> [a] -> SpVector a Source #
toDenseListSV :: Num b => SpVector b -> [b] Source #
=================================================
Functor SpMatrix Source # | |
Set SpMatrix Source # | |
FiniteDim SpMatrix Source # | |
Additive SpMatrix Source # | |
Sparse SpMatrix a Source # | |
HasData SpMatrix a Source # | |
Eq a => Eq (SpMatrix a) Source # | |
Show a => Show (SpMatrix a) Source # | instances for SpMatrix |
(Show a, Num a) => PrintDense (SpMatrix a) Source # | |
type FDSize SpMatrix Source # | |
type HDData SpMatrix a Source # | |
isSquareSM :: SpMatrix a -> Bool Source #
isDiagonalSM :: SpMatrix a -> Bool Source #
spySM :: Fractional b => SpMatrix a -> b Source #
fromListSM' :: Foldable t => t (IxRow, IxCol, a) -> SpMatrix a -> SpMatrix a Source #
from list (row, col, value)
fromListDenseSM :: Int -> [a] -> SpMatrix a Source #
mkDiagonal :: Int -> [a] -> SpMatrix a Source #
lookupWD_SM :: Num a => SpMatrix a -> (Key, Key) -> a Source #
Looks up an element in the matrix (if not found, zero is returned)
(@@) :: Num a => SpMatrix a -> (Key, Key) -> a Source #
Looks up an element in the matrix (if not found, zero is returned)
countSubdiagonalNZSM :: SpMatrix a -> Int Source #
mapping
folding
transposeSM :: SpMatrix a -> SpMatrix a Source #
=== ALGEBRAIC PRIMITIVE OPERATIONS
transpose
matMatSparsified :: SpMatrix Double -> SpMatrix Double -> SpMatrix Double Source #
sparsified matrix-matrix product (prunes all elements x
for which `abs x <= eps`)
(#~#) :: SpMatrix Double -> SpMatrix Double -> SpMatrix Double Source #
sparsified matrix-matrix product (prunes all elements x
for which `abs x <= eps`)
givensCoef :: (Ord a, Floating a) => a -> a -> (a, a, a) Source #
rayleighStep :: SpMatrix Double -> (SpVector Double, Double) -> (SpVector Double, Double) Source #
=== Eigenvalues, using Rayleigh iteration
eigRayleigh :: Int -> SpMatrix Double -> (SpVector Double, Double) -> (SpVector Double, Double) Source #
hhV :: SpVector Double -> (SpVector Double, Double) Source #
=== Householder vector (G & VL Alg. 5.1.1, function house
)
=== SVD
=================================================
LINEAR SOLVERS : solve A x = b
numerical tolerance for e.g. solution convergence
residual :: Num a => SpMatrix a -> SpVector a -> SpVector a -> SpVector a Source #
residual of candidate solution x0
bicgstabStep :: SpMatrix Double -> SpVector Double -> BICGSTAB -> BICGSTAB Source #
BiCSSTAB
one step of BiCGSTAB
bicgstab :: SpMatrix Double -> SpVector Double -> SpVector Double -> SpVector Double -> BICGSTAB Source #
data LinSolveMethod Source #
=== LINEAR SOLVERS INTERFACE
linSolveM :: PrimMonad m => LinSolveMethod -> SpMatrix Double -> SpVector Double -> m (SpVector Double) Source #
sizeStr :: SpMatrix a -> String Source #
TODO : if system is poorly conditioned, is it better to warn the user or just switch solvers (e.g. via the pseudoinverse) ?
=== PRETTY PRINTING
Show details and contents of sparse matrix
class PrintDense a where Source #
almostZero :: Double -> Bool Source #
rounding to 0 or 1 within some predefined numerical precision
withDefault :: (t -> Bool) -> t -> t -> t Source #
with2Defaults :: (t -> Bool) -> (t -> Bool) -> t -> t -> t -> t Source #
roundZeroOne :: Double -> Double Source #
modifyUntil :: MonadState s m => (s -> Bool) -> (s -> s) -> m s Source #
transform state until a condition is met
loopUntilAcc :: Int -> ([t] -> Bool) -> (t -> t) -> t -> t Source #
modifyInspectN :: MonadState s m => Int -> ([s] -> Bool) -> (s -> s) -> m s Source #
meanl :: (Foldable t, Fractional a) => t a -> a Source #
untilConverged :: MonadState a m => (a -> SpVector Double) -> (a -> a) -> m a Source #
runAppendN :: ([t] -> Bool) -> (t -> t) -> Int -> t -> [t] Source #
runAppendN' :: (t -> t) -> Int -> t -> [t] Source #
denseIxArray :: [b] -> [(Int, b)] Source #
misc utils
integer-indexed ziplist
foldlStrict :: (a -> b -> a) -> a -> [b] -> a Source #