packages feed

lapack 0.5.1.1 → 0.5.2

raw patch · 41 files changed

+309/−277 lines, 41 filesdep +containersdep ~comfort-blasdep ~netlib-ffidep ~random

Dependencies added: containers

Dependency ranges changed: comfort-blas, netlib-ffi, random

Files

Makefile view
@@ -9,8 +9,11 @@ run-test-cabal:	update-test 	cabal test --show-details=streaming -update-test:-	doctest-extract-0.1 -i src/ -o test/ --module-prefix DocTest --library-main=Main $$(cat test-module.list)+update-test:	test-module.list+	doctest-extract-0.1 -i src/ -o test/ --module-prefix DocTest --library-main=Main $$(cat $<)++test-module.list:	lapack.cabal+	grep '^ \+DocTest\.Numeric\.LAPACK\.' $< | cut -d. -f2- >$@  %.html: %.md 	pandoc --standalone --metadata pagetitle="$*" --output=$@ $<
lapack.cabal view
@@ -1,6 +1,6 @@ Cabal-Version:    2.2 Name:             lapack-Version:          0.5.1.1+Version:          0.5.2 License:          BSD-3-Clause License-File:     LICENSE Author:           Henning Thielemann <haskell@henning-thielemann.de>@@ -57,7 +57,7 @@   test-module.list  Source-Repository this-  Tag:         0.5.1.1+  Tag:         0.5.2   Type:        darcs   Location:    https://hub.darcs.net/thielema/lapack/ @@ -71,10 +71,10 @@  Library   Build-Depends:-    comfort-blas >=0.0 && <0.1,+    comfort-blas >=0.0.3 && <0.1,     lapack-ffi >=0.0.3 && <0.1,     blas-ffi >=0.0 && <0.2,-    netlib-ffi >=0.1.1 && <0.2,+    netlib-ffi >=0.1.2 && <0.2,     comfort-array-shape >=0.0 && <0.1,     comfort-array >=0.5.2 && <0.6,     guarded-allocation >=0.0 && <0.1,@@ -86,6 +86,7 @@     lazyio >=0.1 && <0.2,     transformers >=0.4 && <0.7,     tfp >=1.0.2 && <1.1,+    containers >=0.4 && <0.8,     semigroups >=0.18.3 && <1.0,     non-empty >=0.3 && <0.4,     Stream >=0.4.7 && <0.5,@@ -166,6 +167,7 @@     Numeric.LAPACK.Matrix.BandedHermitian.Basic     Numeric.LAPACK.Matrix.BandedHermitian.Eigen     Numeric.LAPACK.Matrix.BandedHermitianPositiveDefinite.Linear+    Numeric.LAPACK.Matrix.Layout.Basic     Numeric.LAPACK.Matrix.Layout.Private     Numeric.LAPACK.Matrix.Extent.Private     Numeric.LAPACK.Matrix.Extent.Strict@@ -191,7 +193,6 @@     Numeric.LAPACK.Matrix.Array.Private     Numeric.LAPACK.Matrix.Lazy.UpperTriangular     Numeric.LAPACK.Matrix.ModifierTyped-    Numeric.LAPACK.Matrix.RowMajor     Numeric.LAPACK.Matrix.Private     Numeric.LAPACK.Vector.Private     Numeric.LAPACK.Private
src/Numeric/LAPACK/Format.hs view
@@ -79,7 +79,7 @@    format cfg (a,b,c) = format cfg a /+/ format cfg b /+/ format cfg c  instance (Shape.C sh) => Format (Perm.Permutation sh) where-   format _cfg = Perm.format+   format = Perm.format  instance (FormatArray sh, Class.Floating a) => Format (Array sh a) where    format = formatArray
src/Numeric/LAPACK/Linear/LowerUpper.hs view
@@ -43,7 +43,7 @@ import qualified Numeric.LAPACK.Matrix as Matrix import qualified Numeric.LAPACK.Shape as ExtShape import Numeric.LAPACK.Matrix.Array.Private (Full)-import Numeric.BLAS.Matrix.Modifier (Transposition, Conjugation, Inversion)+import Numeric.Netlib.Modifier (Transposition, Conjugation, Inversion)  import qualified Numeric.Netlib.Class as Class 
src/Numeric/LAPACK/Linear/Plain.hs view
@@ -57,7 +57,7 @@ import Numeric.LAPACK.Matrix.Triangular.Basic (Lower, Upper) import Numeric.LAPACK.Matrix.Layout.Private          (Order(RowMajor, ColumnMajor), Triangle(Triangle))-import Numeric.BLAS.Matrix.Modifier+import Numeric.Netlib.Modifier          (Transposition(NonTransposed, Transposed),           Conjugation(NonConjugated, Conjugated),           Inversion(NonInverted, Inverted))@@ -127,7 +127,7 @@ instance Matrix.Format LU where    type FormatExtra LU extra = extra ~ ()    format fmt lu@(LowerUpper _ipiv m) =-      Perm.format (extractP NonInverted lu)+      Perm.format fmt (extractP NonInverted lu)       /+/       formatArray fmt m 
src/Numeric/LAPACK/Matrix.hs view
@@ -59,6 +59,8 @@    takeTop, takeBottom,    takeLeft, takeRight,    takeRowArray, takeColumnArray,+   takeRowSet, takeColumnSet,+   takeRowIntSet, takeColumnIntSet,    swapRows, swapColumns,    reverseRows, reverseColumns,    fromRowMajor, toRowMajor,@@ -136,7 +138,7 @@ import qualified Numeric.LAPACK.Matrix.Array.Private as ArrMatrix import qualified Numeric.LAPACK.Matrix.Type.Private as Matrix import qualified Numeric.LAPACK.Matrix.Plain as Plain-import qualified Numeric.BLAS.Matrix.Modifier as Mod+import qualified Numeric.Netlib.Modifier as Mod import qualified Numeric.LAPACK.Matrix.Divide as Divide import qualified Numeric.LAPACK.Matrix.Multiply as Multiply import qualified Numeric.LAPACK.Matrix.Shape.Omni as Omni@@ -165,6 +167,8 @@ import qualified Data.NonEmpty as NonEmpty import qualified Data.Either.HT as EitherHT import Data.Function.HT (Id)+import Data.IntSet (IntSet)+import Data.Set (Set)  import Prelude hiding (map) @@ -497,11 +501,48 @@    General height width a -> General sh width a takeRowArray = ArrMatrix.lift1 . Plain.takeRowArray +takeRowSet ::+   (Extent.C vert,+    Shape.Indexed height, Shape.Index height ~ ix, Ord ix,+    Shape.C width, Class.Floating a) =>+   Set ix ->+   Full Extent.Size vert Extent.Big height width a ->+   Full Extent.Size vert Extent.Big (Set ix) width a+takeRowSet = ArrMatrix.lift1 . Plain.takeRowSet++takeRowIntSet ::+   (Extent.C vert,+    Shape.Indexed height, Shape.Index height ~ Int,+    Shape.C width, Class.Floating a) =>+   IntSet ->+   Full Extent.Size vert Extent.Big height width a ->+   Full Extent.Size vert Extent.Big IntSet width a+takeRowIntSet = ArrMatrix.lift1 . Plain.takeRowIntSet++ takeColumnArray ::    (Shape.C height, Shape.Indexed width, Shape.C sh, Class.Floating a) =>    BoxedArray.Array sh (Shape.Index width) ->    General height width a -> General height sh a takeColumnArray = ArrMatrix.lift1 . Plain.takeColumnArray++takeColumnSet ::+   (Extent.C horiz,+    Shape.Indexed width, Shape.Index width ~ ix, Ord ix,+    Shape.C height, Class.Floating a) =>+   Set ix ->+   Full Extent.Size Extent.Big horiz height width a ->+   Full Extent.Size Extent.Big horiz height (Set ix) a+takeColumnSet = ArrMatrix.lift1 . Plain.takeColumnSet++takeColumnIntSet ::+   (Extent.C horiz,+    Shape.Indexed width, Shape.Index width ~ Int,+    Shape.C height, Class.Floating a) =>+   IntSet ->+   Full Extent.Size Extent.Big horiz height width a ->+   Full Extent.Size Extent.Big horiz height IntSet a+takeColumnIntSet = ArrMatrix.lift1 . Plain.takeColumnIntSet   
src/Numeric/LAPACK/Matrix/Array/Multiply.hs view
@@ -32,7 +32,7 @@ import Numeric.LAPACK.Matrix.Array.Banded (Banded) import Numeric.LAPACK.Matrix.Array.Private (ArrayMatrix, diagTag) import Numeric.LAPACK.Matrix.Type.Private (Matrix)-import Numeric.BLAS.Matrix.Modifier (Transposition(NonTransposed,Transposed))+import Numeric.Netlib.Modifier (Transposition(NonTransposed,Transposed)) import Numeric.LAPACK.Matrix.Shape.Omni (StripSingleton(StripBands, StripFilled)) import Numeric.LAPACK.Vector (Vector) import Numeric.LAPACK.Shape.Private (Unchecked(Unchecked, deconsUnchecked))
src/Numeric/LAPACK/Matrix/Banded/Basic.hs view
@@ -38,15 +38,15 @@ import qualified Numeric.LAPACK.Matrix.Triangular.Basic as Triangular import qualified Numeric.LAPACK.Matrix.Mosaic.Generic as Mosaic import qualified Numeric.LAPACK.Matrix.Mosaic.Private as Mos-import qualified Numeric.LAPACK.Matrix.RowMajor as RowMajor import qualified Numeric.LAPACK.Matrix.Private as Matrix import qualified Numeric.LAPACK.Vector as Vector import qualified Numeric.LAPACK.Private as Private+import qualified Numeric.BLAS.Matrix.RowMajor as RowMajor import qualified Data.Array.Comfort.Shape.Static as ShapeStatic import Numeric.LAPACK.Matrix.Layout.Private          (Order(RowMajor,ColumnMajor), transposeFromOrder, swapOnRowMajor,           UnaryProxy, addOffDiagonals)-import Numeric.BLAS.Matrix.Modifier (Conjugation(NonConjugated))+import Numeric.Netlib.Modifier (Conjugation(NonConjugated)) import Numeric.LAPACK.Vector (Vector) import Numeric.LAPACK.Scalar (zero, one) import Numeric.LAPACK.Matrix.Extent.Private (Extent)
src/Numeric/LAPACK/Matrix/BandedHermitian.hs view
@@ -47,7 +47,7 @@ import Numeric.LAPACK.Matrix.Array.Mosaic (FlexHermitian) import Numeric.LAPACK.Matrix.Array.Private (Full) import Numeric.LAPACK.Matrix.Layout.Private (Order, UnaryProxy, natFromProxy)-import Numeric.BLAS.Matrix.Modifier (Transposition(NonTransposed, Transposed))+import Numeric.Netlib.Modifier (Transposition(NonTransposed, Transposed)) import Numeric.LAPACK.Vector (Vector) import Numeric.LAPACK.Scalar (RealOf) 
src/Numeric/LAPACK/Matrix/BandedHermitian/Basic.hs view
@@ -27,19 +27,19 @@ import qualified Numeric.LAPACK.Matrix.Extent as Extent import qualified Numeric.LAPACK.Matrix.Banded.Basic as Banded import qualified Numeric.LAPACK.Matrix.Mosaic.Private as Mos-import qualified Numeric.LAPACK.Matrix.RowMajor as RowMajor import qualified Numeric.LAPACK.Matrix.Private as Matrix import qualified Numeric.LAPACK.Vector.Private as VectorPriv import qualified Numeric.LAPACK.Vector as Vector+import qualified Numeric.BLAS.Matrix.RowMajor as RowMajor import qualified Data.Array.Comfort.Shape.Static as ShapeStatic import Numeric.LAPACK.Matrix.Hermitian.Private (TakeDiagonal(..)) import Numeric.LAPACK.Matrix.Hermitian.Basic (Hermitian) import Numeric.LAPACK.Matrix.Layout.Private-         (Order(RowMajor,ColumnMajor), uploFromOrder,+         (Order(RowMajor,ColumnMajor), uploFromOrder, conjugatedOnRowMajor,           UnaryProxy, natFromProxy)-import Numeric.BLAS.Matrix.Modifier+import Numeric.Netlib.Modifier          (Transposition(NonTransposed, Transposed), transposeOrder,-          Conjugation(NonConjugated), conjugatedOnRowMajor)+          Conjugation(NonConjugated)) import Numeric.LAPACK.Vector (Vector) import Numeric.LAPACK.Scalar (RealOf, zero, one) import Numeric.LAPACK.Private@@ -74,6 +74,7 @@  import Control.Monad.Trans.Cont (ContT(ContT), evalContT) import Control.Monad.IO.Class (liftIO)+import Control.Monad (when)  import Data.Foldable (for_) import Data.Tuple.HT (mapPair)@@ -192,10 +193,10 @@                   (n-1) k                   lda (advancePtr aPtr (k+1))                   ldb (advancePtr bPtr (k+1))-               fill zero k (advancePtr bPtr (ldb*n-k))+               when (n>0) $ fill zero k (advancePtr bPtr (ldb*n-k))             RowMajor -> do                copySubMatrix lda n lda aPtr ldb (advancePtr bPtr k)-               fill zero k bPtr+               when (n>0) $ fill zero k bPtr                rowToColumnMajor copyConjugate                   (n-1) k                   lda (advancePtr aPtr 1)
src/Numeric/LAPACK/Matrix/BandedHermitian/Eigen.hs view
@@ -11,8 +11,8 @@ import qualified Numeric.LAPACK.Matrix.Private as Matrix import qualified Numeric.LAPACK.Shape as ExtShape import Numeric.LAPACK.Matrix.Hermitian.Private (TakeDiagonal(..))-import Numeric.LAPACK.Matrix.Layout.Private (uploFromOrder)-import Numeric.BLAS.Matrix.Modifier (conjugatedOnRowMajor)+import Numeric.LAPACK.Matrix.Layout.Private+         (uploFromOrder, conjugatedOnRowMajor) import Numeric.LAPACK.Vector (Vector) import Numeric.LAPACK.Scalar (RealOf) import Numeric.LAPACK.Private
src/Numeric/LAPACK/Matrix/BandedHermitianPositiveDefinite/Linear.hs view
@@ -16,7 +16,7 @@ import Numeric.LAPACK.Matrix.Hermitian.Private (Determinant(..)) import Numeric.LAPACK.Matrix.Mosaic.Private (copyTriangleToTemp) import Numeric.LAPACK.Matrix.Layout.Private (uploFromOrder)-import Numeric.BLAS.Matrix.Modifier (Conjugation(Conjugated))+import Numeric.Netlib.Modifier (Conjugation(Conjugated)) import Numeric.LAPACK.Matrix.Private (Full) import Numeric.LAPACK.Scalar (RealOf, realPart) import Numeric.LAPACK.Private (copyBlock, withInfo, rankMsg, definiteMsg)
src/Numeric/LAPACK/Matrix/Basic.hs view
@@ -4,12 +4,12 @@  import qualified Numeric.LAPACK.Matrix.Layout.Private as Layout import qualified Numeric.LAPACK.Matrix.Extent.Private as Extent-import qualified Numeric.LAPACK.Matrix.RowMajor as RowMajor import qualified Numeric.LAPACK.Vector as Vector import qualified Numeric.LAPACK.Private as Private+import qualified Numeric.BLAS.Matrix.RowMajor as RowMajor import Numeric.LAPACK.Matrix.Layout.Private-         (Order(RowMajor, ColumnMajor), transposeFromOrder, flipOrder)-import Numeric.BLAS.Matrix.Modifier (Conjugation(NonConjugated))+         (Order(RowMajor, ColumnMajor), transposeFromOrder)+import Numeric.Netlib.Modifier (Conjugation(NonConjugated)) import Numeric.LAPACK.Matrix.Private          (Full, Tall, Wide, Square, General, fromFull, ShapeInt, revealOrder) import Numeric.LAPACK.Vector (Vector)@@ -37,6 +37,11 @@ import Data.Complex (Complex)  ++fullExtent ::+   Full meas vert horiz height width a -> Extent meas vert horiz height width+fullExtent = Layout.fullExtent . Array.shape+ caseTallWide ::    (Extent.Measure meas, Extent.C vert, Extent.C horiz,     Shape.C height, Shape.C width) =>@@ -366,11 +371,7 @@    General heightB widthA a -> Full meas vert horiz heightB widthB a ->    Full meas vert horiz (heightA::+heightB) (widthA::+widthB) a stackBiased vertBias horizBias a b c d =-   mapExtent-      (\ _ ->-         Extent.stack-            (Layout.fullExtent $ Array.shape a)-            (Layout.fullExtent $ Array.shape d)) $+   mapExtent (\ _ -> Extent.stack (fullExtent a) (fullExtent d)) $    above vertBias Extent.appendAny       (beside horizBias Extent.appendAny (fromFull a) b)       (beside horizBias Extent.appendAny c (fromFull d))@@ -511,37 +512,47 @@    Full meas vert horiz fuse width a ->    Full meas vert horiz height width a -- preserve order of the right factor-multiply-   (Array (Layout.Full orderA extentA) a)-   (Array (Layout.Full orderB extentB) b) =-   case Extent.fuse extentA extentB of-      Nothing -> error "multiply: fuse shapes mismatch"-      Just extent ->-         Array.unsafeCreate (Layout.Full orderB extent) $ \cPtr -> do--      let (height,fuse) = Extent.dimensions extentA-      let width = Extent.width extentB-      let m = Shape.size height-      let n = Shape.size width-      let k = Shape.size fuse-      case orderB of-         RowMajor ->-            Private.multiplyMatrix (flipOrder orderB) (flipOrder orderA)-               n k m b a cPtr-         ColumnMajor -> Private.multiplyMatrix orderA orderB m k n a b cPtr+multiply a b =+   fullFromTransposable (Extent.fuseUnchecked (fullExtent a) (fullExtent b)) $+   let at = transposableFromFull a in+   let bt = transposableFromFull b in+   case bt of+      RowMajor.NonTransposed _ ->+         RowMajor.NonTransposed $+         RowMajor.multiplyTransposable at bt+      RowMajor.Transposed _ ->+         RowMajor.Transposed $+         RowMajor.multiplyTransposable+            (RowMajor.transposeTransposable bt)+            (RowMajor.transposeTransposable at)  -- always return ColumnMajor-multiplyColumnMajor-   (Array (Layout.Full orderA extentA) a)-   (Array (Layout.Full orderB extentB) b) =-   case Extent.fuse extentA extentB of-      Nothing -> error "multiply: fuse shapes mismatch"-      Just extent ->-         Array.unsafeCreate (Layout.Full ColumnMajor extent) $ \cPtr -> do+multiplyColumnMajor a b =+   fullFromTransposable (Extent.fuseUnchecked (fullExtent a) (fullExtent b)) $+   RowMajor.Transposed $+   RowMajor.multiplyTransposable+      (RowMajor.transposeTransposable $ transposableFromFull b)+      (RowMajor.transposeTransposable $ transposableFromFull a) -      let (height,fuse) = Extent.dimensions extentA-      let width = Extent.width extentB-      let m = Shape.size height-      let n = Shape.size width-      let k = Shape.size fuse-      Private.multiplyMatrix orderA orderB m k n a b cPtr++transposableFromFull ::+   (Extent.Measure meas, Extent.C vert, Extent.C horiz) =>+   Full meas vert horiz height width a ->+   RowMajor.Transposable height width a+transposableFromFull (Array (Layout.Full order extent) a) =+   let (height,width) = Extent.dimensions extent in+   case order of+      RowMajor -> RowMajor.NonTransposed $ Array (height,width) a+      ColumnMajor -> RowMajor.Transposed $ Array (width,height) a++fullFromTransposable ::+   (Extent.Measure meas, Extent.C vert, Extent.C horiz) =>+   Extent meas vert horiz height width ->+   RowMajor.Transposable height width a ->+   Full meas vert horiz height width a+fullFromTransposable extent at =+   case at of+      RowMajor.NonTransposed a ->+         Array.reshape (Layout.Full RowMajor extent) a+      RowMajor.Transposed a ->+         Array.reshape (Layout.Full ColumnMajor extent) a
src/Numeric/LAPACK/Matrix/Divide.hs view
@@ -20,7 +20,7 @@ import qualified Numeric.LAPACK.Vector as Vector import Numeric.LAPACK.Matrix.Array.Private (Full) import Numeric.LAPACK.Matrix.Type.Private (scaleWithCheck)-import Numeric.BLAS.Matrix.Modifier+import Numeric.Netlib.Modifier          (Transposition(NonTransposed,Transposed),           Inversion(Inverted)) import Numeric.LAPACK.Vector (Vector)
src/Numeric/LAPACK/Matrix/Extent/Private.hs view
@@ -482,6 +482,14 @@ fuse (Square s0) (Square s1) = toMaybe (s0==s1) $ Square s0 fuse (Separate h f0) (Separate f1 w) = toMaybe (f0==f1) $ Separate h w +fuseUnchecked ::+   (Measure meas, C vert, C horiz) =>+   Extent meas vert horiz height fuse ->+   Extent meas vert horiz fuse width ->+   Extent meas vert horiz height width+fuseUnchecked (Square s0) (Square _s1) = Square s0+fuseUnchecked (Separate h _f0) (Separate _f1 w) = Separate h w+ relaxMeasureWith ::    (Measure measA, Measure measB,     MultiplyMeasure measA measB ~ measC,
src/Numeric/LAPACK/Matrix/Hermitian.hs view
@@ -87,7 +87,7 @@           SymmetricP) import Numeric.LAPACK.Matrix.Array.Private (Full, General, Square, packTag) import Numeric.LAPACK.Matrix.Layout.Private (Order)-import Numeric.BLAS.Matrix.Modifier (Transposition(NonTransposed, Transposed))+import Numeric.Netlib.Modifier (Transposition(NonTransposed, Transposed)) import Numeric.LAPACK.Matrix.Private (ShapeInt) import Numeric.LAPACK.Vector (Vector) import Numeric.LAPACK.Scalar (RealOf, one)
src/Numeric/LAPACK/Matrix/Hermitian/Basic.hs view
@@ -21,10 +21,9 @@           rowMajorPointers, columnMajorPointers,           withPacking, noLabel, applyFuncPair, triArg) import Numeric.LAPACK.Matrix.Layout.Private-         (Order(RowMajor,ColumnMajor), uploFromOrder)-import Numeric.BLAS.Matrix.Modifier-         (Transposition(NonTransposed, Transposed),-          Conjugation(Conjugated), conjugatedOnRowMajor)+         (Order(RowMajor,ColumnMajor), uploFromOrder, conjugatedOnRowMajor)+import Numeric.Netlib.Modifier+         (Transposition(NonTransposed, Transposed), Conjugation(Conjugated)) import Numeric.LAPACK.Vector (Vector) import Numeric.LAPACK.Scalar (RealOf, zero) import Numeric.LAPACK.Private (fill, realPtr, condConjugate)
src/Numeric/LAPACK/Matrix/Hermitian/Eigen.hs view
@@ -11,8 +11,8 @@ import qualified Numeric.LAPACK.Shape as ExtShape import Numeric.LAPACK.Matrix.Hermitian.Basic (Hermitian, HermitianP) import Numeric.LAPACK.Matrix.Square.Basic (Square)-import Numeric.LAPACK.Matrix.Layout.Private (Order(ColumnMajor), uploFromOrder)-import Numeric.BLAS.Matrix.Modifier (conjugatedOnRowMajor)+import Numeric.LAPACK.Matrix.Layout.Private+         (Order(ColumnMajor), uploFromOrder, conjugatedOnRowMajor) import Numeric.LAPACK.Vector (Vector) import Numeric.LAPACK.Scalar (RealOf) import Numeric.LAPACK.Private
src/Numeric/LAPACK/Matrix/HermitianPositiveDefinite/Linear.hs view
@@ -18,7 +18,7 @@          (withPackingLinear, label, applyFuncPair, triArg, copyTriangleToTemp) import Numeric.LAPACK.Matrix.Mosaic.Basic (takeDiagonal) import Numeric.LAPACK.Matrix.Layout.Private (uploFromOrder)-import Numeric.BLAS.Matrix.Modifier (Conjugation(Conjugated))+import Numeric.Netlib.Modifier (Conjugation(Conjugated)) import Numeric.LAPACK.Matrix.Private (Full) import Numeric.LAPACK.Linear.Private (solver) import Numeric.LAPACK.Scalar (RealOf, realPart, zero)
src/Numeric/LAPACK/Matrix/Layout.hs view
@@ -2,7 +2,7 @@    General,    Tall,    Wide,-   Square,+   Square, squareSize,    Full(..), fullHeight, fullWidth,    Order(..), flipOrder,    general,
+ src/Numeric/LAPACK/Matrix/Layout/Basic.hs view
@@ -0,0 +1,32 @@+module Numeric.LAPACK.Matrix.Layout.Basic where++import qualified Numeric.Netlib.Modifier as Modi+import Numeric.Netlib.Layout (Order(RowMajor,ColumnMajor))++import Data.Tuple.HT (swap)+++transposeFromOrder :: Order -> Char+transposeFromOrder RowMajor = 'T'+transposeFromOrder ColumnMajor = 'N'++swapOnRowMajor :: Order -> (a,a) -> (a,a)+swapOnRowMajor order =+   case order of+      RowMajor -> swap+      ColumnMajor -> id++sideSwapFromOrder :: Order -> (a,a) -> (Char, (a,a))+sideSwapFromOrder order (m0,n0) =+   let ((side,m), (_,n)) = swapOnRowMajor order (('L', m0), ('R', n0))+   in (side,(m,n))+++conjugatedOnRowMajor :: Order -> Modi.Conjugation+conjugatedOnRowMajor RowMajor = Modi.Conjugated+conjugatedOnRowMajor ColumnMajor = Modi.NonConjugated+++uploFromOrder :: Order -> Char+uploFromOrder RowMajor = 'L'+uploFromOrder ColumnMajor = 'U'
src/Numeric/LAPACK/Matrix/Layout/Private.hs view
@@ -5,12 +5,16 @@ {-# LANGUAGE GADTs #-} module Numeric.LAPACK.Matrix.Layout.Private (    module Numeric.LAPACK.Matrix.Layout.Private,-   module Numeric.BLAS.Matrix.Layout,+   module Numeric.LAPACK.Matrix.Layout.Basic,+   Order(..), flipOrder,    ) where  import qualified Numeric.LAPACK.Matrix.Extent.Private as Extent import Numeric.LAPACK.Matrix.Extent.Private (Extent)-import Numeric.BLAS.Matrix.Layout (Order(..), flipOrder, transposeFromOrder)+import Numeric.LAPACK.Matrix.Layout.Basic+         (transposeFromOrder, swapOnRowMajor, uploFromOrder,+          sideSwapFromOrder, conjugatedOnRowMajor)+import Numeric.Netlib.Layout (Order(..), flipOrder)  import qualified Type.Data.Num.Unary.Literal as TypeNum import qualified Type.Data.Num.Unary.Proof as Proof@@ -30,18 +34,6 @@ import Data.Bool.HT (if')  -swapOnRowMajor :: Order -> (a,a) -> (a,a)-swapOnRowMajor order =-   case order of-      RowMajor -> swap-      ColumnMajor -> id--sideSwapFromOrder :: Order -> (a,a) -> (Char, (a,a))-sideSwapFromOrder order (m0,n0) =-   let ((side,m), (_,n)) = swapOnRowMajor order (('L', m0), ('R', n0))-   in (side,(m,n))-- mapChecked ::    (Shape.C sha, Shape.C shb) =>    String -> (sha -> shb) -> sha -> shb@@ -131,7 +123,10 @@    Full meas vert horiz height width -> width fullWidth = Extent.width . fullExtent +squareSize :: Square sh -> sh+squareSize = Extent.squareSize . fullExtent + fullIndices ::    (Extent.Measure meas, Extent.C vert, Extent.C horiz,     Shape.Indexed a, Shape.Indexed b) =>@@ -455,10 +450,6 @@ hermitianFromSymmetric :: SymmetricP pack size -> HermitianP pack size hermitianFromSymmetric (Mosaic pack SimpleMirror upper order size) =    Mosaic pack ConjugateMirror upper order size--uploFromOrder :: Order -> Char-uploFromOrder RowMajor = 'L'-uploFromOrder ColumnMajor = 'U'   
src/Numeric/LAPACK/Matrix/ModifierTyped.hs view
@@ -1,7 +1,7 @@ {-# LANGUAGE GADTs #-} module Numeric.LAPACK.Matrix.ModifierTyped where -import qualified Numeric.BLAS.Matrix.Modifier as Mod+import qualified Numeric.Netlib.Modifier as Mod import qualified Numeric.LAPACK.Matrix.Extent.Private as Extent import Numeric.LAPACK.Matrix.Extent.Private (Extent, Small) 
src/Numeric/LAPACK/Matrix/Mosaic/Private.hs view
@@ -9,7 +9,7 @@ import qualified Numeric.LAPACK.Matrix.Extent.Private as Extent import Numeric.LAPACK.Matrix.Layout.Private          (Order(RowMajor,ColumnMajor), flipOrder, uploFromOrder)-import Numeric.BLAS.Matrix.Modifier (Conjugation(NonConjugated))+import Numeric.Netlib.Modifier (Conjugation(NonConjugated)) import Numeric.LAPACK.Matrix.Private (Full) import Numeric.LAPACK.Scalar (zero) import Numeric.LAPACK.Shape.Private (Unchecked(Unchecked))
src/Numeric/LAPACK/Matrix/Multiply.hs view
@@ -14,7 +14,7 @@ import qualified Numeric.LAPACK.Matrix.Class as MatrixClass import qualified Numeric.LAPACK.Matrix.Type.Private as Matrix import qualified Numeric.LAPACK.Matrix.Basic as FullBasic-import qualified Numeric.BLAS.Matrix.Modifier as Mod+import qualified Numeric.Netlib.Modifier as Mod import qualified Numeric.LAPACK.Matrix.Shape.Omni as Omni import qualified Numeric.LAPACK.Matrix.Shape as MatrixShape import qualified Numeric.LAPACK.Matrix.Layout.Private as Layout@@ -24,7 +24,7 @@ import qualified Numeric.LAPACK.Vector as Vector import Numeric.LAPACK.Matrix.Array.Private (Full) import Numeric.LAPACK.Matrix.Type.Private (Matrix, scaleWithCheck)-import Numeric.BLAS.Matrix.Modifier (Transposition(NonTransposed,Transposed))+import Numeric.Netlib.Modifier (Transposition(NonTransposed,Transposed)) import Numeric.LAPACK.Vector (Vector)  import qualified Numeric.Netlib.Class as Class
src/Numeric/LAPACK/Matrix/Permutation.hs view
@@ -20,7 +20,7 @@ import qualified Numeric.LAPACK.Matrix.Shape.Omni as Omni import qualified Numeric.LAPACK.Matrix.Layout.Private as Layout import qualified Numeric.LAPACK.Matrix.Extent.Private as Extent-import qualified Numeric.BLAS.Matrix.Modifier as Mod+import qualified Numeric.Netlib.Modifier as Mod import qualified Numeric.LAPACK.Permutation.Private as Plain import qualified Numeric.LAPACK.Permutation as Perm import Numeric.LAPACK.Matrix.Type.Private (Matrix(Permutation))
src/Numeric/LAPACK/Matrix/Plain.hs view
@@ -31,6 +31,8 @@    Basic.takeTop, Basic.takeBottom,    Basic.takeLeft, Basic.takeRight,    takeRowArray, takeColumnArray,+   takeRowSet, takeColumnSet,+   takeRowIntSet, takeColumnIntSet,    swapRows, swapColumns,    reverseRows, reverseColumns,    fromRowMajor, toRowMajor,@@ -54,11 +56,11 @@ import qualified Numeric.LAPACK.Matrix.Square.Basic as Square import qualified Numeric.LAPACK.Matrix.Extent.Private as Extent import qualified Numeric.LAPACK.Matrix.Basic as Basic-import qualified Numeric.LAPACK.Matrix.RowMajor as RowMajor import qualified Numeric.LAPACK.Matrix.Private as Matrix import qualified Numeric.LAPACK.Vector.Private as VectorPriv import qualified Numeric.LAPACK.Vector as Vector import qualified Numeric.LAPACK.Shape as ExtShape+import qualified Numeric.BLAS.Matrix.RowMajor as RowMajor import Numeric.LAPACK.Matrix.Layout.Private          (Order(RowMajor, ColumnMajor), transposeFromOrder) import Numeric.LAPACK.Matrix.Basic@@ -66,7 +68,7 @@ import Numeric.LAPACK.Matrix.Private          (Full, Tall, Wide, General, ShapeInt, shapeInt,           mapExtent, fromFull, generalizeTall, generalizeWide)-import Numeric.BLAS.Matrix.Modifier (Conjugation(NonConjugated,Conjugated))+import Numeric.Netlib.Modifier (Conjugation(NonConjugated,Conjugated)) import Numeric.LAPACK.Vector (Vector) import Numeric.LAPACK.Scalar (zero, one) import Numeric.LAPACK.Private (pointerSeq, fill, copySubMatrix, copyBlock)@@ -96,6 +98,10 @@ import qualified Data.NonEmpty.Mixed as NonEmptyM import qualified Data.NonEmpty as NonEmpty import qualified Data.Foldable as Fold+import qualified Data.IntSet as IntSet+import qualified Data.Set as Set+import Data.IntSet (IntSet)+import Data.Set (Set) import Data.Foldable (forM_) import Data.Maybe (listToMaybe) import Data.Bool.HT (if')@@ -393,19 +399,25 @@ For scattered rows in column major order the function has quite ugly memory access patterns. -}-takeRowArray ::-   (Shape.Indexed height, Shape.C width, Shape.C sh, Class.Floating a) =>-   BoxedArray.Array sh (Shape.Index height) ->-   General height width a -> General sh width a-takeRowArray ixs (Array (Layout.Full order extent) a) =+takeSelectedRows ::+   (Shape.Indexed heightA, Shape.Index heightA ~ ix,+    Shape.C heightB, Shape.C width, Class.Floating a,+    Extent.C vert, Extent.C horiz) =>+   (Extent.Extent Extent.Size vert horiz heightA width ->+    Extent.Extent Extent.Size vert horiz heightB width) ->+   [ix] ->+   Full Extent.Size vert horiz heightA width a ->+   Full Extent.Size vert horiz heightB width a+takeSelectedRows makeExtent ixs (Array (Layout.Full order extent) a) =    let (heightA, width) = Extent.dimensions extent-       heightB = BoxedArray.shape ixs-       offsets = map (Shape.offset heightA) $ BoxedArray.toList ixs+       newExtent = makeExtent extent+       heightB = Extent.height newExtent+       offsets = map (Shape.offset heightA) ixs        startBlocks blocks = zip (scanl (+) 0 $ map fst blocks) blocks        ma = Shape.size heightA        mb = Shape.size heightB        n = Shape.size width-   in Array.unsafeCreate (Layout.general order heightB width) $ \bPtr ->+   in Array.unsafeCreate (Layout.Full order newExtent) $ \bPtr ->       withForeignPtr a $ \aPtr ->       case order of          RowMajor -> do@@ -439,14 +451,66 @@    NonEmptyM.groupBy (\i j -> i+1 == j)  +takeRowArray ::+   (Shape.Indexed heightA, Shape.C width, Shape.C heightB, Class.Floating a) =>+   BoxedArray.Array heightB (Shape.Index heightA) ->+   General heightA width a -> General heightB width a+takeRowArray ixs =+   takeSelectedRows+      (\extent -> Extent.general (BoxedArray.shape ixs) (Extent.width extent))+      (BoxedArray.toList ixs)++takeRowSet ::+   (Extent.C vert,+    Shape.Indexed height, Shape.Index height ~ ix, Ord ix,+    Shape.C width, Class.Floating a) =>+   Set ix ->+   Full Extent.Size vert Extent.Big height width a ->+   Full Extent.Size vert Extent.Big (Set ix) width a+takeRowSet ixs =+   takeSelectedRows+      (Extent.reduceWideHeight ixs)+      (Set.toAscList ixs)++takeRowIntSet ::+   (Extent.C vert,+    Shape.Indexed height, Shape.Index height ~ Int,+    Shape.C width, Class.Floating a) =>+   IntSet ->+   Full Extent.Size vert Extent.Big height width a ->+   Full Extent.Size vert Extent.Big IntSet width a+takeRowIntSet ixs =+   takeSelectedRows+      (Extent.reduceWideHeight ixs)+      (IntSet.toAscList ixs)++ takeColumnArray ::    (Shape.C height, Shape.Indexed width, Shape.C sh, Class.Floating a) =>    BoxedArray.Array sh (Shape.Index width) ->    General height width a -> General height sh a takeColumnArray ixs = transpose . takeRowArray ixs . transpose +takeColumnSet ::+   (Extent.C horiz,+    Shape.Indexed width, Shape.Index width ~ ix, Ord ix,+    Shape.C height, Class.Floating a) =>+   Set ix ->+   Full Extent.Size Extent.Big horiz height width a ->+   Full Extent.Size Extent.Big horiz height (Set ix) a+takeColumnSet ixs = transpose . takeRowSet ixs . transpose +takeColumnIntSet ::+   (Extent.C horiz,+    Shape.Indexed width, Shape.Index width ~ Int,+    Shape.C height, Class.Floating a) =>+   IntSet ->+   Full Extent.Size Extent.Big horiz height width a ->+   Full Extent.Size Extent.Big horiz height IntSet a+takeColumnIntSet ixs = transpose . takeRowIntSet ixs . transpose ++ fromRowMajor ::    (Shape.C height, Shape.C width, Storable a) =>    Array (height,width) a -> General height width a@@ -600,9 +664,12 @@        shc =          Layout.Full orderB $          Extent.kronecker (Layout.fullExtent $ Array.shape a) extentB+       at = Basic.transposableFromFull a    in either-         (Array.reshape shc . RowMajor.kronecker a)-         (Array.reshape shc . RowMajor.kronecker (transpose a)) $+         (Array.reshape shc . RowMajor.kroneckerLeftTransposable at)+         (Array.reshape shc .+            RowMajor.kroneckerLeftTransposable+               (RowMajor.transposeTransposable at)) $       Matrix.revealOrder b  
− src/Numeric/LAPACK/Matrix/RowMajor.hs
@@ -1,80 +0,0 @@-{-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE TypeOperators #-}-module Numeric.LAPACK.Matrix.RowMajor (-   Matrix,-   Matrix.takeRow,-   Matrix.takeColumn,-   Matrix.fromRows,-   Matrix.tensorProduct,-   Matrix.decomplex,-   Matrix.recomplex,-   Matrix.scaleRows,-   Matrix.scaleColumns,-   kronecker,-   ) where--import qualified Numeric.LAPACK.Matrix.Layout.Private as Layout-import qualified Numeric.LAPACK.Matrix.Extent.Private as Extent-import Numeric.LAPACK.Matrix.Private (Full)--import qualified Numeric.BLAS.Matrix.RowMajor as Matrix-import Numeric.BLAS.Matrix.RowMajor (Matrix)-import Numeric.BLAS.Matrix.Layout (Order(RowMajor, ColumnMajor))-import Numeric.BLAS.Scalar (zero, one)--import qualified Numeric.BLAS.FFI.Generic as BlasGen-import qualified Numeric.Netlib.Utility as Call-import qualified Numeric.Netlib.Class as Class--import Foreign.Marshal.Array (advancePtr)-import Foreign.ForeignPtr (withForeignPtr)--import Control.Monad.Trans.Cont (ContT(ContT), evalContT)-import Control.Monad.IO.Class (liftIO)-import Control.Applicative (liftA2)--import qualified Data.Array.Comfort.Storable.Unchecked as Array-import qualified Data.Array.Comfort.Shape as Shape-import Data.Array.Comfort.Storable.Unchecked (Array(Array))--import Data.Foldable (forM_)---kronecker ::-   (Extent.Measure meas, Extent.C vert, Extent.C horiz,-    Shape.C heightA, Shape.C widthA, Shape.C heightB, Shape.C widthB,-    Class.Floating a) =>-   Full meas vert horiz heightA widthA a ->-   Matrix heightB widthB a ->-   Matrix (heightA,heightB) (widthA,widthB) a-kronecker-      (Array (Layout.Full orderA extentA) a) (Array (heightB,widthB) b) =-   let (heightA,widthA) = Extent.dimensions extentA-   in Array.unsafeCreate ((heightA,heightB), (widthA,widthB)) $ \cPtr ->-      evalContT $ do-   let (ma,na) = (Shape.size heightA, Shape.size widthA)-   let (mb,nb) = (Shape.size heightB, Shape.size widthB)-   let (lda,istep) =-         case orderA of-            RowMajor -> (1,na)-            ColumnMajor -> (ma,1)-   transaPtr <- Call.char 'N'-   transbPtr <- Call.char 'T'-   mPtr <- Call.cint na-   nPtr <- Call.cint nb-   kPtr <- Call.cint 1-   alphaPtr <- Call.number one-   aPtr <- ContT $ withForeignPtr a-   ldaPtr <- Call.leadingDim lda-   bPtr <- ContT $ withForeignPtr b-   ldbPtr <- Call.leadingDim 1-   betaPtr <- Call.number zero-   ldcPtr <- Call.leadingDim nb-   liftIO $-      forM_ (liftA2 (,) (take ma [0..]) (take mb [0..])) $ \(i,j) -> do-         let aiPtr = advancePtr aPtr (istep*i)-         let bjPtr = advancePtr bPtr (nb*j)-         let cijPtr = advancePtr cPtr (na*nb*(j+mb*i))-         BlasGen.gemm-            transbPtr transaPtr nPtr mPtr kPtr alphaPtr-            bjPtr ldbPtr aiPtr ldaPtr betaPtr cijPtr ldcPtr
src/Numeric/LAPACK/Matrix/Square/Basic.hs view
@@ -41,8 +41,8 @@ import qualified Numeric.LAPACK.Matrix.Private as Matrix import qualified Numeric.LAPACK.Vector as Vector import qualified Numeric.LAPACK.Private as Private-import Numeric.LAPACK.Matrix.Layout.Private-         (Order(RowMajor, ColumnMajor), swapOnRowMajor)+import qualified Numeric.BLAS.Matrix.RowMajor as RowMajor+import Numeric.LAPACK.Matrix.Layout.Private (Order(RowMajor, ColumnMajor)) import Numeric.LAPACK.Matrix.Private          (General, argGeneral, LiberalSquare, Square, argSquare,           Full, mapExtent, ShapeInt, shapeInt)@@ -71,6 +71,7 @@ import Control.Monad.IO.Class (liftIO)  import Data.Function.HT (powerAssociative)+import Data.Tuple.HT (double)   mapSize :: (sh0 -> sh1) -> Square sh0 a -> Square sh1 a@@ -145,7 +146,7 @@ identityFromHeight =    argGeneral $ \order height _ _ -> identityOrder order height -identityOrder, _identityOrder ::+identityOrder ::    (Shape.C sh, Class.Floating a) => Order -> sh -> Square sh a identityOrder order sh =    Array.unsafeCreate (Layout.square order sh) $ \aPtr ->@@ -156,22 +157,6 @@       betaPtr <- Call.number one       liftIO $ LapackGen.laset uploPtr nPtr nPtr alphaPtr betaPtr aPtr nPtr -_identityOrder order sh =-   Array.unsafeCreateWithSize (Layout.square order sh) $ \blockSize yPtr ->-   evalContT $ do-      nPtr <- Call.alloca-      xPtr <- Call.number zero-      incxPtr <- Call.cint 0-      incyPtr <- Call.cint 1-      liftIO $ do-         pokeCInt nPtr blockSize-         BlasGen.copy nPtr xPtr incxPtr yPtr incyPtr-         let n = fromIntegral $ Shape.size sh-         poke nPtr n-         poke xPtr one-         poke incyPtr (n+1)-         BlasGen.copy nPtr xPtr incxPtr yPtr incyPtr- diagonal :: (Shape.C sh, Class.Floating a) => Vector sh a -> Square sh a diagonal (Array sh x) =    Array.unsafeCreateWithSize (Layout.square ColumnMajor sh) $@@ -252,10 +237,11 @@ multiplyCommutativeUnchecked ::    (Shape.C sh, Class.Floating a) =>    Square sh a -> Square sh a -> Square sh a-multiplyCommutativeUnchecked-   (Array shape@(Layout.Full order extent) a)-   (Array _ b) =-      Array.unsafeCreate shape $ \cPtr ->-   let n = Shape.size $ Extent.height extent-       (at,bt) = swapOnRowMajor order (a,b)-   in  Private.multiplyMatrix ColumnMajor ColumnMajor n n n at bt cPtr+multiplyCommutativeUnchecked a b =+   Array.reshape (Array.shape b) $+   RowMajor.multiply+      (array2FromSquare $ Basic.uncheck a)+      (array2FromSquare $ Basic.uncheck b)++array2FromSquare :: Square sh a -> RowMajor.Square sh a+array2FromSquare = Array.mapShape (double . Layout.squareSize)
src/Numeric/LAPACK/Matrix/Symmetric/Basic.hs view
@@ -18,7 +18,7 @@          (withPacking, noLabel, applyFuncPair, triArg) import Numeric.LAPACK.Matrix.Layout.Private          (MirrorSingleton(SimpleMirror), Order, uploFromOrder)-import Numeric.BLAS.Matrix.Modifier (Conjugation(NonConjugated))+import Numeric.Netlib.Modifier (Conjugation(NonConjugated)) import Numeric.LAPACK.Vector (Vector) import Numeric.LAPACK.Scalar (zero) import Numeric.LAPACK.Private (fill)
src/Numeric/LAPACK/Matrix/Symmetric/Unified.hs view
@@ -20,9 +20,10 @@           noLabel, label, applyFuncPair, triArg,           Labelled(Labelled)) import Numeric.LAPACK.Matrix.Layout.Private-         (Order(RowMajor,ColumnMajor), uploFromOrder, uploOrder)-import Numeric.BLAS.Matrix.Modifier-         (Conjugation(NonConjugated, Conjugated), conjugatedOnRowMajor,+         (Order(RowMajor,ColumnMajor), uploFromOrder, uploOrder,+          conjugatedOnRowMajor)+import Numeric.Netlib.Modifier+         (Conjugation(NonConjugated, Conjugated),           Transposition(NonTransposed, Transposed), transposeOrder) import Numeric.LAPACK.Matrix.Private (Full, General, Square) import Numeric.LAPACK.Linear.Private (solver, withDeterminantInfo, diagonalMsg)
src/Numeric/LAPACK/Matrix/Type/Private.hs view
@@ -191,7 +191,7 @@  instance Format Permutation where    type FormatExtra Permutation extra = ()-   format _fmt (Permutation perm) = Perm.format perm+   format cfg (Permutation perm) = Perm.format cfg perm   {- |
src/Numeric/LAPACK/Orthogonal/Householder.hs view
@@ -31,12 +31,12 @@ import qualified Numeric.LAPACK.Matrix.Array.Private as ArrMatrix import qualified Numeric.LAPACK.Matrix.Extent.Strict as ExtentStrict import qualified Numeric.LAPACK.Matrix.Extent as Extent-import qualified Numeric.BLAS.Matrix.Modifier as Mod+import qualified Numeric.Netlib.Modifier as Mod import qualified Numeric.LAPACK.Shape as ExtShape import Numeric.LAPACK.Orthogonal.Plain (Householder) import Numeric.LAPACK.Matrix.Array.Mosaic (Upper) import Numeric.LAPACK.Matrix.Array.Private (Full, Square)-import Numeric.BLAS.Matrix.Modifier (Transposition, Conjugation)+import Numeric.Netlib.Modifier (Transposition, Conjugation)  import qualified Numeric.Netlib.Class as Class 
src/Numeric/LAPACK/Orthogonal/Plain.hs view
@@ -29,7 +29,7 @@ import Numeric.LAPACK.Matrix.Layout.Private          (Order(RowMajor, ColumnMajor), sideSwapFromOrder) import Numeric.LAPACK.Matrix.Extent.Private (Extent)-import Numeric.BLAS.Matrix.Modifier+import Numeric.Netlib.Modifier          (Transposition(NonTransposed, Transposed),           Conjugation(NonConjugated, Conjugated)) import Numeric.LAPACK.Matrix.Private (Full)
src/Numeric/LAPACK/Permutation.hs view
@@ -18,7 +18,7 @@  import qualified Numeric.LAPACK.Permutation.Private as Plain import qualified Numeric.LAPACK.Matrix.Array.Private as ArrMatrix-import qualified Numeric.BLAS.Matrix.Modifier as Mod+import qualified Numeric.Netlib.Modifier as Mod import qualified Numeric.LAPACK.Matrix.Extent.Private as Extent import Numeric.LAPACK.Permutation.Private (Permutation) import Numeric.LAPACK.Matrix.Array.Private (Full, Square)
src/Numeric/LAPACK/Permutation/Private.hs view
@@ -5,9 +5,10 @@ import qualified Numeric.LAPACK.Matrix.Layout.Private as Layout import qualified Numeric.LAPACK.Matrix.Extent.Private as Extent import qualified Numeric.LAPACK.Output as Output+import Numeric.LAPACK.Matrix.Plain.Format (Config(configEmpty)) import Numeric.LAPACK.Output (Output, formatAligned) import Numeric.LAPACK.Matrix.Layout.Private (Order(RowMajor, ColumnMajor))-import Numeric.BLAS.Matrix.Modifier+import Numeric.Netlib.Modifier          (Transposition(NonTransposed,Transposed),           Inversion(NonInverted,Inverted)) import Numeric.LAPACK.Matrix.Private (Full, Square)@@ -68,10 +69,10 @@ newtype Permutation sh = Permutation (Vector (Shape sh) (Element sh))    deriving (Eq, Show) -format :: (Shape.C sh, Output out) => Permutation sh -> out-format (Permutation perm) =+format :: (Shape.C sh, Output out) => Config -> Permutation sh -> out+format cfg (Permutation perm) =    let n = Shape.size $ Array.shape perm-       s0 = Output.text "."+       s0 = Output.text $ configEmpty cfg        s1 = Output.text "1"    in formatAligned $       map (\k -> map Identity $ replicate (k-1) s0 ++ s1 : replicate (n-k) s0) $
src/Numeric/LAPACK/Private.hs view
@@ -1,8 +1,7 @@ {-# LANGUAGE TypeFamilies #-} module Numeric.LAPACK.Private where -import Numeric.LAPACK.Matrix.Layout.Private-         (Order(RowMajor, ColumnMajor), transposeFromOrder)+import Numeric.LAPACK.Matrix.Layout.Private (Order(RowMajor, ColumnMajor)) import Numeric.LAPACK.Wrapper (Flip(Flip, getFlip))  import qualified Numeric.LAPACK.FFI.Generic as LapackGen@@ -411,35 +410,6 @@    when (n == 0 && isZero beta) $       Marshal.with 0 $ \incbPtr ->       BlasGen.copy mtPtr betaPtr incbPtr yPtr incyPtr---multiplyMatrix ::-   (Class.Floating a) =>-   Order -> Order -> Int -> Int -> Int ->-   ForeignPtr a -> ForeignPtr a -> Ptr a -> IO ()-multiplyMatrix orderA orderB m k n a b cPtr = evalContT $ do-   let lda = case orderA of RowMajor -> k; ColumnMajor -> m-   let ldb = case orderB of RowMajor -> n; ColumnMajor -> k-   let ldc = m-   if k==0-      then liftIO $ fill zero (m*n) cPtr-      else do-      transaPtr <- Call.char $ transposeFromOrder orderA-      transbPtr <- Call.char $ transposeFromOrder orderB-      mPtr <- Call.cint m-      nPtr <- Call.cint n-      kPtr <- Call.cint k-      alphaPtr <- Call.number one-      aPtr <- ContT $ withForeignPtr a-      ldaPtr <- Call.leadingDim lda-      bPtr <- ContT $ withForeignPtr b-      ldbPtr <- Call.leadingDim ldb-      betaPtr <- Call.number zero-      ldcPtr <- Call.leadingDim ldc-      liftIO $-         BlasGen.gemm-            transaPtr transbPtr mPtr nPtr kPtr alphaPtr aPtr ldaPtr-            bPtr ldbPtr betaPtr cPtr ldcPtr   
src/Numeric/LAPACK/Split.hs view
@@ -14,7 +14,7 @@           swapOnRowMajor, sideSwapFromOrder,           Triangle, uploFromOrder, flipOrder) import Numeric.LAPACK.Matrix.Extent.Private (Extent)-import Numeric.BLAS.Matrix.Modifier+import Numeric.Netlib.Modifier          (Transposition, transposeOrder,           Conjugation(NonConjugated, Conjugated)) import Numeric.LAPACK.Matrix.Private (Full)
test-module.list view
@@ -1,3 +1,3 @@-Numeric.LAPACK.Permutation.Private-Numeric.LAPACK.Example.DividedDifference Numeric.LAPACK.Example.EconomicAllocation+Numeric.LAPACK.Example.DividedDifference+Numeric.LAPACK.Permutation.Private
test/DocTest/Main.hs view
@@ -1,14 +1,14 @@ -- Do not edit! Automatically created with doctest-extract. module DocTest.Main where -import qualified DocTest.Numeric.LAPACK.Permutation.Private-import qualified DocTest.Numeric.LAPACK.Example.DividedDifference import qualified DocTest.Numeric.LAPACK.Example.EconomicAllocation+import qualified DocTest.Numeric.LAPACK.Example.DividedDifference+import qualified DocTest.Numeric.LAPACK.Permutation.Private  import qualified Test.DocTest.Driver as DocTest  main :: DocTest.T () main = do-    DocTest.Numeric.LAPACK.Permutation.Private.test-    DocTest.Numeric.LAPACK.Example.DividedDifference.test     DocTest.Numeric.LAPACK.Example.EconomicAllocation.test+    DocTest.Numeric.LAPACK.Example.DividedDifference.test+    DocTest.Numeric.LAPACK.Permutation.Private.test
test/DocTest/Numeric/LAPACK/Permutation/Private.hs view
@@ -1,11 +1,11 @@ -- Do not edit! Automatically created with doctest-extract from src/Numeric/LAPACK/Permutation/Private.hs-{-# LINE 48 "src/Numeric/LAPACK/Permutation/Private.hs" #-}+{-# LINE 49 "src/Numeric/LAPACK/Permutation/Private.hs" #-}  module DocTest.Numeric.LAPACK.Permutation.Private where  import qualified Test.DocTest.Driver as DocTest -{-# LINE 49 "src/Numeric/LAPACK/Permutation/Private.hs" #-}+{-# LINE 50 "src/Numeric/LAPACK/Permutation/Private.hs" #-} import     qualified Test.QuickCheck as QC import     Test.Permutation (genPerm, genPivots) @@ -25,21 +25,21 @@  test :: DocTest.T () test = do- DocTest.printPrefix "Numeric.LAPACK.Permutation.Private:110: "-{-# LINE 110 "src/Numeric/LAPACK/Permutation/Private.hs" #-}+ DocTest.printPrefix "Numeric.LAPACK.Permutation.Private:111: "+{-# LINE 111 "src/Numeric/LAPACK/Permutation/Private.hs" #-}  DocTest.property(-{-# LINE 110 "src/Numeric/LAPACK/Permutation/Private.hs" #-}+{-# LINE 111 "src/Numeric/LAPACK/Permutation/Private.hs" #-}       QC.forAll QC.arbitraryBoundedEnum $ \inv -> QC.forAll (QC.arbitrary >>= genPivots) $ \xs -> xs == Perm.toPivots inv (Perm.fromPivots inv xs)   )- DocTest.printPrefix "Numeric.LAPACK.Permutation.Private:193: "-{-# LINE 193 "src/Numeric/LAPACK/Permutation/Private.hs" #-}+ DocTest.printPrefix "Numeric.LAPACK.Permutation.Private:194: "+{-# LINE 194 "src/Numeric/LAPACK/Permutation/Private.hs" #-}  DocTest.property(-{-# LINE 193 "src/Numeric/LAPACK/Permutation/Private.hs" #-}+{-# LINE 194 "src/Numeric/LAPACK/Permutation/Private.hs" #-}       QC.forAll genPerm2 $ \(p0,p1) -> determinant (multiply p0 p1) == determinant p0 <> determinant p1   )- DocTest.printPrefix "Numeric.LAPACK.Permutation.Private:222: "-{-# LINE 222 "src/Numeric/LAPACK/Permutation/Private.hs" #-}+ DocTest.printPrefix "Numeric.LAPACK.Permutation.Private:223: "+{-# LINE 223 "src/Numeric/LAPACK/Permutation/Private.hs" #-}  DocTest.property(-{-# LINE 222 "src/Numeric/LAPACK/Permutation/Private.hs" #-}+{-# LINE 223 "src/Numeric/LAPACK/Permutation/Private.hs" #-}       QC.forAll genPerm2 $ \(p0,p1) -> transpose (multiply p0 p1) == multiply (transpose p1) (transpose p0)   )