-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Linear algebra and interpolation using the Accelerate framework -- -- Linear algebra and interpolation via the accelerate package. -- This can be used for computations on GPUs but it does not contain -- processor optimizations or optimizations for CUDA. @package accelerate-arithmetic @version 0.1 module Data.Array.Accelerate.LinearAlgebra type Scalar ix a = Acc (Array ix a) type Vector ix a = Acc (Array (ix :. Int) a) type Matrix ix a = Acc (Array ((ix :. Int) :. Int) a) transpose :: (Shape ix, Slice ix, Elt a) => Matrix ix a -> Matrix ix a numElems :: (Shape ix, Slice ix, Elt a) => Vector ix a -> Exp Int numRows :: (Shape ix, Slice ix, Elt a) => Matrix ix a -> Exp Int numCols :: (Shape ix, Slice ix, Elt a) => Matrix ix a -> Exp Int vectorShape :: (Shape ix, Slice ix, Elt a) => Vector ix a -> Exp ix :. Exp Int matrixShape :: (Shape ix, Slice ix, Elt a) => Matrix ix a -> (Exp ix :. Exp Int) :. Exp Int withVectorIndex :: (Shape ix, Slice ix, Lift Exp a) => (Exp ix :. Exp Int -> a) -> (Exp (ix :. Int) -> Exp (Plain a)) withMatrixIndex :: (Shape ix, Slice ix, Lift Exp a) => ((Exp ix :. Exp Int) :. Exp Int -> a) -> (Exp ((ix :. Int) :. Int) -> Exp (Plain a)) outer :: (Shape ix, Slice ix, IsNum a, Elt a) => Vector ix a -> Vector ix a -> Matrix ix a multiplyMatrixVector :: (Shape ix, Slice ix, IsNum a, Elt a) => Matrix ix a -> Vector ix a -> Vector ix a multiplyMatrixMatrix :: (Shape ix, Slice ix, IsNum a, Elt a) => Matrix ix a -> Matrix ix a -> Matrix ix a newtonInverse :: (Shape ix, Slice ix, IsNum a, Elt a) => Exp Int -> Matrix ix a -> Matrix ix a -> Matrix ix a newtonInverseStep :: (Shape ix, Slice ix, IsNum a, Elt a) => Matrix ix a -> Matrix ix a -> Matrix ix a identity :: (Shape ix, Slice ix, IsNum a, Elt a) => Exp ((ix :. Int) :. Int) -> Matrix ix a scaleRows :: (Slice ix, Shape ix, Elt a, IsNum a) => Vector ix a -> Matrix ix a -> Matrix ix a zipScalarVectorWith :: (Slice ix, Shape ix, Elt a, Elt b, Elt c) => (Exp a -> Exp b -> Exp c) -> Scalar ix a -> Vector ix b -> Vector ix c zipScalarMatrixWith :: (Slice ix, Shape ix, Elt a, Elt b, Elt c) => (Exp a -> Exp b -> Exp c) -> Scalar ix a -> Matrix ix b -> Matrix ix c columnFromVector :: (Shape ix, Slice ix, Elt a) => Vector ix a -> Matrix ix a -- | input must be a matrix with exactly one column vectorFromColumn :: (Shape ix, Slice ix, Elt a) => Matrix ix a -> Vector ix a flattenMatrix :: (Slice ix, Shape ix, Elt a) => Matrix ix a -> Vector ix a restoreMatrix :: (Slice ix, Shape ix, Elt a) => Exp Int -> Vector ix a -> Matrix ix a extrudeVector :: (Shape ix, Slice ix, Elt a) => Exp ix -> Vector Z a -> Vector ix a extrudeMatrix :: (Shape ix, Slice ix, Elt a) => Exp ix -> Matrix Z a -> Matrix ix a zipExtrudedVectorWith :: (Slice ix, Shape ix, Elt a, Elt b, Elt c) => (Exp a -> Exp b -> Exp c) -> Vector Z a -> Vector ix b -> Vector ix c zipExtrudedMatrixWith :: (Slice ix, Shape ix, Elt a, Elt b, Elt c) => (Exp a -> Exp b -> Exp c) -> Matrix Z a -> Matrix ix b -> Matrix ix c gatherFromVector :: (Shape ix, Elt a) => Scalar ix Int -> Vector Z a -> Scalar ix a module Data.Array.Accelerate.LinearAlgebra.Matrix.Banded newtype Symmetric ix a Symmetric :: (Matrix ix a) -> Symmetric ix a flattenSymmetric :: (Slice ix, Shape ix, Elt a, IsNum a) => Symmetric ix a -> Matrix ix a module Data.Array.Accelerate.LinearAlgebra.Matrix.Sparse -- | Sparse matrix with a definite number of non-zero entries per column. data Columns ix a Columns :: Exp Int -> Matrix ix (Int, a) -> Columns ix a numRows :: Columns ix a -> Exp Int columnMatrix :: Columns ix a -> Matrix ix (Int, a) multiplyColumnsVector :: (Shape ix, Slice ix, IsNum a, Elt a) => Columns ix a -> Vector ix a -> Vector ix a transposeColumns :: (Shape ix, Slice ix, IsNum a, Elt a) => Columns ix a -> Rows ix a -- | Sparse matrix with a definite number of non-zero entries per row. data Rows ix a Rows :: Exp Int -> Matrix ix (Int, a) -> Rows ix a numCols :: Rows ix a -> Exp Int rowMatrix :: Rows ix a -> Matrix ix (Int, a) multiplyRowsVector :: (Shape ix, Slice ix, IsNum a, Elt a) => Rows ix a -> Vector ix a -> Vector ix a transposeRows :: (Shape ix, Slice ix, IsNum a, Elt a) => Rows ix a -> Columns ix a multiplyColumnsRows :: (Shape ix, Slice ix, IsNum a, Elt a) => Columns ix a -> Rows ix a -> Matrix ix a -- | Compute x^T*x, given that it has a band structure. You must pass the -- band-width as parameter and you must make sure that the Gramian stays -- within this band. Otherwise you cause out-of-bounds array accesses. So -- far, only correct for real matrices. realBandedGramian :: (Shape ix, Slice ix, IsNum a, Elt a) => Exp Int -> Rows ix a -> Symmetric ix a scaleRowRows :: (Slice ix, Shape ix, Elt a, IsNum a) => Vector ix a -> Rows ix a -> Rows ix a module 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) lookupInterval :: (Slice ix, Shape ix, IsScalar a, Elt a) => Vector ix a -> Scalar ix a -> Scalar ix Int -- | One node before index 0 and three nodes starting from index 0. type Interpolator13 a = (a, a) -> (a, a) -> (a, a) -> (a, a) -> a -> a sampleBasisFunctions13 :: (Slice ix, Shape ix, Elt a, IsFloating a, Num a) => Interpolator13 (Exp a) -> Vector Z a -> Vector ix a -> Rows ix a