-- 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/Low.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.Low
-- 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-low-level-function-reference>
--

module Foreign.CUDA.Solver.Sparse.Low (

  Handle,
  MatrixDescriptor,
  Info_csrqr,
  Info_csrchol,
  xcsrqrAnalysisBatched,
  scsrqrBufferInfoBatched,
  dcsrqrBufferInfoBatched,
  ccsrqrBufferInfoBatched,
  zcsrqrBufferInfoBatched,
  scsrqrsvBatched,
  dcsrqrsvBatched,
  ccsrqrsvBatched,
  zcsrqrsvBatched,
  xcsrqrAnalysis,
  scsrqrBufferInfo,
  dcsrqrBufferInfo,
  ccsrqrBufferInfo,
  zcsrqrBufferInfo,
  scsrqrSetup,
  dcsrqrSetup,
  ccsrqrSetup,
  zcsrqrSetup,
  scsrqrFactor,
  dcsrqrFactor,
  ccsrqrFactor,
  zcsrqrFactor,
  scsrqrZeroPivot,
  dcsrqrZeroPivot,
  ccsrqrZeroPivot,
  zcsrqrZeroPivot,
  scsrqrSolve,
  dcsrqrSolve,
  ccsrqrSolve,
  zcsrqrSolve,
  xcsrcholAnalysis,
  scsrcholBufferInfo,
  dcsrcholBufferInfo,
  ccsrcholBufferInfo,
  zcsrcholBufferInfo,
  scsrcholFactor,
  dcsrcholFactor,
  ccsrcholFactor,
  zcsrcholFactor,
  scsrcholZeroPivot,
  dcsrcholZeroPivot,
  ccsrcholZeroPivot,
  zcsrcholZeroPivot,
  scsrcholSolve,
  dcsrcholSolve,
  ccsrcholSolve,
  zcsrcholSolve,

) 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 91 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


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

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


{-# INLINEABLE xcsrqrAnalysisBatched #-}
xcsrqrAnalysisBatched :: (Handle) -> (Int) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info_csrqr) -> IO ()
xcsrqrAnalysisBatched a1 a2 a3 a4 a5 a6 a7 a8 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = useMatDescr a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useInfo_csrqr a8} in
  xcsrqrAnalysisBatched'_ a1' a2' a3' a4' a5' a6' a7' a8' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 103 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


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

