summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Config.hs11
-rw-r--r--lib/Data/Packed/Internal/Matrix.hs2
-rw-r--r--lib/Data/Packed/Internal/Vector.hs2
-rw-r--r--lib/Numeric/ContainerBoot.hs30
-rw-r--r--lib/Numeric/LinearAlgebra/Util.hs4
5 files changed, 34 insertions, 15 deletions
diff --git a/Config.hs b/Config.hs
index a81676f..5145d1a 100644
--- a/Config.hs
+++ b/Config.hs
@@ -48,20 +48,20 @@ writeTestProg bInfo contents = writeFile (testProgLoc bInfo) contents
48 48
49-- compile, discarding error messages 49-- compile, discarding error messages
50compile cmd = do 50compile cmd = do
51 let processRecord = (shell $ join cmd) { std_out = CreatePipe 51 let processRecord = (shell $ unwords cmd) { std_out = CreatePipe
52 , std_err = CreatePipe } 52 , std_err = CreatePipe }
53 ( _, _, _, h) <- createProcess processRecord 53 ( _, _, _, h) <- createProcess processRecord
54 waitForProcess h 54 waitForProcess h
55 55
56-- command to compile the test program 56-- command to compile the test program
57compileCmd bInfo buildInfo = [ "gcc " 57compileCmd bInfo buildInfo = [ "gcc "
58 , (join $ ccOptions buildInfo) 58 , (unwords $ ccOptions buildInfo)
59 , (join $ cppOptions buildInfo) 59 , (unwords $ cppOptions buildInfo)
60 , (join $ map ("-I"++) $ includeDirs buildInfo) 60 , (unwords $ map ("-I"++) $ includeDirs buildInfo)
61 , testProgLoc bInfo 61 , testProgLoc bInfo
62 , "-o" 62 , "-o"
63 , testOutLoc bInfo 63 , testOutLoc bInfo
64 , (join $ map ("-L"++) $ extraLibDirs buildInfo) 64 , (unwords $ map ("-L"++) $ extraLibDirs buildInfo)
65 ] 65 ]
66 66
67-- compile a simple program with symbols from GSL and LAPACK with the given libs 67-- compile a simple program with symbols from GSL and LAPACK with the given libs
@@ -72,7 +72,6 @@ testprog bInfo buildInfo libs fmks = do
72 ++ [ (prepend "-l" $ libs) 72 ++ [ (prepend "-l" $ libs)
73 , (prepend "-framework " fmks) ] 73 , (prepend "-framework " fmks) ]
74 74
75join = intercalate " "
76prepend x = unwords . map (x++) . words 75prepend x = unwords . map (x++) . words
77 76
78check bInfo buildInfo libs fmks = (ExitSuccess ==) `fmap` testprog bInfo buildInfo libs fmks 77check bInfo buildInfo libs fmks = (ExitSuccess ==) `fmap` testprog bInfo buildInfo libs fmks
diff --git a/lib/Data/Packed/Internal/Matrix.hs b/lib/Data/Packed/Internal/Matrix.hs
index 255009c..7504b39 100644
--- a/lib/Data/Packed/Internal/Matrix.hs
+++ b/lib/Data/Packed/Internal/Matrix.hs
@@ -154,7 +154,7 @@ toLists m = splitEvery (cols m) . toList . flatten $ m
154fromRows :: Element t => [Vector t] -> Matrix t 154fromRows :: Element t => [Vector t] -> Matrix t
155fromRows vs = case compatdim (map dim vs) of 155fromRows vs = case compatdim (map dim vs) of
156 Nothing -> error "fromRows applied to [] or to vectors with different sizes" 156 Nothing -> error "fromRows applied to [] or to vectors with different sizes"
157 Just c -> reshape c . join . map (adapt c) $ vs 157 Just c -> reshape c . Data.Packed.Internal.Vector.join . map (adapt c) $ vs
158 where 158 where
159 adapt c v | dim v == c = v 159 adapt c v | dim v == c = v
160 | otherwise = constantD (v@>0) c 160 | otherwise = constantD (v@>0) c
diff --git a/lib/Data/Packed/Internal/Vector.hs b/lib/Data/Packed/Internal/Vector.hs
index 85e7f4f..c99f4f0 100644
--- a/lib/Data/Packed/Internal/Vector.hs
+++ b/lib/Data/Packed/Internal/Vector.hs
@@ -16,7 +16,7 @@
16module Data.Packed.Internal.Vector ( 16module Data.Packed.Internal.Vector (
17 Vector, dim, 17 Vector, dim,
18 fromList, toList, (|>), 18 fromList, toList, (|>),
19 join, (@>), safe, at, at', subVector, takesV, 19 Data.Packed.Internal.Vector.join, (@>), safe, at, at', subVector, takesV,
20 mapVector, mapVectorWithIndex, zipVectorWith, unzipVectorWith, 20 mapVector, mapVectorWithIndex, zipVectorWith, unzipVectorWith,
21 mapVectorM, mapVectorM_, mapVectorWithIndexM, mapVectorWithIndexM_, 21 mapVectorM, mapVectorM_, mapVectorWithIndexM, mapVectorWithIndexM_,
22 foldVector, foldVectorG, foldLoop, foldVectorWithIndex, 22 foldVector, foldVectorG, foldLoop, foldVectorWithIndex,
diff --git a/lib/Numeric/ContainerBoot.hs b/lib/Numeric/ContainerBoot.hs
index d50dd36..dcb326c 100644
--- a/lib/Numeric/ContainerBoot.hs
+++ b/lib/Numeric/ContainerBoot.hs
@@ -510,20 +510,40 @@ type instance ElementOf (Matrix a) = a
510class Build f where 510class Build f where
511 build' :: BoundsOf f -> f -> ContainerOf f 511 build' :: BoundsOf f -> f -> ContainerOf f
512 512
513type family BoundsOf x
514 513
514#if MIN_VERSION_base(4,7,0)
515-- ghc >= 7.7 considers:
516--
517-- > a -> a
518-- > b -> b -> b
519--
520-- to overlap
521type family BoundsOf x where
522 BoundsOf (a -> a) = Int
523 BoundsOf (a->a->a) = (Int,Int)
524type family ContainerOf x where
525 ContainerOf (a->a) = Vector a
526 ContainerOf (a->a->a) = Matrix a
527#else
528type family BoundsOf x
529type family ContainerOf x
515type instance BoundsOf (a->a) = Int 530type instance BoundsOf (a->a) = Int
516type instance BoundsOf (a->a->a) = (Int,Int) 531type instance BoundsOf (a->a->a) = (Int,Int)
517
518type family ContainerOf x
519
520type instance ContainerOf (a->a) = Vector a 532type instance ContainerOf (a->a) = Vector a
521type instance ContainerOf (a->a->a) = Matrix a 533type instance ContainerOf (a->a->a) = Matrix a
534#endif
535
522 536
523instance (Element a, Num a) => Build (a->a) where 537instance (Element a, Num a) => Build (a->a) where
524 build' = buildV 538 build' = buildV
525 539
526instance (Element a, Num a) => Build (a->a->a) where 540instance (Element a,
541#if MIN_VERSION_base(4,7,0)
542 BoundsOf (a -> a -> a) ~ (Int,Int),
543 ContainerOf (a -> a -> a) ~ Matrix a,
544#endif
545 Num a)
546 => Build (a->a->a) where
527 build' = buildM 547 build' = buildM
528 548
529buildM (rc,cc) f = fromLists [ [f r c | c <- cs] | r <- rs ] 549buildM (rc,cc) f = fromLists [ [f r c | c <- cs] | r <- rs ]
diff --git a/lib/Numeric/LinearAlgebra/Util.hs b/lib/Numeric/LinearAlgebra/Util.hs
index 39566ab..532556e 100644
--- a/lib/Numeric/LinearAlgebra/Util.hs
+++ b/lib/Numeric/LinearAlgebra/Util.hs
@@ -97,7 +97,7 @@ ones r c = konst 1 (r,c)
97-- | concatenation of real vectors 97-- | concatenation of real vectors
98infixl 3 & 98infixl 3 &
99(&) :: Vector Double -> Vector Double -> Vector Double 99(&) :: Vector Double -> Vector Double -> Vector Double
100a & b = join [a,b] 100a & b = Numeric.Container.join [a,b]
101 101
102-- | horizontal concatenation of real matrices 102-- | horizontal concatenation of real matrices
103infixl 3 ! 103infixl 3 !
@@ -206,7 +206,7 @@ vec = flatten . trans
206 206
207vech :: Element t => Matrix t -> Vector t 207vech :: Element t => Matrix t -> Vector t
208-- ^ half-vectorization (of the lower triangular part) 208-- ^ half-vectorization (of the lower triangular part)
209vech m = join . zipWith f [0..] . toColumns $ m 209vech m = Numeric.Container.join . zipWith f [0..] . toColumns $ m
210 where 210 where
211 f k v = subVector k (dim v - k) v 211 f k v = subVector k (dim v - k) v
212 212