From 9a640d084f3d950e37e054672c9bbbefe4af06d7 Mon Sep 17 00:00:00 2001 From: Alberto Ruiz Date: Tue, 26 May 2015 20:14:56 +0200 Subject: tr' , documentation --- packages/base/src/Data/Packed/Foreign.hs | 1 - packages/base/src/Data/Packed/Internal/Vector.hs | 5 +- packages/base/src/Numeric/LinearAlgebra/Data.hs | 59 +++++++++++++--------- packages/base/src/Numeric/LinearAlgebra/HMatrix.hs | 5 +- packages/base/src/Numeric/LinearAlgebra/Static.hs | 16 +++--- .../src/Numeric/LinearAlgebra/Static/Internal.hs | 3 ++ packages/base/src/Numeric/LinearAlgebra/Util.hs | 16 +++--- packages/base/src/Numeric/Sparse.hs | 4 +- packages/base/src/Numeric/Vector.hs | 2 +- 9 files changed, 65 insertions(+), 46 deletions(-) (limited to 'packages') diff --git a/packages/base/src/Data/Packed/Foreign.hs b/packages/base/src/Data/Packed/Foreign.hs index 1ec3694..85b8bc7 100644 --- a/packages/base/src/Data/Packed/Foreign.hs +++ b/packages/base/src/Data/Packed/Foreign.hs @@ -16,7 +16,6 @@ module Data.Packed.Foreign import Data.Packed.Internal import qualified Data.Vector.Storable as S import Foreign (Ptr, ForeignPtr, Storable) -import Foreign.C.Types (CInt) import GHC.Base (IO(..), realWorld#) {-# INLINE unsafeInlinePerformIO #-} diff --git a/packages/base/src/Data/Packed/Internal/Vector.hs b/packages/base/src/Data/Packed/Internal/Vector.hs index ac35596..ac019a8 100644 --- a/packages/base/src/Data/Packed/Internal/Vector.hs +++ b/packages/base/src/Data/Packed/Internal/Vector.hs @@ -25,7 +25,7 @@ module Data.Packed.Internal.Vector ( unsafeToForeignPtr, unsafeFromForeignPtr, unsafeWith, - CInt,Idxs + CInt, I ) where import Data.Packed.Internal.Common @@ -56,8 +56,7 @@ import Data.Vector.Storable(Vector, unsafeFromForeignPtr, unsafeWith) - -type Idxs = Vector CInt +type I = CInt -- | Number of elements dim :: (Storable t) => Vector t -> Int diff --git a/packages/base/src/Numeric/LinearAlgebra/Data.hs b/packages/base/src/Numeric/LinearAlgebra/Data.hs index 8a0b9a2..2aac2e4 100644 --- a/packages/base/src/Numeric/LinearAlgebra/Data.hs +++ b/packages/base/src/Numeric/LinearAlgebra/Data.hs @@ -1,7 +1,7 @@ -------------------------------------------------------------------------------- {- | Module : Numeric.LinearAlgebra.Data -Copyright : (c) Alberto Ruiz 2014 +Copyright : (c) Alberto Ruiz 2015 License : BSD3 Maintainer : Alberto Ruiz Stability : provisional @@ -15,62 +15,76 @@ module Numeric.LinearAlgebra.Data( -- * Vector -- | 1D arrays are storable vectors from the vector package. - + vector, (|>), -- * Matrix - - matrix, (><), tr, - + + matrix, (><), tr, tr', + + -- * Dimensions + + size, rows, cols, + + -- * conversion from\/to lists + fromList, toList, + fromLists, toLists, + row, col, + + -- * conversions vector\/matrix + + flatten, reshape, asRow, asColumn, + fromRows, toRows, fromColumns, toColumns, + -- * Indexing - - size, + + atIndex, Indexable(..), - + -- * Construction scalar, Konst(..), Build(..), assoc, accum, linspace, range, idxs, -- ones, zeros, -- * Diagonal ident, diag, diagl, diagRect, takeDiag, - -- * Data manipulation - fromList, toList, subVector, takesV, vjoin, - flatten, reshape, asRow, asColumn, row, col, - fromRows, toRows, fromColumns, toColumns, fromLists, toLists, fromArray2D, + -- * Vector extraction + subVector, takesV, vjoin, + + -- * Matrix extraction Extractor(..), (??), takeRows, dropRows, takeColumns, dropColumns, subMatrix, (?), (¿), fliprl, flipud, - + + -- * Block matrix fromBlocks, (|||), (===), diagBlock, repmat, toBlocks, toBlocksEvery, -- * Mapping functions conj, cmap, cmod, step, cond, - + -- * Find elements - find, maxIndex, minIndex, maxElement, minElement, atIndex, - sortVector, + find, maxIndex, minIndex, maxElement, minElement, + sortVector, sortIndex, -- * Sparse AssocMatrix, toDense, mkSparse, mkDiagR, mkDense, - + -- * IO disp, loadMatrix, loadMatrix', saveMatrix, latexFormat, dispf, disps, dispcf, format, dispDots, dispBlanks, dispShort, --- * Conversion +-- * Element conversion Convert(..), roundVector, fromInt, -- * Misc arctan2, - rows, cols, separable, - (¦),(——), + fromArray2D, module Data.Complex, - CInt, Idxs, + I, Vector, Matrix, GMatrix, nRows, nCols ) where @@ -81,7 +95,6 @@ import Data.Packed.Numeric import Numeric.LinearAlgebra.Util hiding ((&),(#)) import Data.Complex import Numeric.Sparse -import Data.Packed.Internal.Vector(Idxs) -import Data.Packed.Internal.Numeric(CInt,Extractor(..),(??),fromInt,range,idxs) +import Data.Packed.Internal.Numeric(I,Extractor(..),(??),fromInt,range,idxs) diff --git a/packages/base/src/Numeric/LinearAlgebra/HMatrix.hs b/packages/base/src/Numeric/LinearAlgebra/HMatrix.hs index 8e67eb4..54f066b 100644 --- a/packages/base/src/Numeric/LinearAlgebra/HMatrix.hs +++ b/packages/base/src/Numeric/LinearAlgebra/HMatrix.hs @@ -10,8 +10,11 @@ Stability : provisional -------------------------------------------------------------------------------- module Numeric.LinearAlgebra.HMatrix ( - module Numeric.LinearAlgebra + module Numeric.LinearAlgebra, + (¦),(——) ) where import Numeric.LinearAlgebra +import Numeric.LinearAlgebra.Util + diff --git a/packages/base/src/Numeric/LinearAlgebra/Static.hs b/packages/base/src/Numeric/LinearAlgebra/Static.hs index f7017e7..49327f2 100644 --- a/packages/base/src/Numeric/LinearAlgebra/Static.hs +++ b/packages/base/src/Numeric/LinearAlgebra/Static.hs @@ -34,7 +34,7 @@ module Numeric.LinearAlgebra.Static( linspace, range, dim, -- * Matrix L, Sq, build, - row, col, (¦),(——), splitRows, splitCols, + row, col, (|||),(===), splitRows, splitCols, unrow, uncol, tr, eye, @@ -61,7 +61,7 @@ module Numeric.LinearAlgebra.Static( import GHC.TypeLits import Numeric.LinearAlgebra hiding ( - (<>),(#>),(<·>),Konst(..),diag, disp,(¦),(——), + (<>),(#>),(<·>),Konst(..),diag, disp,(===),(|||), row,col,vector,matrix,linspace,toRows,toColumns, (<\>),fromList,takeDiag,svd,eig,eigSH,eigSH', eigenvalues,eigenvaluesSH,eigenvaluesSH',build, @@ -168,14 +168,14 @@ unrow = mkR . head . LA.toRows . ud2 uncol v = unrow . tr $ v -infixl 2 —— -(——) :: (KnownNat r1, KnownNat r2, KnownNat c) => L r1 c -> L r2 c -> L (r1+r2) c -a —— b = mkL (extract a LA.—— extract b) +infixl 2 === +(===) :: (KnownNat r1, KnownNat r2, KnownNat c) => L r1 c -> L r2 c -> L (r1+r2) c +a === b = mkL (extract a LA.=== extract b) -infixl 3 ¦ --- (¦) :: (KnownNat r, KnownNat c1, KnownNat c2) => L r c1 -> L r c2 -> L r (c1+c2) -a ¦ b = tr (tr a —— tr b) +infixl 3 ||| +-- (|||) :: (KnownNat r, KnownNat c1, KnownNat c2) => L r c1 -> L r c2 -> L r (c1+c2) +a ||| b = tr (tr a === tr b) type Sq n = L n n diff --git a/packages/base/src/Numeric/LinearAlgebra/Static/Internal.hs b/packages/base/src/Numeric/LinearAlgebra/Static/Internal.hs index 7ecb132..7b770e0 100644 --- a/packages/base/src/Numeric/LinearAlgebra/Static/Internal.hs +++ b/packages/base/src/Numeric/LinearAlgebra/Static/Internal.hs @@ -244,11 +244,14 @@ instance (KnownNat n, KnownNat m) => Transposable (L m n) (L n m) where tr a@(isDiag -> Just _) = mkL (extract a) tr (extract -> a) = mkL (tr a) + tr' = tr instance (KnownNat n, KnownNat m) => Transposable (M m n) (M n m) where tr a@(isDiagC -> Just _) = mkM (extract a) tr (extract -> a) = mkM (tr a) + tr' a@(isDiagC -> Just _) = mkM (extract a) + tr' (extract -> a) = mkM (tr' a) -------------------------------------------------------------------------------- diff --git a/packages/base/src/Numeric/LinearAlgebra/Util.hs b/packages/base/src/Numeric/LinearAlgebra/Util.hs index 2e632b7..eadd2a2 100644 --- a/packages/base/src/Numeric/LinearAlgebra/Util.hs +++ b/packages/base/src/Numeric/LinearAlgebra/Util.hs @@ -66,7 +66,7 @@ import Control.Monad(when) import Text.Printf import Data.List.Split(splitOn) import Data.List(intercalate) -import Foreign.C.Types(CInt) +import Data.Packed.Internal.Numeric(I) type ℝ = Double type ℕ = Int @@ -271,7 +271,7 @@ instance Normed (Matrix ℂ) norm_2 = pnorm PNorm2 norm_Inf = pnorm Infinity -instance Normed (Vector CInt) +instance Normed (Vector I) where norm_0 = fromIntegral . sumElements . step . abs norm_1 = fromIntegral . norm1 @@ -299,7 +299,7 @@ mt = trans . inv -------------------------------------------------------------------------------- {- | ->>> size $ fromList[1..10::Double] +>>> size $ vector [1..10] 10 >>> size $ (2><5)[1..10::Double] (2,5) @@ -308,15 +308,15 @@ mt = trans . inv size :: Container c t => c t -> IndexOf c size = size' -{- | +{- | Alternative indexing function. ->>> vect [1..10] ! 3 +>>> vector [1..10] ! 3 4.0 ->>> mat 5 [1..15] ! 1 +>>> matrix 5 [1..15] ! 1 fromList [6.0,7.0,8.0,9.0,10.0] ->>> mat 5 [1..15] ! 1 ! 3 +>>> matrix 5 [1..15] ! 1 ! 3 9.0 -} @@ -333,7 +333,7 @@ instance Indexable (Vector Float) Float where (!) = (@>) -instance Indexable (Vector CInt) CInt +instance Indexable (Vector I) I where (!) = (@>) diff --git a/packages/base/src/Numeric/Sparse.hs b/packages/base/src/Numeric/Sparse.hs index f1516ec..d856287 100644 --- a/packages/base/src/Numeric/Sparse.hs +++ b/packages/base/src/Numeric/Sparse.hs @@ -195,10 +195,12 @@ toDense asm = assoc (r+1,c+1) 0 asm instance Transposable CSR CSC where tr (CSR vs cs rs n m) = CSC vs cs rs m n + tr' = tr instance Transposable CSC CSR where tr (CSC vs rs cs n m) = CSR vs rs cs m n + tr' = tr instance Transposable GMatrix GMatrix where @@ -206,5 +208,5 @@ instance Transposable GMatrix GMatrix tr (SparseC s n m) = SparseR (tr s) m n tr (Diag v n m) = Diag v m n tr (Dense a n m) = Dense (tr a) m n - + tr' = tr diff --git a/packages/base/src/Numeric/Vector.hs b/packages/base/src/Numeric/Vector.hs index 6cac5dc..6245cf7 100644 --- a/packages/base/src/Numeric/Vector.hs +++ b/packages/base/src/Numeric/Vector.hs @@ -32,7 +32,7 @@ adaptScalar f1 f2 f3 x y ------------------------------------------------------------------ -instance Num (Vector CInt) where +instance Num (Vector I) where (+) = adaptScalar addConstant add (flip addConstant) negate = scale (-1) (*) = adaptScalar scale mul (flip scale) -- cgit v1.2.3