accelerate-arithmetic 0.1 → 1.0
raw patch · 5 files changed
+35/−35 lines, 5 filesdep ~acceleratedep ~accelerate-utilitydep ~basePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: accelerate, accelerate-utility, base
API changes (from Hackage documentation)
- Data.Array.Accelerate.LinearAlgebra.Matrix.Sparse: columnMatrix :: Columns ix a -> Matrix ix (Int, a)
- Data.Array.Accelerate.LinearAlgebra.Matrix.Sparse: numCols :: Rows ix a -> Exp Int
- Data.Array.Accelerate.LinearAlgebra.Matrix.Sparse: numRows :: Columns ix a -> Exp Int
- Data.Array.Accelerate.LinearAlgebra.Matrix.Sparse: rowMatrix :: Rows ix a -> Matrix ix (Int, a)
+ Data.Array.Accelerate.LinearAlgebra.Matrix.Sparse: [columnMatrix] :: Columns ix a -> Matrix ix (Int, a)
+ Data.Array.Accelerate.LinearAlgebra.Matrix.Sparse: [numCols] :: Rows ix a -> Exp Int
+ Data.Array.Accelerate.LinearAlgebra.Matrix.Sparse: [numRows] :: Columns ix a -> Exp Int
+ Data.Array.Accelerate.LinearAlgebra.Matrix.Sparse: [rowMatrix] :: Rows ix a -> Matrix ix (Int, a)
- Data.Array.Accelerate.Arithmetic.Interpolation: bisect :: (Slice ix, Shape ix, IsScalar a, Elt a) => Vector ix a -> Scalar ix a -> Scalar ix (Int, Int) -> Scalar ix (Int, Int)
+ Data.Array.Accelerate.Arithmetic.Interpolation: bisect :: (Slice ix, Shape ix, Ord a, Elt a) => Vector ix a -> Scalar ix a -> Scalar ix (Int, Int) -> Scalar ix (Int, Int)
- Data.Array.Accelerate.Arithmetic.Interpolation: lookupInterval :: (Slice ix, Shape ix, IsScalar a, Elt a) => Vector ix a -> Scalar ix a -> Scalar ix Int
+ Data.Array.Accelerate.Arithmetic.Interpolation: lookupInterval :: (Slice ix, Shape ix, Ord a, Elt a) => Vector ix a -> Scalar ix a -> Scalar ix Int
- Data.Array.Accelerate.Arithmetic.Interpolation: sampleBasisFunctions13 :: (Slice ix, Shape ix, Elt a, IsFloating a, Num a) => Interpolator13 (Exp a) -> Vector Z a -> Vector ix a -> Rows ix a
+ Data.Array.Accelerate.Arithmetic.Interpolation: sampleBasisFunctions13 :: (Slice ix, Shape ix, Ord a, Num a) => Interpolator13 (Exp a) -> Vector Z a -> Vector ix a -> Rows ix a
- Data.Array.Accelerate.LinearAlgebra: identity :: (Shape ix, Slice ix, IsNum a, Elt a) => Exp ((ix :. Int) :. Int) -> Matrix ix a
+ Data.Array.Accelerate.LinearAlgebra: identity :: (Shape ix, Slice ix, Elt a, FromIntegral Int a) => Exp ((ix :. Int) :. Int) -> Matrix ix a
- Data.Array.Accelerate.LinearAlgebra: multiplyMatrixMatrix :: (Shape ix, Slice ix, IsNum a, Elt a) => Matrix ix a -> Matrix ix a -> Matrix ix a
+ Data.Array.Accelerate.LinearAlgebra: multiplyMatrixMatrix :: (Shape ix, Slice ix, Num a) => Matrix ix a -> Matrix ix a -> Matrix ix a
- Data.Array.Accelerate.LinearAlgebra: multiplyMatrixVector :: (Shape ix, Slice ix, IsNum a, Elt a) => Matrix ix a -> Vector ix a -> Vector ix a
+ Data.Array.Accelerate.LinearAlgebra: multiplyMatrixVector :: (Shape ix, Slice ix, Num a) => Matrix ix a -> Vector ix a -> Vector ix a
- Data.Array.Accelerate.LinearAlgebra: newtonInverse :: (Shape ix, Slice ix, IsNum a, Elt a) => Exp Int -> Matrix ix a -> Matrix ix a -> Matrix ix a
+ Data.Array.Accelerate.LinearAlgebra: newtonInverse :: (Shape ix, Slice ix, Num a) => Exp Int -> Matrix ix a -> Matrix ix a -> Matrix ix a
- Data.Array.Accelerate.LinearAlgebra: newtonInverseStep :: (Shape ix, Slice ix, IsNum a, Elt a) => Matrix ix a -> Matrix ix a -> Matrix ix a
+ Data.Array.Accelerate.LinearAlgebra: newtonInverseStep :: (Shape ix, Slice ix, Num a) => Matrix ix a -> Matrix ix a -> Matrix ix a
- Data.Array.Accelerate.LinearAlgebra: outer :: (Shape ix, Slice ix, IsNum a, Elt a) => Vector ix a -> Vector ix a -> Matrix ix a
+ Data.Array.Accelerate.LinearAlgebra: outer :: (Shape ix, Slice ix, Num a) => Vector ix a -> Vector ix a -> Matrix ix a
- Data.Array.Accelerate.LinearAlgebra: scaleRows :: (Slice ix, Shape ix, Elt a, IsNum a) => Vector ix a -> Matrix ix a -> Matrix ix a
+ Data.Array.Accelerate.LinearAlgebra: scaleRows :: (Slice ix, Shape ix, Num a) => Vector ix a -> Matrix ix a -> Matrix ix a
- Data.Array.Accelerate.LinearAlgebra.Matrix.Banded: flattenSymmetric :: (Slice ix, Shape ix, Elt a, IsNum a) => Symmetric ix a -> Matrix ix a
+ Data.Array.Accelerate.LinearAlgebra.Matrix.Banded: flattenSymmetric :: (Slice ix, Shape ix, Num a) => Symmetric ix a -> Matrix ix a
- Data.Array.Accelerate.LinearAlgebra.Matrix.Sparse: multiplyColumnsRows :: (Shape ix, Slice ix, IsNum a, Elt a) => Columns ix a -> Rows ix a -> Matrix ix a
+ Data.Array.Accelerate.LinearAlgebra.Matrix.Sparse: multiplyColumnsRows :: (Shape ix, Slice ix, Num a) => Columns ix a -> Rows ix a -> Matrix ix a
- Data.Array.Accelerate.LinearAlgebra.Matrix.Sparse: multiplyColumnsVector :: (Shape ix, Slice ix, IsNum a, Elt a) => Columns ix a -> Vector ix a -> Vector ix a
+ Data.Array.Accelerate.LinearAlgebra.Matrix.Sparse: multiplyColumnsVector :: (Shape ix, Slice ix, Num a) => Columns ix a -> Vector ix a -> Vector ix a
- Data.Array.Accelerate.LinearAlgebra.Matrix.Sparse: multiplyRowsVector :: (Shape ix, Slice ix, IsNum a, Elt a) => Rows ix a -> Vector ix a -> Vector ix a
+ Data.Array.Accelerate.LinearAlgebra.Matrix.Sparse: multiplyRowsVector :: (Shape ix, Slice ix, Num a) => Rows ix a -> Vector ix a -> Vector ix a
- Data.Array.Accelerate.LinearAlgebra.Matrix.Sparse: realBandedGramian :: (Shape ix, Slice ix, IsNum a, Elt a) => Exp Int -> Rows ix a -> Symmetric ix a
+ Data.Array.Accelerate.LinearAlgebra.Matrix.Sparse: realBandedGramian :: (Shape ix, Slice ix, Num a) => Exp Int -> Rows ix a -> Symmetric ix a
- Data.Array.Accelerate.LinearAlgebra.Matrix.Sparse: scaleRowRows :: (Slice ix, Shape ix, Elt a, IsNum a) => Vector ix a -> Rows ix a -> Rows ix a
+ Data.Array.Accelerate.LinearAlgebra.Matrix.Sparse: scaleRowRows :: (Slice ix, Shape ix, Num a) => Vector ix a -> Rows ix a -> Rows ix a
- Data.Array.Accelerate.LinearAlgebra.Matrix.Sparse: transposeColumns :: (Shape ix, Slice ix, IsNum a, Elt a) => Columns ix a -> Rows ix a
+ Data.Array.Accelerate.LinearAlgebra.Matrix.Sparse: transposeColumns :: (Shape ix, Slice ix, Num a) => Columns ix a -> Rows ix a
- Data.Array.Accelerate.LinearAlgebra.Matrix.Sparse: transposeRows :: (Shape ix, Slice ix, IsNum a, Elt a) => Rows ix a -> Columns ix a
+ Data.Array.Accelerate.LinearAlgebra.Matrix.Sparse: transposeRows :: (Shape ix, Slice ix, Num a) => Rows ix a -> Columns ix a
Files
- accelerate-arithmetic.cabal +5/−5
- private/Data/Array/Accelerate/LinearAlgebra/Private.hs +8/−8
- src/Data/Array/Accelerate/Arithmetic/Interpolation.hs +6/−6
- src/Data/Array/Accelerate/LinearAlgebra/Matrix/Banded.hs +4/−3
- src/Data/Array/Accelerate/LinearAlgebra/Matrix/Sparse.hs +12/−13
accelerate-arithmetic.cabal view
@@ -1,5 +1,5 @@ Name: accelerate-arithmetic-Version: 0.1+Version: 1.0 License: BSD3 License-File: LICENSE Author: Henning Thielemann <haskell@henning-thielemann.de>@@ -17,7 +17,7 @@ Build-Type: Simple Source-Repository this- Tag: 0.1+ Tag: 1.0 Type: darcs Location: http://hub.darcs.net/thielema/accelerate-arithmetic/ @@ -27,11 +27,11 @@ Library Build-Depends:- accelerate-utility >=0.1 && <0.2,- accelerate >=0.15 && <0.16,+ accelerate-utility >=1.0 && <1.1,+ accelerate >=1.0 && <1.2, utility-ht >=0.0.8 && <0.1, QuickCheck >=2.4 && <3,- base >=4.5 && <4.10+ base >=4.5 && <4.11 GHC-Options: -Wall -fwarn-missing-import-lists Hs-Source-Dirs: src, private
private/Data/Array/Accelerate/LinearAlgebra/Private.hs view
@@ -63,7 +63,7 @@ outer ::- (A.Shape ix, A.Slice ix, A.IsNum a, A.Elt a) =>+ (A.Shape ix, A.Slice ix, A.Num a) => Vector ix a -> Vector ix a -> Matrix ix a outer x y = A.zipWith (*)@@ -71,7 +71,7 @@ (A.replicate (A.lift $ Any :. numElems x :. All) y) multiplyMatrixVector ::- (A.Shape ix, A.Slice ix, A.IsNum a, A.Elt a) =>+ (A.Shape ix, A.Slice ix, A.Num a) => Matrix ix a -> Vector ix a -> Vector ix a@@ -83,7 +83,7 @@ (A.replicate (A.lift $ Any :. rows :. All) v) multiplyMatrixMatrix ::- (A.Shape ix, A.Slice ix, A.IsNum a, A.Elt a) =>+ (A.Shape ix, A.Slice ix, A.Num a) => Matrix ix a -> Matrix ix a -> Matrix ix a@@ -96,7 +96,7 @@ (A.replicate (A.lift $ Any :. rows :. All :. All) y) newtonInverseStep ::- (A.Shape ix, A.Slice ix, A.IsNum a, A.Elt a) =>+ (A.Shape ix, A.Slice ix, A.Num a) => Matrix ix a -> Matrix ix a -> Matrix ix a@@ -105,15 +105,15 @@ multiplyMatrixMatrix x $ multiplyMatrixMatrix a x identity ::- (A.Shape ix, A.Slice ix, A.IsNum a, A.Elt a) =>+ (A.Shape ix, A.Slice ix, A.Elt a, A.FromIntegral Int a) => Exp (ix :. Int :. Int) -> Matrix ix a identity sh = A.generate sh (withMatrixIndex $- \(_ :. r :. c) -> A.fromIntegral $ A.boolToInt (r A.==* c))+ \(_ :. r :. c) -> A.fromIntegral $ A.boolToInt (r A.== c)) newtonInverse ::- (A.Shape ix, A.Slice ix, A.IsNum a, A.Elt a) =>+ (A.Shape ix, A.Slice ix, A.Num a) => Exp Int -> Matrix ix a -> Matrix ix a ->@@ -124,7 +124,7 @@ scaleRows ::- (A.Slice ix, A.Shape ix, A.Elt a, A.IsNum a) =>+ (A.Slice ix, A.Shape ix, A.Num a) => Vector ix a -> Matrix ix a -> Matrix ix a scaleRows s x = zipScalarVectorWith (*) s x
src/Data/Array/Accelerate/Arithmetic/Interpolation.hs view
@@ -19,7 +19,7 @@ bisect ::- (A.Slice ix, A.Shape ix, A.IsScalar a, A.Elt a) =>+ (A.Slice ix, A.Shape ix, A.Ord a, A.Elt a) => Vector ix a -> Scalar ix a -> Scalar ix (Int, Int) ->@@ -35,11 +35,11 @@ (Exp.mapSnd (const center) interval) (Exp.mapFst (const center) interval)) centers bounds $- A.zipWith (A.<*) xs $+ A.zipWith (A.<) xs $ Arrange.gather (Arrange.mapWithIndex Exp.indexCons centers) nodes lookupInterval ::- (A.Slice ix, A.Shape ix, A.IsScalar a, A.Elt a) =>+ (A.Slice ix, A.Shape ix, A.Ord a, A.Elt a) => Vector ix a -> Scalar ix a -> Scalar ix Int@@ -66,7 +66,7 @@ type Interpolator13 a = (a,a) -> (a,a) -> (a,a) -> (a,a) -> a -> a sampleBasisFunctions13 ::- (A.Slice ix, A.Shape ix, A.Elt a, A.IsFloating a, Num a) =>+ (A.Slice ix, A.Shape ix, A.Ord a, Num a) => Interpolator13 (Exp a) -> Vector Z a -> Vector ix a -> Sparse.Rows ix a sampleBasisFunctions13 interpolate nodes zs =@@ -83,8 +83,8 @@ case (Exp.unliftQuadruple x, Exp.unliftQuadruple y) of ((xm1,x0,x1,x2), (ym1,y0,y1,y2)) -> (ln+k :: Exp Int,- A.cond (n A.<* minIx) y0 $- A.cond (n A.>* maxIx) y1 $+ A.cond (n A.< minIx) y0 $+ A.cond (n A.> maxIx) y1 $ interpolate (xm1,ym1) (x0,y0) (x1,y1) (x2,y2) z)) (A.zip4 indices limitIndices zs (A.zip4
src/Data/Array/Accelerate/LinearAlgebra/Matrix/Banded.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE FlexibleContexts #-} module Data.Array.Accelerate.LinearAlgebra.Matrix.Banded ( Symmetric(..), flattenSymmetric,@@ -8,13 +9,13 @@ import qualified Data.Array.Accelerate.Utility.Lift.Exp as Exp import qualified Data.Array.Accelerate as A import Data.Array.Accelerate.Utility.Lift.Exp (expr)-import Data.Array.Accelerate ((:.)((:.)), (>*), (!), (?))+import Data.Array.Accelerate ((:.)((:.)), (!), (?)) newtype Symmetric ix a = Symmetric (Matrix ix a) flattenSymmetric ::- (A.Slice ix, A.Shape ix, A.Elt a, A.IsNum a) =>+ (A.Slice ix, A.Shape ix, A.Num a) => Symmetric ix a -> Matrix ix a flattenSymmetric (Symmetric m) = case matrixShape m of@@ -23,4 +24,4 @@ Exp.modify (expr:.expr:.expr) $ \(ix:.k0:.j0) -> let k = min k0 j0 j = max k0 j0 - k- in width >* j ? (m ! A.lift(ix:.k:.j), 0)+ in width A.> j ? (m ! A.lift(ix:.k:.j), 0)
src/Data/Array/Accelerate/LinearAlgebra/Matrix/Sparse.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE TypeOperators #-}+{-# LANGUAGE FlexibleContexts #-} module Data.Array.Accelerate.LinearAlgebra.Matrix.Sparse ( Columns(..), multiplyColumnsVector,@@ -18,10 +19,8 @@ import qualified Data.Array.Accelerate as A import Data.Array.Accelerate.Utility.Lift.Exp (expr, ) -import Data.Array.Accelerate.LinearAlgebra- (Matrix, Vector, matrixShape, )-import Data.Array.Accelerate- (Exp, Any(Any), All(All), (:.)((:.)), (>*), (?), )+import Data.Array.Accelerate.LinearAlgebra (Matrix, Vector, matrixShape, )+import Data.Array.Accelerate (Exp, Any(Any), All(All), (:.)((:.)), (?), ) {- |@@ -40,7 +39,7 @@ (A.map A.fst m) multiplyColumnsVector ::- (A.Shape ix, A.Slice ix, A.IsNum a, A.Elt a) =>+ (A.Shape ix, A.Slice ix, A.Num a) => Columns ix a -> Vector ix a -> Vector ix a@@ -54,7 +53,7 @@ (A.replicate (A.lift $ Any :. LinAlg.numRows m :. All) v) transposeColumns ::- (A.Shape ix, A.Slice ix, A.IsNum a, A.Elt a) =>+ (A.Shape ix, A.Slice ix, A.Num a) => Columns ix a -> Rows ix a transposeColumns (Columns n x) =@@ -68,7 +67,7 @@ Rows {numCols :: Exp Int, rowMatrix :: Matrix ix (Int, a)} multiplyRowsVector ::- (A.Shape ix, A.Slice ix, A.IsNum a, A.Elt a) =>+ (A.Shape ix, A.Slice ix, A.Num a) => Rows ix a -> Vector ix a -> Vector ix a@@ -78,14 +77,14 @@ Arrange.gather (realIndex m) v transposeRows ::- (A.Shape ix, A.Slice ix, A.IsNum a, A.Elt a) =>+ (A.Shape ix, A.Slice ix, A.Num a) => Rows ix a -> Columns ix a transposeRows (Rows n x) = (Columns n $ LinAlg.transpose x) multiplyColumnsRows ::- (A.Shape ix, A.Slice ix, A.IsNum a, A.Elt a) =>+ (A.Shape ix, A.Slice ix, A.Num a) => Columns ix a -> Rows ix a -> Matrix ix a@@ -108,7 +107,7 @@ So far, only correct for real matrices. -} realBandedGramian ::- (A.Shape ix, A.Slice ix, A.IsNum a, A.Elt a) =>+ (A.Shape ix, A.Slice ix, A.Num a) => Exp Int -> Rows ix a -> BandMatrix.Symmetric ix a@@ -119,13 +118,13 @@ Arrange.scatter (+) (Arrange.mapWithIndex (Exp.modify2 expr (expr,expr) $ \mix (k,j) ->- k>*j ? (A.ignore, A.lift $ global mix :. k :. j-k)) $+ k A.> j ? (A.ignore, A.lift $ global mix :. k :. j-k)) $ ixs) (A.fill (A.lift $ global (A.shape prods) :. cols :. width) 0) prods matchMatrices ::- (A.Shape ix, A.Slice ix, A.IsNum a, A.Elt a) =>+ (A.Shape ix, A.Slice ix, A.Num a) => Matrix ix (Int, a) -> Matrix ix (Int, a) -> Matrix (ix :. Int) ((Int, Int), a)@@ -141,7 +140,7 @@ scaleRowRows ::- (A.Slice ix, A.Shape ix, A.Elt a, A.IsNum a) =>+ (A.Slice ix, A.Shape ix, A.Num a) => Vector ix a -> Rows ix a -> Rows ix a scaleRowRows s (Rows n x) = Rows n $