-- GENERATED by C->Haskell Compiler, version 0.28.6 Switcheroo, 25 November 2017 (Haskell)
-- Edit the ORIGNAL .chs file instead!


{-# LINE 1 "./Foreign/CUDA/BLAS/Level3.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.BLAS.Level3
-- 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 cuBLAS Level-3 function reference:
--
-- <http://docs.nvidia.com/cuda/cublas/index.html#cublas-level-3-function-reference>
--

module Foreign.CUDA.BLAS.Level3 (

  Operation(..),
  Fill(..),
  Diagonal(..),
  Side(..),
  Type(..),
  GemmAlgorithm(..),
  sgemm,
  dgemm,
  cgemm,
  zgemm,
  sgemmBatched,
  dgemmBatched,
  cgemmBatched,
  zgemmBatched,
  ssymm,
  dsymm,
  csymm,
  zsymm,
  ssyrk,
  dsyrk,
  csyrk,
  zsyrk,
  ssyr2k,
  dsyr2k,
  csyr2k,
  zsyr2k,
  ssyrkx,
  dsyrkx,
  csyrkx,
  zsyrkx,
  strmm,
  dtrmm,
  ctrmm,
  ztrmm,
  strsm,
  dtrsm,
  ctrsm,
  ztrsm,
  strsmBatched,
  dtrsmBatched,
  ctrsmBatched,
  ztrsmBatched,
  chemm,
  zhemm,
  cherk,
  zherk,
  cher2k,
  zher2k,
  cherkx,
  zherkx,
  sgeam,
  dgeam,
  cgeam,
  zgeam,
  sdgmm,
  ddgmm,
  cdgmm,
  zdgmm,
  sgetrfBatched,
  dgetrfBatched,
  cgetrfBatched,
  zgetrfBatched,
  sgetriBatched,
  dgetriBatched,
  cgetriBatched,
  zgetriBatched,
  smatinvBatched,
  dmatinvBatched,
  cmatinvBatched,
  zmatinvBatched,
  sgeqrfBatched,
  dgeqrfBatched,
  cgeqrfBatched,
  zgeqrfBatched,
  sgelsBatched,
  dgelsBatched,
  cgelsBatched,
  zgelsBatched,
  stpttr,
  dtpttr,
  ctpttr,
  ztpttr,
  strttp,
  dtrttp,
  ctrttp,
  ztrttp,
  sgetrsBatched,
  dgetrsBatched,
  cgetrsBatched,
  zgetrsBatched,
  hgemm,
  sgemmEx,
  cgemm3m,
  zgemm3m,
  sgemmStridedBatched,
  dgemmStridedBatched,
  cgemmStridedBatched,
  zgemmStridedBatched,
  hgemmStridedBatched,
  cgemm3mStridedBatched,
  cgemmEx,
  gemmEx,
  csyrkEx,
  csyrk3mEx,
  cherkEx,
  cherk3mEx,
  nrm2Ex,
  axpyEx,
  dotEx,
  dotcEx,
  scalEx,
  gemmBatchedEx,
  gemmStridedBatchedEx,

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



import Data.Complex
import Numeric.Half
import Foreign
import Foreign.C
import Foreign.Storable.Complex ()
import Foreign.CUDA.Ptr
import Foreign.CUDA.BLAS.Error
import Foreign.CUDA.BLAS.Internal.C2HS
import Foreign.CUDA.BLAS.Internal.Types



{-# LINE 152 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

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


{-# INLINEABLE sgemm #-}
sgemm :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr Float) -> (DevicePtr Float) -> (Int) -> (DevicePtr Float) -> (Int) -> (Ptr Float) -> (DevicePtr Float) -> (Int) -> IO ((()))
sgemm a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = useDevP a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  let {a12' = castPtr a12} in
  let {a13' = useDevP a13} in
  let {a14' = fromIntegral a14} in
  sgemm'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 164 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE dgemm #-}
dgemm :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr Double) -> (DevicePtr Double) -> (Int) -> (DevicePtr Double) -> (Int) -> (Ptr Double) -> (DevicePtr Double) -> (Int) -> IO ((()))
dgemm a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = useDevP a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  let {a12' = castPtr a12} in
  let {a13' = useDevP a13} in
  let {a14' = fromIntegral a14} in
  dgemm'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 167 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE cgemm #-}
cgemm :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> (DevicePtr (Complex Float)) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> IO ((()))
cgemm a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = useDevP a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  let {a12' = castPtr a12} in
  let {a13' = useDevP a13} in
  let {a14' = fromIntegral a14} in
  cgemm'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 170 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE zgemm #-}
zgemm :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Int) -> (DevicePtr (Complex Double)) -> (Int) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Int) -> IO ((()))
zgemm a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = useDevP a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  let {a12' = castPtr a12} in
  let {a13' = useDevP a13} in
  let {a14' = fromIntegral a14} in
  zgemm'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 173 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE sgemmBatched #-}
sgemmBatched :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr Float) -> (DevicePtr (DevicePtr Float)) -> (Int) -> (DevicePtr (DevicePtr Float)) -> (Int) -> (Ptr Float) -> (DevicePtr (DevicePtr Float)) -> (Int) -> (Int) -> IO ((()))
sgemmBatched a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = useDevP a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  let {a12' = castPtr a12} in
  let {a13' = useDevP a13} in
  let {a14' = fromIntegral a14} in
  let {a15' = fromIntegral a15} in
  sgemmBatched'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 176 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE dgemmBatched #-}
dgemmBatched :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr Double) -> (DevicePtr (DevicePtr Double)) -> (Int) -> (DevicePtr (DevicePtr Double)) -> (Int) -> (Ptr Double) -> (DevicePtr (DevicePtr Double)) -> (Int) -> (Int) -> IO ((()))
dgemmBatched a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = useDevP a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  let {a12' = castPtr a12} in
  let {a13' = useDevP a13} in
  let {a14' = fromIntegral a14} in
  let {a15' = fromIntegral a15} in
  dgemmBatched'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 179 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE cgemmBatched #-}
cgemmBatched :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr (DevicePtr (Complex Float))) -> (Int) -> (DevicePtr (DevicePtr (Complex Float))) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr (DevicePtr (Complex Float))) -> (Int) -> (Int) -> IO ((()))
cgemmBatched a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = useDevP a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  let {a12' = castPtr a12} in
  let {a13' = useDevP a13} in
  let {a14' = fromIntegral a14} in
  let {a15' = fromIntegral a15} in
  cgemmBatched'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 182 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE zgemmBatched #-}
zgemmBatched :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (DevicePtr (DevicePtr (Complex Double))) -> (Int) -> (DevicePtr (DevicePtr (Complex Double))) -> (Int) -> (Ptr (Complex Double)) -> (DevicePtr (DevicePtr (Complex Double))) -> (Int) -> (Int) -> IO ((()))
zgemmBatched a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = useDevP a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  let {a12' = castPtr a12} in
  let {a13' = useDevP a13} in
  let {a14' = fromIntegral a14} in
  let {a15' = fromIntegral a15} in
  zgemmBatched'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 185 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE ssymm #-}
ssymm :: (Handle) -> (Side) -> (Fill) -> (Int) -> (Int) -> (Ptr Float) -> (DevicePtr Float) -> (Int) -> (DevicePtr Float) -> (Int) -> (Ptr Float) -> (DevicePtr Float) -> (Int) -> IO ((()))
ssymm a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = castPtr a11} in
  let {a12' = useDevP a12} in
  let {a13' = fromIntegral a13} in
  ssymm'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 188 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE dsymm #-}
dsymm :: (Handle) -> (Side) -> (Fill) -> (Int) -> (Int) -> (Ptr Double) -> (DevicePtr Double) -> (Int) -> (DevicePtr Double) -> (Int) -> (Ptr Double) -> (DevicePtr Double) -> (Int) -> IO ((()))
dsymm a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = castPtr a11} in
  let {a12' = useDevP a12} in
  let {a13' = fromIntegral a13} in
  dsymm'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 191 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE csymm #-}
csymm :: (Handle) -> (Side) -> (Fill) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> (DevicePtr (Complex Float)) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> IO ((()))
csymm a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = castPtr a11} in
  let {a12' = useDevP a12} in
  let {a13' = fromIntegral a13} in
  csymm'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 194 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE zsymm #-}
zsymm :: (Handle) -> (Side) -> (Fill) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Int) -> (DevicePtr (Complex Double)) -> (Int) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Int) -> IO ((()))
zsymm a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = castPtr a11} in
  let {a12' = useDevP a12} in
  let {a13' = fromIntegral a13} in
  zsymm'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 197 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE ssyrk #-}
ssyrk :: (Handle) -> (Fill) -> (Operation) -> (Int) -> (Int) -> (Ptr Float) -> (DevicePtr Float) -> (Int) -> (Ptr Float) -> (DevicePtr Float) -> (Int) -> IO ((()))
ssyrk a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = castPtr a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  ssyrk'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 200 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE dsyrk #-}
dsyrk :: (Handle) -> (Fill) -> (Operation) -> (Int) -> (Int) -> (Ptr Double) -> (DevicePtr Double) -> (Int) -> (Ptr Double) -> (DevicePtr Double) -> (Int) -> IO ((()))
dsyrk a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = castPtr a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  dsyrk'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 203 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE csyrk #-}
csyrk :: (Handle) -> (Fill) -> (Operation) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> IO ((()))
csyrk a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = castPtr a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  csyrk'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 206 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE zsyrk #-}
zsyrk :: (Handle) -> (Fill) -> (Operation) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Int) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Int) -> IO ((()))
zsyrk a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = castPtr a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  zsyrk'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 209 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE ssyr2k #-}
ssyr2k :: (Handle) -> (Fill) -> (Operation) -> (Int) -> (Int) -> (Ptr Float) -> (DevicePtr Float) -> (Int) -> (DevicePtr Float) -> (Int) -> (Ptr Float) -> (DevicePtr Float) -> (Int) -> IO ((()))
ssyr2k a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = castPtr a11} in
  let {a12' = useDevP a12} in
  let {a13' = fromIntegral a13} in
  ssyr2k'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 212 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE dsyr2k #-}
dsyr2k :: (Handle) -> (Fill) -> (Operation) -> (Int) -> (Int) -> (Ptr Double) -> (DevicePtr Double) -> (Int) -> (DevicePtr Double) -> (Int) -> (Ptr Double) -> (DevicePtr Double) -> (Int) -> IO ((()))
dsyr2k a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = castPtr a11} in
  let {a12' = useDevP a12} in
  let {a13' = fromIntegral a13} in
  dsyr2k'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 215 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE csyr2k #-}
csyr2k :: (Handle) -> (Fill) -> (Operation) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> (DevicePtr (Complex Float)) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> IO ((()))
csyr2k a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = castPtr a11} in
  let {a12' = useDevP a12} in
  let {a13' = fromIntegral a13} in
  csyr2k'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 218 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE zsyr2k #-}
zsyr2k :: (Handle) -> (Fill) -> (Operation) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Int) -> (DevicePtr (Complex Double)) -> (Int) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Int) -> IO ((()))
zsyr2k a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = castPtr a11} in
  let {a12' = useDevP a12} in
  let {a13' = fromIntegral a13} in
  zsyr2k'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 221 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE ssyrkx #-}
ssyrkx :: (Handle) -> (Fill) -> (Operation) -> (Int) -> (Int) -> (Ptr Float) -> (DevicePtr Float) -> (Int) -> (DevicePtr Float) -> (Int) -> (Ptr Float) -> (DevicePtr Float) -> (Int) -> IO ((()))
ssyrkx a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = castPtr a11} in
  let {a12' = useDevP a12} in
  let {a13' = fromIntegral a13} in
  ssyrkx'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 224 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE dsyrkx #-}
dsyrkx :: (Handle) -> (Fill) -> (Operation) -> (Int) -> (Int) -> (Ptr Double) -> (DevicePtr Double) -> (Int) -> (DevicePtr Double) -> (Int) -> (Ptr Double) -> (DevicePtr Double) -> (Int) -> IO ((()))
dsyrkx a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = castPtr a11} in
  let {a12' = useDevP a12} in
  let {a13' = fromIntegral a13} in
  dsyrkx'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 227 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE csyrkx #-}
csyrkx :: (Handle) -> (Fill) -> (Operation) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> (DevicePtr (Complex Float)) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> IO ((()))
csyrkx a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = castPtr a11} in
  let {a12' = useDevP a12} in
  let {a13' = fromIntegral a13} in
  csyrkx'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 230 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE zsyrkx #-}
zsyrkx :: (Handle) -> (Fill) -> (Operation) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Int) -> (DevicePtr (Complex Double)) -> (Int) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Int) -> IO ((()))
zsyrkx a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = castPtr a11} in
  let {a12' = useDevP a12} in
  let {a13' = fromIntegral a13} in
  zsyrkx'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 233 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE strmm #-}
strmm :: (Handle) -> (Side) -> (Fill) -> (Operation) -> (Diagonal) -> (Int) -> (Int) -> (Ptr Float) -> (DevicePtr Float) -> (Int) -> (DevicePtr Float) -> (Int) -> (DevicePtr Float) -> (Int) -> IO ((()))
strmm a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = cFromEnum a4} in
  let {a5' = cFromEnum a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = fromIntegral a7} in
  let {a8' = castPtr a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  let {a12' = fromIntegral a12} in
  let {a13' = useDevP a13} in
  let {a14' = fromIntegral a14} in
  strmm'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 236 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE dtrmm #-}
dtrmm :: (Handle) -> (Side) -> (Fill) -> (Operation) -> (Diagonal) -> (Int) -> (Int) -> (Ptr Double) -> (DevicePtr Double) -> (Int) -> (DevicePtr Double) -> (Int) -> (DevicePtr Double) -> (Int) -> IO ((()))
dtrmm a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = cFromEnum a4} in
  let {a5' = cFromEnum a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = fromIntegral a7} in
  let {a8' = castPtr a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  let {a12' = fromIntegral a12} in
  let {a13' = useDevP a13} in
  let {a14' = fromIntegral a14} in
  dtrmm'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 239 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE ctrmm #-}
ctrmm :: (Handle) -> (Side) -> (Fill) -> (Operation) -> (Diagonal) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> (DevicePtr (Complex Float)) -> (Int) -> (DevicePtr (Complex Float)) -> (Int) -> IO ((()))
ctrmm a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = cFromEnum a4} in
  let {a5' = cFromEnum a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = fromIntegral a7} in
  let {a8' = castPtr a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  let {a12' = fromIntegral a12} in
  let {a13' = useDevP a13} in
  let {a14' = fromIntegral a14} in
  ctrmm'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 242 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE ztrmm #-}
ztrmm :: (Handle) -> (Side) -> (Fill) -> (Operation) -> (Diagonal) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Int) -> (DevicePtr (Complex Double)) -> (Int) -> (DevicePtr (Complex Double)) -> (Int) -> IO ((()))
ztrmm a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = cFromEnum a4} in
  let {a5' = cFromEnum a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = fromIntegral a7} in
  let {a8' = castPtr a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  let {a12' = fromIntegral a12} in
  let {a13' = useDevP a13} in
  let {a14' = fromIntegral a14} in
  ztrmm'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 245 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE strsm #-}
strsm :: (Handle) -> (Side) -> (Fill) -> (Operation) -> (Diagonal) -> (Int) -> (Int) -> (Ptr Float) -> (DevicePtr Float) -> (Int) -> (DevicePtr Float) -> (Int) -> IO ((()))
strsm a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = cFromEnum a4} in
  let {a5' = cFromEnum a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = fromIntegral a7} in
  let {a8' = castPtr a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  let {a12' = fromIntegral a12} in
  strsm'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 248 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE dtrsm #-}
dtrsm :: (Handle) -> (Side) -> (Fill) -> (Operation) -> (Diagonal) -> (Int) -> (Int) -> (Ptr Double) -> (DevicePtr Double) -> (Int) -> (DevicePtr Double) -> (Int) -> IO ((()))
dtrsm a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = cFromEnum a4} in
  let {a5' = cFromEnum a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = fromIntegral a7} in
  let {a8' = castPtr a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  let {a12' = fromIntegral a12} in
  dtrsm'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 251 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE ctrsm #-}
ctrsm :: (Handle) -> (Side) -> (Fill) -> (Operation) -> (Diagonal) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> (DevicePtr (Complex Float)) -> (Int) -> IO ((()))
ctrsm a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = cFromEnum a4} in
  let {a5' = cFromEnum a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = fromIntegral a7} in
  let {a8' = castPtr a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  let {a12' = fromIntegral a12} in
  ctrsm'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 254 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE ztrsm #-}
ztrsm :: (Handle) -> (Side) -> (Fill) -> (Operation) -> (Diagonal) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Int) -> (DevicePtr (Complex Double)) -> (Int) -> IO ((()))
ztrsm a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = cFromEnum a4} in
  let {a5' = cFromEnum a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = fromIntegral a7} in
  let {a8' = castPtr a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  let {a12' = fromIntegral a12} in
  ztrsm'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 257 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE strsmBatched #-}
strsmBatched :: (Handle) -> (Side) -> (Fill) -> (Operation) -> (Diagonal) -> (Int) -> (Int) -> (Ptr Float) -> (DevicePtr (DevicePtr Float)) -> (Int) -> (DevicePtr (DevicePtr Float)) -> (Int) -> (Int) -> IO ((()))
strsmBatched a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = cFromEnum a4} in
  let {a5' = cFromEnum a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = fromIntegral a7} in
  let {a8' = castPtr a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  let {a12' = fromIntegral a12} in
  let {a13' = fromIntegral a13} in
  strsmBatched'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 260 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE dtrsmBatched #-}
dtrsmBatched :: (Handle) -> (Side) -> (Fill) -> (Operation) -> (Diagonal) -> (Int) -> (Int) -> (Ptr Double) -> (DevicePtr (DevicePtr Double)) -> (Int) -> (DevicePtr (DevicePtr Double)) -> (Int) -> (Int) -> IO ((()))
dtrsmBatched a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = cFromEnum a4} in
  let {a5' = cFromEnum a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = fromIntegral a7} in
  let {a8' = castPtr a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  let {a12' = fromIntegral a12} in
  let {a13' = fromIntegral a13} in
  dtrsmBatched'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 263 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE ctrsmBatched #-}
ctrsmBatched :: (Handle) -> (Side) -> (Fill) -> (Operation) -> (Diagonal) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr (DevicePtr (Complex Float))) -> (Int) -> (DevicePtr (DevicePtr (Complex Float))) -> (Int) -> (Int) -> IO ((()))
ctrsmBatched a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = cFromEnum a4} in
  let {a5' = cFromEnum a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = fromIntegral a7} in
  let {a8' = castPtr a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  let {a12' = fromIntegral a12} in
  let {a13' = fromIntegral a13} in
  ctrsmBatched'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 266 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE ztrsmBatched #-}
ztrsmBatched :: (Handle) -> (Side) -> (Fill) -> (Operation) -> (Diagonal) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (DevicePtr (DevicePtr (Complex Double))) -> (Int) -> (DevicePtr (DevicePtr (Complex Double))) -> (Int) -> (Int) -> IO ((()))
ztrsmBatched a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = cFromEnum a4} in
  let {a5' = cFromEnum a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = fromIntegral a7} in
  let {a8' = castPtr a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  let {a12' = fromIntegral a12} in
  let {a13' = fromIntegral a13} in
  ztrsmBatched'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 269 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE chemm #-}
chemm :: (Handle) -> (Side) -> (Fill) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> (DevicePtr (Complex Float)) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> IO ((()))
chemm a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = castPtr a11} in
  let {a12' = useDevP a12} in
  let {a13' = fromIntegral a13} in
  chemm'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 272 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE zhemm #-}
zhemm :: (Handle) -> (Side) -> (Fill) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Int) -> (DevicePtr (Complex Double)) -> (Int) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Int) -> IO ((()))
zhemm a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = castPtr a11} in
  let {a12' = useDevP a12} in
  let {a13' = fromIntegral a13} in
  zhemm'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 275 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE cherk #-}
cherk :: (Handle) -> (Fill) -> (Operation) -> (Int) -> (Int) -> (Ptr Float) -> (DevicePtr (Complex Float)) -> (Int) -> (Ptr Float) -> (DevicePtr (Complex Float)) -> (Int) -> IO ((()))
cherk a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = castPtr a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  cherk'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 278 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE zherk #-}
zherk :: (Handle) -> (Fill) -> (Operation) -> (Int) -> (Int) -> (Ptr Double) -> (DevicePtr (Complex Double)) -> (Int) -> (Ptr Double) -> (DevicePtr (Complex Double)) -> (Int) -> IO ((()))
zherk a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = castPtr a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  zherk'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 281 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE cher2k #-}
cher2k :: (Handle) -> (Fill) -> (Operation) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> (DevicePtr (Complex Float)) -> (Int) -> (Ptr Float) -> (DevicePtr (Complex Float)) -> (Int) -> IO ((()))
cher2k a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = castPtr a11} in
  let {a12' = useDevP a12} in
  let {a13' = fromIntegral a13} in
  cher2k'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 284 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE zher2k #-}
zher2k :: (Handle) -> (Fill) -> (Operation) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Int) -> (DevicePtr (Complex Double)) -> (Int) -> (Ptr Double) -> (DevicePtr (Complex Double)) -> (Int) -> IO ((()))
zher2k a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = castPtr a11} in
  let {a12' = useDevP a12} in
  let {a13' = fromIntegral a13} in
  zher2k'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 287 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE cherkx #-}
cherkx :: (Handle) -> (Fill) -> (Operation) -> (Int) -> (Int) -> (Ptr Float) -> (DevicePtr Float) -> (Int) -> (DevicePtr Float) -> (Int) -> (Ptr Float) -> (DevicePtr Float) -> (Int) -> IO ((()))
cherkx a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = castPtr a11} in
  let {a12' = useDevP a12} in
  let {a13' = fromIntegral a13} in
  cherkx'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 290 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE zherkx #-}
zherkx :: (Handle) -> (Fill) -> (Operation) -> (Int) -> (Int) -> (Ptr Double) -> (DevicePtr Double) -> (Int) -> (DevicePtr Double) -> (Int) -> (Ptr Double) -> (DevicePtr Double) -> (Int) -> IO ((()))
zherkx a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = castPtr a11} in
  let {a12' = useDevP a12} in
  let {a13' = fromIntegral a13} in
  zherkx'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 293 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE sgeam #-}
sgeam :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Ptr Float) -> (DevicePtr Float) -> (Int) -> (Ptr Float) -> (DevicePtr Float) -> (Int) -> (DevicePtr Float) -> (Int) -> IO ((()))
sgeam a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = castPtr a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  let {a12' = useDevP a12} in
  let {a13' = fromIntegral a13} in
  sgeam'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 296 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE dgeam #-}
dgeam :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Ptr Double) -> (DevicePtr Double) -> (Int) -> (Ptr Double) -> (DevicePtr Double) -> (Int) -> (DevicePtr Double) -> (Int) -> IO ((()))
dgeam a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = castPtr a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  let {a12' = useDevP a12} in
  let {a13' = fromIntegral a13} in
  dgeam'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 299 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE cgeam #-}
cgeam :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> (DevicePtr (Complex Float)) -> (Int) -> IO ((()))
cgeam a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = castPtr a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  let {a12' = useDevP a12} in
  let {a13' = fromIntegral a13} in
  cgeam'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 302 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE zgeam #-}
zgeam :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Int) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Int) -> (DevicePtr (Complex Double)) -> (Int) -> IO ((()))
zgeam a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = castPtr a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  let {a12' = useDevP a12} in
  let {a13' = fromIntegral a13} in
  zgeam'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 305 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 308 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 311 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 314 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 317 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 320 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 323 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 326 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 329 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 332 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 335 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 338 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 341 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 344 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 347 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 350 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 353 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 356 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 359 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 362 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 365 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE sgelsBatched #-}
sgelsBatched :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Int) -> (DevicePtr (DevicePtr Float)) -> (Int) -> (DevicePtr (DevicePtr Float)) -> (Int) -> (HostPtr Int32) -> (DevicePtr Int32) -> (Int) -> IO ((()))
sgelsBatched a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = useDevP a6} in
  let {a7' = fromIntegral a7} in
  let {a8' = useDevP a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = useHostP a10} in
  let {a11' = useDevP a11} in
  let {a12' = fromIntegral a12} in
  sgelsBatched'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 368 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE dgelsBatched #-}
dgelsBatched :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Int) -> (DevicePtr (DevicePtr Double)) -> (Int) -> (DevicePtr (DevicePtr Double)) -> (Int) -> (HostPtr Int32) -> (DevicePtr Int32) -> (Int) -> IO ((()))
dgelsBatched a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = useDevP a6} in
  let {a7' = fromIntegral a7} in
  let {a8' = useDevP a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = useHostP a10} in
  let {a11' = useDevP a11} in
  let {a12' = fromIntegral a12} in
  dgelsBatched'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 371 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE cgelsBatched #-}
cgelsBatched :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Int) -> (DevicePtr (DevicePtr (Complex Float))) -> (Int) -> (DevicePtr (DevicePtr (Complex Float))) -> (Int) -> (HostPtr Int32) -> (DevicePtr Int32) -> (Int) -> IO ((()))
cgelsBatched a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = useDevP a6} in
  let {a7' = fromIntegral a7} in
  let {a8' = useDevP a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = useHostP a10} in
  let {a11' = useDevP a11} in
  let {a12' = fromIntegral a12} in
  cgelsBatched'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 374 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE zgelsBatched #-}
zgelsBatched :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Int) -> (DevicePtr (DevicePtr (Complex Double))) -> (Int) -> (DevicePtr (DevicePtr (Complex Double))) -> (Int) -> (HostPtr Int32) -> (DevicePtr Int32) -> (Int) -> IO ((()))
zgelsBatched a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = useDevP a6} in
  let {a7' = fromIntegral a7} in
  let {a8' = useDevP a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = useHostP a10} in
  let {a11' = useDevP a11} in
  let {a12' = fromIntegral a12} in
  zgelsBatched'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 377 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 380 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 383 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 386 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 389 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 392 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 395 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 398 "./Foreign/CUDA/BLAS/Level3.chs" #-}


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

{-# LINE 402 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE sgetrsBatched #-}
sgetrsBatched :: (Handle) -> (Operation) -> (Int) -> (Int) -> (DevicePtr (DevicePtr Float)) -> (Int) -> (DevicePtr Int32) -> (DevicePtr (DevicePtr Float)) -> (Int) -> (HostPtr Int32) -> (Int) -> IO ((()))
sgetrsBatched a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = useDevP a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = useHostP a10} in
  let {a11' = fromIntegral a11} in
  sgetrsBatched'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 405 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE dgetrsBatched #-}
dgetrsBatched :: (Handle) -> (Operation) -> (Int) -> (Int) -> (DevicePtr (DevicePtr Double)) -> (Int) -> (DevicePtr Int32) -> (DevicePtr (DevicePtr Double)) -> (Int) -> (HostPtr Int32) -> (Int) -> IO ((()))
dgetrsBatched a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = useDevP a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = useHostP a10} in
  let {a11' = fromIntegral a11} in
  dgetrsBatched'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 408 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE cgetrsBatched #-}
cgetrsBatched :: (Handle) -> (Operation) -> (Int) -> (Int) -> (DevicePtr (DevicePtr (Complex Float))) -> (Int) -> (DevicePtr Int32) -> (DevicePtr (DevicePtr (Complex Float))) -> (Int) -> (HostPtr Int32) -> (Int) -> IO ((()))
cgetrsBatched a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = useDevP a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = useHostP a10} in
  let {a11' = fromIntegral a11} in
  cgetrsBatched'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 411 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE zgetrsBatched #-}
zgetrsBatched :: (Handle) -> (Operation) -> (Int) -> (Int) -> (DevicePtr (DevicePtr (Complex Double))) -> (Int) -> (DevicePtr Int32) -> (DevicePtr (DevicePtr (Complex Double))) -> (Int) -> (HostPtr Int32) -> (Int) -> IO ((()))
zgetrsBatched a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = useDevP a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = useHostP a10} in
  let {a11' = fromIntegral a11} in
  zgetrsBatched'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 429 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE hgemm #-}
hgemm :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr Half) -> (DevicePtr Half) -> (Int) -> (DevicePtr Half) -> (Int) -> (Ptr Half) -> (DevicePtr Half) -> (Int) -> IO ((()))
hgemm a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = useDevP a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  let {a12' = castPtr a12} in
  let {a13' = useDevP a13} in
  let {a14' = fromIntegral a14} in
  hgemm'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 432 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE sgemmEx #-}
sgemmEx :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr Float) -> (DevicePtr ()) -> (Type) -> (Int) -> (DevicePtr ()) -> (Type) -> (Int) -> (Ptr Float) -> (DevicePtr ()) -> (Type) -> (Int) -> IO ((()))
sgemmEx a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = useDevP a8} in
  let {a9' = cFromEnum a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  let {a12' = cFromEnum a12} in
  let {a13' = fromIntegral a13} in
  let {a14' = castPtr a14} in
  let {a15' = useDevP a15} in
  let {a16' = cFromEnum a16} in
  let {a17' = fromIntegral a17} in
  sgemmEx'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 444 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE cgemm3m #-}
cgemm3m :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> (DevicePtr (Complex Float)) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> IO ((()))
cgemm3m a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = useDevP a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  let {a12' = castPtr a12} in
  let {a13' = useDevP a13} in
  let {a14' = fromIntegral a14} in
  cgemm3m'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 447 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE zgemm3m #-}
zgemm3m :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Int) -> (DevicePtr (Complex Double)) -> (Int) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Int) -> IO ((()))
zgemm3m a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = useDevP a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  let {a12' = castPtr a12} in
  let {a13' = useDevP a13} in
  let {a14' = fromIntegral a14} in
  zgemm3m'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 450 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE sgemmStridedBatched #-}
sgemmStridedBatched :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr Float) -> (DevicePtr Float) -> (Int) -> (Int64) -> (DevicePtr Float) -> (Int) -> (Int64) -> (Ptr Float) -> (DevicePtr Float) -> (Int) -> (Int64) -> (Int) -> IO ((()))
sgemmStridedBatched a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = useDevP a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  let {a12' = fromIntegral a12} in
  let {a13' = fromIntegral a13} in
  let {a14' = castPtr a14} in
  let {a15' = useDevP a15} in
  let {a16' = fromIntegral a16} in
  let {a17' = fromIntegral a17} in
  let {a18' = fromIntegral a18} in
  sgemmStridedBatched'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 453 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE dgemmStridedBatched #-}
dgemmStridedBatched :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr Double) -> (DevicePtr Double) -> (Int) -> (Int64) -> (DevicePtr Double) -> (Int) -> (Int64) -> (Ptr Double) -> (DevicePtr Double) -> (Int) -> (Int64) -> (Int) -> IO ((()))
dgemmStridedBatched a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = useDevP a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  let {a12' = fromIntegral a12} in
  let {a13' = fromIntegral a13} in
  let {a14' = castPtr a14} in
  let {a15' = useDevP a15} in
  let {a16' = fromIntegral a16} in
  let {a17' = fromIntegral a17} in
  let {a18' = fromIntegral a18} in
  dgemmStridedBatched'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 456 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE cgemmStridedBatched #-}
cgemmStridedBatched :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> (Int64) -> (DevicePtr (Complex Float)) -> (Int) -> (Int64) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> (Int64) -> (Int) -> IO ((()))
cgemmStridedBatched a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = useDevP a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  let {a12' = fromIntegral a12} in
  let {a13' = fromIntegral a13} in
  let {a14' = castPtr a14} in
  let {a15' = useDevP a15} in
  let {a16' = fromIntegral a16} in
  let {a17' = fromIntegral a17} in
  let {a18' = fromIntegral a18} in
  cgemmStridedBatched'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 459 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE zgemmStridedBatched #-}
zgemmStridedBatched :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Int) -> (Int64) -> (DevicePtr (Complex Double)) -> (Int) -> (Int64) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Int) -> (Int64) -> (Int) -> IO ((()))
zgemmStridedBatched a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = useDevP a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  let {a12' = fromIntegral a12} in
  let {a13' = fromIntegral a13} in
  let {a14' = castPtr a14} in
  let {a15' = useDevP a15} in
  let {a16' = fromIntegral a16} in
  let {a17' = fromIntegral a17} in
  let {a18' = fromIntegral a18} in
  zgemmStridedBatched'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 462 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE hgemmStridedBatched #-}
hgemmStridedBatched :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr Half) -> (DevicePtr Half) -> (Int) -> (Int64) -> (DevicePtr Half) -> (Int) -> (Int64) -> (Ptr Half) -> (DevicePtr Half) -> (Int) -> (Int64) -> (Int) -> IO ((()))
hgemmStridedBatched a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = useDevP a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  let {a12' = fromIntegral a12} in
  let {a13' = fromIntegral a13} in
  let {a14' = castPtr a14} in
  let {a15' = useDevP a15} in
  let {a16' = fromIntegral a16} in
  let {a17' = fromIntegral a17} in
  let {a18' = fromIntegral a18} in
  hgemmStridedBatched'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 465 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE cgemm3mStridedBatched #-}
cgemm3mStridedBatched :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> (Int64) -> (DevicePtr (Complex Float)) -> (Int) -> (Int64) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> (Int64) -> (Int) -> IO ((()))
cgemm3mStridedBatched a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = useDevP a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  let {a12' = fromIntegral a12} in
  let {a13' = fromIntegral a13} in
  let {a14' = castPtr a14} in
  let {a15' = useDevP a15} in
  let {a16' = fromIntegral a16} in
  let {a17' = fromIntegral a17} in
  let {a18' = fromIntegral a18} in
  cgemm3mStridedBatched'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 468 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE cgemmEx #-}
cgemmEx :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr ()) -> (Type) -> (Int) -> (DevicePtr ()) -> (Type) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr ()) -> (Type) -> (Int) -> IO ((()))
cgemmEx a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = useDevP a8} in
  let {a9' = cFromEnum a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  let {a12' = cFromEnum a12} in
  let {a13' = fromIntegral a13} in
  let {a14' = castPtr a14} in
  let {a15' = useDevP a15} in
  let {a16' = cFromEnum a16} in
  let {a17' = fromIntegral a17} in
  cgemmEx'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 471 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE gemmEx #-}
gemmEx :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr ()) -> (DevicePtr ()) -> (Type) -> (Int) -> (DevicePtr ()) -> (Type) -> (Int) -> (Ptr ()) -> (DevicePtr ()) -> (Type) -> (Int) -> (Type) -> (GemmAlgorithm) -> IO ((()))
gemmEx a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = useDevP a8} in
  let {a9' = cFromEnum a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  let {a12' = cFromEnum a12} in
  let {a13' = fromIntegral a13} in
  let {a14' = castPtr a14} in
  let {a15' = useDevP a15} in
  let {a16' = cFromEnum a16} in
  let {a17' = fromIntegral a17} in
  let {a18' = cFromEnum a18} in
  let {a19' = cFromEnum a19} in
  gemmEx'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' a19' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 474 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE csyrkEx #-}
csyrkEx :: (Handle) -> (Fill) -> (Operation) -> (Int) -> (Int) -> (Ptr Float) -> (DevicePtr ()) -> (Type) -> (Int) -> (Ptr Float) -> (DevicePtr (Complex Float)) -> (Type) -> (Int) -> IO ((()))
csyrkEx a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = cFromEnum a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = castPtr a10} in
  let {a11' = useDevP a11} in
  let {a12' = cFromEnum a12} in
  let {a13' = fromIntegral a13} in
  csyrkEx'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 477 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE csyrk3mEx #-}
csyrk3mEx :: (Handle) -> (Fill) -> (Operation) -> (Int) -> (Int) -> (Ptr Float) -> (DevicePtr ()) -> (Type) -> (Int) -> (Ptr Float) -> (DevicePtr (Complex Float)) -> (Type) -> (Int) -> IO ((()))
csyrk3mEx a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = cFromEnum a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = castPtr a10} in
  let {a11' = useDevP a11} in
  let {a12' = cFromEnum a12} in
  let {a13' = fromIntegral a13} in
  csyrk3mEx'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 480 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE cherkEx #-}
cherkEx :: (Handle) -> (Fill) -> (Operation) -> (Int) -> (Int) -> (Ptr Float) -> (DevicePtr ()) -> (Type) -> (Int) -> (Ptr Float) -> (DevicePtr (Complex Float)) -> (Type) -> (Int) -> IO ((()))
cherkEx a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = cFromEnum a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = castPtr a10} in
  let {a11' = useDevP a11} in
  let {a12' = cFromEnum a12} in
  let {a13' = fromIntegral a13} in
  cherkEx'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 483 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE cherk3mEx #-}
cherk3mEx :: (Handle) -> (Fill) -> (Operation) -> (Int) -> (Int) -> (Ptr Float) -> (DevicePtr ()) -> (Type) -> (Int) -> (Ptr Float) -> (DevicePtr (Complex Float)) -> (Type) -> (Int) -> IO ((()))
cherk3mEx a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useDevP a7} in
  let {a8' = cFromEnum a8} in
  let {a9' = fromIntegral a9} in
  let {a10' = castPtr a10} in
  let {a11' = useDevP a11} in
  let {a12' = cFromEnum a12} in
  let {a13' = fromIntegral a13} in
  cherk3mEx'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 486 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE nrm2Ex #-}
nrm2Ex :: (Handle) -> (Int) -> (DevicePtr ()) -> (Type) -> (Int) -> (Ptr ()) -> (Type) -> (Type) -> IO ((()))
nrm2Ex a1 a2 a3 a4 a5 a6 a7 a8 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = useDevP a3} in
  let {a4' = cFromEnum a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = cFromEnum a7} in
  let {a8' = cFromEnum a8} in
  nrm2Ex'_ a1' a2' a3' a4' a5' a6' a7' a8' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 489 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE axpyEx #-}
axpyEx :: (Handle) -> (Int) -> (Ptr ()) -> (Type) -> (DevicePtr ()) -> (Type) -> (Int) -> (DevicePtr ()) -> (Type) -> (Int) -> (Type) -> IO ((()))
axpyEx a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = castPtr a3} in
  let {a4' = cFromEnum a4} in
  let {a5' = useDevP a5} in
  let {a6' = cFromEnum a6} in
  let {a7' = fromIntegral a7} in
  let {a8' = useDevP a8} in
  let {a9' = cFromEnum a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = cFromEnum a11} in
  axpyEx'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 492 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE dotEx #-}
dotEx :: (Handle) -> (Int) -> (DevicePtr ()) -> (Type) -> (Int) -> (DevicePtr ()) -> (Type) -> (Int) -> (Ptr ()) -> (Type) -> (Type) -> IO ((()))
dotEx a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = useDevP a3} in
  let {a4' = cFromEnum a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = useDevP a6} in
  let {a7' = cFromEnum a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = castPtr a9} in
  let {a10' = cFromEnum a10} in
  let {a11' = cFromEnum a11} in
  dotEx'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 495 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE dotcEx #-}
dotcEx :: (Handle) -> (Int) -> (DevicePtr ()) -> (Type) -> (Int) -> (DevicePtr ()) -> (Type) -> (Int) -> (Ptr ()) -> (Type) -> (Type) -> IO ((()))
dotcEx a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = useDevP a3} in
  let {a4' = cFromEnum a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = useDevP a6} in
  let {a7' = cFromEnum a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = castPtr a9} in
  let {a10' = cFromEnum a10} in
  let {a11' = cFromEnum a11} in
  dotcEx'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 498 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE scalEx #-}
scalEx :: (Handle) -> (Int) -> (Ptr ()) -> (Type) -> (DevicePtr ()) -> (Type) -> (Int) -> (Type) -> IO ((()))
scalEx a1 a2 a3 a4 a5 a6 a7 a8 =
  let {a1' = useHandle a1} in
  let {a2' = fromIntegral a2} in
  let {a3' = castPtr a3} in
  let {a4' = cFromEnum a4} in
  let {a5' = useDevP a5} in
  let {a6' = cFromEnum a6} in
  let {a7' = fromIntegral a7} in
  let {a8' = cFromEnum a8} in
  scalEx'_ a1' a2' a3' a4' a5' a6' a7' a8' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 561 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE gemmBatchedEx #-}
gemmBatchedEx :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr ()) -> (DevicePtr (DevicePtr ())) -> (Type) -> (Int) -> (DevicePtr ()) -> (Type) -> (Int) -> (Ptr ()) -> (DevicePtr ()) -> (Type) -> (Int) -> (Int) -> (Type) -> (GemmAlgorithm) -> IO ((()))
gemmBatchedEx a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = useDevP a8} in
  let {a9' = cFromEnum a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useDevP a11} in
  let {a12' = cFromEnum a12} in
  let {a13' = fromIntegral a13} in
  let {a14' = castPtr a14} in
  let {a15' = useDevP a15} in
  let {a16' = cFromEnum a16} in
  let {a17' = fromIntegral a17} in
  let {a18' = fromIntegral a18} in
  let {a19' = cFromEnum a19} in
  let {a20' = cFromEnum a20} in
  gemmBatchedEx'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' a19' a20' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 564 "./Foreign/CUDA/BLAS/Level3.chs" #-}


{-# INLINEABLE gemmStridedBatchedEx #-}
gemmStridedBatchedEx :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr ()) -> (DevicePtr ()) -> (Type) -> (Int) -> (Int64) -> (DevicePtr ()) -> (Type) -> (Int) -> (Int64) -> (Ptr ()) -> (DevicePtr ()) -> (Type) -> (Int) -> (Int64) -> (Int) -> (Type) -> (GemmAlgorithm) -> IO ((()))
gemmStridedBatchedEx a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 a21 a22 a23 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = useDevP a8} in
  let {a9' = cFromEnum a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = fromIntegral a11} in
  let {a12' = useDevP a12} in
  let {a13' = cFromEnum a13} in
  let {a14' = fromIntegral a14} in
  let {a15' = fromIntegral a15} in
  let {a16' = castPtr a16} in
  let {a17' = useDevP a17} in
  let {a18' = cFromEnum a18} in
  let {a19' = fromIntegral a19} in
  let {a20' = fromIntegral a20} in
  let {a21' = fromIntegral a21} in
  let {a22' = cFromEnum a22} in
  let {a23' = cFromEnum a23} in
  gemmStridedBatchedEx'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' a19' a20' a21' a22' a23' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 575 "./Foreign/CUDA/BLAS/Level3.chs" #-}


foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasSgemm_v2"
  sgemm'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasDgemm_v2"
  dgemm'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCgemm_v2"
  cgemm'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasZgemm_v2"
  zgemm'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasSgemmBatched"
  sgemmBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CFloat)) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CFloat)) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CFloat)) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasDgemmBatched"
  dgemmBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CDouble)) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CDouble)) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CDouble)) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCgemmBatched"
  cgemmBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasZgemmBatched"
  zgemmBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasSsymm_v2"
  ssymm'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasDsymm_v2"
  dsymm'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCsymm_v2"
  csymm'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasZsymm_v2"
  zsymm'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasSsyrk_v2"
  ssyrk'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasDsyrk_v2"
  dsyrk'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCsyrk_v2"
  csyrk'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasZsyrk_v2"
  zsyrk'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasSsyr2k_v2"
  ssyr2k'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasDsyr2k_v2"
  dsyr2k'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCsyr2k_v2"
  csyr2k'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasZsyr2k_v2"
  zsyr2k'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasSsyrkx"
  ssyrkx'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasDsyrkx"
  dsyrkx'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCsyrkx"
  csyrkx'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasZsyrkx"
  zsyrkx'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasStrmm_v2"
  strmm'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasDtrmm_v2"
  dtrmm'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCtrmm_v2"
  ctrmm'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasZtrmm_v2"
  ztrmm'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasStrsm_v2"
  strsm'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasDtrsm_v2"
  dtrsm'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCtrsm_v2"
  ctrsm'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasZtrsm_v2"
  ztrsm'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasStrsmBatched"
  strsmBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CFloat)) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CFloat)) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasDtrsmBatched"
  dtrsmBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CDouble)) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CDouble)) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCtrsmBatched"
  ctrsmBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasZtrsmBatched"
  ztrsmBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasChemm_v2"
  chemm'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasZhemm_v2"
  zhemm'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCherk_v2"
  cherk'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasZherk_v2"
  zherk'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCher2k_v2"
  cher2k'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasZher2k_v2"
  zher2k'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCherkx"
  cherkx'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasZherkx"
  zherkx'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasSgeam"
  sgeam'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasDgeam"
  dgeam'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCgeam"
  cgeam'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasZgeam"
  zgeam'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasSdgmm"
  sdgmm'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasDdgmm"
  ddgmm'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCdgmm"
  cdgmm'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasZdgmm"
  zdgmm'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasSgetrfBatched"
  sgetrfBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CFloat)) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasDgetrfBatched"
  dgetrfBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CDouble)) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCgetrfBatched"
  cgetrfBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasZgetrfBatched"
  zgetrfBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasSgetriBatched"
  sgetriBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CFloat)) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CFloat)) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasDgetriBatched"
  dgetriBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CDouble)) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CDouble)) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCgetriBatched"
  cgetriBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasZgetriBatched"
  zgetriBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasSmatinvBatched"
  smatinvBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CFloat)) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CFloat)) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasDmatinvBatched"
  dmatinvBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CDouble)) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CDouble)) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCmatinvBatched"
  cmatinvBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasZmatinvBatched"
  zmatinvBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasSgeqrfBatched"
  sgeqrfBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CFloat)) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CFloat)) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasDgeqrfBatched"
  dgeqrfBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CDouble)) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CDouble)) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCgeqrfBatched"
  cgeqrfBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasZgeqrfBatched"
  zgeqrfBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasSgelsBatched"
  sgelsBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CFloat)) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CFloat)) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasDgelsBatched"
  dgelsBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CDouble)) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CDouble)) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCgelsBatched"
  cgelsBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasZgelsBatched"
  zgelsBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasStpttr"
  stpttr'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasDtpttr"
  dtpttr'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCtpttr"
  ctpttr'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasZtpttr"
  ztpttr'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasStrttp"
  strttp'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (IO C2HSImp.CInt)))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasDtrttp"
  dtrttp'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (IO C2HSImp.CInt)))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCtrttp"
  ctrttp'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasZtrttp"
  ztrttp'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasSgetrsBatched"
  sgetrsBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CFloat)) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CFloat)) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasDgetrsBatched"
  dgetrsBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CDouble)) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CDouble)) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCgetrsBatched"
  cgetrsBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasZgetrsBatched"
  zgetrsBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasHgemm"
  hgemm'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasSgemmEx"
  sgemmEx'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCgemm3m"
  cgemm3m'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasZgemm3m"
  zgemm3m'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasSgemmStridedBatched"
  sgemmStridedBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> (C2HSImp.CLLong -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> (C2HSImp.CLLong -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> (C2HSImp.CLLong -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasDgemmStridedBatched"
  dgemmStridedBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> (C2HSImp.CLLong -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> (C2HSImp.CLLong -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> (C2HSImp.CLLong -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCgemmStridedBatched"
  cgemmStridedBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CLLong -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CLLong -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CLLong -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasZgemmStridedBatched"
  zgemmStridedBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CLLong -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CLLong -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CLLong -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasHgemmStridedBatched"
  hgemmStridedBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CLLong -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CLLong -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CLLong -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCgemm3mStridedBatched"
  cgemm3mStridedBatched'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CLLong -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CLLong -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CLLong -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCgemmEx"
  cgemmEx'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasGemmEx"
  gemmEx'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCsyrkEx"
  csyrkEx'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCsyrk3mEx"
  csyrk3mEx'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCherkEx"
  cherkEx'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasCherk3mEx"
  cherk3mEx'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasNrm2Ex"
  nrm2Ex'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasAxpyEx"
  axpyEx'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasDotEx"
  dotEx'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasDotcEx"
  dotcEx'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasScalEx"
  scalEx'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasGemmBatchedEx"
  gemmBatchedEx'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Level3.chs.h cublasGemmStridedBatchedEx"
  gemmStridedBatchedEx'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CLLong -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CLLong -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CLLong -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))))))))))))