hmatrix-0.9.3.0: Linear algebra and numerical computationSource codeContentsIndex
Data.Packed.Development
Portabilityportable
Stabilityprovisional
MaintainerAlberto Ruiz <aruiz@um.es>
Description
The library can be easily extended with additional foreign functions using the tools in this module. Illustrative usage examples can be found in the examples/devel folder included in the package.
Synopsis
createVector :: Storable a => Int -> IO (Vector a)
createMatrix :: Storable a => MatrixOrder -> Int -> Int -> IO (Matrix a)
type Adapt f t r = t -> ((f -> r) -> IO ()) -> IO ()
vec :: Storable t => Vector t -> (((CInt -> Ptr t -> t1) -> t1) -> IO b) -> IO b
mat :: Storable t => Matrix t -> (((CInt -> CInt -> Ptr t -> t1) -> t1) -> IO b) -> IO b
app1 :: f -> Adapt f t (IO CInt) -> t -> String -> IO ()
app2 :: f -> Adapt f t1 r -> t1 -> Adapt r t2 (IO CInt) -> t2 -> String -> IO ()
app3 :: f -> Adapt f t1 r1 -> t1 -> Adapt r1 t2 r2 -> t2 -> Adapt r2 t3 (IO CInt) -> t3 -> String -> IO ()
app4 :: f -> Adapt f t1 r1 -> t1 -> Adapt r1 t2 r2 -> t2 -> Adapt r2 t3 r3 -> t3 -> Adapt r3 t4 (IO CInt) -> t4 -> String -> IO ()
app5 :: x -> (t -> ((x -> y) -> b) -> b1) -> t -> (t1 -> ((y -> y1) -> b2) -> b) -> t1 -> (t2 -> ((y1 -> y2) -> b3) -> b2) -> t2 -> (t3 -> ((y2 -> y3) -> c) -> b3) -> t3 -> (t4 -> ((y3 -> IO CInt) -> IO ()) -> c) -> t4 -> String -> b1
app6 :: x -> (t -> ((x -> y) -> b) -> b1) -> t -> (t1 -> ((y -> y1) -> b2) -> b) -> t1 -> (t2 -> ((y1 -> y2) -> b3) -> b2) -> t2 -> (t3 -> ((y2 -> y3) -> b4) -> b3) -> t3 -> (t4 -> ((y3 -> y4) -> c) -> b4) -> t4 -> (t5 -> ((y4 -> IO CInt) -> IO ()) -> c) -> t5 -> String -> b1
app7 :: x -> (t -> ((x -> y) -> b) -> b1) -> t -> (t1 -> ((y -> y1) -> b2) -> b) -> t1 -> (t2 -> ((y1 -> y2) -> b3) -> b2) -> t2 -> (t3 -> ((y2 -> y3) -> b4) -> b3) -> t3 -> (t4 -> ((y3 -> y4) -> b5) -> b4) -> t4 -> (t5 -> ((y4 -> y5) -> c) -> b5) -> t5 -> (t6 -> ((y5 -> IO CInt) -> IO ()) -> c) -> t6 -> String -> b1
app8 :: x -> (t -> ((x -> y) -> b) -> b1) -> t -> (t1 -> ((y -> y1) -> b2) -> b) -> t1 -> (t2 -> ((y1 -> y2) -> b3) -> b2) -> t2 -> (t3 -> ((y2 -> y3) -> b4) -> b3) -> t3 -> (t4 -> ((y3 -> y4) -> b5) -> b4) -> t4 -> (t5 -> ((y4 -> y5) -> b6) -> b5) -> t5 -> (t6 -> ((y5 -> y6) -> c) -> b6) -> t6 -> (t7 -> ((y6 -> IO CInt) -> IO ()) -> c) -> t7 -> String -> b1
app9 :: x -> (t -> ((x -> y) -> b) -> b1) -> t -> (t1 -> ((y -> y1) -> b2) -> b) -> t1 -> (t2 -> ((y1 -> y2) -> b3) -> b2) -> t2 -> (t3 -> ((y2 -> y3) -> b4) -> b3) -> t3 -> (t4 -> ((y3 -> y4) -> b5) -> b4) -> t4 -> (t5 -> ((y4 -> y5) -> b6) -> b5) -> t5 -> (t6 -> ((y5 -> y6) -> b7) -> b6) -> t6 -> (t7 -> ((y6 -> y7) -> c) -> b7) -> t7 -> (t8 -> ((y7 -> IO CInt) -> IO ()) -> c) -> t8 -> String -> b1
app10 :: x -> (t -> ((x -> y) -> b) -> b1) -> t -> (t1 -> ((y -> y1) -> b2) -> b) -> t1 -> (t2 -> ((y1 -> y2) -> b3) -> b2) -> t2 -> (t3 -> ((y2 -> y3) -> b4) -> b3) -> t3 -> (t4 -> ((y3 -> y4) -> b5) -> b4) -> t4 -> (t5 -> ((y4 -> y5) -> b6) -> b5) -> t5 -> (t6 -> ((y5 -> y6) -> b7) -> b6) -> t6 -> (t7 -> ((y6 -> y7) -> b8) -> b7) -> t7 -> (t8 -> ((y7 -> y8) -> c) -> b8) -> t8 -> (t9 -> ((y8 -> IO CInt) -> IO ()) -> c) -> t9 -> String -> b1
data MatrixOrder
= RowMajor
| ColumnMajor
orderOf :: Matrix t -> MatrixOrder
cmat :: Element t => Matrix t -> Matrix t
fmat :: Element t => Matrix t -> Matrix t
unsafeFromForeignPtr :: ForeignPtr a -> Int -> Int -> Vector a
unsafeToForeignPtr :: Vector a -> (ForeignPtr a, Int, Int)
check :: String -> IO CInt -> IO ()
(//) :: x -> (x -> y) -> y
Documentation
createVector :: Storable a => Int -> IO (Vector a)Source
createMatrix :: Storable a => MatrixOrder -> Int -> Int -> IO (Matrix a)Source
type Adapt f t r = t -> ((f -> r) -> IO ()) -> IO ()Source
vec :: Storable t => Vector t -> (((CInt -> Ptr t -> t1) -> t1) -> IO b) -> IO bSource
mat :: Storable t => Matrix t -> (((CInt -> CInt -> Ptr t -> t1) -> t1) -> IO b) -> IO bSource
app1 :: f -> Adapt f t (IO CInt) -> t -> String -> IO ()Source
app2 :: f -> Adapt f t1 r -> t1 -> Adapt r t2 (IO CInt) -> t2 -> String -> IO ()Source
app3 :: f -> Adapt f t1 r1 -> t1 -> Adapt r1 t2 r2 -> t2 -> Adapt r2 t3 (IO CInt) -> t3 -> String -> IO ()Source
app4 :: f -> Adapt f t1 r1 -> t1 -> Adapt r1 t2 r2 -> t2 -> Adapt r2 t3 r3 -> t3 -> Adapt r3 t4 (IO CInt) -> t4 -> String -> IO ()Source
app5 :: x -> (t -> ((x -> y) -> b) -> b1) -> t -> (t1 -> ((y -> y1) -> b2) -> b) -> t1 -> (t2 -> ((y1 -> y2) -> b3) -> b2) -> t2 -> (t3 -> ((y2 -> y3) -> c) -> b3) -> t3 -> (t4 -> ((y3 -> IO CInt) -> IO ()) -> c) -> t4 -> String -> b1Source
app6 :: x -> (t -> ((x -> y) -> b) -> b1) -> t -> (t1 -> ((y -> y1) -> b2) -> b) -> t1 -> (t2 -> ((y1 -> y2) -> b3) -> b2) -> t2 -> (t3 -> ((y2 -> y3) -> b4) -> b3) -> t3 -> (t4 -> ((y3 -> y4) -> c) -> b4) -> t4 -> (t5 -> ((y4 -> IO CInt) -> IO ()) -> c) -> t5 -> String -> b1Source
app7 :: x -> (t -> ((x -> y) -> b) -> b1) -> t -> (t1 -> ((y -> y1) -> b2) -> b) -> t1 -> (t2 -> ((y1 -> y2) -> b3) -> b2) -> t2 -> (t3 -> ((y2 -> y3) -> b4) -> b3) -> t3 -> (t4 -> ((y3 -> y4) -> b5) -> b4) -> t4 -> (t5 -> ((y4 -> y5) -> c) -> b5) -> t5 -> (t6 -> ((y5 -> IO CInt) -> IO ()) -> c) -> t6 -> String -> b1Source
app8 :: x -> (t -> ((x -> y) -> b) -> b1) -> t -> (t1 -> ((y -> y1) -> b2) -> b) -> t1 -> (t2 -> ((y1 -> y2) -> b3) -> b2) -> t2 -> (t3 -> ((y2 -> y3) -> b4) -> b3) -> t3 -> (t4 -> ((y3 -> y4) -> b5) -> b4) -> t4 -> (t5 -> ((y4 -> y5) -> b6) -> b5) -> t5 -> (t6 -> ((y5 -> y6) -> c) -> b6) -> t6 -> (t7 -> ((y6 -> IO CInt) -> IO ()) -> c) -> t7 -> String -> b1Source
app9 :: x -> (t -> ((x -> y) -> b) -> b1) -> t -> (t1 -> ((y -> y1) -> b2) -> b) -> t1 -> (t2 -> ((y1 -> y2) -> b3) -> b2) -> t2 -> (t3 -> ((y2 -> y3) -> b4) -> b3) -> t3 -> (t4 -> ((y3 -> y4) -> b5) -> b4) -> t4 -> (t5 -> ((y4 -> y5) -> b6) -> b5) -> t5 -> (t6 -> ((y5 -> y6) -> b7) -> b6) -> t6 -> (t7 -> ((y6 -> y7) -> c) -> b7) -> t7 -> (t8 -> ((y7 -> IO CInt) -> IO ()) -> c) -> t8 -> String -> b1Source
app10 :: x -> (t -> ((x -> y) -> b) -> b1) -> t -> (t1 -> ((y -> y1) -> b2) -> b) -> t1 -> (t2 -> ((y1 -> y2) -> b3) -> b2) -> t2 -> (t3 -> ((y2 -> y3) -> b4) -> b3) -> t3 -> (t4 -> ((y3 -> y4) -> b5) -> b4) -> t4 -> (t5 -> ((y4 -> y5) -> b6) -> b5) -> t5 -> (t6 -> ((y5 -> y6) -> b7) -> b6) -> t6 -> (t7 -> ((y6 -> y7) -> b8) -> b7) -> t7 -> (t8 -> ((y7 -> y8) -> c) -> b8) -> t8 -> (t9 -> ((y8 -> IO CInt) -> IO ()) -> c) -> t9 -> String -> b1Source
data MatrixOrder Source
Constructors
RowMajor
ColumnMajor
show/hide Instances
orderOf :: Matrix t -> MatrixOrderSource
cmat :: Element t => Matrix t -> Matrix tSource
fmat :: Element t => Matrix t -> Matrix tSource
unsafeFromForeignPtr :: ForeignPtr a -> Int -> Int -> Vector aSource
Same convention as in Roman Leshchinskiy's vector package.
unsafeToForeignPtr :: Vector a -> (ForeignPtr a, Int, Int)Source
check :: String -> IO CInt -> IO ()Source
check the error code
(//) :: x -> (x -> y) -> ySource
postfix function application (flip ($))
Produced by Haddock version 2.6.1