{-# LINE 106 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


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

{-# LINE 109 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


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

{-# LINE 112 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


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

{-# LINE 115 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE scsrqrsvBatched #-}
scsrqrsvBatched :: (Handle) -> (Int) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Float) -> (DevicePtr Float) -> (Int) -> (Info_csrqr) -> (DevicePtr ()) -> IO ()
scsrqrsvBatched 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' = fromIntegral a4} in
  let {a5' = useMatDescr a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  let {a12' = useInfo_csrqr a12} in
  let {a13' = useDevP a13} in
  scsrqrsvBatched'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 118 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE dcsrqrsvBatched #-}
dcsrqrsvBatched :: (Handle) -> (Int) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Double) -> (DevicePtr Double) -> (Int) -> (Info_csrqr) -> (DevicePtr ()) -> IO ()
dcsrqrsvBatched 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' = fromIntegral a4} in
  let {a5' = useMatDescr a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  let {a12' = useInfo_csrqr a12} in
  let {a13' = useDevP a13} in
  dcsrqrsvBatched'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 121 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE ccsrqrsvBatched #-}
ccsrqrsvBatched :: (Handle) -> (Int) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> (Info_csrqr) -> (DevicePtr ()) -> IO ()
ccsrqrsvBatched 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' = fromIntegral a4} in
  let {a5' = useMatDescr a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  let {a12' = useInfo_csrqr a12} in
  let {a13' = useDevP a13} in
  ccsrqrsvBatched'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 124 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE zcsrqrsvBatched #-}
zcsrqrsvBatched :: (Handle) -> (Int) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Int) -> (Info_csrqr) -> (DevicePtr ()) -> IO ()
zcsrqrsvBatched 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' = fromIntegral a4} in
  let {a5' = useMatDescr a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  let {a12' = useInfo_csrqr a12} in
  let {a13' = useDevP a13} in
  zcsrqrsvBatched'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 128 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE xcsrqrAnalysis #-}
xcsrqrAnalysis :: (Handle) -> (Int) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info_csrqr) -> IO ()
xcsrqrAnalysis a1 a2 a3 a4 a5 a6 a7 a8 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = useMatDescr a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useInfo_csrqr a8} in
  xcsrqrAnalysis'_ a1' a2' a3' a4' a5' a6' a7' a8' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 131 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


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

{-# LINE 134 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


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

{-# LINE 137 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


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

{-# LINE 140 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


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

{-# LINE 143 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


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

{-# LINE 146 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


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

{-# LINE 149 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


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

{-# LINE 152 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


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

{-# LINE 155 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE scsrqrFactor #-}
scsrqrFactor :: (Handle) -> (Int) -> (Int) -> (Int) -> (DevicePtr Float) -> (DevicePtr Float) -> (Info_csrqr) -> (DevicePtr ()) -> IO ()
scsrqrFactor a1 a2 a3 a4 a5 a6 a7 a8 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = useDevP a5} in
  let {a6' = useDevP a6} in
  let {a7' = useInfo_csrqr a7} in
  let {a8' = useDevP a8} in
  scsrqrFactor'_ a1' a2' a3' a4' a5' a6' a7' a8' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 158 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE dcsrqrFactor #-}
dcsrqrFactor :: (Handle) -> (Int) -> (Int) -> (Int) -> (DevicePtr Double) -> (DevicePtr Double) -> (Info_csrqr) -> (DevicePtr ()) -> IO ()
dcsrqrFactor a1 a2 a3 a4 a5 a6 a7 a8 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = useDevP a5} in
  let {a6' = useDevP a6} in
  let {a7' = useInfo_csrqr a7} in
  let {a8' = useDevP a8} in
  dcsrqrFactor'_ a1' a2' a3' a4' a5' a6' a7' a8' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 161 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE ccsrqrFactor #-}
ccsrqrFactor :: (Handle) -> (Int) -> (Int) -> (Int) -> (DevicePtr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Info_csrqr) -> (DevicePtr ()) -> IO ()
ccsrqrFactor a1 a2 a3 a4 a5 a6 a7 a8 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = useDevP a5} in
  let {a6' = useDevP a6} in
  let {a7' = useInfo_csrqr a7} in
  let {a8' = useDevP a8} in
  ccsrqrFactor'_ a1' a2' a3' a4' a5' a6' a7' a8' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 164 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE zcsrqrFactor #-}
zcsrqrFactor :: (Handle) -> (Int) -> (Int) -> (Int) -> (DevicePtr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Info_csrqr) -> (DevicePtr ()) -> IO ()
zcsrqrFactor a1 a2 a3 a4 a5 a6 a7 a8 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = useDevP a5} in
  let {a6' = useDevP a6} in
  let {a7' = useInfo_csrqr a7} in
  let {a8' = useDevP a8} in
  zcsrqrFactor'_ a1' a2' a3' a4' a5' a6' a7' a8' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 167 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE scsrqrZeroPivot #-}
scsrqrZeroPivot :: (Handle) -> (Info_csrqr) -> (Float) -> IO ((Int))
scsrqrZeroPivot a1 a2 a3 =
  let {a1' = useHandle a1} in
  let {a2' = useInfo_csrqr a2} in
  let {a3' = CFloat a3} in
  alloca $ \a4' ->
  scsrqrZeroPivot'_ a1' a2' a3' a4' >>= \res ->
  checkStatus res >>
  peekIntConv  a4'>>= \a4'' ->
  return (a4'')

{-# LINE 170 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE dcsrqrZeroPivot #-}
dcsrqrZeroPivot :: (Handle) -> (Info_csrqr) -> (Double) -> IO ((Int))
dcsrqrZeroPivot a1 a2 a3 =
  let {a1' = useHandle a1} in
  let {a2' = useInfo_csrqr a2} in
  let {a3' = CDouble a3} in
  alloca $ \a4' ->
  dcsrqrZeroPivot'_ a1' a2' a3' a4' >>= \res ->
  checkStatus res >>
  peekIntConv  a4'>>= \a4'' ->
  return (a4'')

{-# LINE 173 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE ccsrqrZeroPivot #-}
ccsrqrZeroPivot :: (Handle) -> (Info_csrqr) -> (Float) -> IO ((Int))
ccsrqrZeroPivot a1 a2 a3 =
  let {a1' = useHandle a1} in
  let {a2' = useInfo_csrqr a2} in
  let {a3' = CFloat a3} in
  alloca $ \a4' ->
  ccsrqrZeroPivot'_ a1' a2' a3' a4' >>= \res ->
  checkStatus res >>
  peekIntConv  a4'>>= \a4'' ->
  return (a4'')

{-# LINE 176 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE zcsrqrZeroPivot #-}
zcsrqrZeroPivot :: (Handle) -> (Info_csrqr) -> (Double) -> IO ((Int))
zcsrqrZeroPivot a1 a2 a3 =
  let {a1' = useHandle a1} in
  let {a2' = useInfo_csrqr a2} in
  let {a3' = CDouble a3} in
  alloca $ \a4' ->
  zcsrqrZeroPivot'_ a1' a2' a3' a4' >>= \res ->
  checkStatus res >>
  peekIntConv  a4'>>= \a4'' ->
  return (a4'')

{-# LINE 179 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE scsrqrSolve #-}
scsrqrSolve :: (Handle) -> (Int) -> (Int) -> (DevicePtr Float) -> (DevicePtr Float) -> (Info_csrqr) -> (DevicePtr ()) -> IO ()
scsrqrSolve a1 a2 a3 a4 a5 a6 a7 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = useDevP a4} in
  let {a5' = useDevP a5} in
  let {a6' = useInfo_csrqr a6} in
  let {a7' = useDevP a7} in
  scsrqrSolve'_ a1' a2' a3' a4' a5' a6' a7' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 182 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE dcsrqrSolve #-}
dcsrqrSolve :: (Handle) -> (Int) -> (Int) -> (DevicePtr Double) -> (DevicePtr Double) -> (Info_csrqr) -> (DevicePtr ()) -> IO ()
dcsrqrSolve a1 a2 a3 a4 a5 a6 a7 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = useDevP a4} in
  let {a5' = useDevP a5} in
  let {a6' = useInfo_csrqr a6} in
  let {a7' = useDevP a7} in
  dcsrqrSolve'_ a1' a2' a3' a4' a5' a6' a7' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 185 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE ccsrqrSolve #-}
ccsrqrSolve :: (Handle) -> (Int) -> (Int) -> (DevicePtr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Info_csrqr) -> (DevicePtr ()) -> IO ()
ccsrqrSolve a1 a2 a3 a4 a5 a6 a7 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = useDevP a4} in
  let {a5' = useDevP a5} in
  let {a6' = useInfo_csrqr a6} in
  let {a7' = useDevP a7} in
  ccsrqrSolve'_ a1' a2' a3' a4' a5' a6' a7' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 188 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE zcsrqrSolve #-}
zcsrqrSolve :: (Handle) -> (Int) -> (Int) -> (DevicePtr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Info_csrqr) -> (DevicePtr ()) -> IO ()
zcsrqrSolve a1 a2 a3 a4 a5 a6 a7 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = useDevP a4} in
  let {a5' = useDevP a5} in
  let {a6' = useInfo_csrqr a6} in
  let {a7' = useDevP a7} in
  zcsrqrSolve'_ a1' a2' a3' a4' a5' a6' a7' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 191 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE xcsrcholAnalysis #-}
xcsrcholAnalysis :: (Handle) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info_csrchol) -> IO ()
xcsrcholAnalysis a1 a2 a3 a4 a5 a6 a7 =
  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' = useInfo_csrchol a7} in
  xcsrcholAnalysis'_ a1' a2' a3' a4' a5' a6' a7' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 194 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE scsrcholBufferInfo #-}
scsrcholBufferInfo :: (Handle) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info_csrchol) -> IO ((Int), (Int))
scsrcholBufferInfo a1 a2 a3 a4 a5 a6 a7 a8 =
  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' = useInfo_csrchol a8} in
  alloca $ \a9' ->
  alloca $ \a10' ->
  scsrcholBufferInfo'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' >>= \res ->
  checkStatus res >>
  peekIntConv  a9'>>= \a9'' ->
  peekIntConv  a10'>>= \a10'' ->
  return (a9'', a10'')

{-# LINE 197 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE dcsrcholBufferInfo #-}
dcsrcholBufferInfo :: (Handle) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info_csrchol) -> IO ((Int), (Int))
dcsrcholBufferInfo a1 a2 a3 a4 a5 a6 a7 a8 =
  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' = useInfo_csrchol a8} in
  alloca $ \a9' ->
  alloca $ \a10' ->
  dcsrcholBufferInfo'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' >>= \res ->
  checkStatus res >>
  peekIntConv  a9'>>= \a9'' ->
  peekIntConv  a10'>>= \a10'' ->
  return (a9'', a10'')

{-# LINE 200 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE ccsrcholBufferInfo #-}
ccsrcholBufferInfo :: (Handle) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info_csrchol) -> IO ((Int), (Int))
ccsrcholBufferInfo a1 a2 a3 a4 a5 a6 a7 a8 =
  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' = useInfo_csrchol a8} in
  alloca $ \a9' ->
  alloca $ \a10' ->
  ccsrcholBufferInfo'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' >>= \res ->
  checkStatus res >>
  peekIntConv  a9'>>= \a9'' ->
  peekIntConv  a10'>>= \a10'' ->
  return (a9'', a10'')

{-# LINE 203 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE zcsrcholBufferInfo #-}
zcsrcholBufferInfo :: (Handle) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info_csrchol) -> IO ((Int), (Int))
zcsrcholBufferInfo a1 a2 a3 a4 a5 a6 a7 a8 =
  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' = useInfo_csrchol a8} in
  alloca $ \a9' ->
  alloca $ \a10' ->
  zcsrcholBufferInfo'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' >>= \res ->
  checkStatus res >>
  peekIntConv  a9'>>= \a9'' ->
  peekIntConv  a10'>>= \a10'' ->
  return (a9'', a10'')

{-# LINE 206 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE scsrcholFactor #-}
scsrcholFactor :: (Handle) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info_csrchol) -> (DevicePtr ()) -> IO ()
scsrcholFactor a1 a2 a3 a4 a5 a6 a7 a8 a9 =
  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' = useInfo_csrchol a8} in
  let {a9' = useDevP a9} in
  scsrcholFactor'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 209 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE dcsrcholFactor #-}
dcsrcholFactor :: (Handle) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info_csrchol) -> (DevicePtr ()) -> IO ()
dcsrcholFactor a1 a2 a3 a4 a5 a6 a7 a8 a9 =
  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' = useInfo_csrchol a8} in
  let {a9' = useDevP a9} in
  dcsrcholFactor'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 212 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE ccsrcholFactor #-}
ccsrcholFactor :: (Handle) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info_csrchol) -> (DevicePtr ()) -> IO ()
ccsrcholFactor a1 a2 a3 a4 a5 a6 a7 a8 a9 =
  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' = useInfo_csrchol a8} in
  let {a9' = useDevP a9} in
  ccsrcholFactor'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 215 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE zcsrcholFactor #-}
zcsrcholFactor :: (Handle) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info_csrchol) -> (DevicePtr ()) -> IO ()
zcsrcholFactor a1 a2 a3 a4 a5 a6 a7 a8 a9 =
  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' = useInfo_csrchol a8} in
  let {a9' = useDevP a9} in
  zcsrcholFactor'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 218 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE scsrcholZeroPivot #-}
scsrcholZeroPivot :: (Handle) -> (Info_csrchol) -> (Float) -> IO ((Int))
scsrcholZeroPivot a1 a2 a3 =
  let {a1' = useHandle a1} in
  let {a2' = useInfo_csrchol a2} in
  let {a3' = CFloat a3} in
  alloca $ \a4' ->
  scsrcholZeroPivot'_ a1' a2' a3' a4' >>= \res ->
  checkStatus res >>
  peekIntConv  a4'>>= \a4'' ->
  return (a4'')

{-# LINE 221 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE dcsrcholZeroPivot #-}
dcsrcholZeroPivot :: (Handle) -> (Info_csrchol) -> (Double) -> IO ((Int))
dcsrcholZeroPivot a1 a2 a3 =
  let {a1' = useHandle a1} in
  let {a2' = useInfo_csrchol a2} in
  let {a3' = CDouble a3} in
  alloca $ \a4' ->
  dcsrcholZeroPivot'_ a1' a2' a3' a4' >>= \res ->
  checkStatus res >>
  peekIntConv  a4'>>= \a4'' ->
  return (a4'')

{-# LINE 224 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE ccsrcholZeroPivot #-}
ccsrcholZeroPivot :: (Handle) -> (Info_csrchol) -> (Float) -> IO ((Int))
ccsrcholZeroPivot a1 a2 a3 =
  let {a1' = useHandle a1} in
  let {a2' = useInfo_csrchol a2} in
  let {a3' = CFloat a3} in
  alloca $ \a4' ->
  ccsrcholZeroPivot'_ a1' a2' a3' a4' >>= \res ->
  checkStatus res >>
  peekIntConv  a4'>>= \a4'' ->
  return (a4'')

{-# LINE 227 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE zcsrcholZeroPivot #-}
zcsrcholZeroPivot :: (Handle) -> (Info_csrchol) -> (Double) -> IO ((Int))
zcsrcholZeroPivot a1 a2 a3 =
  let {a1' = useHandle a1} in
  let {a2' = useInfo_csrchol a2} in
  let {a3' = CDouble a3} in
  alloca $ \a4' ->
  zcsrcholZeroPivot'_ a1' a2' a3' a4' >>= \res ->
  checkStatus res >>
  peekIntConv  a4'>>= \a4'' ->
  return (a4'')

{-# LINE 230 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE scsrcholSolve #-}
scsrcholSolve :: (Handle) -> (Int) -> (DevicePtr Float) -> (DevicePtr Float) -> (Info_csrchol) -> (DevicePtr ()) -> IO ()
scsrcholSolve a1 a2 a3 a4 a5 a6 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = useDevP a3} in
  let {a4' = useDevP a4} in
  let {a5' = useInfo_csrchol a5} in
  let {a6' = useDevP a6} in
  scsrcholSolve'_ a1' a2' a3' a4' a5' a6' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 233 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE dcsrcholSolve #-}
dcsrcholSolve :: (Handle) -> (Int) -> (DevicePtr Double) -> (DevicePtr Double) -> (Info_csrchol) -> (DevicePtr ()) -> IO ()
dcsrcholSolve a1 a2 a3 a4 a5 a6 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = useDevP a3} in
  let {a4' = useDevP a4} in
  let {a5' = useInfo_csrchol a5} in
  let {a6' = useDevP a6} in
  dcsrcholSolve'_ a1' a2' a3' a4' a5' a6' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 236 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE ccsrcholSolve #-}
ccsrcholSolve :: (Handle) -> (Int) -> (DevicePtr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Info_csrchol) -> (DevicePtr ()) -> IO ()
ccsrcholSolve a1 a2 a3 a4 a5 a6 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = useDevP a3} in
  let {a4' = useDevP a4} in
  let {a5' = useInfo_csrchol a5} in
  let {a6' = useDevP a6} in
  ccsrcholSolve'_ a1' a2' a3' a4' a5' a6' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 239 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


{-# INLINEABLE zcsrcholSolve #-}
zcsrcholSolve :: (Handle) -> (Int) -> (DevicePtr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Info_csrchol) -> (DevicePtr ()) -> IO ()
zcsrcholSolve a1 a2 a3 a4 a5 a6 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = useDevP a3} in
  let {a4' = useDevP a4} in
  let {a5' = useInfo_csrchol a5} in
  let {a6' = useDevP a6} in
  zcsrcholSolve'_ a1' a2' a3' a4' a5' a6' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 358 "./Foreign/CUDA/Solver/Sparse/Low.chs" #-}


foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Low.chs.h cusolverSpXcsrqrAnalysisBatched"
  xcsrqrAnalysisBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Low.chs.h cusolverSpScsrqrBufferInfoBatched"
  scsrqrBufferInfoBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CULong) -> ((C2HSImp.Ptr C2HSImp.CULong) -> (IO C2HSImp.CInt)))))))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Low.chs.h cusolverSpDcsrqrBufferInfoBatched"
  dcsrqrBufferInfoBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CULong) -> ((C2HSImp.Ptr C2HSImp.CULong) -> (IO C2HSImp.CInt)))))))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Low.chs.h cusolverSpCcsrqrBufferInfoBatched"
  ccsrqrBufferInfoBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CULong) -> ((C2HSImp.Ptr C2HSImp.CULong) -> (IO C2HSImp.CInt)))))))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Low.chs.h cusolverSpZcsrqrBufferInfoBatched"
  zcsrqrBufferInfoBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CULong) -> ((C2HSImp.Ptr C2HSImp.CULong) -> (IO C2HSImp.CInt)))))))))))))

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

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

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Low.chs.h cusolverSpCcsrqrsvBatched"
  ccsrqrsvBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Low.chs.h cusolverSpZcsrqrsvBatched"
  zcsrqrsvBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Low.chs.h cusolverSpXcsrqrAnalysis"
  xcsrqrAnalysis'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Low.chs.h cusolverSpScsrqrBufferInfo"
  scsrqrBufferInfo'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CULong) -> ((C2HSImp.Ptr C2HSImp.CULong) -> (IO C2HSImp.CInt))))))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Low.chs.h cusolverSpDcsrqrBufferInfo"
  dcsrqrBufferInfo'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CULong) -> ((C2HSImp.Ptr C2HSImp.CULong) -> (IO C2HSImp.CInt))))))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Low.chs.h cusolverSpCcsrqrBufferInfo"
  ccsrqrBufferInfo'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CULong) -> ((C2HSImp.Ptr C2HSImp.CULong) -> (IO C2HSImp.CInt))))))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Low.chs.h cusolverSpZcsrqrBufferInfo"
  zcsrqrBufferInfo'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CULong) -> ((C2HSImp.Ptr C2HSImp.CULong) -> (IO C2HSImp.CInt))))))))))))

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

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

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Low.chs.h cusolverSpCcsrqrSetup"
  ccsrqrSetup'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Low.chs.h cusolverSpZcsrqrSetup"
  zcsrqrSetup'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))))

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

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

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Low.chs.h cusolverSpCcsrqrFactor"
  ccsrqrFactor'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Low.chs.h cusolverSpZcsrqrFactor"
  zcsrqrFactor'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))

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

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

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

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

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

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

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Low.chs.h cusolverSpCcsrqrSolve"
  ccsrqrSolve'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Low.chs.h cusolverSpZcsrqrSolve"
  zcsrqrSolve'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Low.chs.h cusolverSpXcsrcholAnalysis"
  xcsrcholAnalysis'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Low.chs.h cusolverSpScsrcholBufferInfo"
  scsrcholBufferInfo'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CULong) -> ((C2HSImp.Ptr C2HSImp.CULong) -> (IO C2HSImp.CInt)))))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Low.chs.h cusolverSpDcsrcholBufferInfo"
  dcsrcholBufferInfo'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CULong) -> ((C2HSImp.Ptr C2HSImp.CULong) -> (IO C2HSImp.CInt)))))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Low.chs.h cusolverSpCcsrcholBufferInfo"
  ccsrcholBufferInfo'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CULong) -> ((C2HSImp.Ptr C2HSImp.CULong) -> (IO C2HSImp.CInt)))))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Low.chs.h cusolverSpZcsrcholBufferInfo"
  zcsrcholBufferInfo'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CULong) -> ((C2HSImp.Ptr C2HSImp.CULong) -> (IO C2HSImp.CInt)))))))))))

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

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

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Low.chs.h cusolverSpCcsrcholFactor"
  ccsrcholFactor'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Low.chs.h cusolverSpZcsrcholFactor"
  zcsrcholFactor'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))

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

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

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

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

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

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

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Low.chs.h cusolverSpCcsrcholSolve"
  ccsrcholSolve'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Low.chs.h cusolverSpZcsrcholSolve"
  zcsrcholSolve'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))