diff --git a/arrayfire.cabal b/arrayfire.cabal
--- a/arrayfire.cabal
+++ b/arrayfire.cabal
@@ -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:
diff --git a/src/ArrayFire/Arith.hs b/src/ArrayFire/Arith.hs
--- a/src/ArrayFire/Arith.hs
+++ b/src/ArrayFire/Arith.hs
@@ -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
 --
diff --git a/src/ArrayFire/FFI.hs b/src/ArrayFire/FFI.hs
--- a/src/ArrayFire/FFI.hs
+++ b/src/ArrayFire/FFI.hs
@@ -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)
diff --git a/src/ArrayFire/Internal/Image.hsc b/src/ArrayFire/Internal/Image.hsc
--- a/src/ArrayFire/Internal/Image.hsc
+++ b/src/ArrayFire/Internal/Image.hsc
@@ -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
diff --git a/src/ArrayFire/Internal/LAPACK.hsc b/src/ArrayFire/Internal/LAPACK.hsc
--- a/src/ArrayFire/Internal/LAPACK.hsc
+++ b/src/ArrayFire/Internal/LAPACK.hsc
@@ -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"
diff --git a/src/ArrayFire/Internal/Signal.hsc b/src/ArrayFire/Internal/Signal.hsc
--- a/src/ArrayFire/Internal/Signal.hsc
+++ b/src/ArrayFire/Internal/Signal.hsc
@@ -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"
diff --git a/src/ArrayFire/LAPACK.hs b/src/ArrayFire/LAPACK.hs
--- a/src/ArrayFire/LAPACK.hs
+++ b/src/ArrayFire/LAPACK.hs
@@ -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
 --
