-- GENERATED by C->Haskell Compiler, version 0.28.2 Switcheroo, 1 April 2016 (Haskell)
-- Edit the ORIGNAL .chs file instead!


{-# LINE 1 "./Foreign/CUDA/Solver/Sparse/High.chs" #-}
--
-- This module is auto-generated. Do not edit directly.
--

{-# LANGUAGE CPP #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
-- |
-- Module      : Foreign.CUDA.Solver.Sparse.High
-- Copyright   : [2017] Trevor L. McDonell
-- License     : BSD3
--
-- Maintainer  : Trevor L. McDonell <tmcdonell@cse.unsw.edu.au>
-- Stability   : experimental
-- Portability : non-portable (GHC extensions)
--
-- For more information see the cuSolver function reference:
--
-- <http://docs.nvidia.com/cuda/cusolver/index.html#cusolver-high-level-function-reference>
--

module Foreign.CUDA.Solver.Sparse.High (

  Handle,
  MatrixDescriptor,
  scsrlsvqr,
  dcsrlsvqr,
  ccsrlsvqr,
  zcsrlsvqr,
  scsrlsvchol,
  dcsrlsvchol,
  ccsrlsvchol,
  zcsrlsvchol,
  scsreigvsi,
  dcsreigvsi,
  ccsreigvsi,
  zcsreigvsi,

) where
import qualified Foreign.C.Types as C2HSImp
import qualified Foreign.Ptr as C2HSImp



import Data.Complex
import Foreign
import Foreign.C
import Foreign.Storable.Complex ()
import Foreign.CUDA.Ptr
import Foreign.CUDA.Solver.Sparse.Context
import Foreign.CUDA.Solver.Sparse.Analysis
import Foreign.CUDA.Solver.Error
import Foreign.CUDA.Solver.Internal.C2HS
import Foreign.CUDA.Solver.Internal.Types



{-# LINE 54 "./Foreign/CUDA/Solver/Sparse/High.chs" #-}


{-# INLINE useDevP #-}
useDevP :: DevicePtr a -> Ptr b
useDevP = useDevicePtr . castDevPtr

{-# INLINE useHostP #-}
useHostP :: HostPtr a -> Ptr b
useHostP = useHostPtr . castHostPtr


{-# INLINEABLE scsrlsvqr #-}
scsrlsvqr :: (Handle) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Float) -> (Float) -> (Int) -> (DevicePtr Float) -> IO ((Int))
scsrlsvqr a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = useMatDescr a4} in
  let {a5' = useDevP a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = CFloat a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  alloca $ \a12' ->
  scsrlsvqr'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' >>= \res ->
  checkStatus res >>
  peekIntConv  a12'>>= \a12'' ->
  return (a12'')

{-# LINE 66 "./Foreign/CUDA/Solver/Sparse/High.chs" #-}


{-# INLINEABLE dcsrlsvqr #-}
dcsrlsvqr :: (Handle) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Double) -> (Double) -> (Int) -> (DevicePtr Double) -> IO ((Int))
dcsrlsvqr a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = useMatDescr a4} in
  let {a5' = useDevP a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = CDouble a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  alloca $ \a12' ->
  dcsrlsvqr'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' >>= \res ->
  checkStatus res >>
  peekIntConv  a12'>>= \a12'' ->
  return (a12'')

{-# LINE 69 "./Foreign/CUDA/Solver/Sparse/High.chs" #-}


{-# INLINEABLE ccsrlsvqr #-}
ccsrlsvqr :: (Handle) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr (Complex Float)) -> (Float) -> (Int) -> (DevicePtr (Complex Float)) -> IO ((Int))
ccsrlsvqr a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = useMatDescr a4} in
  let {a5' = useDevP a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = CFloat a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  alloca $ \a12' ->
  ccsrlsvqr'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' >>= \res ->
  checkStatus res >>
  peekIntConv  a12'>>= \a12'' ->
  return (a12'')

{-# LINE 72 "./Foreign/CUDA/Solver/Sparse/High.chs" #-}


{-# INLINEABLE zcsrlsvqr #-}
zcsrlsvqr :: (Handle) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr (Complex Double)) -> (Double) -> (Int) -> (DevicePtr (Complex Double)) -> IO ((Int))
zcsrlsvqr a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = useMatDescr a4} in
  let {a5' = useDevP a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = CDouble a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  alloca $ \a12' ->
  zcsrlsvqr'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' >>= \res ->
  checkStatus res >>
  peekIntConv  a12'>>= \a12'' ->
  return (a12'')

{-# LINE 75 "./Foreign/CUDA/Solver/Sparse/High.chs" #-}


{-# INLINEABLE scsrlsvchol #-}
scsrlsvchol :: (Handle) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Float) -> (Float) -> (Int) -> (DevicePtr Float) -> IO ((Int))
scsrlsvchol a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = useMatDescr a4} in
  let {a5' = useDevP a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = CFloat a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  alloca $ \a12' ->
  scsrlsvchol'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' >>= \res ->
  checkStatus res >>
  peekIntConv  a12'>>= \a12'' ->
  return (a12'')

{-# LINE 78 "./Foreign/CUDA/Solver/Sparse/High.chs" #-}


{-# INLINEABLE dcsrlsvchol #-}
dcsrlsvchol :: (Handle) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Double) -> (Double) -> (Int) -> (DevicePtr Double) -> IO ((Int))
dcsrlsvchol a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = useMatDescr a4} in
  let {a5' = useDevP a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = CDouble a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  alloca $ \a12' ->
  dcsrlsvchol'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' >>= \res ->
  checkStatus res >>
  peekIntConv  a12'>>= \a12'' ->
  return (a12'')

{-# LINE 81 "./Foreign/CUDA/Solver/Sparse/High.chs" #-}


{-# INLINEABLE ccsrlsvchol #-}
ccsrlsvchol :: (Handle) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr (Complex Float)) -> (Float) -> (Int) -> (DevicePtr (Complex Float)) -> IO ((Int))
ccsrlsvchol a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = useMatDescr a4} in
  let {a5' = useDevP a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = CFloat a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  alloca $ \a12' ->
  ccsrlsvchol'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' >>= \res ->
  checkStatus res >>
  peekIntConv  a12'>>= \a12'' ->
  return (a12'')

{-# LINE 84 "./Foreign/CUDA/Solver/Sparse/High.chs" #-}


{-# INLINEABLE zcsrlsvchol #-}
zcsrlsvchol :: (Handle) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr (Complex Double)) -> (Double) -> (Int) -> (DevicePtr (Complex Double)) -> IO ((Int))
zcsrlsvchol a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = useMatDescr a4} in
  let {a5' = useDevP a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = CDouble a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  alloca $ \a12' ->
  zcsrlsvchol'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' >>= \res ->
  checkStatus res >>
  peekIntConv  a12'>>= \a12'' ->
  return (a12'')

{-# LINE 87 "./Foreign/CUDA/Solver/Sparse/High.chs" #-}


{-# INLINEABLE scsreigvsi #-}
scsreigvsi :: (Handle) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Float) -> (DevicePtr Float) -> (Int) -> (Float) -> (DevicePtr Float) -> (DevicePtr Float) -> IO ()
scsreigvsi a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = useMatDescr a4} in
  let {a5' = useDevP a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = CFloat a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = CFloat a11} in
  let {a12' = useDevP a12} in
  let {a13' = useDevP a13} in
  scsreigvsi'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 90 "./Foreign/CUDA/Solver/Sparse/High.chs" #-}


{-# INLINEABLE dcsreigvsi #-}
dcsreigvsi :: (Handle) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Double) -> (DevicePtr Double) -> (Int) -> (Double) -> (DevicePtr Double) -> (DevicePtr Double) -> IO ()
dcsreigvsi a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = useMatDescr a4} in
  let {a5' = useDevP a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = CDouble a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = CDouble a11} in
  let {a12' = useDevP a12} in
  let {a13' = useDevP a13} in
  dcsreigvsi'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 93 "./Foreign/CUDA/Solver/Sparse/High.chs" #-}


{-# INLINEABLE ccsreigvsi #-}
ccsreigvsi :: (Handle) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> ((Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> (Float) -> (DevicePtr (Complex Float)) -> (DevicePtr (Complex Float)) -> IO ()
ccsreigvsi a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = useMatDescr a4} in
  let {a5' = useDevP a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  withComplex a8 $ \a8' ->
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = CFloat a11} in
  let {a12' = useDevP a12} in
  let {a13' = useDevP a13} in
  ccsreigvsi'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 96 "./Foreign/CUDA/Solver/Sparse/High.chs" #-}


{-# INLINEABLE zcsreigvsi #-}
zcsreigvsi :: (Handle) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> ((Complex Double)) -> (DevicePtr (Complex Double)) -> (Int) -> (Double) -> (DevicePtr (Complex Double)) -> (DevicePtr (Complex Double)) -> IO ()
zcsreigvsi a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = useMatDescr a4} in
  let {a5' = useDevP a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  withComplex a8 $ \a8' ->
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = CDouble a11} in
  let {a12' = useDevP a12} in
  let {a13' = useDevP a13} in
  zcsreigvsi'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 99 "./Foreign/CUDA/Solver/Sparse/High.chs" #-}


foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/High.chs.h cusolverSpScsrlsvqr"
  scsrlsvqr'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CFloat -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt)))))))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/High.chs.h cusolverSpDcsrlsvqr"
  dcsrlsvqr'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CDouble -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt)))))))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/High.chs.h cusolverSpCcsrlsvqr"
  ccsrlsvqr'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CFloat -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt)))))))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/High.chs.h cusolverSpZcsrlsvqr"
  zcsrlsvqr'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CDouble -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt)))))))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/High.chs.h cusolverSpScsrlsvchol"
  scsrlsvchol'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CFloat -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt)))))))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/High.chs.h cusolverSpDcsrlsvchol"
  dcsrlsvchol'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CDouble -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt)))))))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/High.chs.h cusolverSpCcsrlsvchol"
  ccsrlsvchol'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CFloat -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt)))))))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/High.chs.h cusolverSpZcsrlsvchol"
  zcsrlsvchol'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CDouble -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt)))))))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/High.chs.h cusolverSpScsreigvsi"
  scsreigvsi'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CFloat -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> (C2HSImp.CFloat -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/High.chs.h cusolverSpDcsreigvsi"
  dcsreigvsi'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CDouble -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> (C2HSImp.CDouble -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/High.chs.h cusolverSpCcsreigvsi"
  ccsreigvsi'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CFloat -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/High.chs.h cusolverSpZcsreigvsi"
  zcsreigvsi'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CDouble -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))))