Safe Haskell | None |
---|---|
Language | Haskell2010 |
Dense vectors and linear algebra operations.
NOTE: This module is a prototype for what a more fully featured linear algebra module might look like. There are a number of efficiency related features that are missing. In particular, matrices will get copied more often than they need to, and only the most naive dense matrix format is currently supported. These limitations are due to using "hmatrix" as a backend (all operations should be at least as fast as in hmatrix). Future iterations will use something like "hblas" to get finer lever control.
FIXME: Shouldn't expose the constructors, but they're needed for the SubHask.Algebra.Array types.
FIXME: We shouldn't need to call out to the FFI in order to get SIMD instructions.
- data family SVector n r
- data family UVector n r
- type Unbox = Unbox
- data a +> b
- type SMatrix r m n = SVector m r +> SVector n r
- unsafeMkSMatrix :: (VectorSpace (SVector m r), VectorSpace (SVector n r), ToFromVector (SVector m r), ToFromVector (SVector n r), MatrixField r) => Int -> Int -> [r] -> SMatrix r m n
- distance_l2_m128 :: Ptr Float -> Ptr Float -> Int -> IO Float
- distance_l2_m128_SVector_Dynamic :: SVector (s :: Symbol) Float -> SVector (s :: Symbol) Float -> Float
- distance_l2_m128_UVector_Dynamic :: UVector (s :: Symbol) Float -> UVector (s :: Symbol) Float -> Float
- distanceUB_l2_m128 :: Ptr Float -> Ptr Float -> Int -> Float -> IO Float
- distanceUB_l2_m128_SVector_Dynamic :: SVector (s :: Symbol) Float -> SVector (s :: Symbol) Float -> Float -> Float
- distanceUB_l2_m128_UVector_Dynamic :: UVector (s :: Symbol) Float -> UVector (s :: Symbol) Float -> Float -> Float
- safeNewByteArray :: PrimMonad m => Int -> Int -> m (MutableByteArray (PrimState m))
Documentation
data family SVector n r Source
The type of dynamic or statically sized vectors implemented using the FFI.
data family UVector n r Source
The type of dynamic or statically sized vectors implemented using the FFI.
type SMatrix r m n = SVector m r +> SVector n r Source
A slightly more convenient type for linear functions between SVectors
unsafeMkSMatrix :: (VectorSpace (SVector m r), VectorSpace (SVector n r), ToFromVector (SVector m r), ToFromVector (SVector n r), MatrixField r) => Int -> Int -> [r] -> SMatrix r m n Source
Construct an SMatrix
FFI
distance_l2_m128_SVector_Dynamic :: SVector (s :: Symbol) Float -> SVector (s :: Symbol) Float -> Float Source
distance_l2_m128_UVector_Dynamic :: UVector (s :: Symbol) Float -> UVector (s :: Symbol) Float -> Float Source
distanceUB_l2_m128_SVector_Dynamic :: SVector (s :: Symbol) Float -> SVector (s :: Symbol) Float -> Float -> Float Source
distanceUB_l2_m128_UVector_Dynamic :: UVector (s :: Symbol) Float -> UVector (s :: Symbol) Float -> Float -> Float Source
Debug
safeNewByteArray :: PrimMonad m => Int -> Int -> m (MutableByteArray (PrimState m)) Source