From c0409bdce707fed49bedb213c21e6cc3e23b9aec Mon Sep 17 00:00:00 2001 From: Alberto Ruiz Date: Thu, 28 May 2015 10:32:21 +0200 Subject: remap autoconformable --- packages/base/src/Data/Packed/Numeric.hs | 6 +++++- packages/base/src/Numeric/LinearAlgebra/Util.hs | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/base/src/Data/Packed/Numeric.hs b/packages/base/src/Data/Packed/Numeric.hs index 80f1718..7d77b19 100644 --- a/packages/base/src/Data/Packed/Numeric.hs +++ b/packages/base/src/Data/Packed/Numeric.hs @@ -68,6 +68,7 @@ module Data.Packed.Numeric ( ) where import Data.Packed +import Data.Packed.Internal(conformMs) import Data.Packed.Internal.Numeric import Data.Complex import Numeric.LinearAlgebra.Algorithms(Field,linearSolveSVD) @@ -318,6 +319,9 @@ cselect = cselect' remap :: Element t => Matrix I -> Matrix I -> Matrix t -> Matrix t remap i j m | minElement i >= 0 && maxElement i < fromIntegral (rows m) && - minElement j >= 0 && maxElement j < fromIntegral (cols m) = remapM i j m + minElement j >= 0 && maxElement j < fromIntegral (cols m) = remapM i' j' m | otherwise = error $ "out of range index in rmap" + where + [i',j'] = conformMs [i,j] + diff --git a/packages/base/src/Numeric/LinearAlgebra/Util.hs b/packages/base/src/Numeric/LinearAlgebra/Util.hs index 60079e7..f09bdb5 100644 --- a/packages/base/src/Numeric/LinearAlgebra/Util.hs +++ b/packages/base/src/Numeric/LinearAlgebra/Util.hs @@ -485,5 +485,6 @@ test = (and ok, print ok) md = fromInt m :: Matrix Double ok = [ tr m <> m == toInt (tr md <> md) , m <> tr m == toInt (md <> tr md) + , m ?? (Take 2, Take 3) == remap (asColumn (range 2)) (asRow (range 3)) m ] -- cgit v1.2.3