arrayfire 0.1.0.0 → 0.2.0.0
raw patch · 7 files changed
+39/−31 lines, 7 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- ArrayFire.LAPACK: pinverse :: AFType a => Array a -> Double -> MatProp -> Array a
- ArrayFire.Arith: imag :: AFType a => Array a -> Array a
+ ArrayFire.Arith: imag :: (AFType a, AFType (Complex b), RealFrac a, RealFrac b) => Array (Complex b) -> Array a
- ArrayFire.Arith: real :: AFType a => Array a -> Array a
+ ArrayFire.Arith: real :: (AFType a, AFType (Complex b), RealFrac a, RealFrac b) => Array (Complex b) -> Array a
Files
- arrayfire.cabal +2/−2
- src/ArrayFire/Arith.hs +13/−11
- src/ArrayFire/FFI.hs +16/−0
- src/ArrayFire/Internal/Image.hsc +0/−4
- src/ArrayFire/Internal/LAPACK.hsc +0/−2
- src/ArrayFire/Internal/Signal.hsc +0/−4
- src/ArrayFire/LAPACK.hs +8/−8
arrayfire.cabal view
@@ -1,5 +1,5 @@ name: arrayfire-version: 0.1.0.0+version: 0.2.0.0 synopsis: Haskell bindings to the ArrayFire general-purpose GPU library homepage: https://github.com/arrayfire/arrayfire-haskell license: BSD3@@ -96,7 +96,7 @@ extra-lib-dirs: /opt/arrayfire/lib ld-options:- -Wl -rpath /opt/arrayfire/lib+ -Wl,-rpath /opt/arrayfire/lib executable main hs-source-dirs:
src/ArrayFire/Arith.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE TypeApplications #-}+{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE ViewPatterns #-} --------------------------------------------------------------------------------@@ -24,10 +25,11 @@ -------------------------------------------------------------------------------- module ArrayFire.Arith where -import Prelude (Bool(..), ($), (.), flip, fromEnum, fromIntegral, Real)+import Prelude (Bool(..), ($), (.), flip, fromEnum, fromIntegral, Real, RealFrac) import Data.Coerce import Data.Proxy+import Data.Complex import ArrayFire.FFI import ArrayFire.Internal.Arith@@ -1195,31 +1197,31 @@ -- | Execute real ----- >>> A.real (A.vector @Double 10 [1..])+-- >>> A.real (A.scalar @(Complex Double) (10 :+ 11)) :: Array Double -- ArrayFire Array -- [10 1 1 1]--- 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 10.0000+-- 10.0000 real- :: AFType a- => Array a+ :: (AFType a, AFType (Complex b), RealFrac a, RealFrac b)+ => Array (Complex b) -- ^ Input array -> Array a -- ^ Result of calling 'real'-real = flip op1 af_real+real = flip op1d af_real -- | Execute imag ----- >>> A.imag (A.vector @Double 10 [1..])+-- >>> A.imag (A.scalar @(Complex Double) (10 :+ 11)) :: Array Double -- ArrayFire Array -- [10 1 1 1]--- 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000+-- 11.0000 imag- :: AFType a- => Array a+ :: (AFType a, AFType (Complex b), RealFrac a, RealFrac b)+ => Array (Complex b) -- ^ Input array -> Array a -- ^ Result of calling 'imag'-imag = flip op1 af_imag+imag = flip op1d af_imag -- | Execute conjg --
src/ArrayFire/FFI.hs view
@@ -220,6 +220,22 @@ throwAFError =<< op p ptr peek p +op1d+ :: Array a+ -> (Ptr AFArray -> AFArray -> IO AFErr)+ -> Array b+{-# NOINLINE op1d #-}+op1d (Array fptr1) op =+ unsafePerformIO $ do+ withForeignPtr fptr1 $ \ptr1 -> do+ ptr <-+ alloca $ \ptrInput -> do+ throwAFError =<< op ptrInput ptr1+ peek ptrInput+ fptr <- newForeignPtr af_release_array_finalizer ptr+ pure (Array fptr)++ op1 :: Array a -> (Ptr AFArray -> AFArray -> IO AFErr)
src/ArrayFire/Internal/Image.hsc view
@@ -93,7 +93,3 @@ af_canny :: Ptr AFArray -> AFArray -> AFCannyThreshold -> Float -> Float -> CUInt -> CBool -> IO AFErr foreign import ccall unsafe "af_anisotropic_diffusion" af_anisotropic_diffusion :: Ptr AFArray -> AFArray -> Float -> Float -> CUInt -> AFFluxFunction -> AFDiffusionEq -> IO AFErr-foreign import ccall unsafe "af_iterative_deconv"- af_iterative_deconv :: Ptr AFArray -> AFArray -> AFArray -> CUInt -> Float -> AFIterativeDeconvAlgo -> IO AFErr-foreign import ccall unsafe "af_inverse_deconv"- af_inverse_deconv :: Ptr AFArray -> AFArray -> AFArray -> Float -> AFInverseDeconvAlgo -> IO AFErr
src/ArrayFire/Internal/LAPACK.hsc view
@@ -29,8 +29,6 @@ af_solve_lu :: Ptr AFArray -> AFArray -> AFArray -> AFArray -> AFMatProp -> IO AFErr foreign import ccall unsafe "af_inverse" af_inverse :: Ptr AFArray -> AFArray -> AFMatProp -> IO AFErr-foreign import ccall unsafe "af_pinverse"- af_pinverse :: Ptr AFArray -> AFArray -> Double -> AFMatProp -> IO AFErr foreign import ccall unsafe "af_rank" af_rank :: Ptr CUInt -> AFArray -> Double -> IO AFErr foreign import ccall unsafe "af_det"
src/ArrayFire/Internal/Signal.hsc view
@@ -10,10 +10,6 @@ af_approx1 :: Ptr AFArray -> AFArray -> AFArray -> AFInterpType -> Float -> IO AFErr foreign import ccall unsafe "af_approx2" af_approx2 :: Ptr AFArray -> AFArray -> AFArray -> AFArray -> AFInterpType -> Float -> IO AFErr-foreign import ccall unsafe "af_approx1_uniform"- af_approx1_uniform :: Ptr AFArray -> AFArray -> AFArray -> CInt -> Double -> Double -> AFInterpType -> Float -> IO AFErr-foreign import ccall unsafe "af_approx2_uniform"- af_approx2_uniform :: Ptr AFArray -> AFArray -> AFArray -> CInt -> Double -> Double -> AFArray -> CInt -> Double -> Double -> AFInterpType -> Float -> IO AFErr foreign import ccall unsafe "af_fft" af_fft :: Ptr AFArray -> AFArray -> Double -> DimT -> IO AFErr foreign import ccall unsafe "af_fft_inplace"
src/ArrayFire/LAPACK.hs view
@@ -199,14 +199,14 @@ -- -- [ArrayFire Docs](http://arrayfire.org/docs/group__lapack__factor__func__p_inv.htm) ---pinverse- :: AFType a- => Array a- -> Double- -> MatProp- -> Array a-pinverse a d m =- a `op1` (\x y -> af_pinverse x y d (toMatProp m))+-- pinverse+-- :: AFType a+-- => Array a+-- -> Double+-- -> MatProp+-- -> Array a+-- pinverse a d m =+-- a `op1` (\x y -> af_pinverse x y d (toMatProp m)) -- | Find the rank of the input matrix --