/* Generated by Cython 0.29.21 */

/* BEGIN: Cython Metadata
{
    "distutils": {
        "define_macros": [
            [
                "_FORCE_INLINES",
                "1"
            ],
            [
                "CUPY_NO_CUDA",
                "1"
            ]
        ],
        "depends": [
            "cupy_backends/cupy_complex.h",
            "cupy_backends/cupy_lapack.h"
        ],
        "extra_compile_args": [
            "-fopenmp"
        ],
        "extra_link_args": [
            "-fopenmp",
            "-Wl,--disable-new-dtags,-rpath,/usr/local/cuda/lib64"
        ],
        "include_dirs": [
            "cupy_backends/cuda/libs",
            "/work/cupy/install/../cupy/core/include/cupy/cub",
            "/work/cupy/install/../cupy/core/include",
            "/usr/local/cuda/include"
        ],
        "language": "c++",
        "library_dirs": [
            "/usr/local/cuda/lib64"
        ],
        "name": "cupy_backends.cuda.libs.cusolver",
        "sources": [
            "cupy_backends/cuda/libs/cusolver.pyx"
        ]
    },
    "module_name": "cupy_backends.cuda.libs.cusolver"
}
END: Cython Metadata */

#define PY_SSIZE_T_CLEAN
#include "Python.h"
#ifndef Py_PYTHON_H
    #error Python headers needed to compile C extensions, please install development version of Python.
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
    #error Cython requires Python 2.6+ or Python 3.3+.
#else
#define CYTHON_ABI "0_29_21"
#define CYTHON_HEX_VERSION 0x001D15F0
#define CYTHON_FUTURE_DIVISION 1
#include <stddef.h>
#ifndef offsetof
  #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
#endif
#if !defined(WIN32) && !defined(MS_WINDOWS)
  #ifndef __stdcall
    #define __stdcall
  #endif
  #ifndef __cdecl
    #define __cdecl
  #endif
  #ifndef __fastcall
    #define __fastcall
  #endif
#endif
#ifndef DL_IMPORT
  #define DL_IMPORT(t) t
#endif
#ifndef DL_EXPORT
  #define DL_EXPORT(t) t
#endif
#define __PYX_COMMA ,
#ifndef HAVE_LONG_LONG
  #if PY_VERSION_HEX >= 0x02070000
    #define HAVE_LONG_LONG
  #endif
#endif
#ifndef PY_LONG_LONG
  #define PY_LONG_LONG LONG_LONG
#endif
#ifndef Py_HUGE_VAL
  #define Py_HUGE_VAL HUGE_VAL
#endif
#ifdef PYPY_VERSION
  #define CYTHON_COMPILING_IN_PYPY 1
  #define CYTHON_COMPILING_IN_PYSTON 0
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #undef CYTHON_USE_TYPE_SLOTS
  #define CYTHON_USE_TYPE_SLOTS 0
  #undef CYTHON_USE_PYTYPE_LOOKUP
  #define CYTHON_USE_PYTYPE_LOOKUP 0
  #if PY_VERSION_HEX < 0x03050000
    #undef CYTHON_USE_ASYNC_SLOTS
    #define CYTHON_USE_ASYNC_SLOTS 0
  #elif !defined(CYTHON_USE_ASYNC_SLOTS)
    #define CYTHON_USE_ASYNC_SLOTS 1
  #endif
  #undef CYTHON_USE_PYLIST_INTERNALS
  #define CYTHON_USE_PYLIST_INTERNALS 0
  #undef CYTHON_USE_UNICODE_INTERNALS
  #define CYTHON_USE_UNICODE_INTERNALS 0
  #undef CYTHON_USE_UNICODE_WRITER
  #define CYTHON_USE_UNICODE_WRITER 0
  #undef CYTHON_USE_PYLONG_INTERNALS
  #define CYTHON_USE_PYLONG_INTERNALS 0
  #undef CYTHON_AVOID_BORROWED_REFS
  #define CYTHON_AVOID_BORROWED_REFS 1
  #undef CYTHON_ASSUME_SAFE_MACROS
  #define CYTHON_ASSUME_SAFE_MACROS 0
  #undef CYTHON_UNPACK_METHODS
  #define CYTHON_UNPACK_METHODS 0
  #undef CYTHON_FAST_THREAD_STATE
  #define CYTHON_FAST_THREAD_STATE 0
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #undef CYTHON_PEP489_MULTI_PHASE_INIT
  #define CYTHON_PEP489_MULTI_PHASE_INIT 0
  #undef CYTHON_USE_TP_FINALIZE
  #define CYTHON_USE_TP_FINALIZE 0
  #undef CYTHON_USE_DICT_VERSIONS
  #define CYTHON_USE_DICT_VERSIONS 0
  #undef CYTHON_USE_EXC_INFO_STACK
  #define CYTHON_USE_EXC_INFO_STACK 0
#elif defined(PYSTON_VERSION)
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_PYSTON 1
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #ifndef CYTHON_USE_TYPE_SLOTS
    #define CYTHON_USE_TYPE_SLOTS 1
  #endif
  #undef CYTHON_USE_PYTYPE_LOOKUP
  #define CYTHON_USE_PYTYPE_LOOKUP 0
  #undef CYTHON_USE_ASYNC_SLOTS
  #define CYTHON_USE_ASYNC_SLOTS 0
  #undef CYTHON_USE_PYLIST_INTERNALS
  #define CYTHON_USE_PYLIST_INTERNALS 0
  #ifndef CYTHON_USE_UNICODE_INTERNALS
    #define CYTHON_USE_UNICODE_INTERNALS 1
  #endif
  #undef CYTHON_USE_UNICODE_WRITER
  #define CYTHON_USE_UNICODE_WRITER 0
  #undef CYTHON_USE_PYLONG_INTERNALS
  #define CYTHON_USE_PYLONG_INTERNALS 0
  #ifndef CYTHON_AVOID_BORROWED_REFS
    #define CYTHON_AVOID_BORROWED_REFS 0
  #endif
  #ifndef CYTHON_ASSUME_SAFE_MACROS
    #define CYTHON_ASSUME_SAFE_MACROS 1
  #endif
  #ifndef CYTHON_UNPACK_METHODS
    #define CYTHON_UNPACK_METHODS 1
  #endif
  #undef CYTHON_FAST_THREAD_STATE
  #define CYTHON_FAST_THREAD_STATE 0
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #undef CYTHON_PEP489_MULTI_PHASE_INIT
  #define CYTHON_PEP489_MULTI_PHASE_INIT 0
  #undef CYTHON_USE_TP_FINALIZE
  #define CYTHON_USE_TP_FINALIZE 0
  #undef CYTHON_USE_DICT_VERSIONS
  #define CYTHON_USE_DICT_VERSIONS 0
  #undef CYTHON_USE_EXC_INFO_STACK
  #define CYTHON_USE_EXC_INFO_STACK 0
#else
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_PYSTON 0
  #define CYTHON_COMPILING_IN_CPYTHON 1
  #ifndef CYTHON_USE_TYPE_SLOTS
    #define CYTHON_USE_TYPE_SLOTS 1
  #endif
  #if PY_VERSION_HEX < 0x02070000
    #undef CYTHON_USE_PYTYPE_LOOKUP
    #define CYTHON_USE_PYTYPE_LOOKUP 0
  #elif !defined(CYTHON_USE_PYTYPE_LOOKUP)
    #define CYTHON_USE_PYTYPE_LOOKUP 1
  #endif
  #if PY_MAJOR_VERSION < 3
    #undef CYTHON_USE_ASYNC_SLOTS
    #define CYTHON_USE_ASYNC_SLOTS 0
  #elif !defined(CYTHON_USE_ASYNC_SLOTS)
    #define CYTHON_USE_ASYNC_SLOTS 1
  #endif
  #if PY_VERSION_HEX < 0x02070000
    #undef CYTHON_USE_PYLONG_INTERNALS
    #define CYTHON_USE_PYLONG_INTERNALS 0
  #elif !defined(CYTHON_USE_PYLONG_INTERNALS)
    #define CYTHON_USE_PYLONG_INTERNALS 1
  #endif
  #ifndef CYTHON_USE_PYLIST_INTERNALS
    #define CYTHON_USE_PYLIST_INTERNALS 1
  #endif
  #ifndef CYTHON_USE_UNICODE_INTERNALS
    #define CYTHON_USE_UNICODE_INTERNALS 1
  #endif
  #if PY_VERSION_HEX < 0x030300F0
    #undef CYTHON_USE_UNICODE_WRITER
    #define CYTHON_USE_UNICODE_WRITER 0
  #elif !defined(CYTHON_USE_UNICODE_WRITER)
    #define CYTHON_USE_UNICODE_WRITER 1
  #endif
  #ifndef CYTHON_AVOID_BORROWED_REFS
    #define CYTHON_AVOID_BORROWED_REFS 0
  #endif
  #ifndef CYTHON_ASSUME_SAFE_MACROS
    #define CYTHON_ASSUME_SAFE_MACROS 1
  #endif
  #ifndef CYTHON_UNPACK_METHODS
    #define CYTHON_UNPACK_METHODS 1
  #endif
  #ifndef CYTHON_FAST_THREAD_STATE
    #define CYTHON_FAST_THREAD_STATE 1
  #endif
  #ifndef CYTHON_FAST_PYCALL
    #define CYTHON_FAST_PYCALL 1
  #endif
  #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
    #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
  #endif
  #ifndef CYTHON_USE_TP_FINALIZE
    #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
  #endif
  #ifndef CYTHON_USE_DICT_VERSIONS
    #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
  #endif
  #ifndef CYTHON_USE_EXC_INFO_STACK
    #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
  #endif
#endif
#if !defined(CYTHON_FAST_PYCCALL)
#define CYTHON_FAST_PYCCALL  (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
#endif
#if CYTHON_USE_PYLONG_INTERNALS
  #include "longintrepr.h"
  #undef SHIFT
  #undef BASE
  #undef MASK
  #ifdef SIZEOF_VOID_P
    enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) };
  #endif
#endif
#ifndef __has_attribute
  #define __has_attribute(x) 0
#endif
#ifndef __has_cpp_attribute
  #define __has_cpp_attribute(x) 0
#endif
#ifndef CYTHON_RESTRICT
  #if defined(__GNUC__)
    #define CYTHON_RESTRICT __restrict__
  #elif defined(_MSC_VER) && _MSC_VER >= 1400
    #define CYTHON_RESTRICT __restrict
  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define CYTHON_RESTRICT restrict
  #else
    #define CYTHON_RESTRICT
  #endif
#endif
#ifndef CYTHON_UNUSED
# if defined(__GNUC__)
#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
#     define CYTHON_UNUSED __attribute__ ((__unused__))
#   else
#     define CYTHON_UNUSED
#   endif
# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
#   define CYTHON_UNUSED __attribute__ ((__unused__))
# else
#   define CYTHON_UNUSED
# endif
#endif
#ifndef CYTHON_MAYBE_UNUSED_VAR
#  if defined(__cplusplus)
     template<class T> void CYTHON_MAYBE_UNUSED_VAR( const T& ) { }
#  else
#    define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x)
#  endif
#endif
#ifndef CYTHON_NCP_UNUSED
# if CYTHON_COMPILING_IN_CPYTHON
#  define CYTHON_NCP_UNUSED
# else
#  define CYTHON_NCP_UNUSED CYTHON_UNUSED
# endif
#endif
#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
#ifdef _MSC_VER
    #ifndef _MSC_STDINT_H_
        #if _MSC_VER < 1300
           typedef unsigned char     uint8_t;
           typedef unsigned int      uint32_t;
        #else
           typedef unsigned __int8   uint8_t;
           typedef unsigned __int32  uint32_t;
        #endif
    #endif
#else
   #include <stdint.h>
#endif
#ifndef CYTHON_FALLTHROUGH
  #if defined(__cplusplus) && __cplusplus >= 201103L
    #if __has_cpp_attribute(fallthrough)
      #define CYTHON_FALLTHROUGH [[fallthrough]]
    #elif __has_cpp_attribute(clang::fallthrough)
      #define CYTHON_FALLTHROUGH [[clang::fallthrough]]
    #elif __has_cpp_attribute(gnu::fallthrough)
      #define CYTHON_FALLTHROUGH [[gnu::fallthrough]]
    #endif
  #endif
  #ifndef CYTHON_FALLTHROUGH
    #if __has_attribute(fallthrough)
      #define CYTHON_FALLTHROUGH __attribute__((fallthrough))
    #else
      #define CYTHON_FALLTHROUGH
    #endif
  #endif
  #if defined(__clang__ ) && defined(__apple_build_version__)
    #if __apple_build_version__ < 7000000
      #undef  CYTHON_FALLTHROUGH
      #define CYTHON_FALLTHROUGH
    #endif
  #endif
#endif

#ifndef __cplusplus
  #error "Cython files generated with the C++ option must be compiled with a C++ compiler."
#endif
#ifndef CYTHON_INLINE
  #if defined(__clang__)
    #define CYTHON_INLINE __inline__ __attribute__ ((__unused__))
  #else
    #define CYTHON_INLINE inline
  #endif
#endif
template<typename T>
void __Pyx_call_destructor(T& x) {
    x.~T();
}
template<typename T>
class __Pyx_FakeReference {
  public:
    __Pyx_FakeReference() : ptr(NULL) { }
    __Pyx_FakeReference(const T& ref) : ptr(const_cast<T*>(&ref)) { }
    T *operator->() { return ptr; }
    T *operator&() { return ptr; }
    operator T&() { return *ptr; }
    template<typename U> bool operator ==(U other) { return *ptr == other; }
    template<typename U> bool operator !=(U other) { return *ptr != other; }
  private:
    T *ptr;
};

#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
  #define Py_OptimizeFlag 0
#endif
#define __PYX_BUILD_PY_SSIZE_T "n"
#define CYTHON_FORMAT_SSIZE_T "z"
#if PY_MAJOR_VERSION < 3
  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
          PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
  #define __Pyx_DefaultClassType PyClass_Type
#else
  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
#if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2
  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
          PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
#else
  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
#endif
  #define __Pyx_DefaultClassType PyType_Type
#endif
#ifndef Py_TPFLAGS_CHECKTYPES
  #define Py_TPFLAGS_CHECKTYPES 0
#endif
#ifndef Py_TPFLAGS_HAVE_INDEX
  #define Py_TPFLAGS_HAVE_INDEX 0
#endif
#ifndef Py_TPFLAGS_HAVE_NEWBUFFER
  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
#endif
#ifndef Py_TPFLAGS_HAVE_FINALIZE
  #define Py_TPFLAGS_HAVE_FINALIZE 0
#endif
#ifndef METH_STACKLESS
  #define METH_STACKLESS 0
#endif
#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
  #ifndef METH_FASTCALL
     #define METH_FASTCALL 0x80
  #endif
  typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs);
  typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args,
                                                          Py_ssize_t nargs, PyObject *kwnames);
#else
  #define __Pyx_PyCFunctionFast _PyCFunctionFast
  #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
#endif
#if CYTHON_FAST_PYCCALL
#define __Pyx_PyFastCFunction_Check(func)\
    ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)))))
#else
#define __Pyx_PyFastCFunction_Check(func) 0
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
  #define PyObject_Malloc(s)   PyMem_Malloc(s)
  #define PyObject_Free(p)     PyMem_Free(p)
  #define PyObject_Realloc(p)  PyMem_Realloc(p)
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1
  #define PyMem_RawMalloc(n)           PyMem_Malloc(n)
  #define PyMem_RawRealloc(p, n)       PyMem_Realloc(p, n)
  #define PyMem_RawFree(p)             PyMem_Free(p)
#endif
#if CYTHON_COMPILING_IN_PYSTON
  #define __Pyx_PyCode_HasFreeVars(co)  PyCode_HasFreeVars(co)
  #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
#else
  #define __Pyx_PyCode_HasFreeVars(co)  (PyCode_GetNumFree(co) > 0)
  #define __Pyx_PyFrame_SetLineNumber(frame, lineno)  (frame)->f_lineno = (lineno)
#endif
#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000
  #define __Pyx_PyThreadState_Current PyThreadState_GET()
#elif PY_VERSION_HEX >= 0x03060000
  #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()
#elif PY_VERSION_HEX >= 0x03000000
  #define __Pyx_PyThreadState_Current PyThreadState_GET()
#else
  #define __Pyx_PyThreadState_Current _PyThreadState_Current
#endif
#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT)
#include "pythread.h"
#define Py_tss_NEEDS_INIT 0
typedef int Py_tss_t;
static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) {
  *key = PyThread_create_key();
  return 0;
}
static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) {
  Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t));
  *key = Py_tss_NEEDS_INIT;
  return key;
}
static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) {
  PyObject_Free(key);
}
static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) {
  return *key != Py_tss_NEEDS_INIT;
}
static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) {
  PyThread_delete_key(*key);
  *key = Py_tss_NEEDS_INIT;
}
static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) {
  return PyThread_set_key_value(*key, value);
}
static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
  return PyThread_get_key_value(*key);
}
#endif
#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized)
#define __Pyx_PyDict_NewPresized(n)  ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
#else
#define __Pyx_PyDict_NewPresized(n)  PyDict_New()
#endif
#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
#else
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS
#define __Pyx_PyDict_GetItemStr(dict, name)  _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash)
#else
#define __Pyx_PyDict_GetItemStr(dict, name)  PyDict_GetItem(dict, name)
#endif
#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
  #define CYTHON_PEP393_ENABLED 1
  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ?\
                                              0 : _PyUnicode_Ready((PyObject *)(op)))
  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   PyUnicode_MAX_CHAR_VALUE(u)
  #define __Pyx_PyUnicode_KIND(u)         PyUnicode_KIND(u)
  #define __Pyx_PyUnicode_DATA(u)         PyUnicode_DATA(u)
  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
  #define __Pyx_PyUnicode_WRITE(k, d, i, ch)  PyUnicode_WRITE(k, d, i, ch)
  #if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE)
  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
  #else
  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GET_LENGTH(u))
  #endif
#else
  #define CYTHON_PEP393_ENABLED 0
  #define PyUnicode_1BYTE_KIND  1
  #define PyUnicode_2BYTE_KIND  2
  #define PyUnicode_4BYTE_KIND  4
  #define __Pyx_PyUnicode_READY(op)       (0)
  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111)
  #define __Pyx_PyUnicode_KIND(u)         (sizeof(Py_UNICODE))
  #define __Pyx_PyUnicode_DATA(u)         ((void*)PyUnicode_AS_UNICODE(u))
  #define __Pyx_PyUnicode_READ(k, d, i)   ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
  #define __Pyx_PyUnicode_WRITE(k, d, i, ch)  (((void)(k)), ((Py_UNICODE*)d)[i] = ch)
  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GET_SIZE(u))
#endif
#if CYTHON_COMPILING_IN_PYPY
  #define __Pyx_PyUnicode_Concat(a, b)      PyNumber_Add(a, b)
  #define __Pyx_PyUnicode_ConcatSafe(a, b)  PyNumber_Add(a, b)
#else
  #define __Pyx_PyUnicode_Concat(a, b)      PyUnicode_Concat(a, b)
  #define __Pyx_PyUnicode_ConcatSafe(a, b)  ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
      PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains)
  #define PyUnicode_Contains(u, s)  PySequence_Contains(u, s)
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check)
  #define PyByteArray_Check(obj)  PyObject_TypeCheck(obj, &PyByteArray_Type)
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
  #define PyObject_Format(obj, fmt)  PyObject_CallMethod(obj, "__format__", "O", fmt)
#endif
#define __Pyx_PyString_FormatSafe(a, b)   ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
#define __Pyx_PyUnicode_FormatSafe(a, b)  ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyString_Format(a, b)  PyUnicode_Format(a, b)
#else
  #define __Pyx_PyString_Format(a, b)  PyString_Format(a, b)
#endif
#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII)
  #define PyObject_ASCII(o)            PyObject_Repr(o)
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyBaseString_Type            PyUnicode_Type
  #define PyStringObject               PyUnicodeObject
  #define PyString_Type                PyUnicode_Type
  #define PyString_Check               PyUnicode_Check
  #define PyString_CheckExact          PyUnicode_CheckExact
#ifndef PyObject_Unicode
  #define PyObject_Unicode             PyObject_Str
#endif
#endif
#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
  #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
#else
  #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))
  #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
#endif
#ifndef PySet_CheckExact
  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
#endif
#if PY_VERSION_HEX >= 0x030900A4
  #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt)
  #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size)
#else
  #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt)
  #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size)
#endif
#if CYTHON_ASSUME_SAFE_MACROS
  #define __Pyx_PySequence_SIZE(seq)  Py_SIZE(seq)
#else
  #define __Pyx_PySequence_SIZE(seq)  PySequence_Size(seq)
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyIntObject                  PyLongObject
  #define PyInt_Type                   PyLong_Type
  #define PyInt_Check(op)              PyLong_Check(op)
  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
  #define PyInt_FromString             PyLong_FromString
  #define PyInt_FromUnicode            PyLong_FromUnicode
  #define PyInt_FromLong               PyLong_FromLong
  #define PyInt_FromSize_t             PyLong_FromSize_t
  #define PyInt_FromSsize_t            PyLong_FromSsize_t
  #define PyInt_AsLong                 PyLong_AsLong
  #define PyInt_AS_LONG                PyLong_AS_LONG
  #define PyInt_AsSsize_t              PyLong_AsSsize_t
  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
  #define PyNumber_Int                 PyNumber_Long
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyBoolObject                 PyLongObject
#endif
#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY
  #ifndef PyUnicode_InternFromString
    #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
  #endif
#endif
#if PY_VERSION_HEX < 0x030200A4
  typedef long Py_hash_t;
  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
#else
  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
#endif
#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func))
#else
  #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
#endif
#if CYTHON_USE_ASYNC_SLOTS
  #if PY_VERSION_HEX >= 0x030500B1
    #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
    #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
  #else
    #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
  #endif
#else
  #define __Pyx_PyType_AsAsync(obj) NULL
#endif
#ifndef __Pyx_PyAsyncMethodsStruct
    typedef struct {
        unaryfunc am_await;
        unaryfunc am_aiter;
        unaryfunc am_anext;
    } __Pyx_PyAsyncMethodsStruct;
#endif

#if defined(WIN32) || defined(MS_WINDOWS)
  #define _USE_MATH_DEFINES
#endif
#include <math.h>
#ifdef NAN
#define __PYX_NAN() ((float) NAN)
#else
static CYTHON_INLINE float __PYX_NAN() {
  float value;
  memset(&value, 0xFF, sizeof(value));
  return value;
}
#endif
#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
#define __Pyx_truncl trunc
#else
#define __Pyx_truncl truncl
#endif

#define __PYX_MARK_ERR_POS(f_index, lineno) \
    { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; }
#define __PYX_ERR(f_index, lineno, Ln_error) \
    { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; }

#ifndef __PYX_EXTERN_C
  #ifdef __cplusplus
    #define __PYX_EXTERN_C extern "C"
  #else
    #define __PYX_EXTERN_C extern
  #endif
#endif

#define __PYX_HAVE__cupy_backends__cuda__libs__cusolver
#define __PYX_HAVE_API__cupy_backends__cuda__libs__cusolver
/* Early includes */
#include <stdint.h>
#include "../../cupy_complex.h"
#include "../../cupy_lapack.h"
#ifdef _OPENMP
#include <omp.h>
#endif /* _OPENMP */

#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)
#define CYTHON_WITHOUT_ASSERTIONS
#endif

typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;
                const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;

#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8)
#define __PYX_DEFAULT_STRING_ENCODING ""
#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
#define __Pyx_uchar_cast(c) ((unsigned char)c)
#define __Pyx_long_cast(x) ((long)x)
#define __Pyx_fits_Py_ssize_t(v, type, is_signed)  (\
    (sizeof(type) < sizeof(Py_ssize_t))  ||\
    (sizeof(type) > sizeof(Py_ssize_t) &&\
          likely(v < (type)PY_SSIZE_T_MAX ||\
                 v == (type)PY_SSIZE_T_MAX)  &&\
          (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
                                v == (type)PY_SSIZE_T_MIN)))  ||\
    (sizeof(type) == sizeof(Py_ssize_t) &&\
          (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
                               v == (type)PY_SSIZE_T_MAX)))  )
static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
    return (size_t) i < (size_t) limit;
}
#if defined (__cplusplus) && __cplusplus >= 201103L
    #include <cstdlib>
    #define __Pyx_sst_abs(value) std::abs(value)
#elif SIZEOF_INT >= SIZEOF_SIZE_T
    #define __Pyx_sst_abs(value) abs(value)
#elif SIZEOF_LONG >= SIZEOF_SIZE_T
    #define __Pyx_sst_abs(value) labs(value)
#elif defined (_MSC_VER)
    #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value))
#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define __Pyx_sst_abs(value) llabs(value)
#elif defined (__GNUC__)
    #define __Pyx_sst_abs(value) __builtin_llabs(value)
#else
    #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
#endif
static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);
static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))
#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
#define __Pyx_PyBytes_FromString        PyBytes_FromString
#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
#if PY_MAJOR_VERSION < 3
    #define __Pyx_PyStr_FromString        __Pyx_PyBytes_FromString
    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
#else
    #define __Pyx_PyStr_FromString        __Pyx_PyUnicode_FromString
    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
#endif
#define __Pyx_PyBytes_AsWritableString(s)     ((char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsWritableSString(s)    ((signed char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsWritableUString(s)    ((unsigned char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsString(s)     ((const char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsSString(s)    ((const signed char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsUString(s)    ((const unsigned char*) PyBytes_AS_STRING(s))
#define __Pyx_PyObject_AsWritableString(s)    ((char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsWritableSString(s)    ((signed char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsWritableUString(s)    ((unsigned char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsSString(s)    ((const signed char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsUString(s)    ((const unsigned char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_FromCString(s)  __Pyx_PyObject_FromString((const char*)s)
#define __Pyx_PyBytes_FromCString(s)   __Pyx_PyBytes_FromString((const char*)s)
#define __Pyx_PyByteArray_FromCString(s)   __Pyx_PyByteArray_FromString((const char*)s)
#define __Pyx_PyStr_FromCString(s)     __Pyx_PyStr_FromString((const char*)s)
#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
    const Py_UNICODE *u_end = u;
    while (*u_end++) ;
    return (size_t)(u_end - u - 1);
}
#define __Pyx_PyUnicode_FromUnicode(u)       PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
#define __Pyx_PyUnicode_AsUnicode            PyUnicode_AsUnicode
#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
#define __Pyx_PySequence_Tuple(obj)\
    (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
#if CYTHON_ASSUME_SAFE_MACROS
#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
#else
#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
#endif
#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
#else
#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))
#endif
#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x))
#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
static int __Pyx_sys_getdefaultencoding_not_ascii;
static int __Pyx_init_sys_getdefaultencoding_params(void) {
    PyObject* sys;
    PyObject* default_encoding = NULL;
    PyObject* ascii_chars_u = NULL;
    PyObject* ascii_chars_b = NULL;
    const char* default_encoding_c;
    sys = PyImport_ImportModule("sys");
    if (!sys) goto bad;
    default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL);
    Py_DECREF(sys);
    if (!default_encoding) goto bad;
    default_encoding_c = PyBytes_AsString(default_encoding);
    if (!default_encoding_c) goto bad;
    if (strcmp(default_encoding_c, "ascii") == 0) {
        __Pyx_sys_getdefaultencoding_not_ascii = 0;
    } else {
        char ascii_chars[128];
        int c;
        for (c = 0; c < 128; c++) {
            ascii_chars[c] = c;
        }
        __Pyx_sys_getdefaultencoding_not_ascii = 1;
        ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
        if (!ascii_chars_u) goto bad;
        ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
        if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) {
            PyErr_Format(
                PyExc_ValueError,
                "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.",
                default_encoding_c);
            goto bad;
        }
        Py_DECREF(ascii_chars_u);
        Py_DECREF(ascii_chars_b);
    }
    Py_DECREF(default_encoding);
    return 0;
bad:
    Py_XDECREF(default_encoding);
    Py_XDECREF(ascii_chars_u);
    Py_XDECREF(ascii_chars_b);
    return -1;
}
#endif
#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
#else
#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
static char* __PYX_DEFAULT_STRING_ENCODING;
static int __Pyx_init_sys_getdefaultencoding_params(void) {
    PyObject* sys;
    PyObject* default_encoding = NULL;
    char* default_encoding_c;
    sys = PyImport_ImportModule("sys");
    if (!sys) goto bad;
    default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
    Py_DECREF(sys);
    if (!default_encoding) goto bad;
    default_encoding_c = PyBytes_AsString(default_encoding);
    if (!default_encoding_c) goto bad;
    __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
    if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
    strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
    Py_DECREF(default_encoding);
    return 0;
bad:
    Py_XDECREF(default_encoding);
    return -1;
}
#endif
#endif


/* Test for GCC > 2.95 */
#if defined(__GNUC__)     && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
  #define likely(x)   __builtin_expect(!!(x), 1)
  #define unlikely(x) __builtin_expect(!!(x), 0)
#else /* !__GNUC__ or GCC < 2.95 */
  #define likely(x)   (x)
  #define unlikely(x) (x)
#endif /* __GNUC__ */
static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }

static PyObject *__pyx_m = NULL;
static PyObject *__pyx_d;
static PyObject *__pyx_b;
static PyObject *__pyx_cython_runtime = NULL;
static PyObject *__pyx_empty_tuple;
static PyObject *__pyx_empty_bytes;
static PyObject *__pyx_empty_unicode;
static int __pyx_lineno;
static int __pyx_clineno = 0;
static const char * __pyx_cfilenm= __FILE__;
static const char *__pyx_filename;


static const char *__pyx_f[] = {
  "cupy_backends/cuda/libs/cusolver.pyx",
  "cupy_backends/cuda/api/runtime.pxd",
  "cupy_backends/cuda/libs/cusolver.pxd",
};
/* NoFastGil.proto */
#define __Pyx_PyGILState_Ensure PyGILState_Ensure
#define __Pyx_PyGILState_Release PyGILState_Release
#define __Pyx_FastGIL_Remember()
#define __Pyx_FastGIL_Forget()
#define __Pyx_FastGilFuncInit()

/* ForceInitThreads.proto */
#ifndef __PYX_FORCE_INIT_THREADS
  #define __PYX_FORCE_INIT_THREADS 0
#endif


/*--- Type declarations ---*/
struct __pyx_obj_13cupy_backends_4cuda_3api_7runtime_PointerAttributes;

/* "driver.pxd":39
 * 
 * 
 * cpdef enum:             # <<<<<<<<<<<<<<
 *     CU_JIT_INPUT_CUBIN = 0
 *     CU_JIT_INPUT_PTX = 1
 */
enum  {
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_JIT_INPUT_CUBIN = 0,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_JIT_INPUT_PTX = 1,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_JIT_INPUT_FATBINARY = 2,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_JIT_INPUT_OBJECT = 3,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_JIT_INPUT_LIBRARY = 4,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_FUNC_ATTRIBUTE_MAX_THREADS_PER_BLOCK = 0,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_FUNC_ATTRIBUTE_SHARED_SIZE_BYTES = 1,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_FUNC_ATTRIBUTE_CONST_SIZE_BYTES = 2,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_FUNC_ATTRIBUTE_LOCAL_SIZE_BYTES = 3,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_FUNC_ATTRIBUTE_NUM_REGS = 4,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_FUNC_ATTRIBUTE_PTX_VERSION = 5,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_FUNC_ATTRIBUTE_BINARY_VERSION = 6,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_FUNC_ATTRIBUTE_CACHE_MODE_CA = 7,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_FUNC_ATTRIBUTE_MAX_DYNAMIC_SHARED_SIZE_BYTES = 8,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_FUNC_ATTRIBUTE_PREFERRED_SHARED_MEMORY_CARVEOUT = 9,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CUDA_ERROR_INVALID_VALUE = 1,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_AD_FORMAT_UNSIGNED_INT8 = 0x01,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_AD_FORMAT_UNSIGNED_INT16 = 0x02,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_AD_FORMAT_UNSIGNED_INT32 = 0x03,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_AD_FORMAT_SIGNED_INT8 = 0x08,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_AD_FORMAT_SIGNED_INT16 = 0x09,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_AD_FORMAT_SIGNED_INT32 = 0x0a,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_AD_FORMAT_HALF = 0x10,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_AD_FORMAT_FLOAT = 0x20,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_TR_ADDRESS_MODE_WRAP = 0,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_TR_ADDRESS_MODE_CLAMP = 1,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_TR_ADDRESS_MODE_MIRROR = 2,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_TR_ADDRESS_MODE_BORDER = 3,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_TR_FILTER_MODE_POINT = 0,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_TR_FILTER_MODE_LINEAR = 1,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_TRSA_OVERRIDE_FORMAT = 0x01,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_TRSF_READ_AS_INTEGER = 0x01,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_TRSF_NORMALIZED_COORDINATES = 0x02,
  __pyx_e_13cupy_backends_4cuda_3api_6driver_CU_TRSF_SRGB = 0x10
};
struct __pyx_opt_args_13cupy_backends_4cuda_3api_7runtime_mallocManaged;
struct __pyx_opt_args_13cupy_backends_4cuda_3api_7runtime_malloc3DArray;
struct __pyx_opt_args_13cupy_backends_4cuda_3api_7runtime_mallocArray;
struct __pyx_opt_args_13cupy_backends_4cuda_3api_7runtime_streamAddCallback;
struct __pyx_opt_args_13cupy_backends_4cuda_3api_7runtime_streamWaitEvent;

/* "runtime.pxd":425
 * ###############################################################################
 * 
 * cpdef enum:             # <<<<<<<<<<<<<<
 *     memcpyHostToHost = 0
 *     memcpyHostToDevice = 1
 */
enum  {
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_memcpyHostToHost = 0,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_memcpyHostToDevice = 1,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_memcpyDeviceToHost = 2,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_memcpyDeviceToDevice = 3,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_memcpyDefault = 4,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaMemoryTypeHost = 1,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaMemoryTypeDevice = 2,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaIpcMemLazyEnablePeerAccess = 1,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaMemAttachGlobal = 1,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaMemAttachHost = 2,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaMemAttachSingle = 4,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_hostAllocDefault = 0,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_hostAllocPortable = 1,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_hostAllocMapped = 2,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_hostAllocWriteCombined = 4,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaMemAdviseSetReadMostly = 1,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaMemAdviseUnsetReadMostly = 2,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaMemAdviseSetPreferredLocation = 3,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaMemAdviseUnsetPreferredLocation = 4,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaMemAdviseSetAccessedBy = 5,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaMemAdviseUnsetAccessedBy = 6,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_streamDefault = 0,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_streamNonBlocking = 1,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_eventDefault = 0,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_eventBlockingSync = 1,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_eventDisableTiming = 2,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_eventInterprocess = 4,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_CUDA_R_32F = 0,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_CUDA_R_64F = 1,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_CUDA_R_16F = 2,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_CUDA_R_8I = 3,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_CUDA_C_32F = 4,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_CUDA_C_64F = 5,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_CUDA_C_16F = 6,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_CUDA_C_8I = 7,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_CUDA_R_8U = 8,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_CUDA_C_8U = 9,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxThreadsPerBlock = 1,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxBlockDimX = 2,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxBlockDimY = 3,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxBlockDimZ = 4,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxGridDimX = 5,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxGridDimY = 6,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxGridDimZ = 7,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxSharedMemoryPerBlock = 8,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrTotalConstantMemory = 9,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrWarpSize = 10,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxPitch = 11,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxRegistersPerBlock = 12,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrClockRate = 13,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrTextureAlignment = 14,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrGpuOverlap = 15,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMultiProcessorCount = 16,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrKernelExecTimeout = 17,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrIntegrated = 18,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrCanMapHostMemory = 19,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrComputeMode = 20,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxTexture1DWidth = 21,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxTexture2DWidth = 22,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxTexture2DHeight = 23,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxTexture3DWidth = 24,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxTexture3DHeight = 25,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxTexture3DDepth = 26,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxTexture2DLayeredWidth = 27,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxTexture2DLayeredHeight = 28,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxTexture2DLayeredLayers = 29,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrSurfaceAlignment = 30,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrConcurrentKernels = 31,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrEccEnabled = 32,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrPciBusId = 33,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrPciDeviceId = 34,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrTccDriver = 35,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMemoryClockRate = 36,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrGlobalMemoryBusWidth = 37,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrL2CacheSize = 38,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxThreadsPerMultiProcessor = 39,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrAsyncEngineCount = 40,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrUnifiedAddressing = 41,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxTexture1DLayeredWidth = 42,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxTexture1DLayeredLayers = 43,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxTexture2DGatherWidth = 45,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxTexture2DGatherHeight = 46,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxTexture3DWidthAlt = 47,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxTexture3DHeightAlt = 48,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxTexture3DDepthAlt = 49,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrPciDomainId = 50,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrTexturePitchAlignment = 51,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxTextureCubemapWidth = 52,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxTextureCubemapLayeredWidth = 53,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxTextureCubemapLayeredLayers = 54,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxSurface1DWidth = 55,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxSurface2DWidth = 56,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxSurface2DHeight = 57,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxSurface3DWidth = 58,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxSurface3DHeight = 59,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxSurface3DDepth = 60,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxSurface1DLayeredWidth = 61,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxSurface1DLayeredLayers = 62,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxSurface2DLayeredWidth = 63,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxSurface2DLayeredHeight = 64,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxSurface2DLayeredLayers = 65,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxSurfaceCubemapWidth = 66,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxSurfaceCubemapLayeredWidth = 67,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxSurfaceCubemapLayeredLayers = 68,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxTexture1DLinearWidth = 69,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxTexture2DLinearWidth = 70,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxTexture2DLinearHeight = 71,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxTexture2DLinearPitch = 72,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxTexture2DMipmappedWidth = 73,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxTexture2DMipmappedHeight = 74,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxTexture1DMipmappedWidth = 77,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrStreamPrioritiesSupported = 78,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrGlobalL1CacheSupported = 79,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrLocalL1CacheSupported = 80,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxSharedMemoryPerMultiprocessor = 81,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxRegistersPerMultiprocessor = 82,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrManagedMemory = 83,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrIsMultiGpuBoard = 84,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMultiGpuBoardGroupID = 85,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrHostNativeAtomicSupported = 86,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrSingleToDoublePrecisionPerfRatio = 87,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrPageableMemoryAccess = 88,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrConcurrentManagedAccess = 89,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrComputePreemptionSupported = 90,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrCanUseHostPointerForRegisteredMem = 91,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrReserved92 = 92,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrReserved93 = 93,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrReserved94 = 94,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrCooperativeLaunch = 95,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrCooperativeMultiDeviceLaunch = 96,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrMaxSharedMemoryPerBlockOptin = 97,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrCanFlushRemoteWrites = 98,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrHostRegisterSupported = 99,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrPageableMemoryAccessUsesHostPageTables = 0x64,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaDevAttrDirectManagedMemAccessFromHost = 0x65,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaLimitStackSize = 0x00,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaLimitPrintfFifoSize = 0x01,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaLimitMallocHeapSize = 0x02,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaLimitDevRuntimeSyncDepth = 0x03,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaLimitDevRuntimePendingLaunchCount = 0x04,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaLimitMaxL2FetchGranularity = 0x05,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaChannelFormatKindSigned = 0,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaChannelFormatKindUnsigned = 1,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaChannelFormatKindFloat = 2,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaChannelFormatKindNone = 3,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaArrayDefault = 0,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaArraySurfaceLoadStore = 2,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaResourceTypeArray = 0,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaResourceTypeMipmappedArray = 1,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaResourceTypeLinear = 2,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaResourceTypePitch2D = 3,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaAddressModeWrap = 0,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaAddressModeClamp = 1,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaAddressModeMirror = 2,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaAddressModeBorder = 3,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaFilterModePoint = 0,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaFilterModeLinear = 1,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaReadModeElementType = 0,
  __pyx_e_13cupy_backends_4cuda_3api_7runtime_cudaReadModeNormalizedFloat = 1
};

/* "runtime.pxd":672
 * 
 * cpdef intptr_t malloc(size_t size) except? 0
 * cpdef intptr_t mallocManaged(size_t size, unsigned int flags=*) except? 0             # <<<<<<<<<<<<<<
 * cpdef intptr_t malloc3DArray(intptr_t desc, size_t width, size_t height,
 *                              size_t depth, unsigned int flags=*) except? 0
 */
struct __pyx_opt_args_13cupy_backends_4cuda_3api_7runtime_mallocManaged {
  int __pyx_n;
  unsigned int flags;
};

/* "runtime.pxd":673
 * cpdef intptr_t malloc(size_t size) except? 0
 * cpdef intptr_t mallocManaged(size_t size, unsigned int flags=*) except? 0
 * cpdef intptr_t malloc3DArray(intptr_t desc, size_t width, size_t height,             # <<<<<<<<<<<<<<
 *                              size_t depth, unsigned int flags=*) except? 0
 * cpdef intptr_t mallocArray(intptr_t desc, size_t width, size_t height,
 */
struct __pyx_opt_args_13cupy_backends_4cuda_3api_7runtime_malloc3DArray {
  int __pyx_n;
  unsigned int flags;
};

/* "runtime.pxd":675
 * cpdef intptr_t malloc3DArray(intptr_t desc, size_t width, size_t height,
 *                              size_t depth, unsigned int flags=*) except? 0
 * cpdef intptr_t mallocArray(intptr_t desc, size_t width, size_t height,             # <<<<<<<<<<<<<<
 *                            unsigned int flags=*) except? 0
 * cpdef intptr_t hostAlloc(size_t size, unsigned int flags) except? 0
 */
struct __pyx_opt_args_13cupy_backends_4cuda_3api_7runtime_mallocArray {
  int __pyx_n;
  unsigned int flags;
};

/* "runtime.pxd":727
 * cpdef streamDestroy(intptr_t stream)
 * cpdef streamSynchronize(intptr_t stream)
 * cpdef streamAddCallback(intptr_t stream, callback, intptr_t arg,             # <<<<<<<<<<<<<<
 *                         unsigned int flags=*)
 * cpdef launchHostFunc(intptr_t stream, callback, intptr_t arg)
 */
struct __pyx_opt_args_13cupy_backends_4cuda_3api_7runtime_streamAddCallback {
  int __pyx_n;
  unsigned int flags;
};

/* "runtime.pxd":731
 * cpdef launchHostFunc(intptr_t stream, callback, intptr_t arg)
 * cpdef streamQuery(intptr_t stream)
 * cpdef streamWaitEvent(intptr_t stream, intptr_t event, unsigned int flags=*)             # <<<<<<<<<<<<<<
 * cpdef intptr_t eventCreate() except? 0
 * cpdef intptr_t eventCreateWithFlags(unsigned int flags) except? 0
 */
struct __pyx_opt_args_13cupy_backends_4cuda_3api_7runtime_streamWaitEvent {
  int __pyx_n;
  unsigned int flags;
};

/* "cupy_backends/cuda/libs/cusolver.pxd":33
 * ###############################################################################
 * 
 * cpdef enum:             # <<<<<<<<<<<<<<
 *     CUSOLVER_EIG_TYPE_1 = 1
 *     CUSOLVER_EIG_TYPE_2 = 2
 */
enum  {
  __pyx_e_13cupy_backends_4cuda_4libs_8cusolver_CUSOLVER_EIG_TYPE_1 = 1,
  __pyx_e_13cupy_backends_4cuda_4libs_8cusolver_CUSOLVER_EIG_TYPE_2 = 2,
  __pyx_e_13cupy_backends_4cuda_4libs_8cusolver_CUSOLVER_EIG_TYPE_3 = 3,
  __pyx_e_13cupy_backends_4cuda_4libs_8cusolver_CUSOLVER_EIG_MODE_NOVECTOR = 0,
  __pyx_e_13cupy_backends_4cuda_4libs_8cusolver_CUSOLVER_EIG_MODE_VECTOR = 1
};

/* "runtime.pxd":8
 * ###############################################################################
 * 
 * cdef class PointerAttributes:             # <<<<<<<<<<<<<<
 *     cdef:
 *         public int device
 */
struct __pyx_obj_13cupy_backends_4cuda_3api_7runtime_PointerAttributes {
  PyObject_HEAD
  int device;
  intptr_t devicePointer;
  intptr_t hostPointer;
};


/* --- Runtime support code (head) --- */
/* Refnanny.proto */
#ifndef CYTHON_REFNANNY
  #define CYTHON_REFNANNY 0
#endif
#if CYTHON_REFNANNY
  typedef struct {
    void (*INCREF)(void*, PyObject*, int);
    void (*DECREF)(void*, PyObject*, int);
    void (*GOTREF)(void*, PyObject*, int);
    void (*GIVEREF)(void*, PyObject*, int);
    void* (*SetupContext)(const char*, int, const char*);
    void (*FinishContext)(void**);
  } __Pyx_RefNannyAPIStruct;
  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);
  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
#ifdef WITH_THREAD
  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
          if (acquire_gil) {\
              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
              PyGILState_Release(__pyx_gilstate_save);\
          } else {\
              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
          }
#else
  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
#endif
  #define __Pyx_RefNannyFinishContext()\
          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
#else
  #define __Pyx_RefNannyDeclarations
  #define __Pyx_RefNannySetupContext(name, acquire_gil)
  #define __Pyx_RefNannyFinishContext()
  #define __Pyx_INCREF(r) Py_INCREF(r)
  #define __Pyx_DECREF(r) Py_DECREF(r)
  #define __Pyx_GOTREF(r)
  #define __Pyx_GIVEREF(r)
  #define __Pyx_XINCREF(r) Py_XINCREF(r)
  #define __Pyx_XDECREF(r) Py_XDECREF(r)
  #define __Pyx_XGOTREF(r)
  #define __Pyx_XGIVEREF(r)
#endif
#define __Pyx_XDECREF_SET(r, v) do {\
        PyObject *tmp = (PyObject *) r;\
        r = v; __Pyx_XDECREF(tmp);\
    } while (0)
#define __Pyx_DECREF_SET(r, v) do {\
        PyObject *tmp = (PyObject *) r;\
        r = v; __Pyx_DECREF(tmp);\
    } while (0)
#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)

/* PyObjectGetAttrStr.proto */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name);
#else
#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
#endif

/* GetBuiltinName.proto */
static PyObject *__Pyx_GetBuiltinName(PyObject *name);

/* RaiseArgTupleInvalid.proto */
static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);

/* RaiseDoubleKeywords.proto */
static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);

/* ParseKeywords.proto */
static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\
    const char* function_name);

/* PyObjectSetAttrStr.proto */
#if CYTHON_USE_TYPE_SLOTS
#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL)
static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value);
#else
#define __Pyx_PyObject_DelAttrStr(o,n)   PyObject_DelAttr(o,n)
#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v)
#endif

/* PyDictVersioning.proto */
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
#define __PYX_DICT_VERSION_INIT  ((PY_UINT64_T) -1)
#define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
    (version_var) = __PYX_GET_DICT_VERSION(dict);\
    (cache_var) = (value);
#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
    static PY_UINT64_T __pyx_dict_version = 0;\
    static PyObject *__pyx_dict_cached_value = NULL;\
    if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
        (VAR) = __pyx_dict_cached_value;\
    } else {\
        (VAR) = __pyx_dict_cached_value = (LOOKUP);\
        __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
    }\
}
static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj);
static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj);
static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version);
#else
#define __PYX_GET_DICT_VERSION(dict)  (0)
#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP)  (VAR) = (LOOKUP);
#endif

/* GetModuleGlobalName.proto */
#if CYTHON_USE_DICT_VERSIONS
#define __Pyx_GetModuleGlobalName(var, name)  {\
    static PY_UINT64_T __pyx_dict_version = 0;\
    static PyObject *__pyx_dict_cached_value = NULL;\
    (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
        (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
        __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
}
#define __Pyx_GetModuleGlobalNameUncached(var, name)  {\
    PY_UINT64_T __pyx_dict_version;\
    PyObject *__pyx_dict_cached_value;\
    (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
}
static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
#else
#define __Pyx_GetModuleGlobalName(var, name)  (var) = __Pyx__GetModuleGlobalName(name)
#define __Pyx_GetModuleGlobalNameUncached(var, name)  (var) = __Pyx__GetModuleGlobalName(name)
static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
#endif

/* PyObjectCall.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
#else
#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
#endif

/* DictGetItem.proto */
#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key);
#define __Pyx_PyObject_Dict_GetItem(obj, name)\
    (likely(PyDict_CheckExact(obj)) ?\
     __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name))
#else
#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
#define __Pyx_PyObject_Dict_GetItem(obj, name)  PyObject_GetItem(obj, name)
#endif

/* PyCFunctionFastCall.proto */
#if CYTHON_FAST_PYCCALL
static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs);
#else
#define __Pyx_PyCFunction_FastCall(func, args, nargs)  (assert(0), NULL)
#endif

/* PyFunctionFastCall.proto */
#if CYTHON_FAST_PYCALL
#define __Pyx_PyFunction_FastCall(func, args, nargs)\
    __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL)
#if 1 || PY_VERSION_HEX < 0x030600B1
static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs);
#else
#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
#endif
#define __Pyx_BUILD_ASSERT_EXPR(cond)\
    (sizeof(char [1 - 2*!(cond)]) - 1)
#ifndef Py_MEMBER_SIZE
#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
#endif
  static size_t __pyx_pyframe_localsplus_offset = 0;
  #include "frameobject.h"
  #define __Pxy_PyFrame_Initialize_Offsets()\
    ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
     (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
  #define __Pyx_PyFrame_GetLocalsplus(frame)\
    (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
#endif

/* PyObjectCall2Args.proto */
static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);

/* PyObjectCallMethO.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
#endif

/* PyObjectCallOneArg.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);

/* PyThreadStateGet.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;
#define __Pyx_PyThreadState_assign  __pyx_tstate = __Pyx_PyThreadState_Current;
#define __Pyx_PyErr_Occurred()  __pyx_tstate->curexc_type
#else
#define __Pyx_PyThreadState_declare
#define __Pyx_PyThreadState_assign
#define __Pyx_PyErr_Occurred()  PyErr_Occurred()
#endif

/* PyErrFetchRestore.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
#define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
#define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
#define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
#define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
#else
#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
#endif
#else
#define __Pyx_PyErr_Clear() PyErr_Clear()
#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
#define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)
#define __Pyx_ErrRestoreInState(tstate, type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetchInState(tstate, type, value, tb)  PyErr_Fetch(type, value, tb)
#define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)
#endif

/* RaiseException.proto */
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);

/* WriteUnraisableException.proto */
static void __Pyx_WriteUnraisable(const char *name, int clineno,
                                  int lineno, const char *filename,
                                  int full_traceback, int nogil);

/* TypeImport.proto */
#ifndef __PYX_HAVE_RT_ImportType_proto
#define __PYX_HAVE_RT_ImportType_proto
enum __Pyx_ImportType_CheckSize {
   __Pyx_ImportType_CheckSize_Error = 0,
   __Pyx_ImportType_CheckSize_Warn = 1,
   __Pyx_ImportType_CheckSize_Ignore = 2
};
static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size);
#endif

/* CalculateMetaclass.proto */
static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases);

/* FetchCommonType.proto */
static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);

/* CythonFunctionShared.proto */
#define __Pyx_CyFunction_USED 1
#define __Pyx_CYFUNCTION_STATICMETHOD  0x01
#define __Pyx_CYFUNCTION_CLASSMETHOD   0x02
#define __Pyx_CYFUNCTION_CCLASS        0x04
#define __Pyx_CyFunction_GetClosure(f)\
    (((__pyx_CyFunctionObject *) (f))->func_closure)
#define __Pyx_CyFunction_GetClassObj(f)\
    (((__pyx_CyFunctionObject *) (f))->func_classobj)
#define __Pyx_CyFunction_Defaults(type, f)\
    ((type *)(((__pyx_CyFunctionObject *) (f))->defaults))
#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\
    ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g)
typedef struct {
    PyCFunctionObject func;
#if PY_VERSION_HEX < 0x030500A0
    PyObject *func_weakreflist;
#endif
    PyObject *func_dict;
    PyObject *func_name;
    PyObject *func_qualname;
    PyObject *func_doc;
    PyObject *func_globals;
    PyObject *func_code;
    PyObject *func_closure;
    PyObject *func_classobj;
    void *defaults;
    int defaults_pyobjects;
    size_t defaults_size;  // used by FusedFunction for copying defaults
    int flags;
    PyObject *defaults_tuple;
    PyObject *defaults_kwdict;
    PyObject *(*defaults_getter)(PyObject *);
    PyObject *func_annotations;
} __pyx_CyFunctionObject;
static PyTypeObject *__pyx_CyFunctionType = 0;
#define __Pyx_CyFunction_Check(obj)  (__Pyx_TypeCheck(obj, __pyx_CyFunctionType))
static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml,
                                      int flags, PyObject* qualname,
                                      PyObject *self,
                                      PyObject *module, PyObject *globals,
                                      PyObject* code);
static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m,
                                                         size_t size,
                                                         int pyobjects);
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m,
                                                            PyObject *tuple);
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m,
                                                             PyObject *dict);
static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m,
                                                              PyObject *dict);
static int __pyx_CyFunction_init(void);

/* CythonFunction.proto */
static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml,
                                      int flags, PyObject* qualname,
                                      PyObject *closure,
                                      PyObject *module, PyObject *globals,
                                      PyObject* code);

/* SetNameInClass.proto */
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
#define __Pyx_SetNameInClass(ns, name, value)\
    (likely(PyDict_CheckExact(ns)) ? _PyDict_SetItem_KnownHash(ns, name, value, ((PyASCIIObject *) name)->hash) : PyObject_SetItem(ns, name, value))
#elif CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_SetNameInClass(ns, name, value)\
    (likely(PyDict_CheckExact(ns)) ? PyDict_SetItem(ns, name, value) : PyObject_SetItem(ns, name, value))
#else
#define __Pyx_SetNameInClass(ns, name, value)  PyObject_SetItem(ns, name, value)
#endif

/* Py3ClassCreate.proto */
static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname,
                                           PyObject *mkw, PyObject *modname, PyObject *doc);
static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict,
                                      PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass);

/* CLineInTraceback.proto */
#ifdef CYTHON_CLINE_IN_TRACEBACK
#define __Pyx_CLineForTraceback(tstate, c_line)  (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
#else
static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line);
#endif

/* CodeObjectCache.proto */
typedef struct {
    PyCodeObject* code_object;
    int code_line;
} __Pyx_CodeObjectCacheEntry;
struct __Pyx_CodeObjectCache {
    int count;
    int max_count;
    __Pyx_CodeObjectCacheEntry* entries;
};
static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
static PyCodeObject *__pyx_find_code_object(int code_line);
static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);

/* AddTraceback.proto */
static void __Pyx_AddTraceback(const char *funcname, int c_line,
                               int py_line, const char *filename);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);

/* CIntFromPy.proto */
static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_As_PY_LONG_LONG(PyObject *);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);

/* CIntFromPy.proto */
static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);

/* FastTypeChecks.proto */
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b);
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type);
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2);
#else
#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type)
#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2))
#endif
#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)

/* CheckBinaryVersion.proto */
static int __Pyx_check_binary_version(void);

/* FunctionExport.proto */
static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig);

/* VoidPtrImport.proto */
static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig);

/* FunctionImport.proto */
static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig);

/* InitStrings.proto */
static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);


/* Module declarations from 'libc.stdint' */

/* Module declarations from 'cython' */

/* Module declarations from 'cupy_backends.cuda.api' */

/* Module declarations from 'cupy_backends.cuda.api.driver' */

/* Module declarations from 'cupy_backends.cuda.api.runtime' */
static PyTypeObject *__pyx_ptype_13cupy_backends_4cuda_3api_7runtime_PointerAttributes = 0;
static int *__pyx_vp_13cupy_backends_4cuda_3api_7runtime_errorMemoryAllocation = 0;
#define __pyx_v_13cupy_backends_4cuda_3api_7runtime_errorMemoryAllocation (*__pyx_vp_13cupy_backends_4cuda_3api_7runtime_errorMemoryAllocation)
static int *__pyx_vp_13cupy_backends_4cuda_3api_7runtime_errorInvalidValue = 0;
#define __pyx_v_13cupy_backends_4cuda_3api_7runtime_errorInvalidValue (*__pyx_vp_13cupy_backends_4cuda_3api_7runtime_errorInvalidValue)
static int *__pyx_vp_13cupy_backends_4cuda_3api_7runtime_errorPeerAccessAlreadyEnabled = 0;
#define __pyx_v_13cupy_backends_4cuda_3api_7runtime_errorPeerAccessAlreadyEnabled (*__pyx_vp_13cupy_backends_4cuda_3api_7runtime_errorPeerAccessAlreadyEnabled)
static int *__pyx_vp_13cupy_backends_4cuda_3api_7runtime__is_hip_environment = 0;
#define __pyx_v_13cupy_backends_4cuda_3api_7runtime__is_hip_environment (*__pyx_vp_13cupy_backends_4cuda_3api_7runtime__is_hip_environment)
static int *__pyx_vp_13cupy_backends_4cuda_3api_7runtime_deviceAttributeComputeCapabilityMajor = 0;
#define __pyx_v_13cupy_backends_4cuda_3api_7runtime_deviceAttributeComputeCapabilityMajor (*__pyx_vp_13cupy_backends_4cuda_3api_7runtime_deviceAttributeComputeCapabilityMajor)
static int *__pyx_vp_13cupy_backends_4cuda_3api_7runtime_deviceAttributeComputeCapabilityMinor = 0;
#define __pyx_v_13cupy_backends_4cuda_3api_7runtime_deviceAttributeComputeCapabilityMinor (*__pyx_vp_13cupy_backends_4cuda_3api_7runtime_deviceAttributeComputeCapabilityMinor)

/* Module declarations from 'cupy_backends.cuda' */

/* Module declarations from 'cupy_backends.cuda.stream' */
static int *__pyx_vp_13cupy_backends_4cuda_6stream_enable_current_stream = 0;
#define __pyx_v_13cupy_backends_4cuda_6stream_enable_current_stream (*__pyx_vp_13cupy_backends_4cuda_6stream_enable_current_stream)
static intptr_t (*__pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr)(void); /*proto*/

/* Module declarations from 'cupy_backends.cuda.libs.cusolver' */
static PyObject *__pyx_v_13cupy_backends_4cuda_4libs_8cusolver_STATUS = 0;
static PyObject *__pyx_v_13cupy_backends_4cuda_4libs_8cusolver_ROC_STATUS = 0;
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_getProperty(int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver__getVersion(int __pyx_skip_dispatch); /*proto*/
static intptr_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_create(int __pyx_skip_dispatch); /*proto*/
static intptr_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spCreate(int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_destroy(intptr_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spDestroy(intptr_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(intptr_t, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_getStream(intptr_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spotrf_bufferSize(intptr_t, int, int, size_t, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dpotrf_bufferSize(intptr_t, int, int, size_t, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cpotrf_bufferSize(intptr_t, int, int, size_t, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zpotrf_bufferSize(intptr_t, int, int, size_t, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spotrf(intptr_t, int, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dpotrf(intptr_t, int, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cpotrf(intptr_t, int, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zpotrf(intptr_t, int, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spotrs(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dpotrs(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cpotrs(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zpotrs(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spotrfBatched(intptr_t, int, int, size_t, int, size_t, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dpotrfBatched(intptr_t, int, int, size_t, int, size_t, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cpotrfBatched(intptr_t, int, int, size_t, int, size_t, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zpotrfBatched(intptr_t, int, int, size_t, int, size_t, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spotrsBatched(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dpotrsBatched(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cpotrsBatched(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zpotrsBatched(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgetrf_bufferSize(intptr_t, int, int, size_t, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgetrf_bufferSize(intptr_t, int, int, size_t, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgetrf_bufferSize(intptr_t, int, int, size_t, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgetrf_bufferSize(intptr_t, int, int, size_t, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgetrf(intptr_t, int, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgetrf(intptr_t, int, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgetrf(intptr_t, int, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgetrf(intptr_t, int, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgetrs(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgetrs(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgetrs(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgetrs(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgeqrf_bufferSize(intptr_t, int, int, size_t, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgeqrf_bufferSize(intptr_t, int, int, size_t, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgeqrf_bufferSize(intptr_t, int, int, size_t, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgeqrf_bufferSize(intptr_t, int, int, size_t, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgeqrf(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgeqrf(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgeqrf(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgeqrf(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sorgqr_bufferSize(intptr_t, int, int, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dorgqr_bufferSize(intptr_t, int, int, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cungqr_bufferSize(intptr_t, int, int, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zungqr_bufferSize(intptr_t, int, int, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sorgqr(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dorgqr(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cungqr(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zungqr(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sormqr_bufferSize(intptr_t, int, int, int, int, int, size_t, int, size_t, size_t, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dormqr_bufferSize(intptr_t, int, int, int, int, int, size_t, int, size_t, size_t, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cunmqr_bufferSize(intptr_t, int, int, int, int, int, size_t, int, size_t, size_t, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zunmqr_bufferSize(intptr_t, int, int, int, int, int, size_t, int, size_t, size_t, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sormqr(intptr_t, int, int, int, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dormqr(intptr_t, int, int, int, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cunmqr(intptr_t, int, int, int, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zunmqr(intptr_t, int, int, int, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cormqr(intptr_t, int, int, int, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zormqr(intptr_t, int, int, int, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssytrf_bufferSize(intptr_t, int, size_t, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsytrf_bufferSize(intptr_t, int, size_t, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_csytrf_bufferSize(intptr_t, int, size_t, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zsytrf_bufferSize(intptr_t, int, size_t, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssytrf(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsytrf(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_csytrf(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zsytrf(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zzgesv_bufferSize(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcgesv_bufferSize(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zygesv_bufferSize(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zkgesv_bufferSize(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccgesv_bufferSize(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cygesv_bufferSize(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ckgesv_bufferSize(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ddgesv_bufferSize(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsgesv_bufferSize(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dxgesv_bufferSize(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dhgesv_bufferSize(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssgesv_bufferSize(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sxgesv_bufferSize(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_shgesv_bufferSize(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zzgesv(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcgesv(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zygesv(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zkgesv(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccgesv(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ckgesv(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cygesv(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ddgesv(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsgesv(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dxgesv(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dhgesv(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssgesv(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sxgesv(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_shgesv(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zzgels_bufferSize(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcgels_bufferSize(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zygels_bufferSize(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zkgels_bufferSize(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccgels_bufferSize(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cygels_bufferSize(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ckgels_bufferSize(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ddgels_bufferSize(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsgels_bufferSize(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dxgels_bufferSize(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dhgels_bufferSize(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssgels_bufferSize(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sxgels_bufferSize(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_shgels_bufferSize(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zzgels(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcgels(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zygels(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zkgels(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccgels(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ckgels(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cygels(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ddgels(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsgels(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dxgels(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dhgels(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssgels(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sxgels(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_shgels(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgebrd_bufferSize(intptr_t, int, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgebrd_bufferSize(intptr_t, int, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgebrd_bufferSize(intptr_t, int, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgebrd_bufferSize(intptr_t, int, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgebrd(intptr_t, int, int, size_t, int, size_t, size_t, size_t, size_t, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgebrd(intptr_t, int, int, size_t, int, size_t, size_t, size_t, size_t, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgebrd(intptr_t, int, int, size_t, int, size_t, size_t, size_t, size_t, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgebrd(intptr_t, int, int, size_t, int, size_t, size_t, size_t, size_t, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvd_bufferSize(intptr_t, int, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvd_bufferSize(intptr_t, int, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvd_bufferSize(intptr_t, int, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvd_bufferSize(intptr_t, int, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvd(intptr_t, char, char, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvd(intptr_t, char, char, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvd(intptr_t, char, char, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvd(intptr_t, char, char, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static intptr_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_createGesvdjInfo(int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_destroyGesvdjInfo(intptr_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xgesvdjSetTolerance(intptr_t, double, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xgesvdjSetMaxSweeps(intptr_t, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xgesvdjSetSortEig(intptr_t, int, int __pyx_skip_dispatch); /*proto*/
static double __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xgesvdjGetResidual(intptr_t, intptr_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xgesvdjGetSweeps(intptr_t, intptr_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvdj_bufferSize(intptr_t, int, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvdj_bufferSize(intptr_t, int, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvdj_bufferSize(intptr_t, int, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvdj_bufferSize(intptr_t, int, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvdj(intptr_t, int, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int, intptr_t, intptr_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvdj(intptr_t, int, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int, intptr_t, intptr_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvdj(intptr_t, int, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int, intptr_t, intptr_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvdj(intptr_t, int, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int, intptr_t, intptr_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvdjBatched_bufferSize(intptr_t, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvdjBatched_bufferSize(intptr_t, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvdjBatched_bufferSize(intptr_t, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvdjBatched_bufferSize(intptr_t, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvdjBatched(intptr_t, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int, intptr_t, intptr_t, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvdjBatched(intptr_t, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int, intptr_t, intptr_t, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvdjBatched(intptr_t, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int, intptr_t, intptr_t, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvdjBatched(intptr_t, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int, intptr_t, intptr_t, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvdaStridedBatched_bufferSize(intptr_t, int, int, int, int, intptr_t, int, PY_LONG_LONG, intptr_t, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvdaStridedBatched_bufferSize(intptr_t, int, int, int, int, intptr_t, int, PY_LONG_LONG, intptr_t, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvdaStridedBatched_bufferSize(intptr_t, int, int, int, int, intptr_t, int, PY_LONG_LONG, intptr_t, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvdaStridedBatched_bufferSize(intptr_t, int, int, int, int, intptr_t, int, PY_LONG_LONG, intptr_t, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvdaStridedBatched(intptr_t, int, int, int, int, intptr_t, int, PY_LONG_LONG, intptr_t, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, intptr_t, int, intptr_t, intptr_t, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvdaStridedBatched(intptr_t, int, int, int, int, intptr_t, int, PY_LONG_LONG, intptr_t, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, intptr_t, int, intptr_t, intptr_t, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvdaStridedBatched(intptr_t, int, int, int, int, intptr_t, int, PY_LONG_LONG, intptr_t, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, intptr_t, int, intptr_t, intptr_t, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvdaStridedBatched(intptr_t, int, int, int, int, intptr_t, int, PY_LONG_LONG, intptr_t, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, intptr_t, int, intptr_t, intptr_t, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssyevd_bufferSize(intptr_t, int, int, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsyevd_bufferSize(intptr_t, int, int, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cheevd_bufferSize(intptr_t, int, int, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zheevd_bufferSize(intptr_t, int, int, int, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssyevd(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsyevd(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cheevd(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zheevd(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch); /*proto*/
static intptr_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_createSyevjInfo(int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_destroySyevjInfo(intptr_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xsyevjSetTolerance(intptr_t, double, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xsyevjSetMaxSweeps(intptr_t, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xsyevjSetSortEig(intptr_t, int, int __pyx_skip_dispatch); /*proto*/
static double __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xsyevjGetResidual(intptr_t, intptr_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xsyevjGetSweeps(intptr_t, intptr_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssyevj_bufferSize(intptr_t, int, int, int, size_t, int, size_t, intptr_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsyevj_bufferSize(intptr_t, int, int, int, size_t, int, size_t, intptr_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cheevj_bufferSize(intptr_t, int, int, int, size_t, int, size_t, intptr_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zheevj_bufferSize(intptr_t, int, int, int, size_t, int, size_t, intptr_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssyevj(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, intptr_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsyevj(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, intptr_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cheevj(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, intptr_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zheevj(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, intptr_t, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssyevjBatched_bufferSize(intptr_t, int, int, int, size_t, int, size_t, intptr_t, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsyevjBatched_bufferSize(intptr_t, int, int, int, size_t, int, size_t, intptr_t, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cheevjBatched_bufferSize(intptr_t, int, int, int, size_t, int, size_t, intptr_t, int, int __pyx_skip_dispatch); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zheevjBatched_bufferSize(intptr_t, int, int, int, size_t, int, size_t, intptr_t, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssyevjBatched(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, intptr_t, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsyevjBatched(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, intptr_t, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cheevjBatched(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, intptr_t, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zheevjBatched(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, intptr_t, int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_scsrlsvchol(intptr_t, int, int, size_t, size_t, size_t, size_t, size_t, float, int, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dcsrlsvchol(intptr_t, int, int, size_t, size_t, size_t, size_t, size_t, double, int, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccsrlsvchol(intptr_t, int, int, size_t, size_t, size_t, size_t, size_t, float, int, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcsrlsvchol(intptr_t, int, int, size_t, size_t, size_t, size_t, size_t, double, int, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_scsrlsvqr(intptr_t, int, int, size_t, size_t, size_t, size_t, size_t, float, int, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dcsrlsvqr(intptr_t, int, int, size_t, size_t, size_t, size_t, size_t, double, int, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccsrlsvqr(intptr_t, int, int, size_t, size_t, size_t, size_t, size_t, float, int, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcsrlsvqr(intptr_t, int, int, size_t, size_t, size_t, size_t, size_t, double, int, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_scsreigvsi(intptr_t, int, int, size_t, size_t, size_t, size_t, float, size_t, int, float, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dcsreigvsi(intptr_t, int, int, size_t, size_t, size_t, size_t, double, size_t, int, double, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccsreigvsi(intptr_t, int, int, size_t, size_t, size_t, size_t, size_t, size_t, int, float, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcsreigvsi(intptr_t, int, int, size_t, size_t, size_t, size_t, size_t, size_t, int, double, size_t, size_t, int __pyx_skip_dispatch); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(int, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spSetStream(intptr_t, size_t, int __pyx_skip_dispatch); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spGetStream(intptr_t, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(intptr_t); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver__spSetStream(intptr_t); /*proto*/
#define __Pyx_MODULE_NAME "cupy_backends.cuda.libs.cusolver"
extern int __pyx_module_is_main_cupy_backends__cuda__libs__cusolver;
int __pyx_module_is_main_cupy_backends__cuda__libs__cusolver = 0;

/* Implementation of 'cupy_backends.cuda.libs.cusolver' */
static PyObject *__pyx_builtin_RuntimeError;
static PyObject *__pyx_builtin_super;
static const char __pyx_k_A[] = "A";
static const char __pyx_k_B[] = "B";
static const char __pyx_k_C[] = "C";
static const char __pyx_k_D[] = "D";
static const char __pyx_k_E[] = "E";
static const char __pyx_k_S[] = "S";
static const char __pyx_k_U[] = "U";
static const char __pyx_k_V[] = "V";
static const char __pyx_k_W[] = "W";
static const char __pyx_k_b[] = "b";
static const char __pyx_k_k[] = "k";
static const char __pyx_k_m[] = "m";
static const char __pyx_k_n[] = "n";
static const char __pyx_k_x[] = "x";
static const char __pyx_k_VT[] = "VT";
static const char __pyx_k_dA[] = "dA";
static const char __pyx_k_dB[] = "dB";
static const char __pyx_k_dX[] = "dX";
static const char __pyx_k_mu[] = "mu";
static const char __pyx_k_x0[] = "x0";
static const char __pyx_k_d_A[] = "d_A";
static const char __pyx_k_d_S[] = "d_S";
static const char __pyx_k_d_U[] = "d_U";
static const char __pyx_k_d_V[] = "d_V";
static const char __pyx_k_doc[] = "__doc__";
static const char __pyx_k_eps[] = "eps";
static const char __pyx_k_err[] = "err";
static const char __pyx_k_lda[] = "lda";
static const char __pyx_k_ldb[] = "ldb";
static const char __pyx_k_ldc[] = "ldc";
static const char __pyx_k_ldu[] = "ldu";
static const char __pyx_k_ldv[] = "ldv";
static const char __pyx_k_mu0[] = "mu0";
static const char __pyx_k_nnz[] = "nnz";
static const char __pyx_k_tau[] = "tau";
static const char __pyx_k_tol[] = "tol";
static const char __pyx_k_Work[] = "Work";
static const char __pyx_k_econ[] = "econ";
static const char __pyx_k_info[] = "info";
static const char __pyx_k_init[] = "__init__";
static const char __pyx_k_ipiv[] = "ipiv";
static const char __pyx_k_jobu[] = "jobu";
static const char __pyx_k_jobz[] = "jobz";
static const char __pyx_k_ldda[] = "ldda";
static const char __pyx_k_lddb[] = "lddb";
static const char __pyx_k_lddx[] = "lddx";
static const char __pyx_k_ldvt[] = "ldvt";
static const char __pyx_k_main[] = "__main__";
static const char __pyx_k_name[] = "__name__";
static const char __pyx_k_nrhs[] = "nrhs";
static const char __pyx_k_rank[] = "rank";
static const char __pyx_k_self[] = "self";
static const char __pyx_k_side[] = "side";
static const char __pyx_k_tauP[] = "tauP";
static const char __pyx_k_tauQ[] = "tauQ";
static const char __pyx_k_test[] = "__test__";
static const char __pyx_k_uplo[] = "uplo";
static const char __pyx_k_work[] = "work";
static const char __pyx_k_dInfo[] = "dInfo";
static const char __pyx_k_dipiv[] = "dipiv";
static const char __pyx_k_dwork[] = "dwork";
static const char __pyx_k_jobvt[] = "jobvt";
static const char __pyx_k_lwork[] = "lwork";
static const char __pyx_k_rwork[] = "rwork";
static const char __pyx_k_super[] = "super";
static const char __pyx_k_trans[] = "trans";
static const char __pyx_k_Aarray[] = "Aarray";
static const char __pyx_k_Barray[] = "Barray";
static const char __pyx_k_csrVal[] = "csrVal";
static const char __pyx_k_d_info[] = "d_info";
static const char __pyx_k_d_work[] = "d_work";
static const char __pyx_k_descrA[] = "descrA";
static const char __pyx_k_handle[] = "handle";
static const char __pyx_k_maxite[] = "maxite";
static const char __pyx_k_module[] = "__module__";
static const char __pyx_k_params[] = "params";
static const char __pyx_k_reduce[] = "__reduce__";
static const char __pyx_k_status[] = "status";
static const char __pyx_k_stream[] = "stream";
static const char __pyx_k_csrValA[] = "csrValA";
static const char __pyx_k_devInfo[] = "devInfo";
static const char __pyx_k_devIpiv[] = "devIpiv";
static const char __pyx_k_prepare[] = "__prepare__";
static const char __pyx_k_reorder[] = "reorder";
static const char __pyx_k_strideA[] = "strideA";
static const char __pyx_k_strideS[] = "strideS";
static const char __pyx_k_strideU[] = "strideU";
static const char __pyx_k_strideV[] = "strideV";
static const char __pyx_k_h_R_nrmF[] = "h_R_nrmF";
static const char __pyx_k_qualname[] = "__qualname__";
static const char __pyx_k_sort_eig[] = "sort_eig";
static const char __pyx_k_sort_svd[] = "sort_svd";
static const char __pyx_k_batchSize[] = "batchSize";
static const char __pyx_k_csrColInd[] = "csrColInd";
static const char __pyx_k_csrRowPtr[] = "csrRowPtr";
static const char __pyx_k_infoArray[] = "infoArray";
static const char __pyx_k_metaclass[] = "__metaclass__";
static const char __pyx_k_tolerance[] = "tolerance";
static const char __pyx_k_csrColIndA[] = "csrColIndA";
static const char __pyx_k_csrRowPtrA[] = "csrRowPtrA";
static const char __pyx_k_max_sweeps[] = "max_sweeps";
static const char __pyx_k_singularity[] = "singularity";
static const char __pyx_k_RuntimeError[] = "RuntimeError";
static const char __pyx_k_CUSOLVERError[] = "CUSOLVERError";
static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
static const char __pyx_k_CUSOLVERError___init[] = "CUSOLVERError.__init__";
static const char __pyx_k_CUSOLVERError___reduce[] = "CUSOLVERError.__reduce__";
static const char __pyx_k_rocblas_status_success[] = "rocblas_status_success";
static const char __pyx_k_CUSOLVER_STATUS_SUCCESS[] = "CUSOLVER_STATUS_SUCCESS";
static const char __pyx_k_rocblas_status_continue[] = "rocblas_status_continue";
static const char __pyx_k_Thin_wrapper_of_CUSOLVER[] = "Thin wrapper of CUSOLVER.";
static const char __pyx_k_CUSOLVER_STATUS_ZERO_PIVOT[] = "CUSOLVER_STATUS_ZERO_PIVOT";
static const char __pyx_k_rocblas_status_invalid_size[] = "rocblas_status_invalid_size";
static const char __pyx_k_rocblas_status_memory_error[] = "rocblas_status_memory_error";
static const char __pyx_k_CUSOLVER_STATUS_ALLOC_FAILED[] = "CUSOLVER_STATUS_ALLOC_FAILED";
static const char __pyx_k_rocblas_status_invalid_value[] = "rocblas_status_invalid_value";
static const char __pyx_k_rocblas_status_perf_degraded[] = "rocblas_status_perf_degraded";
static const char __pyx_k_CUSOLVER_STATUS_ARCH_MISMATCH[] = "CUSOLVER_STATUS_ARCH_MISMATCH";
static const char __pyx_k_CUSOLVER_STATUS_INVALID_VALUE[] = "CUSOLVER_STATUS_INVALID_VALUE";
static const char __pyx_k_CUSOLVER_STATUS_MAPPING_ERROR[] = "CUSOLVER_STATUS_MAPPING_ERROR";
static const char __pyx_k_CUSOLVER_STATUS_NOT_SUPPORTED[] = "CUSOLVER_STATUS_NOT_SUPPORTED";
static const char __pyx_k_rocblas_status_internal_error[] = "rocblas_status_internal_error";
static const char __pyx_k_rocblas_status_invalid_handle[] = "rocblas_status_invalid_handle";
static const char __pyx_k_rocblas_status_size_increased[] = "rocblas_status_size_increased";
static const char __pyx_k_rocblas_status_size_unchanged[] = "rocblas_status_size_unchanged";
static const char __pyx_k_CUSOLVER_STATUS_INTERNAL_ERROR[] = "CUSOLVER_STATUS_INTERNAL_ERROR";
static const char __pyx_k_rocblas_status_invalid_pointer[] = "rocblas_status_invalid_pointer";
static const char __pyx_k_rocblas_status_not_implemented[] = "rocblas_status_not_implemented";
static const char __pyx_k_CUSOLVER_STATUS_INVALID_LICENSE[] = "CUSOLVER_STATUS_INVALID_LICENSE";
static const char __pyx_k_CUSOLVER_STATUS_MATRIX_TYPE_NOT[] = "CUSOLVER_STATUS_MATRIX_TYPE_NOT_SUPPORTED";
static const char __pyx_k_CUSOLVER_STATUS_NOT_INITIALIZED[] = "CUSOLVER_STATUS_NOT_INITIALIZED";
static const char __pyx_k_CUSOLVER_STATUS_EXECUTION_FAILED[] = "CUSOLVER_STATUS_EXECUTION_FAILED";
static const char __pyx_k_CUSOLVER_STATUS_INVALID_WORKSPAC[] = "CUSOLVER_STATUS_INVALID_WORKSPACE";
static const char __pyx_k_CUSOLVER_STATUS_IRS_INFOS_NOT_DE[] = "CUSOLVER_STATUS_IRS_INFOS_NOT_DESTROYED";
static const char __pyx_k_CUSOLVER_STATUS_IRS_INFOS_NOT_IN[] = "CUSOLVER_STATUS_IRS_INFOS_NOT_INITIALIZED";
static const char __pyx_k_CUSOLVER_STATUS_IRS_INTERNAL_ERR[] = "CUSOLVER_STATUS_IRS_INTERNAL_ERROR";
static const char __pyx_k_CUSOLVER_STATUS_IRS_MATRIX_SINGU[] = "CUSOLVER_STATUS_IRS_MATRIX_SINGULAR";
static const char __pyx_k_CUSOLVER_STATUS_IRS_NOT_SUPPORTE[] = "CUSOLVER_STATUS_IRS_NOT_SUPPORTED";
static const char __pyx_k_CUSOLVER_STATUS_IRS_NRHS_NOT_SUP[] = "CUSOLVER_STATUS_IRS_NRHS_NOT_SUPPORTED_FOR_REFINE_GMRES";
static const char __pyx_k_CUSOLVER_STATUS_IRS_OUT_OF_RANGE[] = "CUSOLVER_STATUS_IRS_OUT_OF_RANGE";
static const char __pyx_k_CUSOLVER_STATUS_IRS_PARAMS_INVAL[] = "CUSOLVER_STATUS_IRS_PARAMS_INVALID";
static const char __pyx_k_CUSOLVER_STATUS_IRS_PARAMS_NOT_I[] = "CUSOLVER_STATUS_IRS_PARAMS_NOT_INITIALIZED";
static const char __pyx_k_cupy_backends_cuda_libs_cusolver[] = "cupy_backends.cuda.libs.cusolver";
static const char __pyx_k_rocblas_status_size_query_mismat[] = "rocblas_status_size_query_mismatch";
static const char __pyx_k_CUSOLVER_STATUS_IRS_PARAMS_INVAL_2[] = "CUSOLVER_STATUS_IRS_PARAMS_INVALID_PREC";
static const char __pyx_k_CUSOLVER_STATUS_IRS_PARAMS_INVAL_3[] = "CUSOLVER_STATUS_IRS_PARAMS_INVALID_REFINE";
static const char __pyx_k_CUSOLVER_STATUS_IRS_PARAMS_INVAL_4[] = "CUSOLVER_STATUS_IRS_PARAMS_INVALID_MAXITER";
static const char __pyx_k_cupy_backends_cuda_libs_cusolver_2[] = "cupy_backends/cuda/libs/cusolver.pyx";
static PyObject *__pyx_n_s_A;
static PyObject *__pyx_n_s_Aarray;
static PyObject *__pyx_n_s_B;
static PyObject *__pyx_n_s_Barray;
static PyObject *__pyx_n_s_C;
static PyObject *__pyx_n_s_CUSOLVERError;
static PyObject *__pyx_n_s_CUSOLVERError___init;
static PyObject *__pyx_n_s_CUSOLVERError___reduce;
static PyObject *__pyx_n_u_CUSOLVER_STATUS_ALLOC_FAILED;
static PyObject *__pyx_n_u_CUSOLVER_STATUS_ARCH_MISMATCH;
static PyObject *__pyx_n_u_CUSOLVER_STATUS_EXECUTION_FAILED;
static PyObject *__pyx_n_u_CUSOLVER_STATUS_INTERNAL_ERROR;
static PyObject *__pyx_n_u_CUSOLVER_STATUS_INVALID_LICENSE;
static PyObject *__pyx_n_u_CUSOLVER_STATUS_INVALID_VALUE;
static PyObject *__pyx_n_u_CUSOLVER_STATUS_INVALID_WORKSPAC;
static PyObject *__pyx_n_u_CUSOLVER_STATUS_IRS_INFOS_NOT_DE;
static PyObject *__pyx_n_u_CUSOLVER_STATUS_IRS_INFOS_NOT_IN;
static PyObject *__pyx_n_u_CUSOLVER_STATUS_IRS_INTERNAL_ERR;
static PyObject *__pyx_n_u_CUSOLVER_STATUS_IRS_MATRIX_SINGU;
static PyObject *__pyx_n_u_CUSOLVER_STATUS_IRS_NOT_SUPPORTE;
static PyObject *__pyx_n_u_CUSOLVER_STATUS_IRS_NRHS_NOT_SUP;
static PyObject *__pyx_n_u_CUSOLVER_STATUS_IRS_OUT_OF_RANGE;
static PyObject *__pyx_n_u_CUSOLVER_STATUS_IRS_PARAMS_INVAL;
static PyObject *__pyx_n_u_CUSOLVER_STATUS_IRS_PARAMS_INVAL_2;
static PyObject *__pyx_n_u_CUSOLVER_STATUS_IRS_PARAMS_INVAL_3;
static PyObject *__pyx_n_u_CUSOLVER_STATUS_IRS_PARAMS_INVAL_4;
static PyObject *__pyx_n_u_CUSOLVER_STATUS_IRS_PARAMS_NOT_I;
static PyObject *__pyx_n_u_CUSOLVER_STATUS_MAPPING_ERROR;
static PyObject *__pyx_n_u_CUSOLVER_STATUS_MATRIX_TYPE_NOT;
static PyObject *__pyx_n_u_CUSOLVER_STATUS_NOT_INITIALIZED;
static PyObject *__pyx_n_u_CUSOLVER_STATUS_NOT_SUPPORTED;
static PyObject *__pyx_n_u_CUSOLVER_STATUS_SUCCESS;
static PyObject *__pyx_n_u_CUSOLVER_STATUS_ZERO_PIVOT;
static PyObject *__pyx_n_s_D;
static PyObject *__pyx_n_s_E;
static PyObject *__pyx_n_s_RuntimeError;
static PyObject *__pyx_n_s_S;
static PyObject *__pyx_n_s_U;
static PyObject *__pyx_n_s_V;
static PyObject *__pyx_n_s_VT;
static PyObject *__pyx_n_s_W;
static PyObject *__pyx_n_s_Work;
static PyObject *__pyx_n_s_b;
static PyObject *__pyx_n_s_batchSize;
static PyObject *__pyx_n_s_cline_in_traceback;
static PyObject *__pyx_n_s_csrColInd;
static PyObject *__pyx_n_s_csrColIndA;
static PyObject *__pyx_n_s_csrRowPtr;
static PyObject *__pyx_n_s_csrRowPtrA;
static PyObject *__pyx_n_s_csrVal;
static PyObject *__pyx_n_s_csrValA;
static PyObject *__pyx_n_s_cupy_backends_cuda_libs_cusolver;
static PyObject *__pyx_kp_s_cupy_backends_cuda_libs_cusolver_2;
static PyObject *__pyx_n_s_dA;
static PyObject *__pyx_n_s_dB;
static PyObject *__pyx_n_s_dInfo;
static PyObject *__pyx_n_s_dX;
static PyObject *__pyx_n_s_d_A;
static PyObject *__pyx_n_s_d_S;
static PyObject *__pyx_n_s_d_U;
static PyObject *__pyx_n_s_d_V;
static PyObject *__pyx_n_s_d_info;
static PyObject *__pyx_n_s_d_work;
static PyObject *__pyx_n_s_descrA;
static PyObject *__pyx_n_s_devInfo;
static PyObject *__pyx_n_s_devIpiv;
static PyObject *__pyx_n_s_dipiv;
static PyObject *__pyx_n_s_doc;
static PyObject *__pyx_n_s_dwork;
static PyObject *__pyx_n_s_econ;
static PyObject *__pyx_n_s_eps;
static PyObject *__pyx_n_s_err;
static PyObject *__pyx_n_s_h_R_nrmF;
static PyObject *__pyx_n_s_handle;
static PyObject *__pyx_n_s_info;
static PyObject *__pyx_n_s_infoArray;
static PyObject *__pyx_n_s_init;
static PyObject *__pyx_n_s_ipiv;
static PyObject *__pyx_n_s_jobu;
static PyObject *__pyx_n_s_jobvt;
static PyObject *__pyx_n_s_jobz;
static PyObject *__pyx_n_s_k;
static PyObject *__pyx_n_s_lda;
static PyObject *__pyx_n_s_ldb;
static PyObject *__pyx_n_s_ldc;
static PyObject *__pyx_n_s_ldda;
static PyObject *__pyx_n_s_lddb;
static PyObject *__pyx_n_s_lddx;
static PyObject *__pyx_n_s_ldu;
static PyObject *__pyx_n_s_ldv;
static PyObject *__pyx_n_s_ldvt;
static PyObject *__pyx_n_s_lwork;
static PyObject *__pyx_n_s_m;
static PyObject *__pyx_n_s_main;
static PyObject *__pyx_n_s_max_sweeps;
static PyObject *__pyx_n_s_maxite;
static PyObject *__pyx_n_s_metaclass;
static PyObject *__pyx_n_s_module;
static PyObject *__pyx_n_s_mu;
static PyObject *__pyx_n_s_mu0;
static PyObject *__pyx_n_s_n;
static PyObject *__pyx_n_s_name;
static PyObject *__pyx_n_s_nnz;
static PyObject *__pyx_n_s_nrhs;
static PyObject *__pyx_n_s_params;
static PyObject *__pyx_n_s_prepare;
static PyObject *__pyx_n_s_qualname;
static PyObject *__pyx_n_s_rank;
static PyObject *__pyx_n_s_reduce;
static PyObject *__pyx_n_s_reorder;
static PyObject *__pyx_n_u_rocblas_status_continue;
static PyObject *__pyx_n_u_rocblas_status_internal_error;
static PyObject *__pyx_n_u_rocblas_status_invalid_handle;
static PyObject *__pyx_n_u_rocblas_status_invalid_pointer;
static PyObject *__pyx_n_u_rocblas_status_invalid_size;
static PyObject *__pyx_n_u_rocblas_status_invalid_value;
static PyObject *__pyx_n_u_rocblas_status_memory_error;
static PyObject *__pyx_n_u_rocblas_status_not_implemented;
static PyObject *__pyx_n_u_rocblas_status_perf_degraded;
static PyObject *__pyx_n_u_rocblas_status_size_increased;
static PyObject *__pyx_n_u_rocblas_status_size_query_mismat;
static PyObject *__pyx_n_u_rocblas_status_size_unchanged;
static PyObject *__pyx_n_u_rocblas_status_success;
static PyObject *__pyx_n_s_rwork;
static PyObject *__pyx_n_s_self;
static PyObject *__pyx_n_s_side;
static PyObject *__pyx_n_s_singularity;
static PyObject *__pyx_n_s_sort_eig;
static PyObject *__pyx_n_s_sort_svd;
static PyObject *__pyx_n_s_status;
static PyObject *__pyx_n_s_stream;
static PyObject *__pyx_n_s_strideA;
static PyObject *__pyx_n_s_strideS;
static PyObject *__pyx_n_s_strideU;
static PyObject *__pyx_n_s_strideV;
static PyObject *__pyx_n_s_super;
static PyObject *__pyx_n_s_tau;
static PyObject *__pyx_n_s_tauP;
static PyObject *__pyx_n_s_tauQ;
static PyObject *__pyx_n_s_test;
static PyObject *__pyx_n_s_tol;
static PyObject *__pyx_n_s_tolerance;
static PyObject *__pyx_n_s_trans;
static PyObject *__pyx_n_s_uplo;
static PyObject *__pyx_n_s_work;
static PyObject *__pyx_n_s_x;
static PyObject *__pyx_n_s_x0;
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_13CUSOLVERError___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_13CUSOLVERError_2__reduce__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_check_status(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_status); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_2getProperty(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_type); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_4_getVersion(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_6create(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_8spCreate(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_10destroy(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_12spDestroy(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_14setStream(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, size_t __pyx_v_stream); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_16getStream(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_18spSetStream(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, size_t __pyx_v_stream); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_20spGetStream(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_22spotrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_24dpotrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_26cpotrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_28zpotrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_30spotrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_32dpotrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_34cpotrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_36zpotrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_38spotrs(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_B, int __pyx_v_ldb, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_40dpotrs(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_B, int __pyx_v_ldb, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_42cpotrs(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_B, int __pyx_v_ldb, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_44zpotrs(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_B, int __pyx_v_ldb, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_46spotrfBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_Aarray, int __pyx_v_lda, size_t __pyx_v_infoArray, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_48dpotrfBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_Aarray, int __pyx_v_lda, size_t __pyx_v_infoArray, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_50cpotrfBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_Aarray, int __pyx_v_lda, size_t __pyx_v_infoArray, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_52zpotrfBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_Aarray, int __pyx_v_lda, size_t __pyx_v_infoArray, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_54spotrsBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_Aarray, int __pyx_v_lda, size_t __pyx_v_Barray, int __pyx_v_ldb, size_t __pyx_v_devInfo, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_56dpotrsBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_Aarray, int __pyx_v_lda, size_t __pyx_v_Barray, int __pyx_v_ldb, size_t __pyx_v_devInfo, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_58cpotrsBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_Aarray, int __pyx_v_lda, size_t __pyx_v_Barray, int __pyx_v_ldb, size_t __pyx_v_devInfo, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_60zpotrsBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_Aarray, int __pyx_v_lda, size_t __pyx_v_Barray, int __pyx_v_ldb, size_t __pyx_v_devInfo, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_62sgetrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_64dgetrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_66cgetrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_68zgetrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_70sgetrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_work, size_t __pyx_v_devIpiv, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_72dgetrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_work, size_t __pyx_v_devIpiv, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_74cgetrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_work, size_t __pyx_v_devIpiv, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_76zgetrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_work, size_t __pyx_v_devIpiv, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_78sgetrs(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_trans, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_devIpiv, size_t __pyx_v_B, int __pyx_v_ldb, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_80dgetrs(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_trans, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_devIpiv, size_t __pyx_v_B, int __pyx_v_ldb, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_82cgetrs(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_trans, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_devIpiv, size_t __pyx_v_B, int __pyx_v_ldb, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_84zgetrs(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_trans, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_devIpiv, size_t __pyx_v_B, int __pyx_v_ldb, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_86sgeqrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_88dgeqrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_90cgeqrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_92zgeqrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_94sgeqrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_96dgeqrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_98cgeqrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_100zgeqrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_102sorgqr_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_104dorgqr_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_106cungqr_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_108zungqr_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_110sorgqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_112dorgqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_114cungqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_116zungqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_118sormqr_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_120dormqr_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_122cunmqr_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_124zunmqr_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_126sormqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_128dormqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_130cunmqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_132zunmqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_134cormqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_136zormqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_138ssytrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_140dsytrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_142csytrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_144zsytrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_146ssytrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_ipiv, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_148dsytrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_ipiv, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_150csytrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_ipiv, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_152zsytrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_ipiv, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_154zzgesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_156zcgesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_158zygesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_160zkgesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_162ccgesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_164cygesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_166ckgesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_168ddgesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_170dsgesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_172dxgesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_174dhgesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_176ssgesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_178sxgesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_180shgesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_182zzgesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_184zcgesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_186zygesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_188zkgesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_190ccgesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_192cygesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_194ckgesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_196ddgesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_198dsgesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_200dxgesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_202dhgesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_204ssgesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_206sxgesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_208shgesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_210zzgels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_212zcgels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_214zygels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_216zkgels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_218ccgels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_220cygels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_222ckgels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_224ddgels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_226dsgels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_228dxgels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_230dhgels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_232ssgels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_234sxgels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_236shgels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_238zzgels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_240zcgels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_242zygels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_244zkgels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_246ccgels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_248cygels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_250ckgels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_252ddgels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_254dsgels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_256dxgels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_258dhgels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_260ssgels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_262sxgels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_264shgels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_266sgebrd_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_268dgebrd_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_270cgebrd_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_272zgebrd_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_274sgebrd(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_D, size_t __pyx_v_E, size_t __pyx_v_tauQ, size_t __pyx_v_tauP, size_t __pyx_v_Work, int __pyx_v_lwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_276dgebrd(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_D, size_t __pyx_v_E, size_t __pyx_v_tauQ, size_t __pyx_v_tauP, size_t __pyx_v_Work, int __pyx_v_lwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_278cgebrd(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_D, size_t __pyx_v_E, size_t __pyx_v_tauQ, size_t __pyx_v_tauP, size_t __pyx_v_Work, int __pyx_v_lwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_280zgebrd(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_D, size_t __pyx_v_E, size_t __pyx_v_tauQ, size_t __pyx_v_tauP, size_t __pyx_v_Work, int __pyx_v_lwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_282sgesvd_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_284dgesvd_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_286cgesvd_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_288zgesvd_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_290sgesvd(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, char __pyx_v_jobu, char __pyx_v_jobvt, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_S, size_t __pyx_v_U, int __pyx_v_ldu, size_t __pyx_v_VT, int __pyx_v_ldvt, size_t __pyx_v_Work, int __pyx_v_lwork, size_t __pyx_v_rwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_292dgesvd(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, char __pyx_v_jobu, char __pyx_v_jobvt, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_S, size_t __pyx_v_U, int __pyx_v_ldu, size_t __pyx_v_VT, int __pyx_v_ldvt, size_t __pyx_v_Work, int __pyx_v_lwork, size_t __pyx_v_rwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_294cgesvd(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, char __pyx_v_jobu, char __pyx_v_jobvt, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_S, size_t __pyx_v_U, int __pyx_v_ldu, size_t __pyx_v_VT, int __pyx_v_ldvt, size_t __pyx_v_Work, int __pyx_v_lwork, size_t __pyx_v_rwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_296zgesvd(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, char __pyx_v_jobu, char __pyx_v_jobvt, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_S, size_t __pyx_v_U, int __pyx_v_ldu, size_t __pyx_v_VT, int __pyx_v_ldvt, size_t __pyx_v_Work, int __pyx_v_lwork, size_t __pyx_v_rwork, size_t __pyx_v_devInfo); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_298createGesvdjInfo(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_300destroyGesvdjInfo(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_info); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_302xgesvdjSetTolerance(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_info, double __pyx_v_tolerance); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_304xgesvdjSetMaxSweeps(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_info, int __pyx_v_max_sweeps); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_306xgesvdjSetSortEig(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_info, int __pyx_v_sort_svd); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_308xgesvdjGetResidual(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, intptr_t __pyx_v_info); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_310xgesvdjGetSweeps(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, intptr_t __pyx_v_info); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_312sgesvdj_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_econ, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_params); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_314dgesvdj_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_econ, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_params); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_316cgesvdj_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_econ, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_params); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_318zgesvdj_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_econ, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_params); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_320sgesvdj(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_econ, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_work, int __pyx_v_lwork, intptr_t __pyx_v_info, intptr_t __pyx_v_params); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_322dgesvdj(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_econ, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_work, int __pyx_v_lwork, intptr_t __pyx_v_info, intptr_t __pyx_v_params); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_324cgesvdj(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_econ, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_work, int __pyx_v_lwork, intptr_t __pyx_v_info, intptr_t __pyx_v_params); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_326zgesvdj(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_econ, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_work, int __pyx_v_lwork, intptr_t __pyx_v_info, intptr_t __pyx_v_params); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_328sgesvdjBatched_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_params, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_330dgesvdjBatched_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_params, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_332cgesvdjBatched_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_params, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_334zgesvdjBatched_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_params, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_336sgesvdjBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_work, int __pyx_v_lwork, intptr_t __pyx_v_info, intptr_t __pyx_v_params, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_338dgesvdjBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_work, int __pyx_v_lwork, intptr_t __pyx_v_info, intptr_t __pyx_v_params, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_340cgesvdjBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_work, int __pyx_v_lwork, intptr_t __pyx_v_info, intptr_t __pyx_v_params, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_342zgesvdjBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_work, int __pyx_v_lwork, intptr_t __pyx_v_info, intptr_t __pyx_v_params, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_344sgesvdaStridedBatched_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_rank, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_d_A, int __pyx_v_lda, PY_LONG_LONG __pyx_v_strideA, intptr_t __pyx_v_d_S, PY_LONG_LONG __pyx_v_strideS, intptr_t __pyx_v_d_U, int __pyx_v_ldu, PY_LONG_LONG __pyx_v_strideU, intptr_t __pyx_v_d_V, int __pyx_v_ldv, PY_LONG_LONG __pyx_v_strideV, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_346dgesvdaStridedBatched_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_rank, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_d_A, int __pyx_v_lda, PY_LONG_LONG __pyx_v_strideA, intptr_t __pyx_v_d_S, PY_LONG_LONG __pyx_v_strideS, intptr_t __pyx_v_d_U, int __pyx_v_ldu, PY_LONG_LONG __pyx_v_strideU, intptr_t __pyx_v_d_V, int __pyx_v_ldv, PY_LONG_LONG __pyx_v_strideV, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_348cgesvdaStridedBatched_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_rank, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_d_A, int __pyx_v_lda, PY_LONG_LONG __pyx_v_strideA, intptr_t __pyx_v_d_S, PY_LONG_LONG __pyx_v_strideS, intptr_t __pyx_v_d_U, int __pyx_v_ldu, PY_LONG_LONG __pyx_v_strideU, intptr_t __pyx_v_d_V, int __pyx_v_ldv, PY_LONG_LONG __pyx_v_strideV, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_350zgesvdaStridedBatched_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_rank, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_d_A, int __pyx_v_lda, PY_LONG_LONG __pyx_v_strideA, intptr_t __pyx_v_d_S, PY_LONG_LONG __pyx_v_strideS, intptr_t __pyx_v_d_U, int __pyx_v_ldu, PY_LONG_LONG __pyx_v_strideU, intptr_t __pyx_v_d_V, int __pyx_v_ldv, PY_LONG_LONG __pyx_v_strideV, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_352sgesvdaStridedBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_rank, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_d_A, int __pyx_v_lda, PY_LONG_LONG __pyx_v_strideA, intptr_t __pyx_v_d_S, PY_LONG_LONG __pyx_v_strideS, intptr_t __pyx_v_d_U, int __pyx_v_ldu, PY_LONG_LONG __pyx_v_strideU, intptr_t __pyx_v_d_V, int __pyx_v_ldv, PY_LONG_LONG __pyx_v_strideV, intptr_t __pyx_v_d_work, int __pyx_v_lwork, intptr_t __pyx_v_d_info, intptr_t __pyx_v_h_R_nrmF, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_354dgesvdaStridedBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_rank, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_d_A, int __pyx_v_lda, PY_LONG_LONG __pyx_v_strideA, intptr_t __pyx_v_d_S, PY_LONG_LONG __pyx_v_strideS, intptr_t __pyx_v_d_U, int __pyx_v_ldu, PY_LONG_LONG __pyx_v_strideU, intptr_t __pyx_v_d_V, int __pyx_v_ldv, PY_LONG_LONG __pyx_v_strideV, intptr_t __pyx_v_d_work, int __pyx_v_lwork, intptr_t __pyx_v_d_info, intptr_t __pyx_v_h_R_nrmF, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_356cgesvdaStridedBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_rank, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_d_A, int __pyx_v_lda, PY_LONG_LONG __pyx_v_strideA, intptr_t __pyx_v_d_S, PY_LONG_LONG __pyx_v_strideS, intptr_t __pyx_v_d_U, int __pyx_v_ldu, PY_LONG_LONG __pyx_v_strideU, intptr_t __pyx_v_d_V, int __pyx_v_ldv, PY_LONG_LONG __pyx_v_strideV, intptr_t __pyx_v_d_work, int __pyx_v_lwork, intptr_t __pyx_v_d_info, intptr_t __pyx_v_h_R_nrmF, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_358zgesvdaStridedBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_rank, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_d_A, int __pyx_v_lda, PY_LONG_LONG __pyx_v_strideA, intptr_t __pyx_v_d_S, PY_LONG_LONG __pyx_v_strideS, intptr_t __pyx_v_d_U, int __pyx_v_ldu, PY_LONG_LONG __pyx_v_strideU, intptr_t __pyx_v_d_V, int __pyx_v_ldv, PY_LONG_LONG __pyx_v_strideV, intptr_t __pyx_v_d_work, int __pyx_v_lwork, intptr_t __pyx_v_d_info, intptr_t __pyx_v_h_R_nrmF, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_360ssyevd_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_362dsyevd_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_364cheevd_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_366zheevd_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_368ssyevd(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_370dsyevd(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_372cheevd(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_374zheevd(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_376createSyevjInfo(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_378destroySyevjInfo(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_info); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_380xsyevjSetTolerance(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_info, double __pyx_v_tolerance); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_382xsyevjSetMaxSweeps(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_info, int __pyx_v_max_sweeps); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_384xsyevjSetSortEig(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_info, int __pyx_v_sort_eig); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_386xsyevjGetResidual(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, intptr_t __pyx_v_info); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_388xsyevjGetSweeps(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, intptr_t __pyx_v_info); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_390ssyevj_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, intptr_t __pyx_v_params); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_392dsyevj_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, intptr_t __pyx_v_params); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_394cheevj_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, intptr_t __pyx_v_params); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_396zheevj_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, intptr_t __pyx_v_params); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_398ssyevj(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, intptr_t __pyx_v_params); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_400dsyevj(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, intptr_t __pyx_v_params); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_402cheevj(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, intptr_t __pyx_v_params); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_404zheevj(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, intptr_t __pyx_v_params); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_406ssyevjBatched_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, intptr_t __pyx_v_params, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_408dsyevjBatched_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, intptr_t __pyx_v_params, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_410cheevjBatched_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, intptr_t __pyx_v_params, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_412zheevjBatched_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, intptr_t __pyx_v_params, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_414ssyevjBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, intptr_t __pyx_v_params, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_416dsyevjBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, intptr_t __pyx_v_params, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_418cheevjBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, intptr_t __pyx_v_params, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_420zheevjBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, intptr_t __pyx_v_params, int __pyx_v_batchSize); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_422scsrlsvchol(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrValA, size_t __pyx_v_csrRowPtrA, size_t __pyx_v_csrColIndA, size_t __pyx_v_b, float __pyx_v_tol, int __pyx_v_reorder, size_t __pyx_v_x, size_t __pyx_v_singularity); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_424dcsrlsvchol(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrValA, size_t __pyx_v_csrRowPtrA, size_t __pyx_v_csrColIndA, size_t __pyx_v_b, double __pyx_v_tol, int __pyx_v_reorder, size_t __pyx_v_x, size_t __pyx_v_singularity); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_426ccsrlsvchol(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrVal, size_t __pyx_v_csrRowPtr, size_t __pyx_v_csrColInd, size_t __pyx_v_b, float __pyx_v_tol, int __pyx_v_reorder, size_t __pyx_v_x, size_t __pyx_v_singularity); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_428zcsrlsvchol(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrVal, size_t __pyx_v_csrRowPtr, size_t __pyx_v_csrColInd, size_t __pyx_v_b, double __pyx_v_tol, int __pyx_v_reorder, size_t __pyx_v_x, size_t __pyx_v_singularity); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_430scsrlsvqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrValA, size_t __pyx_v_csrRowPtrA, size_t __pyx_v_csrColIndA, size_t __pyx_v_b, float __pyx_v_tol, int __pyx_v_reorder, size_t __pyx_v_x, size_t __pyx_v_singularity); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_432dcsrlsvqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrValA, size_t __pyx_v_csrRowPtrA, size_t __pyx_v_csrColIndA, size_t __pyx_v_b, double __pyx_v_tol, int __pyx_v_reorder, size_t __pyx_v_x, size_t __pyx_v_singularity); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_434ccsrlsvqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrVal, size_t __pyx_v_csrRowPtr, size_t __pyx_v_csrColInd, size_t __pyx_v_b, float __pyx_v_tol, int __pyx_v_reorder, size_t __pyx_v_x, size_t __pyx_v_singularity); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_436zcsrlsvqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrVal, size_t __pyx_v_csrRowPtr, size_t __pyx_v_csrColInd, size_t __pyx_v_b, double __pyx_v_tol, int __pyx_v_reorder, size_t __pyx_v_x, size_t __pyx_v_singularity); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_438scsreigvsi(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrValA, size_t __pyx_v_csrRowPtrA, size_t __pyx_v_csrColIndA, float __pyx_v_mu0, size_t __pyx_v_x0, int __pyx_v_maxite, float __pyx_v_eps, size_t __pyx_v_mu, size_t __pyx_v_x); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_440dcsreigvsi(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrValA, size_t __pyx_v_csrRowPtrA, size_t __pyx_v_csrColIndA, double __pyx_v_mu0, size_t __pyx_v_x0, int __pyx_v_maxite, double __pyx_v_eps, size_t __pyx_v_mu, size_t __pyx_v_x); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_442ccsreigvsi(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrValA, size_t __pyx_v_csrRowPtrA, size_t __pyx_v_csrColIndA, size_t __pyx_v_mu0, size_t __pyx_v_x0, int __pyx_v_maxite, float __pyx_v_eps, size_t __pyx_v_mu, size_t __pyx_v_x); /* proto */
static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_444zcsreigvsi(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrValA, size_t __pyx_v_csrRowPtrA, size_t __pyx_v_csrColIndA, size_t __pyx_v_mu0, size_t __pyx_v_x0, int __pyx_v_maxite, double __pyx_v_eps, size_t __pyx_v_mu, size_t __pyx_v_x); /* proto */
static PyObject *__pyx_int_0;
static PyObject *__pyx_int_1;
static PyObject *__pyx_int_2;
static PyObject *__pyx_int_3;
static PyObject *__pyx_int_4;
static PyObject *__pyx_int_5;
static PyObject *__pyx_int_6;
static PyObject *__pyx_int_7;
static PyObject *__pyx_int_8;
static PyObject *__pyx_int_9;
static PyObject *__pyx_int_10;
static PyObject *__pyx_int_11;
static PyObject *__pyx_int_12;
static PyObject *__pyx_int_13;
static PyObject *__pyx_int_14;
static PyObject *__pyx_int_15;
static PyObject *__pyx_int_16;
static PyObject *__pyx_int_20;
static PyObject *__pyx_int_21;
static PyObject *__pyx_int_22;
static PyObject *__pyx_int_23;
static PyObject *__pyx_int_25;
static PyObject *__pyx_int_26;
static PyObject *__pyx_int_30;
static PyObject *__pyx_int_31;
static PyObject *__pyx_tuple_;
static PyObject *__pyx_tuple__2;
static PyObject *__pyx_tuple__4;
static PyObject *__pyx_codeobj__3;
static PyObject *__pyx_codeobj__5;
/* Late includes */

/* "cupy_backends/cuda/libs/cusolver.pyx":1035
 * class CUSOLVERError(RuntimeError):
 * 
 *     def __init__(self, status):             # <<<<<<<<<<<<<<
 *         self.status = status
 *         if runtime._is_hip_environment:
 */

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_13CUSOLVERError_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_13CUSOLVERError___init__[] = "CUSOLVERError.__init__(self, status)";
static PyMethodDef __pyx_mdef_13cupy_backends_4cuda_4libs_8cusolver_13CUSOLVERError_1__init__ = {"__init__", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_13CUSOLVERError_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_13CUSOLVERError___init__};
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_13CUSOLVERError_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_status = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_status,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_status)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1035, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1035, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_status = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1035, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.CUSOLVERError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_13CUSOLVERError___init__(__pyx_self, __pyx_v_self, __pyx_v_status);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_13CUSOLVERError___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_status) {
  PyObject *__pyx_v_err = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1036
 * 
 *     def __init__(self, status):
 *         self.status = status             # <<<<<<<<<<<<<<
 *         if runtime._is_hip_environment:
 *             err = ROC_STATUS
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_status, __pyx_v_status) < 0) __PYX_ERR(0, 1036, __pyx_L1_error)

  /* "cupy_backends/cuda/libs/cusolver.pyx":1037
 *     def __init__(self, status):
 *         self.status = status
 *         if runtime._is_hip_environment:             # <<<<<<<<<<<<<<
 *             err = ROC_STATUS
 *         else:
 */
  __pyx_t_1 = (__pyx_v_13cupy_backends_4cuda_3api_7runtime__is_hip_environment != 0);
  if (__pyx_t_1) {

    /* "cupy_backends/cuda/libs/cusolver.pyx":1038
 *         self.status = status
 *         if runtime._is_hip_environment:
 *             err = ROC_STATUS             # <<<<<<<<<<<<<<
 *         else:
 *             err = STATUS
 */
    __Pyx_INCREF(__pyx_v_13cupy_backends_4cuda_4libs_8cusolver_ROC_STATUS);
    __pyx_v_err = __pyx_v_13cupy_backends_4cuda_4libs_8cusolver_ROC_STATUS;

    /* "cupy_backends/cuda/libs/cusolver.pyx":1037
 *     def __init__(self, status):
 *         self.status = status
 *         if runtime._is_hip_environment:             # <<<<<<<<<<<<<<
 *             err = ROC_STATUS
 *         else:
 */
    goto __pyx_L3;
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1040
 *             err = ROC_STATUS
 *         else:
 *             err = STATUS             # <<<<<<<<<<<<<<
 *         super(CUSOLVERError, self).__init__(err[status])
 * 
 */
  /*else*/ {
    __Pyx_INCREF(__pyx_v_13cupy_backends_4cuda_4libs_8cusolver_STATUS);
    __pyx_v_err = __pyx_v_13cupy_backends_4cuda_4libs_8cusolver_STATUS;
  }
  __pyx_L3:;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1041
 *         else:
 *             err = STATUS
 *         super(CUSOLVERError, self).__init__(err[status])             # <<<<<<<<<<<<<<
 * 
 *     def __reduce__(self):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_CUSOLVERError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1041, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1041, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
  __Pyx_INCREF(__pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_self);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1041, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_init); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1041, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(__pyx_v_err == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(0, 1041, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_err, __pyx_v_status); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1041, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1041, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1035
 * class CUSOLVERError(RuntimeError):
 * 
 *     def __init__(self, status):             # <<<<<<<<<<<<<<
 *         self.status = status
 *         if runtime._is_hip_environment:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.CUSOLVERError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_err);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1043
 *         super(CUSOLVERError, self).__init__(err[status])
 * 
 *     def __reduce__(self):             # <<<<<<<<<<<<<<
 *         return (type(self), (self.status,))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_13CUSOLVERError_3__reduce__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_13CUSOLVERError_2__reduce__[] = "CUSOLVERError.__reduce__(self)";
static PyMethodDef __pyx_mdef_13cupy_backends_4cuda_4libs_8cusolver_13CUSOLVERError_3__reduce__ = {"__reduce__", (PyCFunction)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_13CUSOLVERError_3__reduce__, METH_O, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_13CUSOLVERError_2__reduce__};
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_13CUSOLVERError_3__reduce__(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce__ (wrapper)", 0);
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_13CUSOLVERError_2__reduce__(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_13CUSOLVERError_2__reduce__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce__", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1044
 * 
 *     def __reduce__(self):
 *         return (type(self), (self.status,))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_status); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1044, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1044, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1044, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_self)));
  __Pyx_GIVEREF(((PyObject *)Py_TYPE(__pyx_v_self)));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(__pyx_v_self)));
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1043
 *         super(CUSOLVERError, self).__init__(err[status])
 * 
 *     def __reduce__(self):             # <<<<<<<<<<<<<<
 *         return (type(self), (self.status,))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.CUSOLVERError.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1048
 * 
 * @cython.profile(False)
 * cpdef inline check_status(int status):             # <<<<<<<<<<<<<<
 *     if status != 0:
 *         raise CUSOLVERError(status)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_1check_status(PyObject *__pyx_self, PyObject *__pyx_arg_status); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(int __pyx_v_status, CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("check_status", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1049
 * @cython.profile(False)
 * cpdef inline check_status(int status):
 *     if status != 0:             # <<<<<<<<<<<<<<
 *         raise CUSOLVERError(status)
 * 
 */
  __pyx_t_1 = ((__pyx_v_status != 0) != 0);
  if (unlikely(__pyx_t_1)) {

    /* "cupy_backends/cuda/libs/cusolver.pyx":1050
 * cpdef inline check_status(int status):
 *     if status != 0:
 *         raise CUSOLVERError(status)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_CUSOLVERError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1050, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_status); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1050, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1050, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 1050, __pyx_L1_error)

    /* "cupy_backends/cuda/libs/cusolver.pyx":1049
 * @cython.profile(False)
 * cpdef inline check_status(int status):
 *     if status != 0:             # <<<<<<<<<<<<<<
 *         raise CUSOLVERError(status)
 * 
 */
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1048
 * 
 * @cython.profile(False)
 * cpdef inline check_status(int status):             # <<<<<<<<<<<<<<
 *     if status != 0:
 *         raise CUSOLVERError(status)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.check_status", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_1check_status(PyObject *__pyx_self, PyObject *__pyx_arg_status); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_check_status[] = "check_status(int status)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_1check_status(PyObject *__pyx_self, PyObject *__pyx_arg_status) {
  int __pyx_v_status;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("check_status (wrapper)", 0);
  assert(__pyx_arg_status); {
    __pyx_v_status = __Pyx_PyInt_As_int(__pyx_arg_status); if (unlikely((__pyx_v_status == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1048, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.check_status", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_self, ((int)__pyx_v_status));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_check_status(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_status) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("check_status", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1048, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.check_status", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1057
 * ###############################################################################
 * 
 * cpdef int getProperty(int type) except? -1:             # <<<<<<<<<<<<<<
 *     cdef int value
 *     with nogil:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_3getProperty(PyObject *__pyx_self, PyObject *__pyx_arg_type); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_getProperty(int __pyx_v_type, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_value;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getProperty", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1059
 * cpdef int getProperty(int type) except? -1:
 *     cdef int value
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverGetProperty(<LibraryPropertyType>type, &value)
 *     check_status(status)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1060
 *     cdef int value
 *     with nogil:
 *         status = cusolverGetProperty(<LibraryPropertyType>type, &value)             # <<<<<<<<<<<<<<
 *     check_status(status)
 *     return value
 */
        __pyx_v_status = cusolverGetProperty(((libraryPropertyType_t)__pyx_v_type), (&__pyx_v_value));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1059
 * cpdef int getProperty(int type) except? -1:
 *     cdef int value
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverGetProperty(<LibraryPropertyType>type, &value)
 *     check_status(status)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1061
 *     with nogil:
 *         status = cusolverGetProperty(<LibraryPropertyType>type, &value)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return value
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1062
 *         status = cusolverGetProperty(<LibraryPropertyType>type, &value)
 *     check_status(status)
 *     return value             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_value;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1057
 * ###############################################################################
 * 
 * cpdef int getProperty(int type) except? -1:             # <<<<<<<<<<<<<<
 *     cdef int value
 *     with nogil:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.getProperty", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_3getProperty(PyObject *__pyx_self, PyObject *__pyx_arg_type); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_2getProperty[] = "getProperty(int type) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_3getProperty(PyObject *__pyx_self, PyObject *__pyx_arg_type) {
  int __pyx_v_type;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getProperty (wrapper)", 0);
  assert(__pyx_arg_type); {
    __pyx_v_type = __Pyx_PyInt_As_int(__pyx_arg_type); if (unlikely((__pyx_v_type == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1057, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.getProperty", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_2getProperty(__pyx_self, ((int)__pyx_v_type));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_2getProperty(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_type) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getProperty", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_getProperty(__pyx_v_type, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1057, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1057, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.getProperty", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1065
 * 
 * 
 * cpdef tuple _getVersion():             # <<<<<<<<<<<<<<
 *     return (getProperty(MAJOR_VERSION),
 *             getProperty(MINOR_VERSION),
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_5_getVersion(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver__getVersion(CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_getVersion", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1066
 * 
 * cpdef tuple _getVersion():
 *     return (getProperty(MAJOR_VERSION),             # <<<<<<<<<<<<<<
 *             getProperty(MINOR_VERSION),
 *             getProperty(PATCH_LEVEL))
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_getProperty(MAJOR_VERSION, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1066, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1067
 * cpdef tuple _getVersion():
 *     return (getProperty(MAJOR_VERSION),
 *             getProperty(MINOR_VERSION),             # <<<<<<<<<<<<<<
 *             getProperty(PATCH_LEVEL))
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_getProperty(MINOR_VERSION, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1067, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1068
 *     return (getProperty(MAJOR_VERSION),
 *             getProperty(MINOR_VERSION),
 *             getProperty(PATCH_LEVEL))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_getProperty(PATCH_LEVEL, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1068, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1068, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1066
 * 
 * cpdef tuple _getVersion():
 *     return (getProperty(MAJOR_VERSION),             # <<<<<<<<<<<<<<
 *             getProperty(MINOR_VERSION),
 *             getProperty(PATCH_LEVEL))
 */
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_r = ((PyObject*)__pyx_t_5);
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1065
 * 
 * 
 * cpdef tuple _getVersion():             # <<<<<<<<<<<<<<
 *     return (getProperty(MAJOR_VERSION),
 *             getProperty(MINOR_VERSION),
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver._getVersion", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_5_getVersion(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_4_getVersion[] = "_getVersion() -> tuple";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_5_getVersion(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_getVersion (wrapper)", 0);
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_4_getVersion(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_4_getVersion(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_getVersion", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__getVersion(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1065, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver._getVersion", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1075
 * ###############################################################################
 * 
 * cpdef intptr_t create() except? 0:             # <<<<<<<<<<<<<<
 *     cdef Handle handle
 *     with nogil:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_7create(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static intptr_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_create(CYTHON_UNUSED int __pyx_skip_dispatch) {
  cusolverDnHandle_t __pyx_v_handle;
  int __pyx_v_status;
  intptr_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("create", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1077
 * cpdef intptr_t create() except? 0:
 *     cdef Handle handle
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCreate(&handle)
 *     check_status(status)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1078
 *     cdef Handle handle
 *     with nogil:
 *         status = cusolverDnCreate(&handle)             # <<<<<<<<<<<<<<
 *     check_status(status)
 *     return <intptr_t>handle
 */
        __pyx_v_status = cusolverDnCreate((&__pyx_v_handle));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1077
 * cpdef intptr_t create() except? 0:
 *     cdef Handle handle
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCreate(&handle)
 *     check_status(status)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1079
 *     with nogil:
 *         status = cusolverDnCreate(&handle)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return <intptr_t>handle
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1079, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1080
 *         status = cusolverDnCreate(&handle)
 *     check_status(status)
 *     return <intptr_t>handle             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = ((intptr_t)__pyx_v_handle);
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1075
 * ###############################################################################
 * 
 * cpdef intptr_t create() except? 0:             # <<<<<<<<<<<<<<
 *     cdef Handle handle
 *     with nogil:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_7create(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_6create[] = "create() -> intptr_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_7create(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("create (wrapper)", 0);
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_6create(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_6create(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  intptr_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("create", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_create(0); if (unlikely(__pyx_t_1 == ((intptr_t)0) && PyErr_Occurred())) __PYX_ERR(0, 1075, __pyx_L1_error)
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1075, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1083
 * 
 * 
 * cpdef intptr_t spCreate() except? 0:             # <<<<<<<<<<<<<<
 *     cdef SpHandle handle
 *     with nogil:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_9spCreate(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static intptr_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spCreate(CYTHON_UNUSED int __pyx_skip_dispatch) {
  cusolverSpHandle_t __pyx_v_handle;
  int __pyx_v_status;
  intptr_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("spCreate", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1085
 * cpdef intptr_t spCreate() except? 0:
 *     cdef SpHandle handle
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpCreate(&handle)
 *     check_status(status)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1086
 *     cdef SpHandle handle
 *     with nogil:
 *         status = cusolverSpCreate(&handle)             # <<<<<<<<<<<<<<
 *     check_status(status)
 *     return <intptr_t>handle
 */
        __pyx_v_status = cusolverSpCreate((&__pyx_v_handle));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1085
 * cpdef intptr_t spCreate() except? 0:
 *     cdef SpHandle handle
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpCreate(&handle)
 *     check_status(status)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1087
 *     with nogil:
 *         status = cusolverSpCreate(&handle)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return <intptr_t>handle
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1087, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1088
 *         status = cusolverSpCreate(&handle)
 *     check_status(status)
 *     return <intptr_t>handle             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = ((intptr_t)__pyx_v_handle);
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1083
 * 
 * 
 * cpdef intptr_t spCreate() except? 0:             # <<<<<<<<<<<<<<
 *     cdef SpHandle handle
 *     with nogil:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.spCreate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_9spCreate(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_8spCreate[] = "spCreate() -> intptr_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_9spCreate(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("spCreate (wrapper)", 0);
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_8spCreate(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_8spCreate(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  intptr_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("spCreate", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spCreate(0); if (unlikely(__pyx_t_1 == ((intptr_t)0) && PyErr_Occurred())) __PYX_ERR(0, 1083, __pyx_L1_error)
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1083, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.spCreate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1091
 * 
 * 
 * cpdef destroy(intptr_t handle):             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDestroy(<Handle>handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_11destroy(PyObject *__pyx_self, PyObject *__pyx_arg_handle); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_destroy(intptr_t __pyx_v_handle, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("destroy", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1092
 * 
 * cpdef destroy(intptr_t handle):
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDestroy(<Handle>handle)
 *     check_status(status)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1093
 * cpdef destroy(intptr_t handle):
 *     with nogil:
 *         status = cusolverDnDestroy(<Handle>handle)             # <<<<<<<<<<<<<<
 *     check_status(status)
 * 
 */
        __pyx_v_status = cusolverDnDestroy(((cusolverDnHandle_t)__pyx_v_handle));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1092
 * 
 * cpdef destroy(intptr_t handle):
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDestroy(<Handle>handle)
 *     check_status(status)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1094
 *     with nogil:
 *         status = cusolverDnDestroy(<Handle>handle)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1094, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1091
 * 
 * 
 * cpdef destroy(intptr_t handle):             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDestroy(<Handle>handle)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.destroy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_11destroy(PyObject *__pyx_self, PyObject *__pyx_arg_handle); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_10destroy[] = "destroy(intptr_t handle)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_11destroy(PyObject *__pyx_self, PyObject *__pyx_arg_handle) {
  intptr_t __pyx_v_handle;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("destroy (wrapper)", 0);
  assert(__pyx_arg_handle); {
    __pyx_v_handle = PyInt_AsSsize_t(__pyx_arg_handle); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1091, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.destroy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_10destroy(__pyx_self, ((intptr_t)__pyx_v_handle));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_10destroy(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("destroy", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_destroy(__pyx_v_handle, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1091, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.destroy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1097
 * 
 * 
 * cpdef spDestroy(intptr_t handle):             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverSpDestroy(<SpHandle>handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_13spDestroy(PyObject *__pyx_self, PyObject *__pyx_arg_handle); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spDestroy(intptr_t __pyx_v_handle, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("spDestroy", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1098
 * 
 * cpdef spDestroy(intptr_t handle):
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpDestroy(<SpHandle>handle)
 *     check_status(status)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1099
 * cpdef spDestroy(intptr_t handle):
 *     with nogil:
 *         status = cusolverSpDestroy(<SpHandle>handle)             # <<<<<<<<<<<<<<
 *     check_status(status)
 * 
 */
        __pyx_v_status = cusolverSpDestroy(((cusolverSpHandle_t)__pyx_v_handle));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1098
 * 
 * cpdef spDestroy(intptr_t handle):
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpDestroy(<SpHandle>handle)
 *     check_status(status)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1100
 *     with nogil:
 *         status = cusolverSpDestroy(<SpHandle>handle)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1097
 * 
 * 
 * cpdef spDestroy(intptr_t handle):             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverSpDestroy(<SpHandle>handle)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.spDestroy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_13spDestroy(PyObject *__pyx_self, PyObject *__pyx_arg_handle); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_12spDestroy[] = "spDestroy(intptr_t handle)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_13spDestroy(PyObject *__pyx_self, PyObject *__pyx_arg_handle) {
  intptr_t __pyx_v_handle;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("spDestroy (wrapper)", 0);
  assert(__pyx_arg_handle); {
    __pyx_v_handle = PyInt_AsSsize_t(__pyx_arg_handle); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1097, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.spDestroy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_12spDestroy(__pyx_self, ((intptr_t)__pyx_v_handle));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_12spDestroy(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("spDestroy", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spDestroy(__pyx_v_handle, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1097, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.spDestroy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1107
 * ###############################################################################
 * 
 * cpdef setStream(intptr_t handle, size_t stream):             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSetStream(<Handle>handle, <driver.Stream>stream)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_15setStream(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(intptr_t __pyx_v_handle, size_t __pyx_v_stream, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setStream", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1108
 * 
 * cpdef setStream(intptr_t handle, size_t stream):
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSetStream(<Handle>handle, <driver.Stream>stream)
 *     check_status(status)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1109
 * cpdef setStream(intptr_t handle, size_t stream):
 *     with nogil:
 *         status = cusolverDnSetStream(<Handle>handle, <driver.Stream>stream)             # <<<<<<<<<<<<<<
 *     check_status(status)
 * 
 */
        __pyx_v_status = cusolverDnSetStream(((cusolverDnHandle_t)__pyx_v_handle), ((cudaStream_t)__pyx_v_stream));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1108
 * 
 * cpdef setStream(intptr_t handle, size_t stream):
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSetStream(<Handle>handle, <driver.Stream>stream)
 *     check_status(status)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1110
 *     with nogil:
 *         status = cusolverDnSetStream(<Handle>handle, <driver.Stream>stream)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1107
 * ###############################################################################
 * 
 * cpdef setStream(intptr_t handle, size_t stream):             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSetStream(<Handle>handle, <driver.Stream>stream)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.setStream", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_15setStream(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_14setStream[] = "setStream(intptr_t handle, size_t stream)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_15setStream(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  size_t __pyx_v_stream;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setStream (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_stream,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_stream)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("setStream", 1, 2, 2, 1); __PYX_ERR(0, 1107, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setStream") < 0)) __PYX_ERR(0, 1107, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1107, __pyx_L3_error)
    __pyx_v_stream = __Pyx_PyInt_As_size_t(values[1]); if (unlikely((__pyx_v_stream == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1107, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setStream", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1107, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.setStream", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_14setStream(__pyx_self, __pyx_v_handle, __pyx_v_stream);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_14setStream(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, size_t __pyx_v_stream) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setStream", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(__pyx_v_handle, __pyx_v_stream, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.setStream", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1113
 * 
 * 
 * cpdef size_t getStream(intptr_t handle) except? 0:             # <<<<<<<<<<<<<<
 *     cdef driver.Stream stream
 *     with nogil:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_17getStream(PyObject *__pyx_self, PyObject *__pyx_arg_handle); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_getStream(intptr_t __pyx_v_handle, CYTHON_UNUSED int __pyx_skip_dispatch) {
  cudaStream_t __pyx_v_stream;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getStream", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1115
 * cpdef size_t getStream(intptr_t handle) except? 0:
 *     cdef driver.Stream stream
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnGetStream(<Handle>handle, &stream)
 *     check_status(status)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1116
 *     cdef driver.Stream stream
 *     with nogil:
 *         status = cusolverDnGetStream(<Handle>handle, &stream)             # <<<<<<<<<<<<<<
 *     check_status(status)
 *     return <size_t>stream
 */
        __pyx_v_status = cusolverDnGetStream(((cusolverDnHandle_t)__pyx_v_handle), (&__pyx_v_stream));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1115
 * cpdef size_t getStream(intptr_t handle) except? 0:
 *     cdef driver.Stream stream
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnGetStream(<Handle>handle, &stream)
 *     check_status(status)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1117
 *     with nogil:
 *         status = cusolverDnGetStream(<Handle>handle, &stream)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return <size_t>stream
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1118
 *         status = cusolverDnGetStream(<Handle>handle, &stream)
 *     check_status(status)
 *     return <size_t>stream             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = ((size_t)__pyx_v_stream);
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1113
 * 
 * 
 * cpdef size_t getStream(intptr_t handle) except? 0:             # <<<<<<<<<<<<<<
 *     cdef driver.Stream stream
 *     with nogil:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.getStream", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_17getStream(PyObject *__pyx_self, PyObject *__pyx_arg_handle); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_16getStream[] = "getStream(intptr_t handle) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_17getStream(PyObject *__pyx_self, PyObject *__pyx_arg_handle) {
  intptr_t __pyx_v_handle;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getStream (wrapper)", 0);
  assert(__pyx_arg_handle); {
    __pyx_v_handle = PyInt_AsSsize_t(__pyx_arg_handle); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1113, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.getStream", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_16getStream(__pyx_self, ((intptr_t)__pyx_v_handle));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_16getStream(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getStream", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_getStream(__pyx_v_handle, 0); if (unlikely(__pyx_t_1 == ((size_t)0) && PyErr_Occurred())) __PYX_ERR(0, 1113, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.getStream", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1121
 * 
 * 
 * cpdef spSetStream(intptr_t handle, size_t stream):             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverSpSetStream(<SpHandle>handle, <driver.Stream>stream)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_19spSetStream(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spSetStream(intptr_t __pyx_v_handle, size_t __pyx_v_stream, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("spSetStream", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1122
 * 
 * cpdef spSetStream(intptr_t handle, size_t stream):
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpSetStream(<SpHandle>handle, <driver.Stream>stream)
 *     check_status(status)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1123
 * cpdef spSetStream(intptr_t handle, size_t stream):
 *     with nogil:
 *         status = cusolverSpSetStream(<SpHandle>handle, <driver.Stream>stream)             # <<<<<<<<<<<<<<
 *     check_status(status)
 * 
 */
        __pyx_v_status = cusolverSpSetStream(((cusolverSpHandle_t)__pyx_v_handle), ((cudaStream_t)__pyx_v_stream));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1122
 * 
 * cpdef spSetStream(intptr_t handle, size_t stream):
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpSetStream(<SpHandle>handle, <driver.Stream>stream)
 *     check_status(status)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1124
 *     with nogil:
 *         status = cusolverSpSetStream(<SpHandle>handle, <driver.Stream>stream)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1121
 * 
 * 
 * cpdef spSetStream(intptr_t handle, size_t stream):             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverSpSetStream(<SpHandle>handle, <driver.Stream>stream)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.spSetStream", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_19spSetStream(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_18spSetStream[] = "spSetStream(intptr_t handle, size_t stream)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_19spSetStream(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  size_t __pyx_v_stream;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("spSetStream (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_stream,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_stream)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spSetStream", 1, 2, 2, 1); __PYX_ERR(0, 1121, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "spSetStream") < 0)) __PYX_ERR(0, 1121, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1121, __pyx_L3_error)
    __pyx_v_stream = __Pyx_PyInt_As_size_t(values[1]); if (unlikely((__pyx_v_stream == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1121, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("spSetStream", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1121, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.spSetStream", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_18spSetStream(__pyx_self, __pyx_v_handle, __pyx_v_stream);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_18spSetStream(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, size_t __pyx_v_stream) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("spSetStream", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spSetStream(__pyx_v_handle, __pyx_v_stream, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.spSetStream", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1127
 * 
 * 
 * cpdef size_t spGetStream(intptr_t handle) except *:             # <<<<<<<<<<<<<<
 *     cdef driver.Stream stream
 *     with nogil:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_21spGetStream(PyObject *__pyx_self, PyObject *__pyx_arg_handle); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spGetStream(intptr_t __pyx_v_handle, CYTHON_UNUSED int __pyx_skip_dispatch) {
  cudaStream_t __pyx_v_stream;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("spGetStream", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1129
 * cpdef size_t spGetStream(intptr_t handle) except *:
 *     cdef driver.Stream stream
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpGetStream(<SpHandle>handle, &stream)
 *     check_status(status)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1130
 *     cdef driver.Stream stream
 *     with nogil:
 *         status = cusolverSpGetStream(<SpHandle>handle, &stream)             # <<<<<<<<<<<<<<
 *     check_status(status)
 *     return <size_t>stream
 */
        __pyx_v_status = cusolverSpGetStream(((cusolverSpHandle_t)__pyx_v_handle), (&__pyx_v_stream));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1129
 * cpdef size_t spGetStream(intptr_t handle) except *:
 *     cdef driver.Stream stream
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpGetStream(<SpHandle>handle, &stream)
 *     check_status(status)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1131
 *     with nogil:
 *         status = cusolverSpGetStream(<SpHandle>handle, &stream)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return <size_t>stream
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1132
 *         status = cusolverSpGetStream(<SpHandle>handle, &stream)
 *     check_status(status)
 *     return <size_t>stream             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = ((size_t)__pyx_v_stream);
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1127
 * 
 * 
 * cpdef size_t spGetStream(intptr_t handle) except *:             # <<<<<<<<<<<<<<
 *     cdef driver.Stream stream
 *     with nogil:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.spGetStream", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_21spGetStream(PyObject *__pyx_self, PyObject *__pyx_arg_handle); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_20spGetStream[] = "spGetStream(intptr_t handle) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_21spGetStream(PyObject *__pyx_self, PyObject *__pyx_arg_handle) {
  intptr_t __pyx_v_handle;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("spGetStream (wrapper)", 0);
  assert(__pyx_arg_handle); {
    __pyx_v_handle = PyInt_AsSsize_t(__pyx_arg_handle); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1127, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.spGetStream", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_20spGetStream(__pyx_self, ((intptr_t)__pyx_v_handle));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_20spGetStream(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("spGetStream", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spGetStream(__pyx_v_handle, 0); if (unlikely(__pyx_t_1 == ((size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1127, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.spGetStream", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1135
 * 
 * 
 * cdef _setStream(intptr_t handle):             # <<<<<<<<<<<<<<
 *     """Set current stream when enable_current_stream is True
 *     """
 */

static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(intptr_t __pyx_v_handle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_setStream", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1138
 *     """Set current stream when enable_current_stream is True
 *     """
 *     if stream_module.enable_current_stream:             # <<<<<<<<<<<<<<
 *         setStream(handle, stream_module.get_current_stream_ptr())
 * 
 */
  __pyx_t_1 = (__pyx_v_13cupy_backends_4cuda_6stream_enable_current_stream != 0);
  if (__pyx_t_1) {

    /* "cupy_backends/cuda/libs/cusolver.pyx":1139
 *     """
 *     if stream_module.enable_current_stream:
 *         setStream(handle, stream_module.get_current_stream_ptr())             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_2 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(__pyx_v_handle, __pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr(), 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1139, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "cupy_backends/cuda/libs/cusolver.pyx":1138
 *     """Set current stream when enable_current_stream is True
 *     """
 *     if stream_module.enable_current_stream:             # <<<<<<<<<<<<<<
 *         setStream(handle, stream_module.get_current_stream_ptr())
 * 
 */
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1135
 * 
 * 
 * cdef _setStream(intptr_t handle):             # <<<<<<<<<<<<<<
 *     """Set current stream when enable_current_stream is True
 *     """
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver._setStream", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1142
 * 
 * 
 * cdef _spSetStream(intptr_t handle):             # <<<<<<<<<<<<<<
 *     """Set current stream when enable_current_stream is True
 *     """
 */

static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver__spSetStream(intptr_t __pyx_v_handle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_spSetStream", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1145
 *     """Set current stream when enable_current_stream is True
 *     """
 *     if stream_module.enable_current_stream:             # <<<<<<<<<<<<<<
 *         spSetStream(handle, stream_module.get_current_stream_ptr())
 * 
 */
  __pyx_t_1 = (__pyx_v_13cupy_backends_4cuda_6stream_enable_current_stream != 0);
  if (__pyx_t_1) {

    /* "cupy_backends/cuda/libs/cusolver.pyx":1146
 *     """
 *     if stream_module.enable_current_stream:
 *         spSetStream(handle, stream_module.get_current_stream_ptr())             # <<<<<<<<<<<<<<
 * 
 * ###########################################################################
 */
    __pyx_t_2 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spSetStream(__pyx_v_handle, __pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr(), 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1146, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "cupy_backends/cuda/libs/cusolver.pyx":1145
 *     """Set current stream when enable_current_stream is True
 *     """
 *     if stream_module.enable_current_stream:             # <<<<<<<<<<<<<<
 *         spSetStream(handle, stream_module.get_current_stream_ptr())
 * 
 */
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1142
 * 
 * 
 * cdef _spSetStream(intptr_t handle):             # <<<<<<<<<<<<<<
 *     """Set current stream when enable_current_stream is True
 *     """
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver._spSetStream", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1153
 * 
 * # Cholesky factorization
 * cpdef int spotrf_bufferSize(intptr_t handle, int uplo,             # <<<<<<<<<<<<<<
 *                             int n, size_t A, int lda) except? -1:
 *     cdef int lwork
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_23spotrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spotrf_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("spotrf_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1156
 *                             int n, size_t A, int lda) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSpotrf_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1157
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSpotrf_bufferSize(
 *             <Handle>handle, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1158
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSpotrf_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <FillMode>uplo, n,
 *             <float*>A, <int>lda, &lwork)
 */
        __pyx_v_status = cusolverDnSpotrf_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((float *)__pyx_v_A), ((int)__pyx_v_lda), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1157
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSpotrf_bufferSize(
 *             <Handle>handle, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1161
 *             <Handle>handle, <FillMode>uplo, n,
 *             <float*>A, <int>lda, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1162
 *             <float*>A, <int>lda, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int dpotrf_bufferSize(intptr_t handle, int uplo,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1153
 * 
 * # Cholesky factorization
 * cpdef int spotrf_bufferSize(intptr_t handle, int uplo,             # <<<<<<<<<<<<<<
 *                             int n, size_t A, int lda) except? -1:
 *     cdef int lwork
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.spotrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_23spotrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_22spotrf_bufferSize[] = "spotrf_bufferSize(intptr_t handle, int uplo, int n, size_t A, int lda) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_23spotrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("spotrf_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrf_bufferSize", 1, 5, 5, 1); __PYX_ERR(0, 1153, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrf_bufferSize", 1, 5, 5, 2); __PYX_ERR(0, 1153, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrf_bufferSize", 1, 5, 5, 3); __PYX_ERR(0, 1153, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrf_bufferSize", 1, 5, 5, 4); __PYX_ERR(0, 1153, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "spotrf_bufferSize") < 0)) __PYX_ERR(0, 1153, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1153, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1153, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1154, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1154, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1154, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("spotrf_bufferSize", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1153, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.spotrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_22spotrf_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_22spotrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("spotrf_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spotrf_bufferSize(__pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1153, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.spotrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1164
 *     return lwork
 * 
 * cpdef int dpotrf_bufferSize(intptr_t handle, int uplo,             # <<<<<<<<<<<<<<
 *                             int n, size_t A, int lda) except? -1:
 *     cdef int lwork
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_25dpotrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dpotrf_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dpotrf_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1167
 *                             int n, size_t A, int lda) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDpotrf_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1168
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDpotrf_bufferSize(
 *             <Handle>handle, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1169
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDpotrf_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <FillMode>uplo, n,
 *             <double*>A, <int>lda, &lwork)
 */
        __pyx_v_status = cusolverDnDpotrf_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((double *)__pyx_v_A), ((int)__pyx_v_lda), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1168
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDpotrf_bufferSize(
 *             <Handle>handle, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1172
 *             <Handle>handle, <FillMode>uplo, n,
 *             <double*>A, <int>lda, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1173
 *             <double*>A, <int>lda, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int cpotrf_bufferSize(intptr_t handle, int uplo,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1164
 *     return lwork
 * 
 * cpdef int dpotrf_bufferSize(intptr_t handle, int uplo,             # <<<<<<<<<<<<<<
 *                             int n, size_t A, int lda) except? -1:
 *     cdef int lwork
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dpotrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_25dpotrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_24dpotrf_bufferSize[] = "dpotrf_bufferSize(intptr_t handle, int uplo, int n, size_t A, int lda) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_25dpotrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dpotrf_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrf_bufferSize", 1, 5, 5, 1); __PYX_ERR(0, 1164, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrf_bufferSize", 1, 5, 5, 2); __PYX_ERR(0, 1164, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrf_bufferSize", 1, 5, 5, 3); __PYX_ERR(0, 1164, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrf_bufferSize", 1, 5, 5, 4); __PYX_ERR(0, 1164, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dpotrf_bufferSize") < 0)) __PYX_ERR(0, 1164, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1164, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1164, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1165, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1165, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1165, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dpotrf_bufferSize", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1164, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dpotrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_24dpotrf_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_24dpotrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dpotrf_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dpotrf_bufferSize(__pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1164, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dpotrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1175
 *     return lwork
 * 
 * cpdef int cpotrf_bufferSize(intptr_t handle, int uplo,             # <<<<<<<<<<<<<<
 *                             int n, size_t A, int lda) except? -1:
 *     cdef int lwork
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_27cpotrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cpotrf_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cpotrf_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1178
 *                             int n, size_t A, int lda) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCpotrf_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1179
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCpotrf_bufferSize(
 *             <Handle>handle, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1180
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCpotrf_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <FillMode>uplo, n,
 *             <cuComplex*>A, <int>lda, &lwork)
 */
        __pyx_v_status = cusolverDnCpotrf_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((cuComplex *)__pyx_v_A), ((int)__pyx_v_lda), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1179
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCpotrf_bufferSize(
 *             <Handle>handle, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1183
 *             <Handle>handle, <FillMode>uplo, n,
 *             <cuComplex*>A, <int>lda, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1184
 *             <cuComplex*>A, <int>lda, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int zpotrf_bufferSize(intptr_t handle, int uplo,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1175
 *     return lwork
 * 
 * cpdef int cpotrf_bufferSize(intptr_t handle, int uplo,             # <<<<<<<<<<<<<<
 *                             int n, size_t A, int lda) except? -1:
 *     cdef int lwork
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cpotrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_27cpotrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_26cpotrf_bufferSize[] = "cpotrf_bufferSize(intptr_t handle, int uplo, int n, size_t A, int lda) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_27cpotrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cpotrf_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrf_bufferSize", 1, 5, 5, 1); __PYX_ERR(0, 1175, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrf_bufferSize", 1, 5, 5, 2); __PYX_ERR(0, 1175, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrf_bufferSize", 1, 5, 5, 3); __PYX_ERR(0, 1175, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrf_bufferSize", 1, 5, 5, 4); __PYX_ERR(0, 1175, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cpotrf_bufferSize") < 0)) __PYX_ERR(0, 1175, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1175, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1175, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1176, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1176, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1176, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cpotrf_bufferSize", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1175, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cpotrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_26cpotrf_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_26cpotrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cpotrf_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cpotrf_bufferSize(__pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1175, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cpotrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1186
 *     return lwork
 * 
 * cpdef int zpotrf_bufferSize(intptr_t handle, int uplo,             # <<<<<<<<<<<<<<
 *                             int n, size_t A, int lda) except? -1:
 *     cdef int lwork
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_29zpotrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zpotrf_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zpotrf_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1189
 *                             int n, size_t A, int lda) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZpotrf_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1190
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZpotrf_bufferSize(
 *             <Handle>handle, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1191
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZpotrf_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <FillMode>uplo, n,
 *             <cuDoubleComplex*>A, <int>lda, &lwork)
 */
        __pyx_v_status = cusolverDnZpotrf_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((cuDoubleComplex *)__pyx_v_A), ((int)__pyx_v_lda), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1190
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZpotrf_bufferSize(
 *             <Handle>handle, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1194
 *             <Handle>handle, <FillMode>uplo, n,
 *             <cuDoubleComplex*>A, <int>lda, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1195
 *             <cuDoubleComplex*>A, <int>lda, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef spotrf(intptr_t handle, int uplo, int n, size_t A, int lda,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1186
 *     return lwork
 * 
 * cpdef int zpotrf_bufferSize(intptr_t handle, int uplo,             # <<<<<<<<<<<<<<
 *                             int n, size_t A, int lda) except? -1:
 *     cdef int lwork
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zpotrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_29zpotrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_28zpotrf_bufferSize[] = "zpotrf_bufferSize(intptr_t handle, int uplo, int n, size_t A, int lda) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_29zpotrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zpotrf_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrf_bufferSize", 1, 5, 5, 1); __PYX_ERR(0, 1186, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrf_bufferSize", 1, 5, 5, 2); __PYX_ERR(0, 1186, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrf_bufferSize", 1, 5, 5, 3); __PYX_ERR(0, 1186, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrf_bufferSize", 1, 5, 5, 4); __PYX_ERR(0, 1186, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zpotrf_bufferSize") < 0)) __PYX_ERR(0, 1186, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1186, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1186, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1187, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1187, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1187, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zpotrf_bufferSize", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1186, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zpotrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_28zpotrf_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_28zpotrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zpotrf_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zpotrf_bufferSize(__pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1186, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zpotrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1197
 *     return lwork
 * 
 * cpdef spotrf(intptr_t handle, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_31spotrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spotrf(intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("spotrf", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1199
 * cpdef spotrf(intptr_t handle, int uplo, int n, size_t A, int lda,
 *              size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSpotrf(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1200
 *              size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSpotrf(
 *             <Handle>handle, <FillMode>uplo, n, <float*>A,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1201
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSpotrf(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <FillMode>uplo, n, <float*>A,
 *             lda, <float*>work, lwork, <int*>devInfo)
 */
        __pyx_v_status = cusolverDnSpotrf(((cusolverDnHandle_t)__pyx_v_handle), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((float *)__pyx_v_A), __pyx_v_lda, ((float *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1200
 *              size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSpotrf(
 *             <Handle>handle, <FillMode>uplo, n, <float*>A,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1204
 *             <Handle>handle, <FillMode>uplo, n, <float*>A,
 *             lda, <float*>work, lwork, <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef dpotrf(intptr_t handle, int uplo, int n, size_t A, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1197
 *     return lwork
 * 
 * cpdef spotrf(intptr_t handle, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.spotrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_31spotrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_30spotrf[] = "spotrf(intptr_t handle, int uplo, int n, size_t A, int lda, size_t work, int lwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_31spotrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("spotrf (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_devInfo,0};
    PyObject* values[8] = {0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrf", 1, 8, 8, 1); __PYX_ERR(0, 1197, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrf", 1, 8, 8, 2); __PYX_ERR(0, 1197, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrf", 1, 8, 8, 3); __PYX_ERR(0, 1197, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrf", 1, 8, 8, 4); __PYX_ERR(0, 1197, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrf", 1, 8, 8, 5); __PYX_ERR(0, 1197, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrf", 1, 8, 8, 6); __PYX_ERR(0, 1197, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrf", 1, 8, 8, 7); __PYX_ERR(0, 1197, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "spotrf") < 0)) __PYX_ERR(0, 1197, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 8) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1197, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1197, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1197, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1197, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1197, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1198, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1198, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1198, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("spotrf", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1197, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.spotrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_30spotrf(__pyx_self, __pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_30spotrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("spotrf", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spotrf(__pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.spotrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1206
 *     check_status(status)
 * 
 * cpdef dpotrf(intptr_t handle, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_33dpotrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dpotrf(intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dpotrf", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1208
 * cpdef dpotrf(intptr_t handle, int uplo, int n, size_t A, int lda,
 *              size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDpotrf(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1209
 *              size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDpotrf(
 *             <Handle>handle, <FillMode>uplo, n, <double*>A,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1210
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDpotrf(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <FillMode>uplo, n, <double*>A,
 *             lda, <double*>work, lwork, <int*>devInfo)
 */
        __pyx_v_status = cusolverDnDpotrf(((cusolverDnHandle_t)__pyx_v_handle), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((double *)__pyx_v_A), __pyx_v_lda, ((double *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1209
 *              size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDpotrf(
 *             <Handle>handle, <FillMode>uplo, n, <double*>A,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1213
 *             <Handle>handle, <FillMode>uplo, n, <double*>A,
 *             lda, <double*>work, lwork, <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef cpotrf(intptr_t handle, int uplo, int n, size_t A, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1206
 *     check_status(status)
 * 
 * cpdef dpotrf(intptr_t handle, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dpotrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_33dpotrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_32dpotrf[] = "dpotrf(intptr_t handle, int uplo, int n, size_t A, int lda, size_t work, int lwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_33dpotrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dpotrf (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_devInfo,0};
    PyObject* values[8] = {0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrf", 1, 8, 8, 1); __PYX_ERR(0, 1206, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrf", 1, 8, 8, 2); __PYX_ERR(0, 1206, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrf", 1, 8, 8, 3); __PYX_ERR(0, 1206, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrf", 1, 8, 8, 4); __PYX_ERR(0, 1206, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrf", 1, 8, 8, 5); __PYX_ERR(0, 1206, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrf", 1, 8, 8, 6); __PYX_ERR(0, 1206, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrf", 1, 8, 8, 7); __PYX_ERR(0, 1206, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dpotrf") < 0)) __PYX_ERR(0, 1206, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 8) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1206, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1206, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1206, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1206, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1206, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1207, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1207, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1207, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dpotrf", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1206, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dpotrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_32dpotrf(__pyx_self, __pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_32dpotrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dpotrf", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dpotrf(__pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dpotrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1215
 *     check_status(status)
 * 
 * cpdef cpotrf(intptr_t handle, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_35cpotrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cpotrf(intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cpotrf", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1217
 * cpdef cpotrf(intptr_t handle, int uplo, int n, size_t A, int lda,
 *              size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCpotrf(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1218
 *              size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCpotrf(
 *             <Handle>handle, <FillMode>uplo, n, <cuComplex*>A,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1219
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCpotrf(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <FillMode>uplo, n, <cuComplex*>A,
 *             lda, <cuComplex*>work, lwork, <int*>devInfo)
 */
        __pyx_v_status = cusolverDnCpotrf(((cusolverDnHandle_t)__pyx_v_handle), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((cuComplex *)__pyx_v_A), __pyx_v_lda, ((cuComplex *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1218
 *              size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCpotrf(
 *             <Handle>handle, <FillMode>uplo, n, <cuComplex*>A,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1222
 *             <Handle>handle, <FillMode>uplo, n, <cuComplex*>A,
 *             lda, <cuComplex*>work, lwork, <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef zpotrf(intptr_t handle, int uplo, int n, size_t A, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1215
 *     check_status(status)
 * 
 * cpdef cpotrf(intptr_t handle, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cpotrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_35cpotrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_34cpotrf[] = "cpotrf(intptr_t handle, int uplo, int n, size_t A, int lda, size_t work, int lwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_35cpotrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cpotrf (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_devInfo,0};
    PyObject* values[8] = {0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrf", 1, 8, 8, 1); __PYX_ERR(0, 1215, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrf", 1, 8, 8, 2); __PYX_ERR(0, 1215, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrf", 1, 8, 8, 3); __PYX_ERR(0, 1215, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrf", 1, 8, 8, 4); __PYX_ERR(0, 1215, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrf", 1, 8, 8, 5); __PYX_ERR(0, 1215, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrf", 1, 8, 8, 6); __PYX_ERR(0, 1215, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrf", 1, 8, 8, 7); __PYX_ERR(0, 1215, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cpotrf") < 0)) __PYX_ERR(0, 1215, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 8) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1215, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1215, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1215, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1215, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1215, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1216, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1216, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1216, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cpotrf", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1215, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cpotrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_34cpotrf(__pyx_self, __pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_34cpotrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cpotrf", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cpotrf(__pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cpotrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1224
 *     check_status(status)
 * 
 * cpdef zpotrf(intptr_t handle, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_37zpotrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zpotrf(intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zpotrf", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1226
 * cpdef zpotrf(intptr_t handle, int uplo, int n, size_t A, int lda,
 *              size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZpotrf(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1227
 *              size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZpotrf(
 *             <Handle>handle, <FillMode>uplo, n, <cuDoubleComplex*>A,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1228
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZpotrf(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <FillMode>uplo, n, <cuDoubleComplex*>A,
 *             lda, <cuDoubleComplex*>work, lwork, <int*>devInfo)
 */
        __pyx_v_status = cusolverDnZpotrf(((cusolverDnHandle_t)__pyx_v_handle), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((cuDoubleComplex *)__pyx_v_A), __pyx_v_lda, ((cuDoubleComplex *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1227
 *              size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZpotrf(
 *             <Handle>handle, <FillMode>uplo, n, <cuDoubleComplex*>A,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1231
 *             <Handle>handle, <FillMode>uplo, n, <cuDoubleComplex*>A,
 *             lda, <cuDoubleComplex*>work, lwork, <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef spotrs(intptr_t handle, int uplo, int n, int nrhs,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1224
 *     check_status(status)
 * 
 * cpdef zpotrf(intptr_t handle, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zpotrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_37zpotrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_36zpotrf[] = "zpotrf(intptr_t handle, int uplo, int n, size_t A, int lda, size_t work, int lwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_37zpotrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zpotrf (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_devInfo,0};
    PyObject* values[8] = {0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrf", 1, 8, 8, 1); __PYX_ERR(0, 1224, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrf", 1, 8, 8, 2); __PYX_ERR(0, 1224, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrf", 1, 8, 8, 3); __PYX_ERR(0, 1224, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrf", 1, 8, 8, 4); __PYX_ERR(0, 1224, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrf", 1, 8, 8, 5); __PYX_ERR(0, 1224, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrf", 1, 8, 8, 6); __PYX_ERR(0, 1224, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrf", 1, 8, 8, 7); __PYX_ERR(0, 1224, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zpotrf") < 0)) __PYX_ERR(0, 1224, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 8) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1224, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1224, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1224, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1224, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1224, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1225, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1225, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1225, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zpotrf", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1224, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zpotrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_36zpotrf(__pyx_self, __pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_36zpotrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zpotrf", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zpotrf(__pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zpotrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1233
 *     check_status(status)
 * 
 * cpdef spotrs(intptr_t handle, int uplo, int n, int nrhs,             # <<<<<<<<<<<<<<
 *              size_t A, int lda, size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_39spotrs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spotrs(intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_B, int __pyx_v_ldb, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("spotrs", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1235
 * cpdef spotrs(intptr_t handle, int uplo, int n, int nrhs,
 *              size_t A, int lda, size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSpotrs(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1236
 *              size_t A, int lda, size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSpotrs(
 *             <Handle>handle, <FillMode>uplo, n, nrhs,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1237
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSpotrs(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <FillMode>uplo, n, nrhs,
 *             <const float*>A, lda, <float*>B, ldb,
 */
        __pyx_v_status = cusolverDnSpotrs(((cusolverDnHandle_t)__pyx_v_handle), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, __pyx_v_nrhs, ((float const *)__pyx_v_A), __pyx_v_lda, ((float *)__pyx_v_B), __pyx_v_ldb, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1236
 *              size_t A, int lda, size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSpotrs(
 *             <Handle>handle, <FillMode>uplo, n, nrhs,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1241
 *             <const float*>A, lda, <float*>B, ldb,
 *             <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef dpotrs(intptr_t handle, int uplo, int n, int nrhs,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1233
 *     check_status(status)
 * 
 * cpdef spotrs(intptr_t handle, int uplo, int n, int nrhs,             # <<<<<<<<<<<<<<
 *              size_t A, int lda, size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.spotrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_39spotrs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_38spotrs[] = "spotrs(intptr_t handle, int uplo, int n, int nrhs, size_t A, int lda, size_t B, int ldb, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_39spotrs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_uplo;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_B;
  int __pyx_v_ldb;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("spotrs (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_B,&__pyx_n_s_ldb,&__pyx_n_s_devInfo,0};
    PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrs", 1, 9, 9, 1); __PYX_ERR(0, 1233, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrs", 1, 9, 9, 2); __PYX_ERR(0, 1233, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrs", 1, 9, 9, 3); __PYX_ERR(0, 1233, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrs", 1, 9, 9, 4); __PYX_ERR(0, 1233, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrs", 1, 9, 9, 5); __PYX_ERR(0, 1233, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_B)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrs", 1, 9, 9, 6); __PYX_ERR(0, 1233, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrs", 1, 9, 9, 7); __PYX_ERR(0, 1233, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrs", 1, 9, 9, 8); __PYX_ERR(0, 1233, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "spotrs") < 0)) __PYX_ERR(0, 1233, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1233, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1233, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1233, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1233, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1234, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1234, __pyx_L3_error)
    __pyx_v_B = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_B == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1234, __pyx_L3_error)
    __pyx_v_ldb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_ldb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1234, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1234, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("spotrs", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1233, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.spotrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_38spotrs(__pyx_self, __pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_nrhs, __pyx_v_A, __pyx_v_lda, __pyx_v_B, __pyx_v_ldb, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_38spotrs(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_B, int __pyx_v_ldb, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("spotrs", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spotrs(__pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_nrhs, __pyx_v_A, __pyx_v_lda, __pyx_v_B, __pyx_v_ldb, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.spotrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1243
 *     check_status(status)
 * 
 * cpdef dpotrs(intptr_t handle, int uplo, int n, int nrhs,             # <<<<<<<<<<<<<<
 *              size_t A, int lda, size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_41dpotrs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dpotrs(intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_B, int __pyx_v_ldb, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dpotrs", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1245
 * cpdef dpotrs(intptr_t handle, int uplo, int n, int nrhs,
 *              size_t A, int lda, size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDpotrs(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1246
 *              size_t A, int lda, size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDpotrs(
 *             <Handle>handle, <FillMode>uplo, n, nrhs,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1247
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDpotrs(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <FillMode>uplo, n, nrhs,
 *             <const double*>A, lda, <double*>B, ldb,
 */
        __pyx_v_status = cusolverDnDpotrs(((cusolverDnHandle_t)__pyx_v_handle), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, __pyx_v_nrhs, ((double const *)__pyx_v_A), __pyx_v_lda, ((double *)__pyx_v_B), __pyx_v_ldb, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1246
 *              size_t A, int lda, size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDpotrs(
 *             <Handle>handle, <FillMode>uplo, n, nrhs,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1251
 *             <const double*>A, lda, <double*>B, ldb,
 *             <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef cpotrs(intptr_t handle, int uplo, int n, int nrhs,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1243
 *     check_status(status)
 * 
 * cpdef dpotrs(intptr_t handle, int uplo, int n, int nrhs,             # <<<<<<<<<<<<<<
 *              size_t A, int lda, size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dpotrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_41dpotrs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_40dpotrs[] = "dpotrs(intptr_t handle, int uplo, int n, int nrhs, size_t A, int lda, size_t B, int ldb, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_41dpotrs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_uplo;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_B;
  int __pyx_v_ldb;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dpotrs (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_B,&__pyx_n_s_ldb,&__pyx_n_s_devInfo,0};
    PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrs", 1, 9, 9, 1); __PYX_ERR(0, 1243, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrs", 1, 9, 9, 2); __PYX_ERR(0, 1243, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrs", 1, 9, 9, 3); __PYX_ERR(0, 1243, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrs", 1, 9, 9, 4); __PYX_ERR(0, 1243, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrs", 1, 9, 9, 5); __PYX_ERR(0, 1243, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_B)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrs", 1, 9, 9, 6); __PYX_ERR(0, 1243, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrs", 1, 9, 9, 7); __PYX_ERR(0, 1243, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrs", 1, 9, 9, 8); __PYX_ERR(0, 1243, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dpotrs") < 0)) __PYX_ERR(0, 1243, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1243, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1243, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1243, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1243, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1244, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1244, __pyx_L3_error)
    __pyx_v_B = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_B == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1244, __pyx_L3_error)
    __pyx_v_ldb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_ldb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1244, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1244, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dpotrs", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1243, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dpotrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_40dpotrs(__pyx_self, __pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_nrhs, __pyx_v_A, __pyx_v_lda, __pyx_v_B, __pyx_v_ldb, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_40dpotrs(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_B, int __pyx_v_ldb, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dpotrs", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dpotrs(__pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_nrhs, __pyx_v_A, __pyx_v_lda, __pyx_v_B, __pyx_v_ldb, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dpotrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1253
 *     check_status(status)
 * 
 * cpdef cpotrs(intptr_t handle, int uplo, int n, int nrhs,             # <<<<<<<<<<<<<<
 *              size_t A, int lda, size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_43cpotrs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cpotrs(intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_B, int __pyx_v_ldb, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cpotrs", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1255
 * cpdef cpotrs(intptr_t handle, int uplo, int n, int nrhs,
 *              size_t A, int lda, size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCpotrs(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1256
 *              size_t A, int lda, size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCpotrs(
 *             <Handle>handle, <FillMode>uplo, n, nrhs,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1257
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCpotrs(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <FillMode>uplo, n, nrhs,
 *             <const cuComplex*>A, lda, <cuComplex*>B, ldb,
 */
        __pyx_v_status = cusolverDnCpotrs(((cusolverDnHandle_t)__pyx_v_handle), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, __pyx_v_nrhs, ((cuComplex const *)__pyx_v_A), __pyx_v_lda, ((cuComplex *)__pyx_v_B), __pyx_v_ldb, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1256
 *              size_t A, int lda, size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCpotrs(
 *             <Handle>handle, <FillMode>uplo, n, nrhs,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1261
 *             <const cuComplex*>A, lda, <cuComplex*>B, ldb,
 *             <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef zpotrs(intptr_t handle, int uplo, int n, int nrhs,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1253
 *     check_status(status)
 * 
 * cpdef cpotrs(intptr_t handle, int uplo, int n, int nrhs,             # <<<<<<<<<<<<<<
 *              size_t A, int lda, size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cpotrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_43cpotrs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_42cpotrs[] = "cpotrs(intptr_t handle, int uplo, int n, int nrhs, size_t A, int lda, size_t B, int ldb, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_43cpotrs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_uplo;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_B;
  int __pyx_v_ldb;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cpotrs (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_B,&__pyx_n_s_ldb,&__pyx_n_s_devInfo,0};
    PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrs", 1, 9, 9, 1); __PYX_ERR(0, 1253, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrs", 1, 9, 9, 2); __PYX_ERR(0, 1253, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrs", 1, 9, 9, 3); __PYX_ERR(0, 1253, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrs", 1, 9, 9, 4); __PYX_ERR(0, 1253, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrs", 1, 9, 9, 5); __PYX_ERR(0, 1253, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_B)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrs", 1, 9, 9, 6); __PYX_ERR(0, 1253, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrs", 1, 9, 9, 7); __PYX_ERR(0, 1253, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrs", 1, 9, 9, 8); __PYX_ERR(0, 1253, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cpotrs") < 0)) __PYX_ERR(0, 1253, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1253, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1253, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1253, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1253, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1254, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1254, __pyx_L3_error)
    __pyx_v_B = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_B == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1254, __pyx_L3_error)
    __pyx_v_ldb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_ldb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1254, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1254, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cpotrs", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1253, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cpotrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_42cpotrs(__pyx_self, __pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_nrhs, __pyx_v_A, __pyx_v_lda, __pyx_v_B, __pyx_v_ldb, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_42cpotrs(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_B, int __pyx_v_ldb, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cpotrs", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cpotrs(__pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_nrhs, __pyx_v_A, __pyx_v_lda, __pyx_v_B, __pyx_v_ldb, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cpotrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1263
 *     check_status(status)
 * 
 * cpdef zpotrs(intptr_t handle, int uplo, int n, int nrhs,             # <<<<<<<<<<<<<<
 *              size_t A, int lda, size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_45zpotrs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zpotrs(intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_B, int __pyx_v_ldb, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zpotrs", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1265
 * cpdef zpotrs(intptr_t handle, int uplo, int n, int nrhs,
 *              size_t A, int lda, size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZpotrs(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1266
 *              size_t A, int lda, size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZpotrs(
 *             <Handle>handle, <FillMode>uplo, n, nrhs,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1267
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZpotrs(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <FillMode>uplo, n, nrhs,
 *             <const cuDoubleComplex*>A, lda, <cuDoubleComplex*>B, ldb,
 */
        __pyx_v_status = cusolverDnZpotrs(((cusolverDnHandle_t)__pyx_v_handle), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, __pyx_v_nrhs, ((cuDoubleComplex const *)__pyx_v_A), __pyx_v_lda, ((cuDoubleComplex *)__pyx_v_B), __pyx_v_ldb, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1266
 *              size_t A, int lda, size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZpotrs(
 *             <Handle>handle, <FillMode>uplo, n, nrhs,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1271
 *             <const cuDoubleComplex*>A, lda, <cuDoubleComplex*>B, ldb,
 *             <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef spotrfBatched(intptr_t handle, int uplo, int n, size_t Aarray, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1263
 *     check_status(status)
 * 
 * cpdef zpotrs(intptr_t handle, int uplo, int n, int nrhs,             # <<<<<<<<<<<<<<
 *              size_t A, int lda, size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zpotrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_45zpotrs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_44zpotrs[] = "zpotrs(intptr_t handle, int uplo, int n, int nrhs, size_t A, int lda, size_t B, int ldb, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_45zpotrs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_uplo;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_B;
  int __pyx_v_ldb;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zpotrs (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_B,&__pyx_n_s_ldb,&__pyx_n_s_devInfo,0};
    PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrs", 1, 9, 9, 1); __PYX_ERR(0, 1263, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrs", 1, 9, 9, 2); __PYX_ERR(0, 1263, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrs", 1, 9, 9, 3); __PYX_ERR(0, 1263, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrs", 1, 9, 9, 4); __PYX_ERR(0, 1263, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrs", 1, 9, 9, 5); __PYX_ERR(0, 1263, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_B)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrs", 1, 9, 9, 6); __PYX_ERR(0, 1263, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrs", 1, 9, 9, 7); __PYX_ERR(0, 1263, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrs", 1, 9, 9, 8); __PYX_ERR(0, 1263, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zpotrs") < 0)) __PYX_ERR(0, 1263, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1263, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1263, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1263, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1263, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1264, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1264, __pyx_L3_error)
    __pyx_v_B = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_B == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1264, __pyx_L3_error)
    __pyx_v_ldb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_ldb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1264, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1264, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zpotrs", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1263, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zpotrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_44zpotrs(__pyx_self, __pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_nrhs, __pyx_v_A, __pyx_v_lda, __pyx_v_B, __pyx_v_ldb, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_44zpotrs(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_B, int __pyx_v_ldb, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zpotrs", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zpotrs(__pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_nrhs, __pyx_v_A, __pyx_v_lda, __pyx_v_B, __pyx_v_ldb, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zpotrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1273
 *     check_status(status)
 * 
 * cpdef spotrfBatched(intptr_t handle, int uplo, int n, size_t Aarray, int lda,             # <<<<<<<<<<<<<<
 *                     size_t infoArray, int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_47spotrfBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spotrfBatched(intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_Aarray, int __pyx_v_lda, size_t __pyx_v_infoArray, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("spotrfBatched", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1275
 * cpdef spotrfBatched(intptr_t handle, int uplo, int n, size_t Aarray, int lda,
 *                     size_t infoArray, int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSpotrfBatched(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(__pyx_v_handle, __pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr(), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1276
 *                     size_t infoArray, int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSpotrfBatched(
 *             <Handle>handle, <FillMode>uplo, n, <float**>Aarray,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1277
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:
 *         status = cusolverDnSpotrfBatched(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <FillMode>uplo, n, <float**>Aarray,
 *             lda, <int*>infoArray, batchSize)
 */
        __pyx_v_status = cusolverDnSpotrfBatched(((cusolverDnHandle_t)__pyx_v_handle), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((float **)__pyx_v_Aarray), __pyx_v_lda, ((int *)__pyx_v_infoArray), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1276
 *                     size_t infoArray, int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSpotrfBatched(
 *             <Handle>handle, <FillMode>uplo, n, <float**>Aarray,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1280
 *             <Handle>handle, <FillMode>uplo, n, <float**>Aarray,
 *             lda, <int*>infoArray, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef dpotrfBatched(intptr_t handle, int uplo, int n, size_t Aarray, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1273
 *     check_status(status)
 * 
 * cpdef spotrfBatched(intptr_t handle, int uplo, int n, size_t Aarray, int lda,             # <<<<<<<<<<<<<<
 *                     size_t infoArray, int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.spotrfBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_47spotrfBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_46spotrfBatched[] = "spotrfBatched(intptr_t handle, int uplo, int n, size_t Aarray, int lda, size_t infoArray, int batchSize)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_47spotrfBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_Aarray;
  int __pyx_v_lda;
  size_t __pyx_v_infoArray;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("spotrfBatched (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_Aarray,&__pyx_n_s_lda,&__pyx_n_s_infoArray,&__pyx_n_s_batchSize,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrfBatched", 1, 7, 7, 1); __PYX_ERR(0, 1273, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrfBatched", 1, 7, 7, 2); __PYX_ERR(0, 1273, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Aarray)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrfBatched", 1, 7, 7, 3); __PYX_ERR(0, 1273, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrfBatched", 1, 7, 7, 4); __PYX_ERR(0, 1273, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infoArray)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrfBatched", 1, 7, 7, 5); __PYX_ERR(0, 1273, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrfBatched", 1, 7, 7, 6); __PYX_ERR(0, 1273, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "spotrfBatched") < 0)) __PYX_ERR(0, 1273, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1273, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1273, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1273, __pyx_L3_error)
    __pyx_v_Aarray = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_Aarray == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1273, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1273, __pyx_L3_error)
    __pyx_v_infoArray = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_infoArray == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1274, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1274, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("spotrfBatched", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1273, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.spotrfBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_46spotrfBatched(__pyx_self, __pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_Aarray, __pyx_v_lda, __pyx_v_infoArray, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_46spotrfBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_Aarray, int __pyx_v_lda, size_t __pyx_v_infoArray, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("spotrfBatched", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spotrfBatched(__pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_Aarray, __pyx_v_lda, __pyx_v_infoArray, __pyx_v_batchSize, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.spotrfBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1282
 *     check_status(status)
 * 
 * cpdef dpotrfBatched(intptr_t handle, int uplo, int n, size_t Aarray, int lda,             # <<<<<<<<<<<<<<
 *                     size_t infoArray, int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_49dpotrfBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dpotrfBatched(intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_Aarray, int __pyx_v_lda, size_t __pyx_v_infoArray, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dpotrfBatched", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1284
 * cpdef dpotrfBatched(intptr_t handle, int uplo, int n, size_t Aarray, int lda,
 *                     size_t infoArray, int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDpotrfBatched(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(__pyx_v_handle, __pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr(), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1285
 *                     size_t infoArray, int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDpotrfBatched(
 *             <Handle>handle, <FillMode>uplo, n, <double**>Aarray,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1286
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:
 *         status = cusolverDnDpotrfBatched(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <FillMode>uplo, n, <double**>Aarray,
 *             lda, <int*>infoArray, batchSize)
 */
        __pyx_v_status = cusolverDnDpotrfBatched(((cusolverDnHandle_t)__pyx_v_handle), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((double **)__pyx_v_Aarray), __pyx_v_lda, ((int *)__pyx_v_infoArray), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1285
 *                     size_t infoArray, int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDpotrfBatched(
 *             <Handle>handle, <FillMode>uplo, n, <double**>Aarray,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1289
 *             <Handle>handle, <FillMode>uplo, n, <double**>Aarray,
 *             lda, <int*>infoArray, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef cpotrfBatched(intptr_t handle, int uplo, int n, size_t Aarray, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1282
 *     check_status(status)
 * 
 * cpdef dpotrfBatched(intptr_t handle, int uplo, int n, size_t Aarray, int lda,             # <<<<<<<<<<<<<<
 *                     size_t infoArray, int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dpotrfBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_49dpotrfBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_48dpotrfBatched[] = "dpotrfBatched(intptr_t handle, int uplo, int n, size_t Aarray, int lda, size_t infoArray, int batchSize)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_49dpotrfBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_Aarray;
  int __pyx_v_lda;
  size_t __pyx_v_infoArray;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dpotrfBatched (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_Aarray,&__pyx_n_s_lda,&__pyx_n_s_infoArray,&__pyx_n_s_batchSize,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrfBatched", 1, 7, 7, 1); __PYX_ERR(0, 1282, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrfBatched", 1, 7, 7, 2); __PYX_ERR(0, 1282, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Aarray)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrfBatched", 1, 7, 7, 3); __PYX_ERR(0, 1282, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrfBatched", 1, 7, 7, 4); __PYX_ERR(0, 1282, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infoArray)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrfBatched", 1, 7, 7, 5); __PYX_ERR(0, 1282, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrfBatched", 1, 7, 7, 6); __PYX_ERR(0, 1282, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dpotrfBatched") < 0)) __PYX_ERR(0, 1282, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1282, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1282, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1282, __pyx_L3_error)
    __pyx_v_Aarray = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_Aarray == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1282, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1282, __pyx_L3_error)
    __pyx_v_infoArray = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_infoArray == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1283, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1283, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dpotrfBatched", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1282, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dpotrfBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_48dpotrfBatched(__pyx_self, __pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_Aarray, __pyx_v_lda, __pyx_v_infoArray, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_48dpotrfBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_Aarray, int __pyx_v_lda, size_t __pyx_v_infoArray, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dpotrfBatched", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dpotrfBatched(__pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_Aarray, __pyx_v_lda, __pyx_v_infoArray, __pyx_v_batchSize, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dpotrfBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1291
 *     check_status(status)
 * 
 * cpdef cpotrfBatched(intptr_t handle, int uplo, int n, size_t Aarray, int lda,             # <<<<<<<<<<<<<<
 *                     size_t infoArray, int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_51cpotrfBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cpotrfBatched(intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_Aarray, int __pyx_v_lda, size_t __pyx_v_infoArray, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cpotrfBatched", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1293
 * cpdef cpotrfBatched(intptr_t handle, int uplo, int n, size_t Aarray, int lda,
 *                     size_t infoArray, int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCpotrfBatched(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(__pyx_v_handle, __pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr(), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1294
 *                     size_t infoArray, int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCpotrfBatched(
 *             <Handle>handle, <FillMode>uplo, n, <cuComplex**>Aarray,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1295
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:
 *         status = cusolverDnCpotrfBatched(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <FillMode>uplo, n, <cuComplex**>Aarray,
 *             lda, <int*>infoArray, batchSize)
 */
        __pyx_v_status = cusolverDnCpotrfBatched(((cusolverDnHandle_t)__pyx_v_handle), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((cuComplex **)__pyx_v_Aarray), __pyx_v_lda, ((int *)__pyx_v_infoArray), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1294
 *                     size_t infoArray, int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCpotrfBatched(
 *             <Handle>handle, <FillMode>uplo, n, <cuComplex**>Aarray,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1298
 *             <Handle>handle, <FillMode>uplo, n, <cuComplex**>Aarray,
 *             lda, <int*>infoArray, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef zpotrfBatched(intptr_t handle, int uplo, int n, size_t Aarray, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1291
 *     check_status(status)
 * 
 * cpdef cpotrfBatched(intptr_t handle, int uplo, int n, size_t Aarray, int lda,             # <<<<<<<<<<<<<<
 *                     size_t infoArray, int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cpotrfBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_51cpotrfBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_50cpotrfBatched[] = "cpotrfBatched(intptr_t handle, int uplo, int n, size_t Aarray, int lda, size_t infoArray, int batchSize)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_51cpotrfBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_Aarray;
  int __pyx_v_lda;
  size_t __pyx_v_infoArray;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cpotrfBatched (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_Aarray,&__pyx_n_s_lda,&__pyx_n_s_infoArray,&__pyx_n_s_batchSize,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrfBatched", 1, 7, 7, 1); __PYX_ERR(0, 1291, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrfBatched", 1, 7, 7, 2); __PYX_ERR(0, 1291, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Aarray)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrfBatched", 1, 7, 7, 3); __PYX_ERR(0, 1291, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrfBatched", 1, 7, 7, 4); __PYX_ERR(0, 1291, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infoArray)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrfBatched", 1, 7, 7, 5); __PYX_ERR(0, 1291, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrfBatched", 1, 7, 7, 6); __PYX_ERR(0, 1291, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cpotrfBatched") < 0)) __PYX_ERR(0, 1291, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1291, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1291, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1291, __pyx_L3_error)
    __pyx_v_Aarray = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_Aarray == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1291, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1291, __pyx_L3_error)
    __pyx_v_infoArray = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_infoArray == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1292, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1292, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cpotrfBatched", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1291, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cpotrfBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_50cpotrfBatched(__pyx_self, __pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_Aarray, __pyx_v_lda, __pyx_v_infoArray, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_50cpotrfBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_Aarray, int __pyx_v_lda, size_t __pyx_v_infoArray, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cpotrfBatched", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cpotrfBatched(__pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_Aarray, __pyx_v_lda, __pyx_v_infoArray, __pyx_v_batchSize, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cpotrfBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1300
 *     check_status(status)
 * 
 * cpdef zpotrfBatched(intptr_t handle, int uplo, int n, size_t Aarray, int lda,             # <<<<<<<<<<<<<<
 *                     size_t infoArray, int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_53zpotrfBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zpotrfBatched(intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_Aarray, int __pyx_v_lda, size_t __pyx_v_infoArray, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zpotrfBatched", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1302
 * cpdef zpotrfBatched(intptr_t handle, int uplo, int n, size_t Aarray, int lda,
 *                     size_t infoArray, int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZpotrfBatched(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(__pyx_v_handle, __pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr(), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1302, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1303
 *                     size_t infoArray, int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZpotrfBatched(
 *             <Handle>handle, <FillMode>uplo, n, <cuDoubleComplex**>Aarray,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1304
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:
 *         status = cusolverDnZpotrfBatched(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <FillMode>uplo, n, <cuDoubleComplex**>Aarray,
 *             lda, <int*>infoArray, batchSize)
 */
        __pyx_v_status = cusolverDnZpotrfBatched(((cusolverDnHandle_t)__pyx_v_handle), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((cuDoubleComplex **)__pyx_v_Aarray), __pyx_v_lda, ((int *)__pyx_v_infoArray), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1303
 *                     size_t infoArray, int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZpotrfBatched(
 *             <Handle>handle, <FillMode>uplo, n, <cuDoubleComplex**>Aarray,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1307
 *             <Handle>handle, <FillMode>uplo, n, <cuDoubleComplex**>Aarray,
 *             lda, <int*>infoArray, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef spotrsBatched(intptr_t handle, int uplo, int n, int nrhs, size_t Aarray,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1307, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1300
 *     check_status(status)
 * 
 * cpdef zpotrfBatched(intptr_t handle, int uplo, int n, size_t Aarray, int lda,             # <<<<<<<<<<<<<<
 *                     size_t infoArray, int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zpotrfBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_53zpotrfBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_52zpotrfBatched[] = "zpotrfBatched(intptr_t handle, int uplo, int n, size_t Aarray, int lda, size_t infoArray, int batchSize)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_53zpotrfBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_Aarray;
  int __pyx_v_lda;
  size_t __pyx_v_infoArray;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zpotrfBatched (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_Aarray,&__pyx_n_s_lda,&__pyx_n_s_infoArray,&__pyx_n_s_batchSize,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrfBatched", 1, 7, 7, 1); __PYX_ERR(0, 1300, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrfBatched", 1, 7, 7, 2); __PYX_ERR(0, 1300, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Aarray)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrfBatched", 1, 7, 7, 3); __PYX_ERR(0, 1300, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrfBatched", 1, 7, 7, 4); __PYX_ERR(0, 1300, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infoArray)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrfBatched", 1, 7, 7, 5); __PYX_ERR(0, 1300, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrfBatched", 1, 7, 7, 6); __PYX_ERR(0, 1300, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zpotrfBatched") < 0)) __PYX_ERR(0, 1300, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1300, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1300, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1300, __pyx_L3_error)
    __pyx_v_Aarray = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_Aarray == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1300, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1300, __pyx_L3_error)
    __pyx_v_infoArray = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_infoArray == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1301, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1301, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zpotrfBatched", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1300, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zpotrfBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_52zpotrfBatched(__pyx_self, __pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_Aarray, __pyx_v_lda, __pyx_v_infoArray, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_52zpotrfBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_Aarray, int __pyx_v_lda, size_t __pyx_v_infoArray, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zpotrfBatched", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zpotrfBatched(__pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_Aarray, __pyx_v_lda, __pyx_v_infoArray, __pyx_v_batchSize, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zpotrfBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1309
 *     check_status(status)
 * 
 * cpdef spotrsBatched(intptr_t handle, int uplo, int n, int nrhs, size_t Aarray,             # <<<<<<<<<<<<<<
 *                     int lda, size_t Barray, int ldb, size_t devInfo,
 *                     int batchSize):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_55spotrsBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spotrsBatched(intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_Aarray, int __pyx_v_lda, size_t __pyx_v_Barray, int __pyx_v_ldb, size_t __pyx_v_devInfo, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("spotrsBatched", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1312
 *                     int lda, size_t Barray, int ldb, size_t devInfo,
 *                     int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSpotrsBatched(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(__pyx_v_handle, __pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr(), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1313
 *                     int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSpotrsBatched(
 *             <Handle>handle, <FillMode>uplo, n, nrhs,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1314
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:
 *         status = cusolverDnSpotrsBatched(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <FillMode>uplo, n, nrhs,
 *             <float**>Aarray, lda, <float**>Barray, ldb,
 */
        __pyx_v_status = cusolverDnSpotrsBatched(((cusolverDnHandle_t)__pyx_v_handle), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, __pyx_v_nrhs, ((float **)__pyx_v_Aarray), __pyx_v_lda, ((float **)__pyx_v_Barray), __pyx_v_ldb, ((int *)__pyx_v_devInfo), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1313
 *                     int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSpotrsBatched(
 *             <Handle>handle, <FillMode>uplo, n, nrhs,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1318
 *             <float**>Aarray, lda, <float**>Barray, ldb,
 *             <int*>devInfo, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef dpotrsBatched(intptr_t handle, int uplo, int n, int nrhs, size_t Aarray,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1309
 *     check_status(status)
 * 
 * cpdef spotrsBatched(intptr_t handle, int uplo, int n, int nrhs, size_t Aarray,             # <<<<<<<<<<<<<<
 *                     int lda, size_t Barray, int ldb, size_t devInfo,
 *                     int batchSize):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.spotrsBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_55spotrsBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_54spotrsBatched[] = "spotrsBatched(intptr_t handle, int uplo, int n, int nrhs, size_t Aarray, int lda, size_t Barray, int ldb, size_t devInfo, int batchSize)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_55spotrsBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_uplo;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_Aarray;
  int __pyx_v_lda;
  size_t __pyx_v_Barray;
  int __pyx_v_ldb;
  size_t __pyx_v_devInfo;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("spotrsBatched (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_Aarray,&__pyx_n_s_lda,&__pyx_n_s_Barray,&__pyx_n_s_ldb,&__pyx_n_s_devInfo,&__pyx_n_s_batchSize,0};
    PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrsBatched", 1, 10, 10, 1); __PYX_ERR(0, 1309, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrsBatched", 1, 10, 10, 2); __PYX_ERR(0, 1309, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrsBatched", 1, 10, 10, 3); __PYX_ERR(0, 1309, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Aarray)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrsBatched", 1, 10, 10, 4); __PYX_ERR(0, 1309, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrsBatched", 1, 10, 10, 5); __PYX_ERR(0, 1309, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Barray)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrsBatched", 1, 10, 10, 6); __PYX_ERR(0, 1309, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrsBatched", 1, 10, 10, 7); __PYX_ERR(0, 1309, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrsBatched", 1, 10, 10, 8); __PYX_ERR(0, 1309, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("spotrsBatched", 1, 10, 10, 9); __PYX_ERR(0, 1309, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "spotrsBatched") < 0)) __PYX_ERR(0, 1309, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 10) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1309, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1309, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1309, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1309, __pyx_L3_error)
    __pyx_v_Aarray = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_Aarray == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1309, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1310, __pyx_L3_error)
    __pyx_v_Barray = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_Barray == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1310, __pyx_L3_error)
    __pyx_v_ldb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_ldb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1310, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1310, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1311, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("spotrsBatched", 1, 10, 10, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1309, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.spotrsBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_54spotrsBatched(__pyx_self, __pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_nrhs, __pyx_v_Aarray, __pyx_v_lda, __pyx_v_Barray, __pyx_v_ldb, __pyx_v_devInfo, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_54spotrsBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_Aarray, int __pyx_v_lda, size_t __pyx_v_Barray, int __pyx_v_ldb, size_t __pyx_v_devInfo, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("spotrsBatched", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spotrsBatched(__pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_nrhs, __pyx_v_Aarray, __pyx_v_lda, __pyx_v_Barray, __pyx_v_ldb, __pyx_v_devInfo, __pyx_v_batchSize, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.spotrsBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1320
 *     check_status(status)
 * 
 * cpdef dpotrsBatched(intptr_t handle, int uplo, int n, int nrhs, size_t Aarray,             # <<<<<<<<<<<<<<
 *                     int lda, size_t Barray, int ldb, size_t devInfo,
 *                     int batchSize):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_57dpotrsBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dpotrsBatched(intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_Aarray, int __pyx_v_lda, size_t __pyx_v_Barray, int __pyx_v_ldb, size_t __pyx_v_devInfo, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dpotrsBatched", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1323
 *                     int lda, size_t Barray, int ldb, size_t devInfo,
 *                     int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDpotrsBatched(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(__pyx_v_handle, __pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr(), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1323, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1324
 *                     int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDpotrsBatched(
 *             <Handle>handle, <FillMode>uplo, n, nrhs,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1325
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:
 *         status = cusolverDnDpotrsBatched(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <FillMode>uplo, n, nrhs,
 *             <double**>Aarray, lda, <double**>Barray, ldb,
 */
        __pyx_v_status = cusolverDnDpotrsBatched(((cusolverDnHandle_t)__pyx_v_handle), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, __pyx_v_nrhs, ((double **)__pyx_v_Aarray), __pyx_v_lda, ((double **)__pyx_v_Barray), __pyx_v_ldb, ((int *)__pyx_v_devInfo), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1324
 *                     int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDpotrsBatched(
 *             <Handle>handle, <FillMode>uplo, n, nrhs,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1329
 *             <double**>Aarray, lda, <double**>Barray, ldb,
 *             <int*>devInfo, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef cpotrsBatched(intptr_t handle, int uplo, int n, int nrhs, size_t Aarray,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1320
 *     check_status(status)
 * 
 * cpdef dpotrsBatched(intptr_t handle, int uplo, int n, int nrhs, size_t Aarray,             # <<<<<<<<<<<<<<
 *                     int lda, size_t Barray, int ldb, size_t devInfo,
 *                     int batchSize):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dpotrsBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_57dpotrsBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_56dpotrsBatched[] = "dpotrsBatched(intptr_t handle, int uplo, int n, int nrhs, size_t Aarray, int lda, size_t Barray, int ldb, size_t devInfo, int batchSize)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_57dpotrsBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_uplo;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_Aarray;
  int __pyx_v_lda;
  size_t __pyx_v_Barray;
  int __pyx_v_ldb;
  size_t __pyx_v_devInfo;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dpotrsBatched (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_Aarray,&__pyx_n_s_lda,&__pyx_n_s_Barray,&__pyx_n_s_ldb,&__pyx_n_s_devInfo,&__pyx_n_s_batchSize,0};
    PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrsBatched", 1, 10, 10, 1); __PYX_ERR(0, 1320, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrsBatched", 1, 10, 10, 2); __PYX_ERR(0, 1320, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrsBatched", 1, 10, 10, 3); __PYX_ERR(0, 1320, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Aarray)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrsBatched", 1, 10, 10, 4); __PYX_ERR(0, 1320, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrsBatched", 1, 10, 10, 5); __PYX_ERR(0, 1320, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Barray)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrsBatched", 1, 10, 10, 6); __PYX_ERR(0, 1320, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrsBatched", 1, 10, 10, 7); __PYX_ERR(0, 1320, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrsBatched", 1, 10, 10, 8); __PYX_ERR(0, 1320, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dpotrsBatched", 1, 10, 10, 9); __PYX_ERR(0, 1320, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dpotrsBatched") < 0)) __PYX_ERR(0, 1320, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 10) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1320, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1320, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1320, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1320, __pyx_L3_error)
    __pyx_v_Aarray = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_Aarray == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1320, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1321, __pyx_L3_error)
    __pyx_v_Barray = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_Barray == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1321, __pyx_L3_error)
    __pyx_v_ldb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_ldb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1321, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1321, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1322, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dpotrsBatched", 1, 10, 10, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1320, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dpotrsBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_56dpotrsBatched(__pyx_self, __pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_nrhs, __pyx_v_Aarray, __pyx_v_lda, __pyx_v_Barray, __pyx_v_ldb, __pyx_v_devInfo, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_56dpotrsBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_Aarray, int __pyx_v_lda, size_t __pyx_v_Barray, int __pyx_v_ldb, size_t __pyx_v_devInfo, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dpotrsBatched", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dpotrsBatched(__pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_nrhs, __pyx_v_Aarray, __pyx_v_lda, __pyx_v_Barray, __pyx_v_ldb, __pyx_v_devInfo, __pyx_v_batchSize, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dpotrsBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1331
 *     check_status(status)
 * 
 * cpdef cpotrsBatched(intptr_t handle, int uplo, int n, int nrhs, size_t Aarray,             # <<<<<<<<<<<<<<
 *                     int lda, size_t Barray, int ldb, size_t devInfo,
 *                     int batchSize):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_59cpotrsBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cpotrsBatched(intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_Aarray, int __pyx_v_lda, size_t __pyx_v_Barray, int __pyx_v_ldb, size_t __pyx_v_devInfo, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cpotrsBatched", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1334
 *                     int lda, size_t Barray, int ldb, size_t devInfo,
 *                     int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCpotrsBatched(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(__pyx_v_handle, __pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr(), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1334, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1335
 *                     int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCpotrsBatched(
 *             <Handle>handle, <FillMode>uplo, n, nrhs,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1336
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:
 *         status = cusolverDnCpotrsBatched(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <FillMode>uplo, n, nrhs,
 *             <cuComplex**>Aarray, lda, <cuComplex**>Barray, ldb,
 */
        __pyx_v_status = cusolverDnCpotrsBatched(((cusolverDnHandle_t)__pyx_v_handle), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, __pyx_v_nrhs, ((cuComplex **)__pyx_v_Aarray), __pyx_v_lda, ((cuComplex **)__pyx_v_Barray), __pyx_v_ldb, ((int *)__pyx_v_devInfo), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1335
 *                     int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCpotrsBatched(
 *             <Handle>handle, <FillMode>uplo, n, nrhs,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1340
 *             <cuComplex**>Aarray, lda, <cuComplex**>Barray, ldb,
 *             <int*>devInfo, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef zpotrsBatched(intptr_t handle, int uplo, int n, int nrhs, size_t Aarray,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1340, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1331
 *     check_status(status)
 * 
 * cpdef cpotrsBatched(intptr_t handle, int uplo, int n, int nrhs, size_t Aarray,             # <<<<<<<<<<<<<<
 *                     int lda, size_t Barray, int ldb, size_t devInfo,
 *                     int batchSize):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cpotrsBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_59cpotrsBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_58cpotrsBatched[] = "cpotrsBatched(intptr_t handle, int uplo, int n, int nrhs, size_t Aarray, int lda, size_t Barray, int ldb, size_t devInfo, int batchSize)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_59cpotrsBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_uplo;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_Aarray;
  int __pyx_v_lda;
  size_t __pyx_v_Barray;
  int __pyx_v_ldb;
  size_t __pyx_v_devInfo;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cpotrsBatched (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_Aarray,&__pyx_n_s_lda,&__pyx_n_s_Barray,&__pyx_n_s_ldb,&__pyx_n_s_devInfo,&__pyx_n_s_batchSize,0};
    PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrsBatched", 1, 10, 10, 1); __PYX_ERR(0, 1331, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrsBatched", 1, 10, 10, 2); __PYX_ERR(0, 1331, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrsBatched", 1, 10, 10, 3); __PYX_ERR(0, 1331, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Aarray)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrsBatched", 1, 10, 10, 4); __PYX_ERR(0, 1331, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrsBatched", 1, 10, 10, 5); __PYX_ERR(0, 1331, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Barray)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrsBatched", 1, 10, 10, 6); __PYX_ERR(0, 1331, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrsBatched", 1, 10, 10, 7); __PYX_ERR(0, 1331, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrsBatched", 1, 10, 10, 8); __PYX_ERR(0, 1331, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpotrsBatched", 1, 10, 10, 9); __PYX_ERR(0, 1331, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cpotrsBatched") < 0)) __PYX_ERR(0, 1331, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 10) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1331, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1331, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1331, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1331, __pyx_L3_error)
    __pyx_v_Aarray = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_Aarray == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1331, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1332, __pyx_L3_error)
    __pyx_v_Barray = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_Barray == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1332, __pyx_L3_error)
    __pyx_v_ldb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_ldb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1332, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1332, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1333, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cpotrsBatched", 1, 10, 10, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1331, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cpotrsBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_58cpotrsBatched(__pyx_self, __pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_nrhs, __pyx_v_Aarray, __pyx_v_lda, __pyx_v_Barray, __pyx_v_ldb, __pyx_v_devInfo, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_58cpotrsBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_Aarray, int __pyx_v_lda, size_t __pyx_v_Barray, int __pyx_v_ldb, size_t __pyx_v_devInfo, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cpotrsBatched", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cpotrsBatched(__pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_nrhs, __pyx_v_Aarray, __pyx_v_lda, __pyx_v_Barray, __pyx_v_ldb, __pyx_v_devInfo, __pyx_v_batchSize, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1331, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cpotrsBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1342
 *     check_status(status)
 * 
 * cpdef zpotrsBatched(intptr_t handle, int uplo, int n, int nrhs, size_t Aarray,             # <<<<<<<<<<<<<<
 *                     int lda, size_t Barray, int ldb, size_t devInfo,
 *                     int batchSize):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_61zpotrsBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zpotrsBatched(intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_Aarray, int __pyx_v_lda, size_t __pyx_v_Barray, int __pyx_v_ldb, size_t __pyx_v_devInfo, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zpotrsBatched", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1345
 *                     int lda, size_t Barray, int ldb, size_t devInfo,
 *                     int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZpotrsBatched(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(__pyx_v_handle, __pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr(), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1346
 *                     int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZpotrsBatched(
 *             <Handle>handle, <FillMode>uplo, n, nrhs,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1347
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:
 *         status = cusolverDnZpotrsBatched(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <FillMode>uplo, n, nrhs,
 *             <cuDoubleComplex**>Aarray, lda, <cuDoubleComplex**>Barray, ldb,
 */
        __pyx_v_status = cusolverDnZpotrsBatched(((cusolverDnHandle_t)__pyx_v_handle), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, __pyx_v_nrhs, ((cuDoubleComplex **)__pyx_v_Aarray), __pyx_v_lda, ((cuDoubleComplex **)__pyx_v_Barray), __pyx_v_ldb, ((int *)__pyx_v_devInfo), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1346
 *                     int batchSize):
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZpotrsBatched(
 *             <Handle>handle, <FillMode>uplo, n, nrhs,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1351
 *             <cuDoubleComplex**>Aarray, lda, <cuDoubleComplex**>Barray, ldb,
 *             <int*>devInfo, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * # LU factorization
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1342
 *     check_status(status)
 * 
 * cpdef zpotrsBatched(intptr_t handle, int uplo, int n, int nrhs, size_t Aarray,             # <<<<<<<<<<<<<<
 *                     int lda, size_t Barray, int ldb, size_t devInfo,
 *                     int batchSize):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zpotrsBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_61zpotrsBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_60zpotrsBatched[] = "zpotrsBatched(intptr_t handle, int uplo, int n, int nrhs, size_t Aarray, int lda, size_t Barray, int ldb, size_t devInfo, int batchSize)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_61zpotrsBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_uplo;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_Aarray;
  int __pyx_v_lda;
  size_t __pyx_v_Barray;
  int __pyx_v_ldb;
  size_t __pyx_v_devInfo;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zpotrsBatched (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_Aarray,&__pyx_n_s_lda,&__pyx_n_s_Barray,&__pyx_n_s_ldb,&__pyx_n_s_devInfo,&__pyx_n_s_batchSize,0};
    PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrsBatched", 1, 10, 10, 1); __PYX_ERR(0, 1342, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrsBatched", 1, 10, 10, 2); __PYX_ERR(0, 1342, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrsBatched", 1, 10, 10, 3); __PYX_ERR(0, 1342, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Aarray)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrsBatched", 1, 10, 10, 4); __PYX_ERR(0, 1342, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrsBatched", 1, 10, 10, 5); __PYX_ERR(0, 1342, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Barray)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrsBatched", 1, 10, 10, 6); __PYX_ERR(0, 1342, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrsBatched", 1, 10, 10, 7); __PYX_ERR(0, 1342, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrsBatched", 1, 10, 10, 8); __PYX_ERR(0, 1342, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zpotrsBatched", 1, 10, 10, 9); __PYX_ERR(0, 1342, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zpotrsBatched") < 0)) __PYX_ERR(0, 1342, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 10) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1342, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1342, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1342, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1342, __pyx_L3_error)
    __pyx_v_Aarray = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_Aarray == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1342, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1343, __pyx_L3_error)
    __pyx_v_Barray = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_Barray == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1343, __pyx_L3_error)
    __pyx_v_ldb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_ldb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1343, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1343, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1344, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zpotrsBatched", 1, 10, 10, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1342, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zpotrsBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_60zpotrsBatched(__pyx_self, __pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_nrhs, __pyx_v_Aarray, __pyx_v_lda, __pyx_v_Barray, __pyx_v_ldb, __pyx_v_devInfo, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_60zpotrsBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_Aarray, int __pyx_v_lda, size_t __pyx_v_Barray, int __pyx_v_ldb, size_t __pyx_v_devInfo, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zpotrsBatched", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zpotrsBatched(__pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_nrhs, __pyx_v_Aarray, __pyx_v_lda, __pyx_v_Barray, __pyx_v_ldb, __pyx_v_devInfo, __pyx_v_batchSize, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1342, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zpotrsBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1354
 * 
 * # LU factorization
 * cpdef int sgetrf_bufferSize(intptr_t handle, int m, int n,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda) except? -1:
 *     cdef int lwork
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_63sgetrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgetrf_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgetrf_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1357
 *                             size_t A, int lda) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSgetrf_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1358
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgetrf_bufferSize(
 *             <Handle>handle, m, n, <float*>A, lda, &lwork)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1359
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSgetrf_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, <float*>A, lda, &lwork)
 *     check_status(status)
 */
        __pyx_v_status = cusolverDnSgetrf_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, ((float *)__pyx_v_A), __pyx_v_lda, (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1358
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgetrf_bufferSize(
 *             <Handle>handle, m, n, <float*>A, lda, &lwork)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1361
 *         status = cusolverDnSgetrf_bufferSize(
 *             <Handle>handle, m, n, <float*>A, lda, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1362
 *             <Handle>handle, m, n, <float*>A, lda, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int dgetrf_bufferSize(intptr_t handle, int m, int n,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1354
 * 
 * # LU factorization
 * cpdef int sgetrf_bufferSize(intptr_t handle, int m, int n,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda) except? -1:
 *     cdef int lwork
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgetrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_63sgetrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_62sgetrf_bufferSize[] = "sgetrf_bufferSize(intptr_t handle, int m, int n, size_t A, int lda) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_63sgetrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sgetrf_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgetrf_bufferSize", 1, 5, 5, 1); __PYX_ERR(0, 1354, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgetrf_bufferSize", 1, 5, 5, 2); __PYX_ERR(0, 1354, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgetrf_bufferSize", 1, 5, 5, 3); __PYX_ERR(0, 1354, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgetrf_bufferSize", 1, 5, 5, 4); __PYX_ERR(0, 1354, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sgetrf_bufferSize") < 0)) __PYX_ERR(0, 1354, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1354, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1354, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1354, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1355, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1355, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sgetrf_bufferSize", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1354, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgetrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_62sgetrf_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_62sgetrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgetrf_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgetrf_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1354, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1354, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgetrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1364
 *     return lwork
 * 
 * cpdef int dgetrf_bufferSize(intptr_t handle, int m, int n,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda) except? -1:
 *     cdef int lwork
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_65dgetrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgetrf_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgetrf_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1367
 *                             size_t A, int lda) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDgetrf_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1367, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1368
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgetrf_bufferSize(
 *             <Handle>handle, m, n, <double*>A, lda, &lwork)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1369
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDgetrf_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, <double*>A, lda, &lwork)
 *     check_status(status)
 */
        __pyx_v_status = cusolverDnDgetrf_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, ((double *)__pyx_v_A), __pyx_v_lda, (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1368
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgetrf_bufferSize(
 *             <Handle>handle, m, n, <double*>A, lda, &lwork)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1371
 *         status = cusolverDnDgetrf_bufferSize(
 *             <Handle>handle, m, n, <double*>A, lda, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1371, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1372
 *             <Handle>handle, m, n, <double*>A, lda, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int cgetrf_bufferSize(intptr_t handle, int m, int n,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1364
 *     return lwork
 * 
 * cpdef int dgetrf_bufferSize(intptr_t handle, int m, int n,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda) except? -1:
 *     cdef int lwork
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgetrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_65dgetrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_64dgetrf_bufferSize[] = "dgetrf_bufferSize(intptr_t handle, int m, int n, size_t A, int lda) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_65dgetrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dgetrf_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgetrf_bufferSize", 1, 5, 5, 1); __PYX_ERR(0, 1364, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgetrf_bufferSize", 1, 5, 5, 2); __PYX_ERR(0, 1364, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgetrf_bufferSize", 1, 5, 5, 3); __PYX_ERR(0, 1364, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgetrf_bufferSize", 1, 5, 5, 4); __PYX_ERR(0, 1364, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dgetrf_bufferSize") < 0)) __PYX_ERR(0, 1364, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1364, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1364, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1364, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1365, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1365, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dgetrf_bufferSize", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1364, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgetrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_64dgetrf_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_64dgetrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgetrf_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgetrf_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1364, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgetrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1374
 *     return lwork
 * 
 * cpdef int cgetrf_bufferSize(intptr_t handle, int m, int n,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda) except? -1:
 *     cdef int lwork
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_67cgetrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgetrf_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgetrf_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1377
 *                             size_t A, int lda) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCgetrf_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1377, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1378
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgetrf_bufferSize(
 *             <Handle>handle, m, n, <cuComplex*>A, lda, &lwork)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1379
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCgetrf_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, <cuComplex*>A, lda, &lwork)
 *     check_status(status)
 */
        __pyx_v_status = cusolverDnCgetrf_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, ((cuComplex *)__pyx_v_A), __pyx_v_lda, (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1378
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgetrf_bufferSize(
 *             <Handle>handle, m, n, <cuComplex*>A, lda, &lwork)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1381
 *         status = cusolverDnCgetrf_bufferSize(
 *             <Handle>handle, m, n, <cuComplex*>A, lda, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1381, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1382
 *             <Handle>handle, m, n, <cuComplex*>A, lda, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int zgetrf_bufferSize(intptr_t handle, int m, int n,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1374
 *     return lwork
 * 
 * cpdef int cgetrf_bufferSize(intptr_t handle, int m, int n,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda) except? -1:
 *     cdef int lwork
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgetrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_67cgetrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_66cgetrf_bufferSize[] = "cgetrf_bufferSize(intptr_t handle, int m, int n, size_t A, int lda) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_67cgetrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cgetrf_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgetrf_bufferSize", 1, 5, 5, 1); __PYX_ERR(0, 1374, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgetrf_bufferSize", 1, 5, 5, 2); __PYX_ERR(0, 1374, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgetrf_bufferSize", 1, 5, 5, 3); __PYX_ERR(0, 1374, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgetrf_bufferSize", 1, 5, 5, 4); __PYX_ERR(0, 1374, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cgetrf_bufferSize") < 0)) __PYX_ERR(0, 1374, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1374, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1374, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1374, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1375, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1375, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cgetrf_bufferSize", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1374, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgetrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_66cgetrf_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_66cgetrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgetrf_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgetrf_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1374, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1374, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgetrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1384
 *     return lwork
 * 
 * cpdef int zgetrf_bufferSize(intptr_t handle, int m, int n,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda) except? -1:
 *     cdef int lwork
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_69zgetrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgetrf_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgetrf_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1387
 *                             size_t A, int lda) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZgetrf_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1387, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1388
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgetrf_bufferSize(
 *             <Handle>handle, m, n, <cuDoubleComplex*>A, lda, &lwork)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1389
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZgetrf_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, <cuDoubleComplex*>A, lda, &lwork)
 *     check_status(status)
 */
        __pyx_v_status = cusolverDnZgetrf_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, ((cuDoubleComplex *)__pyx_v_A), __pyx_v_lda, (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1388
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgetrf_bufferSize(
 *             <Handle>handle, m, n, <cuDoubleComplex*>A, lda, &lwork)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1391
 *         status = cusolverDnZgetrf_bufferSize(
 *             <Handle>handle, m, n, <cuDoubleComplex*>A, lda, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1391, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1392
 *             <Handle>handle, m, n, <cuDoubleComplex*>A, lda, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef sgetrf(intptr_t handle, int m, int n, size_t A, int lda,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1384
 *     return lwork
 * 
 * cpdef int zgetrf_bufferSize(intptr_t handle, int m, int n,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda) except? -1:
 *     cdef int lwork
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgetrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_69zgetrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_68zgetrf_bufferSize[] = "zgetrf_bufferSize(intptr_t handle, int m, int n, size_t A, int lda) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_69zgetrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zgetrf_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgetrf_bufferSize", 1, 5, 5, 1); __PYX_ERR(0, 1384, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgetrf_bufferSize", 1, 5, 5, 2); __PYX_ERR(0, 1384, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgetrf_bufferSize", 1, 5, 5, 3); __PYX_ERR(0, 1384, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgetrf_bufferSize", 1, 5, 5, 4); __PYX_ERR(0, 1384, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zgetrf_bufferSize") < 0)) __PYX_ERR(0, 1384, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1384, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1384, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1384, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1385, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1385, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zgetrf_bufferSize", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1384, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgetrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_68zgetrf_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_68zgetrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgetrf_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgetrf_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1384, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1384, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgetrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1394
 *     return lwork
 * 
 * cpdef sgetrf(intptr_t handle, int m, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t work, size_t devIpiv, size_t devInfo):
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_71sgetrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgetrf(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_work, size_t __pyx_v_devIpiv, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgetrf", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1396
 * cpdef sgetrf(intptr_t handle, int m, int n, size_t A, int lda,
 *              size_t work, size_t devIpiv, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSgetrf(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1397
 *              size_t work, size_t devIpiv, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgetrf(
 *             <Handle>handle, m, n, <float*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1398
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSgetrf(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, <float*>A, lda,
 *             <float*>work, <int*>devIpiv, <int*>devInfo)
 */
        __pyx_v_status = cusolverDnSgetrf(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, ((float *)__pyx_v_A), __pyx_v_lda, ((float *)__pyx_v_work), ((int *)__pyx_v_devIpiv), ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1397
 *              size_t work, size_t devIpiv, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgetrf(
 *             <Handle>handle, m, n, <float*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1401
 *             <Handle>handle, m, n, <float*>A, lda,
 *             <float*>work, <int*>devIpiv, <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef dgetrf(intptr_t handle, int m, int n, size_t A, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1394
 *     return lwork
 * 
 * cpdef sgetrf(intptr_t handle, int m, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t work, size_t devIpiv, size_t devInfo):
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgetrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_71sgetrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_70sgetrf[] = "sgetrf(intptr_t handle, int m, int n, size_t A, int lda, size_t work, size_t devIpiv, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_71sgetrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_work;
  size_t __pyx_v_devIpiv;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sgetrf (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_work,&__pyx_n_s_devIpiv,&__pyx_n_s_devInfo,0};
    PyObject* values[8] = {0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgetrf", 1, 8, 8, 1); __PYX_ERR(0, 1394, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgetrf", 1, 8, 8, 2); __PYX_ERR(0, 1394, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgetrf", 1, 8, 8, 3); __PYX_ERR(0, 1394, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgetrf", 1, 8, 8, 4); __PYX_ERR(0, 1394, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgetrf", 1, 8, 8, 5); __PYX_ERR(0, 1394, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devIpiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgetrf", 1, 8, 8, 6); __PYX_ERR(0, 1394, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgetrf", 1, 8, 8, 7); __PYX_ERR(0, 1394, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sgetrf") < 0)) __PYX_ERR(0, 1394, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 8) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1394, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1394, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1394, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1394, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1394, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1395, __pyx_L3_error)
    __pyx_v_devIpiv = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_devIpiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1395, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1395, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sgetrf", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1394, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgetrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_70sgetrf(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_work, __pyx_v_devIpiv, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_70sgetrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_work, size_t __pyx_v_devIpiv, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgetrf", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgetrf(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_work, __pyx_v_devIpiv, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1394, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgetrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1403
 *     check_status(status)
 * 
 * cpdef dgetrf(intptr_t handle, int m, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t work, size_t devIpiv, size_t devInfo):
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_73dgetrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgetrf(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_work, size_t __pyx_v_devIpiv, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgetrf", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1405
 * cpdef dgetrf(intptr_t handle, int m, int n, size_t A, int lda,
 *              size_t work, size_t devIpiv, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDgetrf(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1405, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1406
 *              size_t work, size_t devIpiv, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgetrf(
 *             <Handle>handle, m, n, <double*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1407
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDgetrf(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, <double*>A, lda,
 *             <double*>work, <int*>devIpiv, <int*>devInfo)
 */
        __pyx_v_status = cusolverDnDgetrf(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, ((double *)__pyx_v_A), __pyx_v_lda, ((double *)__pyx_v_work), ((int *)__pyx_v_devIpiv), ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1406
 *              size_t work, size_t devIpiv, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgetrf(
 *             <Handle>handle, m, n, <double*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1410
 *             <Handle>handle, m, n, <double*>A, lda,
 *             <double*>work, <int*>devIpiv, <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef cgetrf(intptr_t handle, int m, int n, size_t A, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1410, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1403
 *     check_status(status)
 * 
 * cpdef dgetrf(intptr_t handle, int m, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t work, size_t devIpiv, size_t devInfo):
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgetrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_73dgetrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_72dgetrf[] = "dgetrf(intptr_t handle, int m, int n, size_t A, int lda, size_t work, size_t devIpiv, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_73dgetrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_work;
  size_t __pyx_v_devIpiv;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dgetrf (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_work,&__pyx_n_s_devIpiv,&__pyx_n_s_devInfo,0};
    PyObject* values[8] = {0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgetrf", 1, 8, 8, 1); __PYX_ERR(0, 1403, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgetrf", 1, 8, 8, 2); __PYX_ERR(0, 1403, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgetrf", 1, 8, 8, 3); __PYX_ERR(0, 1403, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgetrf", 1, 8, 8, 4); __PYX_ERR(0, 1403, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgetrf", 1, 8, 8, 5); __PYX_ERR(0, 1403, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devIpiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgetrf", 1, 8, 8, 6); __PYX_ERR(0, 1403, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgetrf", 1, 8, 8, 7); __PYX_ERR(0, 1403, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dgetrf") < 0)) __PYX_ERR(0, 1403, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 8) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1403, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1403, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1403, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1403, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1403, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1404, __pyx_L3_error)
    __pyx_v_devIpiv = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_devIpiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1404, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1404, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dgetrf", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1403, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgetrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_72dgetrf(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_work, __pyx_v_devIpiv, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_72dgetrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_work, size_t __pyx_v_devIpiv, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgetrf", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgetrf(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_work, __pyx_v_devIpiv, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1403, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgetrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1412
 *     check_status(status)
 * 
 * cpdef cgetrf(intptr_t handle, int m, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t work, size_t devIpiv, size_t devInfo):
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_75cgetrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgetrf(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_work, size_t __pyx_v_devIpiv, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgetrf", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1414
 * cpdef cgetrf(intptr_t handle, int m, int n, size_t A, int lda,
 *              size_t work, size_t devIpiv, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCgetrf(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1414, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1415
 *              size_t work, size_t devIpiv, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgetrf(
 *             <Handle>handle, m, n, <cuComplex*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1416
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCgetrf(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, <cuComplex*>A, lda,
 *             <cuComplex*>work, <int*>devIpiv, <int*>devInfo)
 */
        __pyx_v_status = cusolverDnCgetrf(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, ((cuComplex *)__pyx_v_A), __pyx_v_lda, ((cuComplex *)__pyx_v_work), ((int *)__pyx_v_devIpiv), ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1415
 *              size_t work, size_t devIpiv, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgetrf(
 *             <Handle>handle, m, n, <cuComplex*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1419
 *             <Handle>handle, m, n, <cuComplex*>A, lda,
 *             <cuComplex*>work, <int*>devIpiv, <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef zgetrf(intptr_t handle, int m, int n, size_t A, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1412
 *     check_status(status)
 * 
 * cpdef cgetrf(intptr_t handle, int m, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t work, size_t devIpiv, size_t devInfo):
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgetrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_75cgetrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_74cgetrf[] = "cgetrf(intptr_t handle, int m, int n, size_t A, int lda, size_t work, size_t devIpiv, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_75cgetrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_work;
  size_t __pyx_v_devIpiv;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cgetrf (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_work,&__pyx_n_s_devIpiv,&__pyx_n_s_devInfo,0};
    PyObject* values[8] = {0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgetrf", 1, 8, 8, 1); __PYX_ERR(0, 1412, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgetrf", 1, 8, 8, 2); __PYX_ERR(0, 1412, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgetrf", 1, 8, 8, 3); __PYX_ERR(0, 1412, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgetrf", 1, 8, 8, 4); __PYX_ERR(0, 1412, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgetrf", 1, 8, 8, 5); __PYX_ERR(0, 1412, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devIpiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgetrf", 1, 8, 8, 6); __PYX_ERR(0, 1412, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgetrf", 1, 8, 8, 7); __PYX_ERR(0, 1412, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cgetrf") < 0)) __PYX_ERR(0, 1412, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 8) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1412, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1412, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1412, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1412, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1412, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1413, __pyx_L3_error)
    __pyx_v_devIpiv = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_devIpiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1413, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1413, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cgetrf", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1412, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgetrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_74cgetrf(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_work, __pyx_v_devIpiv, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_74cgetrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_work, size_t __pyx_v_devIpiv, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgetrf", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgetrf(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_work, __pyx_v_devIpiv, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1412, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgetrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1421
 *     check_status(status)
 * 
 * cpdef zgetrf(intptr_t handle, int m, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t work, size_t devIpiv, size_t devInfo):
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_77zgetrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgetrf(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_work, size_t __pyx_v_devIpiv, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgetrf", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1423
 * cpdef zgetrf(intptr_t handle, int m, int n, size_t A, int lda,
 *              size_t work, size_t devIpiv, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZgetrf(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1423, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1424
 *              size_t work, size_t devIpiv, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgetrf(
 *             <Handle>handle, m, n, <cuDoubleComplex*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1425
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZgetrf(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, <cuDoubleComplex*>A, lda,
 *             <cuDoubleComplex*>work, <int*>devIpiv, <int*>devInfo)
 */
        __pyx_v_status = cusolverDnZgetrf(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, ((cuDoubleComplex *)__pyx_v_A), __pyx_v_lda, ((cuDoubleComplex *)__pyx_v_work), ((int *)__pyx_v_devIpiv), ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1424
 *              size_t work, size_t devIpiv, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgetrf(
 *             <Handle>handle, m, n, <cuDoubleComplex*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1428
 *             <Handle>handle, m, n, <cuDoubleComplex*>A, lda,
 *             <cuDoubleComplex*>work, <int*>devIpiv, <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1421
 *     check_status(status)
 * 
 * cpdef zgetrf(intptr_t handle, int m, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t work, size_t devIpiv, size_t devInfo):
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgetrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_77zgetrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_76zgetrf[] = "zgetrf(intptr_t handle, int m, int n, size_t A, int lda, size_t work, size_t devIpiv, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_77zgetrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_work;
  size_t __pyx_v_devIpiv;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zgetrf (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_work,&__pyx_n_s_devIpiv,&__pyx_n_s_devInfo,0};
    PyObject* values[8] = {0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgetrf", 1, 8, 8, 1); __PYX_ERR(0, 1421, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgetrf", 1, 8, 8, 2); __PYX_ERR(0, 1421, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgetrf", 1, 8, 8, 3); __PYX_ERR(0, 1421, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgetrf", 1, 8, 8, 4); __PYX_ERR(0, 1421, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgetrf", 1, 8, 8, 5); __PYX_ERR(0, 1421, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devIpiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgetrf", 1, 8, 8, 6); __PYX_ERR(0, 1421, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgetrf", 1, 8, 8, 7); __PYX_ERR(0, 1421, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zgetrf") < 0)) __PYX_ERR(0, 1421, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 8) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1421, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1421, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1421, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1421, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1421, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1422, __pyx_L3_error)
    __pyx_v_devIpiv = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_devIpiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1422, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1422, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zgetrf", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1421, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgetrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_76zgetrf(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_work, __pyx_v_devIpiv, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_76zgetrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_work, size_t __pyx_v_devIpiv, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgetrf", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgetrf(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_work, __pyx_v_devIpiv, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1421, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgetrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1432
 * 
 * # LU solve
 * cpdef sgetrs(intptr_t handle, int trans, int n, int nrhs,             # <<<<<<<<<<<<<<
 *              size_t A, int lda, size_t devIpiv,
 *              size_t B, int ldb, size_t devInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_79sgetrs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgetrs(intptr_t __pyx_v_handle, int __pyx_v_trans, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_devIpiv, size_t __pyx_v_B, int __pyx_v_ldb, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgetrs", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1435
 *              size_t A, int lda, size_t devIpiv,
 *              size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSgetrs(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1436
 *              size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgetrs(
 *             <Handle>handle, <Operation>trans, n, nrhs,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1437
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSgetrs(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <Operation>trans, n, nrhs,
 *             <const float*> A, lda, <const int*>devIpiv,
 */
        __pyx_v_status = cusolverDnSgetrs(((cusolverDnHandle_t)__pyx_v_handle), ((cublasOperation_t)__pyx_v_trans), __pyx_v_n, __pyx_v_nrhs, ((float const *)__pyx_v_A), __pyx_v_lda, ((int const *)__pyx_v_devIpiv), ((float *)__pyx_v_B), __pyx_v_ldb, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1436
 *              size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgetrs(
 *             <Handle>handle, <Operation>trans, n, nrhs,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1441
 *             <const float*> A, lda, <const int*>devIpiv,
 *             <float*>B, ldb, <int*> devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef dgetrs(intptr_t handle, int trans, int n, int nrhs,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1441, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1432
 * 
 * # LU solve
 * cpdef sgetrs(intptr_t handle, int trans, int n, int nrhs,             # <<<<<<<<<<<<<<
 *              size_t A, int lda, size_t devIpiv,
 *              size_t B, int ldb, size_t devInfo):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgetrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_79sgetrs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_78sgetrs[] = "sgetrs(intptr_t handle, int trans, int n, int nrhs, size_t A, int lda, size_t devIpiv, size_t B, int ldb, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_79sgetrs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_trans;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_devIpiv;
  size_t __pyx_v_B;
  int __pyx_v_ldb;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sgetrs (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_trans,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_devIpiv,&__pyx_n_s_B,&__pyx_n_s_ldb,&__pyx_n_s_devInfo,0};
    PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_trans)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgetrs", 1, 10, 10, 1); __PYX_ERR(0, 1432, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgetrs", 1, 10, 10, 2); __PYX_ERR(0, 1432, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgetrs", 1, 10, 10, 3); __PYX_ERR(0, 1432, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgetrs", 1, 10, 10, 4); __PYX_ERR(0, 1432, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgetrs", 1, 10, 10, 5); __PYX_ERR(0, 1432, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devIpiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgetrs", 1, 10, 10, 6); __PYX_ERR(0, 1432, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_B)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgetrs", 1, 10, 10, 7); __PYX_ERR(0, 1432, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgetrs", 1, 10, 10, 8); __PYX_ERR(0, 1432, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgetrs", 1, 10, 10, 9); __PYX_ERR(0, 1432, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sgetrs") < 0)) __PYX_ERR(0, 1432, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 10) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1432, __pyx_L3_error)
    __pyx_v_trans = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_trans == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1432, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1432, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1432, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1433, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1433, __pyx_L3_error)
    __pyx_v_devIpiv = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_devIpiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1433, __pyx_L3_error)
    __pyx_v_B = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_B == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1434, __pyx_L3_error)
    __pyx_v_ldb = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_ldb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1434, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1434, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sgetrs", 1, 10, 10, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1432, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgetrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_78sgetrs(__pyx_self, __pyx_v_handle, __pyx_v_trans, __pyx_v_n, __pyx_v_nrhs, __pyx_v_A, __pyx_v_lda, __pyx_v_devIpiv, __pyx_v_B, __pyx_v_ldb, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_78sgetrs(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_trans, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_devIpiv, size_t __pyx_v_B, int __pyx_v_ldb, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgetrs", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgetrs(__pyx_v_handle, __pyx_v_trans, __pyx_v_n, __pyx_v_nrhs, __pyx_v_A, __pyx_v_lda, __pyx_v_devIpiv, __pyx_v_B, __pyx_v_ldb, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1432, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgetrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1443
 *     check_status(status)
 * 
 * cpdef dgetrs(intptr_t handle, int trans, int n, int nrhs,             # <<<<<<<<<<<<<<
 *              size_t A, int lda, size_t devIpiv,
 *              size_t B, int ldb, size_t devInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_81dgetrs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgetrs(intptr_t __pyx_v_handle, int __pyx_v_trans, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_devIpiv, size_t __pyx_v_B, int __pyx_v_ldb, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgetrs", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1446
 *              size_t A, int lda, size_t devIpiv,
 *              size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDgetrs(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1446, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1447
 *              size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgetrs(
 *             <Handle>handle, <Operation>trans, n, nrhs,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1448
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDgetrs(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <Operation>trans, n, nrhs,
 *             <const double*> A, lda, <const int*>devIpiv,
 */
        __pyx_v_status = cusolverDnDgetrs(((cusolverDnHandle_t)__pyx_v_handle), ((cublasOperation_t)__pyx_v_trans), __pyx_v_n, __pyx_v_nrhs, ((double const *)__pyx_v_A), __pyx_v_lda, ((int const *)__pyx_v_devIpiv), ((double *)__pyx_v_B), __pyx_v_ldb, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1447
 *              size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgetrs(
 *             <Handle>handle, <Operation>trans, n, nrhs,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1452
 *             <const double*> A, lda, <const int*>devIpiv,
 *             <double*>B, ldb, <int*> devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef cgetrs(intptr_t handle, int trans, int n, int nrhs,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1452, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1443
 *     check_status(status)
 * 
 * cpdef dgetrs(intptr_t handle, int trans, int n, int nrhs,             # <<<<<<<<<<<<<<
 *              size_t A, int lda, size_t devIpiv,
 *              size_t B, int ldb, size_t devInfo):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgetrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_81dgetrs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_80dgetrs[] = "dgetrs(intptr_t handle, int trans, int n, int nrhs, size_t A, int lda, size_t devIpiv, size_t B, int ldb, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_81dgetrs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_trans;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_devIpiv;
  size_t __pyx_v_B;
  int __pyx_v_ldb;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dgetrs (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_trans,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_devIpiv,&__pyx_n_s_B,&__pyx_n_s_ldb,&__pyx_n_s_devInfo,0};
    PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_trans)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgetrs", 1, 10, 10, 1); __PYX_ERR(0, 1443, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgetrs", 1, 10, 10, 2); __PYX_ERR(0, 1443, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgetrs", 1, 10, 10, 3); __PYX_ERR(0, 1443, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgetrs", 1, 10, 10, 4); __PYX_ERR(0, 1443, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgetrs", 1, 10, 10, 5); __PYX_ERR(0, 1443, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devIpiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgetrs", 1, 10, 10, 6); __PYX_ERR(0, 1443, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_B)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgetrs", 1, 10, 10, 7); __PYX_ERR(0, 1443, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgetrs", 1, 10, 10, 8); __PYX_ERR(0, 1443, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgetrs", 1, 10, 10, 9); __PYX_ERR(0, 1443, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dgetrs") < 0)) __PYX_ERR(0, 1443, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 10) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1443, __pyx_L3_error)
    __pyx_v_trans = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_trans == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1443, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1443, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1443, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1444, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1444, __pyx_L3_error)
    __pyx_v_devIpiv = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_devIpiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1444, __pyx_L3_error)
    __pyx_v_B = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_B == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1445, __pyx_L3_error)
    __pyx_v_ldb = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_ldb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1445, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1445, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dgetrs", 1, 10, 10, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1443, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgetrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_80dgetrs(__pyx_self, __pyx_v_handle, __pyx_v_trans, __pyx_v_n, __pyx_v_nrhs, __pyx_v_A, __pyx_v_lda, __pyx_v_devIpiv, __pyx_v_B, __pyx_v_ldb, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_80dgetrs(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_trans, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_devIpiv, size_t __pyx_v_B, int __pyx_v_ldb, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgetrs", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgetrs(__pyx_v_handle, __pyx_v_trans, __pyx_v_n, __pyx_v_nrhs, __pyx_v_A, __pyx_v_lda, __pyx_v_devIpiv, __pyx_v_B, __pyx_v_ldb, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1443, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgetrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1454
 *     check_status(status)
 * 
 * cpdef cgetrs(intptr_t handle, int trans, int n, int nrhs,             # <<<<<<<<<<<<<<
 *              size_t A, int lda, size_t devIpiv,
 *              size_t B, int ldb, size_t devInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_83cgetrs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgetrs(intptr_t __pyx_v_handle, int __pyx_v_trans, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_devIpiv, size_t __pyx_v_B, int __pyx_v_ldb, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgetrs", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1457
 *              size_t A, int lda, size_t devIpiv,
 *              size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCgetrs(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1457, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1458
 *              size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgetrs(
 *             <Handle>handle, <Operation>trans, n, nrhs,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1459
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCgetrs(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <Operation>trans, n, nrhs,
 *             <const cuComplex*> A, lda, <const int*>devIpiv,
 */
        __pyx_v_status = cusolverDnCgetrs(((cusolverDnHandle_t)__pyx_v_handle), ((cublasOperation_t)__pyx_v_trans), __pyx_v_n, __pyx_v_nrhs, ((cuComplex const *)__pyx_v_A), __pyx_v_lda, ((int const *)__pyx_v_devIpiv), ((cuComplex *)__pyx_v_B), __pyx_v_ldb, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1458
 *              size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgetrs(
 *             <Handle>handle, <Operation>trans, n, nrhs,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1463
 *             <const cuComplex*> A, lda, <const int*>devIpiv,
 *             <cuComplex*>B, ldb, <int*> devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef zgetrs(intptr_t handle, int trans, int n, int nrhs,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1463, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1454
 *     check_status(status)
 * 
 * cpdef cgetrs(intptr_t handle, int trans, int n, int nrhs,             # <<<<<<<<<<<<<<
 *              size_t A, int lda, size_t devIpiv,
 *              size_t B, int ldb, size_t devInfo):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgetrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_83cgetrs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_82cgetrs[] = "cgetrs(intptr_t handle, int trans, int n, int nrhs, size_t A, int lda, size_t devIpiv, size_t B, int ldb, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_83cgetrs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_trans;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_devIpiv;
  size_t __pyx_v_B;
  int __pyx_v_ldb;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cgetrs (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_trans,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_devIpiv,&__pyx_n_s_B,&__pyx_n_s_ldb,&__pyx_n_s_devInfo,0};
    PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_trans)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgetrs", 1, 10, 10, 1); __PYX_ERR(0, 1454, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgetrs", 1, 10, 10, 2); __PYX_ERR(0, 1454, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgetrs", 1, 10, 10, 3); __PYX_ERR(0, 1454, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgetrs", 1, 10, 10, 4); __PYX_ERR(0, 1454, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgetrs", 1, 10, 10, 5); __PYX_ERR(0, 1454, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devIpiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgetrs", 1, 10, 10, 6); __PYX_ERR(0, 1454, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_B)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgetrs", 1, 10, 10, 7); __PYX_ERR(0, 1454, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgetrs", 1, 10, 10, 8); __PYX_ERR(0, 1454, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgetrs", 1, 10, 10, 9); __PYX_ERR(0, 1454, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cgetrs") < 0)) __PYX_ERR(0, 1454, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 10) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1454, __pyx_L3_error)
    __pyx_v_trans = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_trans == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1454, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1454, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1454, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1455, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1455, __pyx_L3_error)
    __pyx_v_devIpiv = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_devIpiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1455, __pyx_L3_error)
    __pyx_v_B = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_B == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1456, __pyx_L3_error)
    __pyx_v_ldb = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_ldb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1456, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1456, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cgetrs", 1, 10, 10, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1454, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgetrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_82cgetrs(__pyx_self, __pyx_v_handle, __pyx_v_trans, __pyx_v_n, __pyx_v_nrhs, __pyx_v_A, __pyx_v_lda, __pyx_v_devIpiv, __pyx_v_B, __pyx_v_ldb, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_82cgetrs(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_trans, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_devIpiv, size_t __pyx_v_B, int __pyx_v_ldb, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgetrs", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgetrs(__pyx_v_handle, __pyx_v_trans, __pyx_v_n, __pyx_v_nrhs, __pyx_v_A, __pyx_v_lda, __pyx_v_devIpiv, __pyx_v_B, __pyx_v_ldb, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1454, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgetrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1465
 *     check_status(status)
 * 
 * cpdef zgetrs(intptr_t handle, int trans, int n, int nrhs,             # <<<<<<<<<<<<<<
 *              size_t A, int lda, size_t devIpiv,
 *              size_t B, int ldb, size_t devInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_85zgetrs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgetrs(intptr_t __pyx_v_handle, int __pyx_v_trans, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_devIpiv, size_t __pyx_v_B, int __pyx_v_ldb, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgetrs", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1468
 *              size_t A, int lda, size_t devIpiv,
 *              size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZgetrs(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1468, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1469
 *              size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgetrs(
 *             <Handle>handle, <Operation>trans, n, nrhs,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1470
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZgetrs(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <Operation>trans, n, nrhs,
 *             <const cuDoubleComplex*> A, lda, <const int*>devIpiv,
 */
        __pyx_v_status = cusolverDnZgetrs(((cusolverDnHandle_t)__pyx_v_handle), ((cublasOperation_t)__pyx_v_trans), __pyx_v_n, __pyx_v_nrhs, ((cuDoubleComplex const *)__pyx_v_A), __pyx_v_lda, ((int const *)__pyx_v_devIpiv), ((cuDoubleComplex *)__pyx_v_B), __pyx_v_ldb, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1469
 *              size_t B, int ldb, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgetrs(
 *             <Handle>handle, <Operation>trans, n, nrhs,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1474
 *             <const cuDoubleComplex*> A, lda, <const int*>devIpiv,
 *             <cuDoubleComplex*>B, ldb, <int*> devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1465
 *     check_status(status)
 * 
 * cpdef zgetrs(intptr_t handle, int trans, int n, int nrhs,             # <<<<<<<<<<<<<<
 *              size_t A, int lda, size_t devIpiv,
 *              size_t B, int ldb, size_t devInfo):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgetrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_85zgetrs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_84zgetrs[] = "zgetrs(intptr_t handle, int trans, int n, int nrhs, size_t A, int lda, size_t devIpiv, size_t B, int ldb, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_85zgetrs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_trans;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_devIpiv;
  size_t __pyx_v_B;
  int __pyx_v_ldb;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zgetrs (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_trans,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_devIpiv,&__pyx_n_s_B,&__pyx_n_s_ldb,&__pyx_n_s_devInfo,0};
    PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_trans)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgetrs", 1, 10, 10, 1); __PYX_ERR(0, 1465, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgetrs", 1, 10, 10, 2); __PYX_ERR(0, 1465, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgetrs", 1, 10, 10, 3); __PYX_ERR(0, 1465, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgetrs", 1, 10, 10, 4); __PYX_ERR(0, 1465, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgetrs", 1, 10, 10, 5); __PYX_ERR(0, 1465, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devIpiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgetrs", 1, 10, 10, 6); __PYX_ERR(0, 1465, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_B)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgetrs", 1, 10, 10, 7); __PYX_ERR(0, 1465, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgetrs", 1, 10, 10, 8); __PYX_ERR(0, 1465, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgetrs", 1, 10, 10, 9); __PYX_ERR(0, 1465, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zgetrs") < 0)) __PYX_ERR(0, 1465, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 10) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1465, __pyx_L3_error)
    __pyx_v_trans = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_trans == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1465, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1465, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1465, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1466, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1466, __pyx_L3_error)
    __pyx_v_devIpiv = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_devIpiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1466, __pyx_L3_error)
    __pyx_v_B = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_B == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1467, __pyx_L3_error)
    __pyx_v_ldb = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_ldb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1467, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1467, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zgetrs", 1, 10, 10, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1465, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgetrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_84zgetrs(__pyx_self, __pyx_v_handle, __pyx_v_trans, __pyx_v_n, __pyx_v_nrhs, __pyx_v_A, __pyx_v_lda, __pyx_v_devIpiv, __pyx_v_B, __pyx_v_ldb, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_84zgetrs(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_trans, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_devIpiv, size_t __pyx_v_B, int __pyx_v_ldb, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgetrs", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgetrs(__pyx_v_handle, __pyx_v_trans, __pyx_v_n, __pyx_v_nrhs, __pyx_v_A, __pyx_v_lda, __pyx_v_devIpiv, __pyx_v_B, __pyx_v_ldb, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1465, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgetrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1478
 * 
 * # QR factorization
 * cpdef int sgeqrf_bufferSize(intptr_t handle, int m, int n,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda) except? -1:
 *     cdef int lwork
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_87sgeqrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgeqrf_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgeqrf_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1481
 *                             size_t A, int lda) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSgeqrf_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1482
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgeqrf_bufferSize(
 *             <Handle>handle, m, n, <float*>A, lda, &lwork)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1483
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSgeqrf_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, <float*>A, lda, &lwork)
 *     check_status(status)
 */
        __pyx_v_status = cusolverDnSgeqrf_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, ((float *)__pyx_v_A), __pyx_v_lda, (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1482
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgeqrf_bufferSize(
 *             <Handle>handle, m, n, <float*>A, lda, &lwork)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1485
 *         status = cusolverDnSgeqrf_bufferSize(
 *             <Handle>handle, m, n, <float*>A, lda, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1486
 *             <Handle>handle, m, n, <float*>A, lda, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int dgeqrf_bufferSize(intptr_t handle, int m, int n,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1478
 * 
 * # QR factorization
 * cpdef int sgeqrf_bufferSize(intptr_t handle, int m, int n,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda) except? -1:
 *     cdef int lwork
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgeqrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_87sgeqrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_86sgeqrf_bufferSize[] = "sgeqrf_bufferSize(intptr_t handle, int m, int n, size_t A, int lda) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_87sgeqrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sgeqrf_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgeqrf_bufferSize", 1, 5, 5, 1); __PYX_ERR(0, 1478, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgeqrf_bufferSize", 1, 5, 5, 2); __PYX_ERR(0, 1478, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgeqrf_bufferSize", 1, 5, 5, 3); __PYX_ERR(0, 1478, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgeqrf_bufferSize", 1, 5, 5, 4); __PYX_ERR(0, 1478, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sgeqrf_bufferSize") < 0)) __PYX_ERR(0, 1478, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1478, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1478, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1478, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1479, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1479, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sgeqrf_bufferSize", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1478, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgeqrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_86sgeqrf_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_86sgeqrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgeqrf_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgeqrf_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1478, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1478, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgeqrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1488
 *     return lwork
 * 
 * cpdef int dgeqrf_bufferSize(intptr_t handle, int m, int n,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda) except? -1:
 *     cdef int lwork
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_89dgeqrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgeqrf_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgeqrf_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1491
 *                             size_t A, int lda) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDgeqrf_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1492
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgeqrf_bufferSize(
 *             <Handle>handle, m, n, <double*>A, lda, &lwork)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1493
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDgeqrf_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, <double*>A, lda, &lwork)
 *     check_status(status)
 */
        __pyx_v_status = cusolverDnDgeqrf_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, ((double *)__pyx_v_A), __pyx_v_lda, (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1492
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgeqrf_bufferSize(
 *             <Handle>handle, m, n, <double*>A, lda, &lwork)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1495
 *         status = cusolverDnDgeqrf_bufferSize(
 *             <Handle>handle, m, n, <double*>A, lda, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1496
 *             <Handle>handle, m, n, <double*>A, lda, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int cgeqrf_bufferSize(intptr_t handle, int m, int n,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1488
 *     return lwork
 * 
 * cpdef int dgeqrf_bufferSize(intptr_t handle, int m, int n,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda) except? -1:
 *     cdef int lwork
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgeqrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_89dgeqrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_88dgeqrf_bufferSize[] = "dgeqrf_bufferSize(intptr_t handle, int m, int n, size_t A, int lda) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_89dgeqrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dgeqrf_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgeqrf_bufferSize", 1, 5, 5, 1); __PYX_ERR(0, 1488, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgeqrf_bufferSize", 1, 5, 5, 2); __PYX_ERR(0, 1488, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgeqrf_bufferSize", 1, 5, 5, 3); __PYX_ERR(0, 1488, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgeqrf_bufferSize", 1, 5, 5, 4); __PYX_ERR(0, 1488, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dgeqrf_bufferSize") < 0)) __PYX_ERR(0, 1488, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1488, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1488, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1488, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1489, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1489, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dgeqrf_bufferSize", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1488, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgeqrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_88dgeqrf_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_88dgeqrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgeqrf_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgeqrf_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1488, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgeqrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1498
 *     return lwork
 * 
 * cpdef int cgeqrf_bufferSize(intptr_t handle, int m, int n,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda) except? -1:
 *     cdef int lwork
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_91cgeqrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgeqrf_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgeqrf_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1501
 *                             size_t A, int lda) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCgeqrf_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1501, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1502
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgeqrf_bufferSize(
 *             <Handle>handle, m, n, <cuComplex*>A, lda, &lwork)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1503
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCgeqrf_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, <cuComplex*>A, lda, &lwork)
 *     check_status(status)
 */
        __pyx_v_status = cusolverDnCgeqrf_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, ((cuComplex *)__pyx_v_A), __pyx_v_lda, (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1502
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgeqrf_bufferSize(
 *             <Handle>handle, m, n, <cuComplex*>A, lda, &lwork)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1505
 *         status = cusolverDnCgeqrf_bufferSize(
 *             <Handle>handle, m, n, <cuComplex*>A, lda, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1505, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1506
 *             <Handle>handle, m, n, <cuComplex*>A, lda, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int zgeqrf_bufferSize(intptr_t handle, int m, int n,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1498
 *     return lwork
 * 
 * cpdef int cgeqrf_bufferSize(intptr_t handle, int m, int n,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda) except? -1:
 *     cdef int lwork
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgeqrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_91cgeqrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_90cgeqrf_bufferSize[] = "cgeqrf_bufferSize(intptr_t handle, int m, int n, size_t A, int lda) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_91cgeqrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cgeqrf_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgeqrf_bufferSize", 1, 5, 5, 1); __PYX_ERR(0, 1498, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgeqrf_bufferSize", 1, 5, 5, 2); __PYX_ERR(0, 1498, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgeqrf_bufferSize", 1, 5, 5, 3); __PYX_ERR(0, 1498, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgeqrf_bufferSize", 1, 5, 5, 4); __PYX_ERR(0, 1498, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cgeqrf_bufferSize") < 0)) __PYX_ERR(0, 1498, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1498, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1498, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1498, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1499, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1499, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cgeqrf_bufferSize", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1498, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgeqrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_90cgeqrf_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_90cgeqrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgeqrf_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgeqrf_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1498, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1498, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgeqrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1508
 *     return lwork
 * 
 * cpdef int zgeqrf_bufferSize(intptr_t handle, int m, int n,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda) except? -1:
 *     cdef int lwork
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_93zgeqrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgeqrf_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgeqrf_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1511
 *                             size_t A, int lda) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZgeqrf_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1512
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgeqrf_bufferSize(
 *             <Handle>handle, m, n, <cuDoubleComplex*>A, lda, &lwork)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1513
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZgeqrf_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, <cuDoubleComplex*>A, lda, &lwork)
 *     check_status(status)
 */
        __pyx_v_status = cusolverDnZgeqrf_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, ((cuDoubleComplex *)__pyx_v_A), __pyx_v_lda, (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1512
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgeqrf_bufferSize(
 *             <Handle>handle, m, n, <cuDoubleComplex*>A, lda, &lwork)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1515
 *         status = cusolverDnZgeqrf_bufferSize(
 *             <Handle>handle, m, n, <cuDoubleComplex*>A, lda, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1515, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1516
 *             <Handle>handle, m, n, <cuDoubleComplex*>A, lda, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef sgeqrf(intptr_t handle, int m, int n, size_t A, int lda,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1508
 *     return lwork
 * 
 * cpdef int zgeqrf_bufferSize(intptr_t handle, int m, int n,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda) except? -1:
 *     cdef int lwork
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgeqrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_93zgeqrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_92zgeqrf_bufferSize[] = "zgeqrf_bufferSize(intptr_t handle, int m, int n, size_t A, int lda) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_93zgeqrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zgeqrf_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgeqrf_bufferSize", 1, 5, 5, 1); __PYX_ERR(0, 1508, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgeqrf_bufferSize", 1, 5, 5, 2); __PYX_ERR(0, 1508, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgeqrf_bufferSize", 1, 5, 5, 3); __PYX_ERR(0, 1508, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgeqrf_bufferSize", 1, 5, 5, 4); __PYX_ERR(0, 1508, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zgeqrf_bufferSize") < 0)) __PYX_ERR(0, 1508, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1508, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1508, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1508, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1509, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1509, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zgeqrf_bufferSize", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1508, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgeqrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_92zgeqrf_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_92zgeqrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgeqrf_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgeqrf_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1508, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgeqrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1518
 *     return lwork
 * 
 * cpdef sgeqrf(intptr_t handle, int m, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_95sgeqrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgeqrf(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgeqrf", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1520
 * cpdef sgeqrf(intptr_t handle, int m, int n, size_t A, int lda,
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSgeqrf(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1521
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgeqrf(
 *             <Handle>handle, m, n, <float*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1522
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSgeqrf(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, <float*>A, lda,
 *             <float*>tau, <float*>work, lwork,
 */
        __pyx_v_status = cusolverDnSgeqrf(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, ((float *)__pyx_v_A), __pyx_v_lda, ((float *)__pyx_v_tau), ((float *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1521
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgeqrf(
 *             <Handle>handle, m, n, <float*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1526
 *             <float*>tau, <float*>work, lwork,
 *             <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef dgeqrf(intptr_t handle, int m, int n, size_t A, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1518
 *     return lwork
 * 
 * cpdef sgeqrf(intptr_t handle, int m, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgeqrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_95sgeqrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_94sgeqrf[] = "sgeqrf(intptr_t handle, int m, int n, size_t A, int lda, size_t tau, size_t work, int lwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_95sgeqrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_tau;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sgeqrf (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_tau,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_devInfo,0};
    PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgeqrf", 1, 9, 9, 1); __PYX_ERR(0, 1518, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgeqrf", 1, 9, 9, 2); __PYX_ERR(0, 1518, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgeqrf", 1, 9, 9, 3); __PYX_ERR(0, 1518, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgeqrf", 1, 9, 9, 4); __PYX_ERR(0, 1518, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tau)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgeqrf", 1, 9, 9, 5); __PYX_ERR(0, 1518, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgeqrf", 1, 9, 9, 6); __PYX_ERR(0, 1518, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgeqrf", 1, 9, 9, 7); __PYX_ERR(0, 1518, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgeqrf", 1, 9, 9, 8); __PYX_ERR(0, 1518, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sgeqrf") < 0)) __PYX_ERR(0, 1518, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1518, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1518, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1518, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1518, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1518, __pyx_L3_error)
    __pyx_v_tau = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_tau == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1519, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1519, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1519, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1519, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sgeqrf", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1518, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgeqrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_94sgeqrf(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_94sgeqrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgeqrf", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgeqrf(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgeqrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1528
 *     check_status(status)
 * 
 * cpdef dgeqrf(intptr_t handle, int m, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_97dgeqrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgeqrf(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgeqrf", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1530
 * cpdef dgeqrf(intptr_t handle, int m, int n, size_t A, int lda,
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDgeqrf(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1531
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgeqrf(
 *             <Handle>handle, m, n, <double*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1532
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDgeqrf(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, <double*>A, lda,
 *             <double*>tau, <double*>work, lwork,
 */
        __pyx_v_status = cusolverDnDgeqrf(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, ((double *)__pyx_v_A), __pyx_v_lda, ((double *)__pyx_v_tau), ((double *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1531
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgeqrf(
 *             <Handle>handle, m, n, <double*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1536
 *             <double*>tau, <double*>work, lwork,
 *             <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef cgeqrf(intptr_t handle, int m, int n, size_t A, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1536, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1528
 *     check_status(status)
 * 
 * cpdef dgeqrf(intptr_t handle, int m, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgeqrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_97dgeqrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_96dgeqrf[] = "dgeqrf(intptr_t handle, int m, int n, size_t A, int lda, size_t tau, size_t work, int lwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_97dgeqrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_tau;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dgeqrf (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_tau,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_devInfo,0};
    PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgeqrf", 1, 9, 9, 1); __PYX_ERR(0, 1528, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgeqrf", 1, 9, 9, 2); __PYX_ERR(0, 1528, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgeqrf", 1, 9, 9, 3); __PYX_ERR(0, 1528, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgeqrf", 1, 9, 9, 4); __PYX_ERR(0, 1528, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tau)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgeqrf", 1, 9, 9, 5); __PYX_ERR(0, 1528, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgeqrf", 1, 9, 9, 6); __PYX_ERR(0, 1528, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgeqrf", 1, 9, 9, 7); __PYX_ERR(0, 1528, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgeqrf", 1, 9, 9, 8); __PYX_ERR(0, 1528, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dgeqrf") < 0)) __PYX_ERR(0, 1528, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1528, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1528, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1528, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1528, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1528, __pyx_L3_error)
    __pyx_v_tau = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_tau == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1529, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1529, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1529, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1529, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dgeqrf", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1528, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgeqrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_96dgeqrf(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_96dgeqrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgeqrf", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgeqrf(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgeqrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1538
 *     check_status(status)
 * 
 * cpdef cgeqrf(intptr_t handle, int m, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_99cgeqrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgeqrf(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgeqrf", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1540
 * cpdef cgeqrf(intptr_t handle, int m, int n, size_t A, int lda,
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCgeqrf(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1540, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1541
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgeqrf(
 *             <Handle>handle, m, n, <cuComplex*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1542
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCgeqrf(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, <cuComplex*>A, lda,
 *             <cuComplex*>tau, <cuComplex*>work, lwork,
 */
        __pyx_v_status = cusolverDnCgeqrf(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, ((cuComplex *)__pyx_v_A), __pyx_v_lda, ((cuComplex *)__pyx_v_tau), ((cuComplex *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1541
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgeqrf(
 *             <Handle>handle, m, n, <cuComplex*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1546
 *             <cuComplex*>tau, <cuComplex*>work, lwork,
 *             <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef zgeqrf(intptr_t handle, int m, int n, size_t A, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1538
 *     check_status(status)
 * 
 * cpdef cgeqrf(intptr_t handle, int m, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgeqrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_99cgeqrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_98cgeqrf[] = "cgeqrf(intptr_t handle, int m, int n, size_t A, int lda, size_t tau, size_t work, int lwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_99cgeqrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_tau;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cgeqrf (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_tau,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_devInfo,0};
    PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgeqrf", 1, 9, 9, 1); __PYX_ERR(0, 1538, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgeqrf", 1, 9, 9, 2); __PYX_ERR(0, 1538, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgeqrf", 1, 9, 9, 3); __PYX_ERR(0, 1538, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgeqrf", 1, 9, 9, 4); __PYX_ERR(0, 1538, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tau)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgeqrf", 1, 9, 9, 5); __PYX_ERR(0, 1538, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgeqrf", 1, 9, 9, 6); __PYX_ERR(0, 1538, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgeqrf", 1, 9, 9, 7); __PYX_ERR(0, 1538, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgeqrf", 1, 9, 9, 8); __PYX_ERR(0, 1538, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cgeqrf") < 0)) __PYX_ERR(0, 1538, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1538, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1538, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1538, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1538, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1538, __pyx_L3_error)
    __pyx_v_tau = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_tau == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1539, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1539, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1539, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1539, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cgeqrf", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1538, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgeqrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_98cgeqrf(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_98cgeqrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgeqrf", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgeqrf(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1538, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgeqrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1548
 *     check_status(status)
 * 
 * cpdef zgeqrf(intptr_t handle, int m, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_101zgeqrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgeqrf(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgeqrf", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1550
 * cpdef zgeqrf(intptr_t handle, int m, int n, size_t A, int lda,
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZgeqrf(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1550, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1551
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgeqrf(
 *             <Handle>handle, m, n, <cuDoubleComplex*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1552
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZgeqrf(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, <cuDoubleComplex*>A, lda,
 *             <cuDoubleComplex*>tau, <cuDoubleComplex*>work, lwork,
 */
        __pyx_v_status = cusolverDnZgeqrf(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, ((cuDoubleComplex *)__pyx_v_A), __pyx_v_lda, ((cuDoubleComplex *)__pyx_v_tau), ((cuDoubleComplex *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1551
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgeqrf(
 *             <Handle>handle, m, n, <cuDoubleComplex*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1556
 *             <cuDoubleComplex*>tau, <cuDoubleComplex*>work, lwork,
 *             <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1556, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1548
 *     check_status(status)
 * 
 * cpdef zgeqrf(intptr_t handle, int m, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgeqrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_101zgeqrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_100zgeqrf[] = "zgeqrf(intptr_t handle, int m, int n, size_t A, int lda, size_t tau, size_t work, int lwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_101zgeqrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_tau;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zgeqrf (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_tau,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_devInfo,0};
    PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgeqrf", 1, 9, 9, 1); __PYX_ERR(0, 1548, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgeqrf", 1, 9, 9, 2); __PYX_ERR(0, 1548, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgeqrf", 1, 9, 9, 3); __PYX_ERR(0, 1548, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgeqrf", 1, 9, 9, 4); __PYX_ERR(0, 1548, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tau)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgeqrf", 1, 9, 9, 5); __PYX_ERR(0, 1548, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgeqrf", 1, 9, 9, 6); __PYX_ERR(0, 1548, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgeqrf", 1, 9, 9, 7); __PYX_ERR(0, 1548, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgeqrf", 1, 9, 9, 8); __PYX_ERR(0, 1548, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zgeqrf") < 0)) __PYX_ERR(0, 1548, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1548, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1548, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1548, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1548, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1548, __pyx_L3_error)
    __pyx_v_tau = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_tau == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1549, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1549, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1549, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1549, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zgeqrf", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1548, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgeqrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_100zgeqrf(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_100zgeqrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgeqrf", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgeqrf(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgeqrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1560
 * 
 * # Generate unitary matrix Q from QR factorization
 * cpdef int sorgqr_bufferSize(intptr_t handle, int m, int n, int k,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda, size_t tau) except? -1:
 *     cdef int lwork
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_103sorgqr_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sorgqr_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sorgqr_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1563
 *                             size_t A, int lda, size_t tau) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSorgqr_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1563, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1564
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSorgqr_bufferSize(
 *             <Handle>handle, m, n, k, <const float*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1565
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSorgqr_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, k, <const float*>A, lda,
 *             <const float*>tau, &lwork)
 */
        __pyx_v_status = cusolverDnSorgqr_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_k, ((float const *)__pyx_v_A), __pyx_v_lda, ((float const *)__pyx_v_tau), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1564
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSorgqr_bufferSize(
 *             <Handle>handle, m, n, k, <const float*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1568
 *             <Handle>handle, m, n, k, <const float*>A, lda,
 *             <const float*>tau, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1568, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1569
 *             <const float*>tau, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int dorgqr_bufferSize(intptr_t handle, int m, int n, int k,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1560
 * 
 * # Generate unitary matrix Q from QR factorization
 * cpdef int sorgqr_bufferSize(intptr_t handle, int m, int n, int k,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda, size_t tau) except? -1:
 *     cdef int lwork
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sorgqr_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_103sorgqr_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_102sorgqr_bufferSize[] = "sorgqr_bufferSize(intptr_t handle, int m, int n, int k, size_t A, int lda, size_t tau) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_103sorgqr_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_k;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_tau;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sorgqr_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_k,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_tau,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sorgqr_bufferSize", 1, 7, 7, 1); __PYX_ERR(0, 1560, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sorgqr_bufferSize", 1, 7, 7, 2); __PYX_ERR(0, 1560, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_k)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sorgqr_bufferSize", 1, 7, 7, 3); __PYX_ERR(0, 1560, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sorgqr_bufferSize", 1, 7, 7, 4); __PYX_ERR(0, 1560, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sorgqr_bufferSize", 1, 7, 7, 5); __PYX_ERR(0, 1560, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tau)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sorgqr_bufferSize", 1, 7, 7, 6); __PYX_ERR(0, 1560, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sorgqr_bufferSize") < 0)) __PYX_ERR(0, 1560, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1560, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1560, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1560, __pyx_L3_error)
    __pyx_v_k = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1560, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1561, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1561, __pyx_L3_error)
    __pyx_v_tau = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_tau == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1561, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sorgqr_bufferSize", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1560, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sorgqr_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_102sorgqr_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_102sorgqr_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sorgqr_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sorgqr_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1560, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sorgqr_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1571
 *     return lwork
 * 
 * cpdef int dorgqr_bufferSize(intptr_t handle, int m, int n, int k,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda, size_t tau) except? -1:
 *     cdef int lwork
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_105dorgqr_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dorgqr_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dorgqr_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1574
 *                             size_t A, int lda, size_t tau) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDorgqr_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1575
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDorgqr_bufferSize(
 *             <Handle>handle, m, n, k, <const double*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1576
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDorgqr_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, k, <const double*>A, lda,
 *             <const double*>tau, &lwork)
 */
        __pyx_v_status = cusolverDnDorgqr_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_k, ((double const *)__pyx_v_A), __pyx_v_lda, ((double const *)__pyx_v_tau), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1575
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDorgqr_bufferSize(
 *             <Handle>handle, m, n, k, <const double*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1579
 *             <Handle>handle, m, n, k, <const double*>A, lda,
 *             <const double*>tau, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1579, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1580
 *             <const double*>tau, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int cungqr_bufferSize(intptr_t handle, int m, int n, int k,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1571
 *     return lwork
 * 
 * cpdef int dorgqr_bufferSize(intptr_t handle, int m, int n, int k,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda, size_t tau) except? -1:
 *     cdef int lwork
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dorgqr_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_105dorgqr_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_104dorgqr_bufferSize[] = "dorgqr_bufferSize(intptr_t handle, int m, int n, int k, size_t A, int lda, size_t tau) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_105dorgqr_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_k;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_tau;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dorgqr_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_k,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_tau,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dorgqr_bufferSize", 1, 7, 7, 1); __PYX_ERR(0, 1571, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dorgqr_bufferSize", 1, 7, 7, 2); __PYX_ERR(0, 1571, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_k)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dorgqr_bufferSize", 1, 7, 7, 3); __PYX_ERR(0, 1571, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dorgqr_bufferSize", 1, 7, 7, 4); __PYX_ERR(0, 1571, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dorgqr_bufferSize", 1, 7, 7, 5); __PYX_ERR(0, 1571, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tau)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dorgqr_bufferSize", 1, 7, 7, 6); __PYX_ERR(0, 1571, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dorgqr_bufferSize") < 0)) __PYX_ERR(0, 1571, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1571, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1571, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1571, __pyx_L3_error)
    __pyx_v_k = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1571, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1572, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1572, __pyx_L3_error)
    __pyx_v_tau = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_tau == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1572, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dorgqr_bufferSize", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1571, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dorgqr_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_104dorgqr_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_104dorgqr_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dorgqr_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dorgqr_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1571, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1571, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dorgqr_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1582
 *     return lwork
 * 
 * cpdef int cungqr_bufferSize(intptr_t handle, int m, int n, int k,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda, size_t tau) except? -1:
 *     cdef int lwork
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_107cungqr_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cungqr_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cungqr_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1585
 *                             size_t A, int lda, size_t tau) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCungqr_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1586
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCungqr_bufferSize(
 *             <Handle>handle, m, n, k, <const cuComplex*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1587
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCungqr_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, k, <const cuComplex*>A, lda,
 *             <const cuComplex*>tau, &lwork)
 */
        __pyx_v_status = cusolverDnCungqr_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_k, ((cuComplex const *)__pyx_v_A), __pyx_v_lda, ((cuComplex const *)__pyx_v_tau), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1586
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCungqr_bufferSize(
 *             <Handle>handle, m, n, k, <const cuComplex*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1590
 *             <Handle>handle, m, n, k, <const cuComplex*>A, lda,
 *             <const cuComplex*>tau, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1591
 *             <const cuComplex*>tau, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int zungqr_bufferSize(intptr_t handle, int m, int n, int k,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1582
 *     return lwork
 * 
 * cpdef int cungqr_bufferSize(intptr_t handle, int m, int n, int k,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda, size_t tau) except? -1:
 *     cdef int lwork
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cungqr_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_107cungqr_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_106cungqr_bufferSize[] = "cungqr_bufferSize(intptr_t handle, int m, int n, int k, size_t A, int lda, size_t tau) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_107cungqr_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_k;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_tau;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cungqr_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_k,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_tau,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cungqr_bufferSize", 1, 7, 7, 1); __PYX_ERR(0, 1582, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cungqr_bufferSize", 1, 7, 7, 2); __PYX_ERR(0, 1582, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_k)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cungqr_bufferSize", 1, 7, 7, 3); __PYX_ERR(0, 1582, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cungqr_bufferSize", 1, 7, 7, 4); __PYX_ERR(0, 1582, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cungqr_bufferSize", 1, 7, 7, 5); __PYX_ERR(0, 1582, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tau)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cungqr_bufferSize", 1, 7, 7, 6); __PYX_ERR(0, 1582, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cungqr_bufferSize") < 0)) __PYX_ERR(0, 1582, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1582, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1582, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1582, __pyx_L3_error)
    __pyx_v_k = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1582, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1583, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1583, __pyx_L3_error)
    __pyx_v_tau = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_tau == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1583, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cungqr_bufferSize", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1582, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cungqr_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_106cungqr_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_106cungqr_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cungqr_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cungqr_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1582, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1582, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cungqr_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1593
 *     return lwork
 * 
 * cpdef int zungqr_bufferSize(intptr_t handle, int m, int n, int k,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda, size_t tau) except? -1:
 *     cdef int lwork
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_109zungqr_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zungqr_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zungqr_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1596
 *                             size_t A, int lda, size_t tau) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZungqr_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1597
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZungqr_bufferSize(
 *             <Handle>handle, m, n, k, <const cuDoubleComplex*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1598
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZungqr_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, k, <const cuDoubleComplex*>A, lda,
 *             <const cuDoubleComplex*>tau, &lwork)
 */
        __pyx_v_status = cusolverDnZungqr_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_k, ((cuDoubleComplex const *)__pyx_v_A), __pyx_v_lda, ((cuDoubleComplex const *)__pyx_v_tau), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1597
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZungqr_bufferSize(
 *             <Handle>handle, m, n, k, <const cuDoubleComplex*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1601
 *             <Handle>handle, m, n, k, <const cuDoubleComplex*>A, lda,
 *             <const cuDoubleComplex*>tau, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1601, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1602
 *             <const cuDoubleComplex*>tau, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef sorgqr(intptr_t handle, int m, int n, int k, size_t A, int lda,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1593
 *     return lwork
 * 
 * cpdef int zungqr_bufferSize(intptr_t handle, int m, int n, int k,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda, size_t tau) except? -1:
 *     cdef int lwork
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zungqr_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_109zungqr_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_108zungqr_bufferSize[] = "zungqr_bufferSize(intptr_t handle, int m, int n, int k, size_t A, int lda, size_t tau) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_109zungqr_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_k;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_tau;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zungqr_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_k,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_tau,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zungqr_bufferSize", 1, 7, 7, 1); __PYX_ERR(0, 1593, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zungqr_bufferSize", 1, 7, 7, 2); __PYX_ERR(0, 1593, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_k)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zungqr_bufferSize", 1, 7, 7, 3); __PYX_ERR(0, 1593, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zungqr_bufferSize", 1, 7, 7, 4); __PYX_ERR(0, 1593, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zungqr_bufferSize", 1, 7, 7, 5); __PYX_ERR(0, 1593, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tau)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zungqr_bufferSize", 1, 7, 7, 6); __PYX_ERR(0, 1593, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zungqr_bufferSize") < 0)) __PYX_ERR(0, 1593, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1593, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1593, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1593, __pyx_L3_error)
    __pyx_v_k = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1593, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1594, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1594, __pyx_L3_error)
    __pyx_v_tau = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_tau == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1594, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zungqr_bufferSize", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1593, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zungqr_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_108zungqr_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_108zungqr_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zungqr_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zungqr_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1593, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zungqr_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1604
 *     return lwork
 * 
 * cpdef sorgqr(intptr_t handle, int m, int n, int k, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_111sorgqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sorgqr(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sorgqr", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1606
 * cpdef sorgqr(intptr_t handle, int m, int n, int k, size_t A, int lda,
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSorgqr(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1606, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1607
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSorgqr(
 *             <Handle>handle, m, n, k, <float*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1608
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSorgqr(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, k, <float*>A, lda,
 *             <const float*>tau, <float*>work, lwork,
 */
        __pyx_v_status = cusolverDnSorgqr(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_k, ((float *)__pyx_v_A), __pyx_v_lda, ((float const *)__pyx_v_tau), ((float *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1607
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSorgqr(
 *             <Handle>handle, m, n, k, <float*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1612
 *             <const float*>tau, <float*>work, lwork,
 *             <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef dorgqr(intptr_t handle, int m, int n, int k, size_t A, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1612, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1604
 *     return lwork
 * 
 * cpdef sorgqr(intptr_t handle, int m, int n, int k, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sorgqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_111sorgqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_110sorgqr[] = "sorgqr(intptr_t handle, int m, int n, int k, size_t A, int lda, size_t tau, size_t work, int lwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_111sorgqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_k;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_tau;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sorgqr (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_k,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_tau,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_devInfo,0};
    PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sorgqr", 1, 10, 10, 1); __PYX_ERR(0, 1604, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sorgqr", 1, 10, 10, 2); __PYX_ERR(0, 1604, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_k)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sorgqr", 1, 10, 10, 3); __PYX_ERR(0, 1604, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sorgqr", 1, 10, 10, 4); __PYX_ERR(0, 1604, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sorgqr", 1, 10, 10, 5); __PYX_ERR(0, 1604, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tau)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sorgqr", 1, 10, 10, 6); __PYX_ERR(0, 1604, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sorgqr", 1, 10, 10, 7); __PYX_ERR(0, 1604, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sorgqr", 1, 10, 10, 8); __PYX_ERR(0, 1604, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sorgqr", 1, 10, 10, 9); __PYX_ERR(0, 1604, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sorgqr") < 0)) __PYX_ERR(0, 1604, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 10) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1604, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1604, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1604, __pyx_L3_error)
    __pyx_v_k = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1604, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1604, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1604, __pyx_L3_error)
    __pyx_v_tau = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_tau == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1605, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1605, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1605, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1605, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sorgqr", 1, 10, 10, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1604, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sorgqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_110sorgqr(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_110sorgqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sorgqr", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sorgqr(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sorgqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1614
 *     check_status(status)
 * 
 * cpdef dorgqr(intptr_t handle, int m, int n, int k, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_113dorgqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dorgqr(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dorgqr", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1616
 * cpdef dorgqr(intptr_t handle, int m, int n, int k, size_t A, int lda,
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDorgqr(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1616, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1617
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDorgqr(
 *             <Handle>handle, m, n, k, <double*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1618
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDorgqr(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, k, <double*>A, lda,
 *             <const double*>tau, <double*>work, lwork,
 */
        __pyx_v_status = cusolverDnDorgqr(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_k, ((double *)__pyx_v_A), __pyx_v_lda, ((double const *)__pyx_v_tau), ((double *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1617
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDorgqr(
 *             <Handle>handle, m, n, k, <double*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1622
 *             <const double*>tau, <double*>work, lwork,
 *             <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef cungqr(intptr_t handle, int m, int n, int k, size_t A, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1622, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1614
 *     check_status(status)
 * 
 * cpdef dorgqr(intptr_t handle, int m, int n, int k, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dorgqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_113dorgqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_112dorgqr[] = "dorgqr(intptr_t handle, int m, int n, int k, size_t A, int lda, size_t tau, size_t work, int lwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_113dorgqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_k;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_tau;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dorgqr (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_k,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_tau,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_devInfo,0};
    PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dorgqr", 1, 10, 10, 1); __PYX_ERR(0, 1614, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dorgqr", 1, 10, 10, 2); __PYX_ERR(0, 1614, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_k)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dorgqr", 1, 10, 10, 3); __PYX_ERR(0, 1614, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dorgqr", 1, 10, 10, 4); __PYX_ERR(0, 1614, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dorgqr", 1, 10, 10, 5); __PYX_ERR(0, 1614, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tau)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dorgqr", 1, 10, 10, 6); __PYX_ERR(0, 1614, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dorgqr", 1, 10, 10, 7); __PYX_ERR(0, 1614, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dorgqr", 1, 10, 10, 8); __PYX_ERR(0, 1614, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dorgqr", 1, 10, 10, 9); __PYX_ERR(0, 1614, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dorgqr") < 0)) __PYX_ERR(0, 1614, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 10) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1614, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1614, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1614, __pyx_L3_error)
    __pyx_v_k = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1614, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1614, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1614, __pyx_L3_error)
    __pyx_v_tau = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_tau == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1615, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1615, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1615, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1615, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dorgqr", 1, 10, 10, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1614, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dorgqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_112dorgqr(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_112dorgqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dorgqr", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dorgqr(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dorgqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1624
 *     check_status(status)
 * 
 * cpdef cungqr(intptr_t handle, int m, int n, int k, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_115cungqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cungqr(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cungqr", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1626
 * cpdef cungqr(intptr_t handle, int m, int n, int k, size_t A, int lda,
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCungqr(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1626, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1627
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCungqr(
 *             <Handle>handle, m, n, k, <cuComplex*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1628
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCungqr(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, k, <cuComplex*>A, lda,
 *             <const cuComplex*>tau, <cuComplex*>work, lwork,
 */
        __pyx_v_status = cusolverDnCungqr(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_k, ((cuComplex *)__pyx_v_A), __pyx_v_lda, ((cuComplex const *)__pyx_v_tau), ((cuComplex *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1627
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCungqr(
 *             <Handle>handle, m, n, k, <cuComplex*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1632
 *             <const cuComplex*>tau, <cuComplex*>work, lwork,
 *             <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef zungqr(intptr_t handle, int m, int n, int k, size_t A, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1632, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1624
 *     check_status(status)
 * 
 * cpdef cungqr(intptr_t handle, int m, int n, int k, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cungqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_115cungqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_114cungqr[] = "cungqr(intptr_t handle, int m, int n, int k, size_t A, int lda, size_t tau, size_t work, int lwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_115cungqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_k;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_tau;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cungqr (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_k,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_tau,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_devInfo,0};
    PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cungqr", 1, 10, 10, 1); __PYX_ERR(0, 1624, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cungqr", 1, 10, 10, 2); __PYX_ERR(0, 1624, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_k)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cungqr", 1, 10, 10, 3); __PYX_ERR(0, 1624, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cungqr", 1, 10, 10, 4); __PYX_ERR(0, 1624, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cungqr", 1, 10, 10, 5); __PYX_ERR(0, 1624, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tau)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cungqr", 1, 10, 10, 6); __PYX_ERR(0, 1624, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cungqr", 1, 10, 10, 7); __PYX_ERR(0, 1624, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cungqr", 1, 10, 10, 8); __PYX_ERR(0, 1624, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cungqr", 1, 10, 10, 9); __PYX_ERR(0, 1624, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cungqr") < 0)) __PYX_ERR(0, 1624, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 10) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1624, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1624, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1624, __pyx_L3_error)
    __pyx_v_k = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1624, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1624, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1624, __pyx_L3_error)
    __pyx_v_tau = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_tau == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1625, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1625, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1625, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1625, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cungqr", 1, 10, 10, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1624, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cungqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_114cungqr(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_114cungqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cungqr", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cungqr(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1624, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cungqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1634
 *     check_status(status)
 * 
 * cpdef zungqr(intptr_t handle, int m, int n, int k, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_117zungqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zungqr(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zungqr", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1636
 * cpdef zungqr(intptr_t handle, int m, int n, int k, size_t A, int lda,
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZungqr(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1637
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZungqr(
 *             <Handle>handle, m, n, k, <cuDoubleComplex*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1638
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZungqr(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, k, <cuDoubleComplex*>A, lda,
 *             <const cuDoubleComplex*>tau, <cuDoubleComplex*>work, lwork,
 */
        __pyx_v_status = cusolverDnZungqr(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_k, ((cuDoubleComplex *)__pyx_v_A), __pyx_v_lda, ((cuDoubleComplex const *)__pyx_v_tau), ((cuDoubleComplex *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1637
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZungqr(
 *             <Handle>handle, m, n, k, <cuDoubleComplex*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1642
 *             <const cuDoubleComplex*>tau, <cuDoubleComplex*>work, lwork,
 *             <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1634
 *     check_status(status)
 * 
 * cpdef zungqr(intptr_t handle, int m, int n, int k, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t tau, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zungqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_117zungqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_116zungqr[] = "zungqr(intptr_t handle, int m, int n, int k, size_t A, int lda, size_t tau, size_t work, int lwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_117zungqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_k;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_tau;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zungqr (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_k,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_tau,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_devInfo,0};
    PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zungqr", 1, 10, 10, 1); __PYX_ERR(0, 1634, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zungqr", 1, 10, 10, 2); __PYX_ERR(0, 1634, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_k)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zungqr", 1, 10, 10, 3); __PYX_ERR(0, 1634, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zungqr", 1, 10, 10, 4); __PYX_ERR(0, 1634, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zungqr", 1, 10, 10, 5); __PYX_ERR(0, 1634, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tau)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zungqr", 1, 10, 10, 6); __PYX_ERR(0, 1634, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zungqr", 1, 10, 10, 7); __PYX_ERR(0, 1634, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zungqr", 1, 10, 10, 8); __PYX_ERR(0, 1634, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zungqr", 1, 10, 10, 9); __PYX_ERR(0, 1634, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zungqr") < 0)) __PYX_ERR(0, 1634, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 10) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1634, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1634, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1634, __pyx_L3_error)
    __pyx_v_k = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1634, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1634, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1634, __pyx_L3_error)
    __pyx_v_tau = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_tau == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1635, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1635, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1635, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1635, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zungqr", 1, 10, 10, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1634, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zungqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_116zungqr(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_116zungqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zungqr", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zungqr(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zungqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1646
 * 
 * # Compute Q**T*b in solve min||A*x = b||
 * cpdef int sormqr_bufferSize(intptr_t handle, int side, int trans,             # <<<<<<<<<<<<<<
 *                             int m, int n, int k, size_t A, int lda, size_t tau,
 *                             size_t C, int ldc) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_119sormqr_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sormqr_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sormqr_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1650
 *                             size_t C, int ldc) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSormqr_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1651
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSormqr_bufferSize(
 *             <Handle>handle, <SideMode>side, <Operation>trans, m, n, k,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1652
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSormqr_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <SideMode>side, <Operation>trans, m, n, k,
 *             <const float*>A, lda, <const float*>tau,
 */
        __pyx_v_status = cusolverDnSormqr_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cublasSideMode_t)__pyx_v_side), ((cublasOperation_t)__pyx_v_trans), __pyx_v_m, __pyx_v_n, __pyx_v_k, ((float const *)__pyx_v_A), __pyx_v_lda, ((float const *)__pyx_v_tau), ((float *)__pyx_v_C), __pyx_v_ldc, (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1651
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSormqr_bufferSize(
 *             <Handle>handle, <SideMode>side, <Operation>trans, m, n, k,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1656
 *             <const float*>A, lda, <const float*>tau,
 *             <float*>C, ldc, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1656, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1657
 *             <float*>C, ldc, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int dormqr_bufferSize(intptr_t handle, int side, int trans,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1646
 * 
 * # Compute Q**T*b in solve min||A*x = b||
 * cpdef int sormqr_bufferSize(intptr_t handle, int side, int trans,             # <<<<<<<<<<<<<<
 *                             int m, int n, int k, size_t A, int lda, size_t tau,
 *                             size_t C, int ldc) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sormqr_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_119sormqr_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_118sormqr_bufferSize[] = "sormqr_bufferSize(intptr_t handle, int side, int trans, int m, int n, int k, size_t A, int lda, size_t tau, size_t C, int ldc) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_119sormqr_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_side;
  int __pyx_v_trans;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_k;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_tau;
  size_t __pyx_v_C;
  int __pyx_v_ldc;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sormqr_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_side,&__pyx_n_s_trans,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_k,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_tau,&__pyx_n_s_C,&__pyx_n_s_ldc,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_side)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sormqr_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 1646, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_trans)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sormqr_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 1646, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sormqr_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 1646, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sormqr_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 1646, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_k)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sormqr_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 1646, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sormqr_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 1646, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sormqr_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 1646, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tau)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sormqr_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 1646, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_C)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sormqr_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 1646, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldc)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sormqr_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 1646, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sormqr_bufferSize") < 0)) __PYX_ERR(0, 1646, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1646, __pyx_L3_error)
    __pyx_v_side = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_side == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1646, __pyx_L3_error)
    __pyx_v_trans = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_trans == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1646, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1647, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1647, __pyx_L3_error)
    __pyx_v_k = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1647, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1647, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1647, __pyx_L3_error)
    __pyx_v_tau = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_tau == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1647, __pyx_L3_error)
    __pyx_v_C = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_C == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1648, __pyx_L3_error)
    __pyx_v_ldc = __Pyx_PyInt_As_int(values[10]); if (unlikely((__pyx_v_ldc == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1648, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sormqr_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1646, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sormqr_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_118sormqr_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_side, __pyx_v_trans, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_C, __pyx_v_ldc);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_118sormqr_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sormqr_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sormqr_bufferSize(__pyx_v_handle, __pyx_v_side, __pyx_v_trans, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_C, __pyx_v_ldc, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1646, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sormqr_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1659
 *     return lwork
 * 
 * cpdef int dormqr_bufferSize(intptr_t handle, int side, int trans,             # <<<<<<<<<<<<<<
 *                             int m, int n, int k, size_t A, int lda, size_t tau,
 *                             size_t C, int ldc) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_121dormqr_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dormqr_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dormqr_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1663
 *                             size_t C, int ldc) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDormqr_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1663, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1664
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDormqr_bufferSize(
 *             <Handle>handle, <SideMode>side, <Operation>trans, m, n, k,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1665
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDormqr_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <SideMode>side, <Operation>trans, m, n, k,
 *             <const double*>A, lda, <const double*>tau,
 */
        __pyx_v_status = cusolverDnDormqr_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cublasSideMode_t)__pyx_v_side), ((cublasOperation_t)__pyx_v_trans), __pyx_v_m, __pyx_v_n, __pyx_v_k, ((double const *)__pyx_v_A), __pyx_v_lda, ((double const *)__pyx_v_tau), ((double *)__pyx_v_C), __pyx_v_ldc, (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1664
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDormqr_bufferSize(
 *             <Handle>handle, <SideMode>side, <Operation>trans, m, n, k,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1669
 *             <const double*>A, lda, <const double*>tau,
 *             <double*>C, ldc, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1669, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1670
 *             <double*>C, ldc, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int cunmqr_bufferSize(intptr_t handle, int side, int trans,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1659
 *     return lwork
 * 
 * cpdef int dormqr_bufferSize(intptr_t handle, int side, int trans,             # <<<<<<<<<<<<<<
 *                             int m, int n, int k, size_t A, int lda, size_t tau,
 *                             size_t C, int ldc) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dormqr_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_121dormqr_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_120dormqr_bufferSize[] = "dormqr_bufferSize(intptr_t handle, int side, int trans, int m, int n, int k, size_t A, int lda, size_t tau, size_t C, int ldc) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_121dormqr_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_side;
  int __pyx_v_trans;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_k;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_tau;
  size_t __pyx_v_C;
  int __pyx_v_ldc;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dormqr_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_side,&__pyx_n_s_trans,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_k,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_tau,&__pyx_n_s_C,&__pyx_n_s_ldc,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_side)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dormqr_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 1659, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_trans)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dormqr_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 1659, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dormqr_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 1659, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dormqr_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 1659, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_k)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dormqr_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 1659, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dormqr_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 1659, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dormqr_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 1659, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tau)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dormqr_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 1659, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_C)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dormqr_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 1659, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldc)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dormqr_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 1659, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dormqr_bufferSize") < 0)) __PYX_ERR(0, 1659, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1659, __pyx_L3_error)
    __pyx_v_side = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_side == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1659, __pyx_L3_error)
    __pyx_v_trans = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_trans == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1659, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1660, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1660, __pyx_L3_error)
    __pyx_v_k = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1660, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1660, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1660, __pyx_L3_error)
    __pyx_v_tau = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_tau == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1660, __pyx_L3_error)
    __pyx_v_C = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_C == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1661, __pyx_L3_error)
    __pyx_v_ldc = __Pyx_PyInt_As_int(values[10]); if (unlikely((__pyx_v_ldc == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1661, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dormqr_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1659, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dormqr_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_120dormqr_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_side, __pyx_v_trans, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_C, __pyx_v_ldc);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_120dormqr_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dormqr_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dormqr_bufferSize(__pyx_v_handle, __pyx_v_side, __pyx_v_trans, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_C, __pyx_v_ldc, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1659, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1659, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dormqr_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1672
 *     return lwork
 * 
 * cpdef int cunmqr_bufferSize(intptr_t handle, int side, int trans,             # <<<<<<<<<<<<<<
 *                             int m, int n, int k, size_t A, int lda, size_t tau,
 *                             size_t C, int ldc) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_123cunmqr_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cunmqr_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cunmqr_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1676
 *                             size_t C, int ldc) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCunmqr_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1676, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1677
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCunmqr_bufferSize(
 *             <Handle>handle, <SideMode>side, <Operation>trans, m, n, k,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1678
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCunmqr_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <SideMode>side, <Operation>trans, m, n, k,
 *             <const cuComplex*>A, lda, <const cuComplex*>tau,
 */
        __pyx_v_status = cusolverDnCunmqr_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cublasSideMode_t)__pyx_v_side), ((cublasOperation_t)__pyx_v_trans), __pyx_v_m, __pyx_v_n, __pyx_v_k, ((cuComplex const *)__pyx_v_A), __pyx_v_lda, ((cuComplex const *)__pyx_v_tau), ((cuComplex *)__pyx_v_C), __pyx_v_ldc, (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1677
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCunmqr_bufferSize(
 *             <Handle>handle, <SideMode>side, <Operation>trans, m, n, k,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1682
 *             <const cuComplex*>A, lda, <const cuComplex*>tau,
 *             <cuComplex*>C, ldc, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1682, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1683
 *             <cuComplex*>C, ldc, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int zunmqr_bufferSize(intptr_t handle, int side, int trans,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1672
 *     return lwork
 * 
 * cpdef int cunmqr_bufferSize(intptr_t handle, int side, int trans,             # <<<<<<<<<<<<<<
 *                             int m, int n, int k, size_t A, int lda, size_t tau,
 *                             size_t C, int ldc) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cunmqr_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_123cunmqr_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_122cunmqr_bufferSize[] = "cunmqr_bufferSize(intptr_t handle, int side, int trans, int m, int n, int k, size_t A, int lda, size_t tau, size_t C, int ldc) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_123cunmqr_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_side;
  int __pyx_v_trans;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_k;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_tau;
  size_t __pyx_v_C;
  int __pyx_v_ldc;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cunmqr_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_side,&__pyx_n_s_trans,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_k,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_tau,&__pyx_n_s_C,&__pyx_n_s_ldc,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_side)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cunmqr_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 1672, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_trans)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cunmqr_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 1672, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cunmqr_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 1672, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cunmqr_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 1672, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_k)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cunmqr_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 1672, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cunmqr_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 1672, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cunmqr_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 1672, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tau)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cunmqr_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 1672, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_C)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cunmqr_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 1672, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldc)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cunmqr_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 1672, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cunmqr_bufferSize") < 0)) __PYX_ERR(0, 1672, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1672, __pyx_L3_error)
    __pyx_v_side = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_side == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1672, __pyx_L3_error)
    __pyx_v_trans = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_trans == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1672, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1673, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1673, __pyx_L3_error)
    __pyx_v_k = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1673, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1673, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1673, __pyx_L3_error)
    __pyx_v_tau = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_tau == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1673, __pyx_L3_error)
    __pyx_v_C = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_C == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1674, __pyx_L3_error)
    __pyx_v_ldc = __Pyx_PyInt_As_int(values[10]); if (unlikely((__pyx_v_ldc == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1674, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cunmqr_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1672, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cunmqr_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_122cunmqr_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_side, __pyx_v_trans, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_C, __pyx_v_ldc);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_122cunmqr_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cunmqr_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cunmqr_bufferSize(__pyx_v_handle, __pyx_v_side, __pyx_v_trans, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_C, __pyx_v_ldc, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1672, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1672, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cunmqr_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1685
 *     return lwork
 * 
 * cpdef int zunmqr_bufferSize(intptr_t handle, int side, int trans,             # <<<<<<<<<<<<<<
 *                             int m, int n, int k, size_t A, int lda, size_t tau,
 *                             size_t C, int ldc) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_125zunmqr_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zunmqr_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zunmqr_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1689
 *                             size_t C, int ldc) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZunmqr_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1689, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1690
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZunmqr_bufferSize(
 *             <Handle>handle, <SideMode>side, <Operation>trans, m, n, k,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1691
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZunmqr_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <SideMode>side, <Operation>trans, m, n, k,
 *             <const cuDoubleComplex*>A, lda, <const cuDoubleComplex*>tau,
 */
        __pyx_v_status = cusolverDnZunmqr_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cublasSideMode_t)__pyx_v_side), ((cublasOperation_t)__pyx_v_trans), __pyx_v_m, __pyx_v_n, __pyx_v_k, ((cuDoubleComplex const *)__pyx_v_A), __pyx_v_lda, ((cuDoubleComplex const *)__pyx_v_tau), ((cuDoubleComplex *)__pyx_v_C), __pyx_v_ldc, (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1690
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZunmqr_bufferSize(
 *             <Handle>handle, <SideMode>side, <Operation>trans, m, n, k,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1695
 *             <const cuDoubleComplex*>A, lda, <const cuDoubleComplex*>tau,
 *             <cuDoubleComplex*>C, ldc, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1695, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1696
 *             <cuDoubleComplex*>C, ldc, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1685
 *     return lwork
 * 
 * cpdef int zunmqr_bufferSize(intptr_t handle, int side, int trans,             # <<<<<<<<<<<<<<
 *                             int m, int n, int k, size_t A, int lda, size_t tau,
 *                             size_t C, int ldc) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zunmqr_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_125zunmqr_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_124zunmqr_bufferSize[] = "zunmqr_bufferSize(intptr_t handle, int side, int trans, int m, int n, int k, size_t A, int lda, size_t tau, size_t C, int ldc) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_125zunmqr_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_side;
  int __pyx_v_trans;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_k;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_tau;
  size_t __pyx_v_C;
  int __pyx_v_ldc;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zunmqr_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_side,&__pyx_n_s_trans,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_k,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_tau,&__pyx_n_s_C,&__pyx_n_s_ldc,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_side)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zunmqr_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 1685, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_trans)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zunmqr_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 1685, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zunmqr_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 1685, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zunmqr_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 1685, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_k)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zunmqr_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 1685, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zunmqr_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 1685, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zunmqr_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 1685, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tau)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zunmqr_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 1685, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_C)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zunmqr_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 1685, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldc)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zunmqr_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 1685, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zunmqr_bufferSize") < 0)) __PYX_ERR(0, 1685, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1685, __pyx_L3_error)
    __pyx_v_side = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_side == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1685, __pyx_L3_error)
    __pyx_v_trans = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_trans == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1685, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1686, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1686, __pyx_L3_error)
    __pyx_v_k = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1686, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1686, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1686, __pyx_L3_error)
    __pyx_v_tau = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_tau == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1686, __pyx_L3_error)
    __pyx_v_C = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_C == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1687, __pyx_L3_error)
    __pyx_v_ldc = __Pyx_PyInt_As_int(values[10]); if (unlikely((__pyx_v_ldc == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1687, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zunmqr_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1685, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zunmqr_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_124zunmqr_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_side, __pyx_v_trans, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_C, __pyx_v_ldc);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_124zunmqr_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zunmqr_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zunmqr_bufferSize(__pyx_v_handle, __pyx_v_side, __pyx_v_trans, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_C, __pyx_v_ldc, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1685, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1685, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zunmqr_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1699
 * 
 * 
 * cpdef sormqr(intptr_t handle, int side, int trans,             # <<<<<<<<<<<<<<
 *              int m, int n, int k, size_t A, int lda, size_t tau,
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_127sormqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sormqr(intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sormqr", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1702
 *              int m, int n, int k, size_t A, int lda, size_t tau,
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSormqr(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1702, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1703
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSormqr(
 *             <Handle>handle, <SideMode>side, <Operation>trans, m, n, k,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1704
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSormqr(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <SideMode>side, <Operation>trans, m, n, k,
 *             <const float*>A, lda, <const float*>tau,
 */
        __pyx_v_status = cusolverDnSormqr(((cusolverDnHandle_t)__pyx_v_handle), ((cublasSideMode_t)__pyx_v_side), ((cublasOperation_t)__pyx_v_trans), __pyx_v_m, __pyx_v_n, __pyx_v_k, ((float const *)__pyx_v_A), __pyx_v_lda, ((float const *)__pyx_v_tau), ((float *)__pyx_v_C), __pyx_v_ldc, ((float *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1703
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSormqr(
 *             <Handle>handle, <SideMode>side, <Operation>trans, m, n, k,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1709
 *             <float*>C, ldc,
 *             <float*>work, lwork, <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef dormqr(intptr_t handle, int side, int trans,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1709, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1699
 * 
 * 
 * cpdef sormqr(intptr_t handle, int side, int trans,             # <<<<<<<<<<<<<<
 *              int m, int n, int k, size_t A, int lda, size_t tau,
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sormqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_127sormqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_126sormqr[] = "sormqr(intptr_t handle, int side, int trans, int m, int n, int k, size_t A, int lda, size_t tau, size_t C, int ldc, size_t work, int lwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_127sormqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_side;
  int __pyx_v_trans;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_k;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_tau;
  size_t __pyx_v_C;
  int __pyx_v_ldc;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sormqr (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_side,&__pyx_n_s_trans,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_k,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_tau,&__pyx_n_s_C,&__pyx_n_s_ldc,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_devInfo,0};
    PyObject* values[14] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_side)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sormqr", 1, 14, 14, 1); __PYX_ERR(0, 1699, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_trans)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sormqr", 1, 14, 14, 2); __PYX_ERR(0, 1699, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sormqr", 1, 14, 14, 3); __PYX_ERR(0, 1699, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sormqr", 1, 14, 14, 4); __PYX_ERR(0, 1699, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_k)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sormqr", 1, 14, 14, 5); __PYX_ERR(0, 1699, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sormqr", 1, 14, 14, 6); __PYX_ERR(0, 1699, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sormqr", 1, 14, 14, 7); __PYX_ERR(0, 1699, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tau)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sormqr", 1, 14, 14, 8); __PYX_ERR(0, 1699, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_C)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sormqr", 1, 14, 14, 9); __PYX_ERR(0, 1699, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldc)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sormqr", 1, 14, 14, 10); __PYX_ERR(0, 1699, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sormqr", 1, 14, 14, 11); __PYX_ERR(0, 1699, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sormqr", 1, 14, 14, 12); __PYX_ERR(0, 1699, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (likely((values[13] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sormqr", 1, 14, 14, 13); __PYX_ERR(0, 1699, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sormqr") < 0)) __PYX_ERR(0, 1699, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 14) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
      values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1699, __pyx_L3_error)
    __pyx_v_side = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_side == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1699, __pyx_L3_error)
    __pyx_v_trans = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_trans == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1699, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1700, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1700, __pyx_L3_error)
    __pyx_v_k = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1700, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1700, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1700, __pyx_L3_error)
    __pyx_v_tau = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_tau == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1700, __pyx_L3_error)
    __pyx_v_C = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_C == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1701, __pyx_L3_error)
    __pyx_v_ldc = __Pyx_PyInt_As_int(values[10]); if (unlikely((__pyx_v_ldc == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1701, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1701, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[12]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1701, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[13]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1701, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sormqr", 1, 14, 14, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1699, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sormqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_126sormqr(__pyx_self, __pyx_v_handle, __pyx_v_side, __pyx_v_trans, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_C, __pyx_v_ldc, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_126sormqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sormqr", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sormqr(__pyx_v_handle, __pyx_v_side, __pyx_v_trans, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_C, __pyx_v_ldc, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1699, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sormqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1711
 *     check_status(status)
 * 
 * cpdef dormqr(intptr_t handle, int side, int trans,             # <<<<<<<<<<<<<<
 *              int m, int n, int k, size_t A, int lda, size_t tau,
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_129dormqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dormqr(intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dormqr", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1714
 *              int m, int n, int k, size_t A, int lda, size_t tau,
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDormqr(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1715
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDormqr(
 *             <Handle>handle, <SideMode>side, <Operation>trans, m, n, k,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1716
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDormqr(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <SideMode>side, <Operation>trans, m, n, k,
 *             <const double*>A, lda, <const double*>tau,
 */
        __pyx_v_status = cusolverDnDormqr(((cusolverDnHandle_t)__pyx_v_handle), ((cublasSideMode_t)__pyx_v_side), ((cublasOperation_t)__pyx_v_trans), __pyx_v_m, __pyx_v_n, __pyx_v_k, ((double const *)__pyx_v_A), __pyx_v_lda, ((double const *)__pyx_v_tau), ((double *)__pyx_v_C), __pyx_v_ldc, ((double *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1715
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDormqr(
 *             <Handle>handle, <SideMode>side, <Operation>trans, m, n, k,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1721
 *             <double*>C, ldc,
 *             <double*>work, lwork, <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef cunmqr(intptr_t handle, int side, int trans,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1721, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1711
 *     check_status(status)
 * 
 * cpdef dormqr(intptr_t handle, int side, int trans,             # <<<<<<<<<<<<<<
 *              int m, int n, int k, size_t A, int lda, size_t tau,
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dormqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_129dormqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_128dormqr[] = "dormqr(intptr_t handle, int side, int trans, int m, int n, int k, size_t A, int lda, size_t tau, size_t C, int ldc, size_t work, int lwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_129dormqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_side;
  int __pyx_v_trans;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_k;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_tau;
  size_t __pyx_v_C;
  int __pyx_v_ldc;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dormqr (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_side,&__pyx_n_s_trans,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_k,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_tau,&__pyx_n_s_C,&__pyx_n_s_ldc,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_devInfo,0};
    PyObject* values[14] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_side)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dormqr", 1, 14, 14, 1); __PYX_ERR(0, 1711, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_trans)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dormqr", 1, 14, 14, 2); __PYX_ERR(0, 1711, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dormqr", 1, 14, 14, 3); __PYX_ERR(0, 1711, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dormqr", 1, 14, 14, 4); __PYX_ERR(0, 1711, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_k)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dormqr", 1, 14, 14, 5); __PYX_ERR(0, 1711, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dormqr", 1, 14, 14, 6); __PYX_ERR(0, 1711, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dormqr", 1, 14, 14, 7); __PYX_ERR(0, 1711, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tau)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dormqr", 1, 14, 14, 8); __PYX_ERR(0, 1711, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_C)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dormqr", 1, 14, 14, 9); __PYX_ERR(0, 1711, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldc)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dormqr", 1, 14, 14, 10); __PYX_ERR(0, 1711, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dormqr", 1, 14, 14, 11); __PYX_ERR(0, 1711, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dormqr", 1, 14, 14, 12); __PYX_ERR(0, 1711, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (likely((values[13] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dormqr", 1, 14, 14, 13); __PYX_ERR(0, 1711, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dormqr") < 0)) __PYX_ERR(0, 1711, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 14) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
      values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1711, __pyx_L3_error)
    __pyx_v_side = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_side == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1711, __pyx_L3_error)
    __pyx_v_trans = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_trans == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1711, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1712, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1712, __pyx_L3_error)
    __pyx_v_k = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1712, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1712, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1712, __pyx_L3_error)
    __pyx_v_tau = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_tau == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1712, __pyx_L3_error)
    __pyx_v_C = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_C == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1713, __pyx_L3_error)
    __pyx_v_ldc = __Pyx_PyInt_As_int(values[10]); if (unlikely((__pyx_v_ldc == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1713, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1713, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[12]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1713, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[13]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1713, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dormqr", 1, 14, 14, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1711, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dormqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_128dormqr(__pyx_self, __pyx_v_handle, __pyx_v_side, __pyx_v_trans, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_C, __pyx_v_ldc, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_128dormqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dormqr", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dormqr(__pyx_v_handle, __pyx_v_side, __pyx_v_trans, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_C, __pyx_v_ldc, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1711, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dormqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1723
 *     check_status(status)
 * 
 * cpdef cunmqr(intptr_t handle, int side, int trans,             # <<<<<<<<<<<<<<
 *              int m, int n, int k, size_t A, int lda, size_t tau,
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_131cunmqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cunmqr(intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cunmqr", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1726
 *              int m, int n, int k, size_t A, int lda, size_t tau,
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCunmqr(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1726, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1727
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCunmqr(
 *             <Handle>handle, <SideMode>side, <Operation>trans, m, n, k,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1728
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCunmqr(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <SideMode>side, <Operation>trans, m, n, k,
 *             <const cuComplex*>A, lda, <const cuComplex*>tau,
 */
        __pyx_v_status = cusolverDnCunmqr(((cusolverDnHandle_t)__pyx_v_handle), ((cublasSideMode_t)__pyx_v_side), ((cublasOperation_t)__pyx_v_trans), __pyx_v_m, __pyx_v_n, __pyx_v_k, ((cuComplex const *)__pyx_v_A), __pyx_v_lda, ((cuComplex const *)__pyx_v_tau), ((cuComplex *)__pyx_v_C), __pyx_v_ldc, ((cuComplex *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1727
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCunmqr(
 *             <Handle>handle, <SideMode>side, <Operation>trans, m, n, k,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1733
 *             <cuComplex*>C, ldc,
 *             <cuComplex*>work, lwork, <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef zunmqr(intptr_t handle, int side, int trans,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1733, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1723
 *     check_status(status)
 * 
 * cpdef cunmqr(intptr_t handle, int side, int trans,             # <<<<<<<<<<<<<<
 *              int m, int n, int k, size_t A, int lda, size_t tau,
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cunmqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_131cunmqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_130cunmqr[] = "cunmqr(intptr_t handle, int side, int trans, int m, int n, int k, size_t A, int lda, size_t tau, size_t C, int ldc, size_t work, int lwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_131cunmqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_side;
  int __pyx_v_trans;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_k;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_tau;
  size_t __pyx_v_C;
  int __pyx_v_ldc;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cunmqr (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_side,&__pyx_n_s_trans,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_k,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_tau,&__pyx_n_s_C,&__pyx_n_s_ldc,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_devInfo,0};
    PyObject* values[14] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_side)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cunmqr", 1, 14, 14, 1); __PYX_ERR(0, 1723, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_trans)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cunmqr", 1, 14, 14, 2); __PYX_ERR(0, 1723, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cunmqr", 1, 14, 14, 3); __PYX_ERR(0, 1723, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cunmqr", 1, 14, 14, 4); __PYX_ERR(0, 1723, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_k)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cunmqr", 1, 14, 14, 5); __PYX_ERR(0, 1723, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cunmqr", 1, 14, 14, 6); __PYX_ERR(0, 1723, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cunmqr", 1, 14, 14, 7); __PYX_ERR(0, 1723, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tau)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cunmqr", 1, 14, 14, 8); __PYX_ERR(0, 1723, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_C)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cunmqr", 1, 14, 14, 9); __PYX_ERR(0, 1723, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldc)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cunmqr", 1, 14, 14, 10); __PYX_ERR(0, 1723, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cunmqr", 1, 14, 14, 11); __PYX_ERR(0, 1723, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cunmqr", 1, 14, 14, 12); __PYX_ERR(0, 1723, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (likely((values[13] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cunmqr", 1, 14, 14, 13); __PYX_ERR(0, 1723, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cunmqr") < 0)) __PYX_ERR(0, 1723, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 14) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
      values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1723, __pyx_L3_error)
    __pyx_v_side = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_side == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1723, __pyx_L3_error)
    __pyx_v_trans = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_trans == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1723, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1724, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1724, __pyx_L3_error)
    __pyx_v_k = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1724, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1724, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1724, __pyx_L3_error)
    __pyx_v_tau = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_tau == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1724, __pyx_L3_error)
    __pyx_v_C = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_C == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1725, __pyx_L3_error)
    __pyx_v_ldc = __Pyx_PyInt_As_int(values[10]); if (unlikely((__pyx_v_ldc == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1725, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1725, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[12]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1725, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[13]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1725, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cunmqr", 1, 14, 14, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1723, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cunmqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_130cunmqr(__pyx_self, __pyx_v_handle, __pyx_v_side, __pyx_v_trans, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_C, __pyx_v_ldc, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_130cunmqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cunmqr", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cunmqr(__pyx_v_handle, __pyx_v_side, __pyx_v_trans, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_C, __pyx_v_ldc, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1723, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cunmqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1735
 *     check_status(status)
 * 
 * cpdef zunmqr(intptr_t handle, int side, int trans,             # <<<<<<<<<<<<<<
 *              int m, int n, int k, size_t A, int lda, size_t tau,
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_133zunmqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zunmqr(intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zunmqr", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1738
 *              int m, int n, int k, size_t A, int lda, size_t tau,
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZunmqr(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1738, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1739
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZunmqr(
 *             <Handle>handle, <SideMode>side, <Operation>trans, m, n, k,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1740
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZunmqr(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <SideMode>side, <Operation>trans, m, n, k,
 *             <const cuDoubleComplex*>A, lda, <const cuDoubleComplex*>tau,
 */
        __pyx_v_status = cusolverDnZunmqr(((cusolverDnHandle_t)__pyx_v_handle), ((cublasSideMode_t)__pyx_v_side), ((cublasOperation_t)__pyx_v_trans), __pyx_v_m, __pyx_v_n, __pyx_v_k, ((cuDoubleComplex const *)__pyx_v_A), __pyx_v_lda, ((cuDoubleComplex const *)__pyx_v_tau), ((cuDoubleComplex *)__pyx_v_C), __pyx_v_ldc, ((cuDoubleComplex *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1739
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZunmqr(
 *             <Handle>handle, <SideMode>side, <Operation>trans, m, n, k,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1745
 *             <cuDoubleComplex*>C, ldc,
 *             <cuDoubleComplex*>work, lwork, <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * # (obsoleted)
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1745, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1735
 *     check_status(status)
 * 
 * cpdef zunmqr(intptr_t handle, int side, int trans,             # <<<<<<<<<<<<<<
 *              int m, int n, int k, size_t A, int lda, size_t tau,
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zunmqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_133zunmqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_132zunmqr[] = "zunmqr(intptr_t handle, int side, int trans, int m, int n, int k, size_t A, int lda, size_t tau, size_t C, int ldc, size_t work, int lwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_133zunmqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_side;
  int __pyx_v_trans;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_k;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_tau;
  size_t __pyx_v_C;
  int __pyx_v_ldc;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zunmqr (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_side,&__pyx_n_s_trans,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_k,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_tau,&__pyx_n_s_C,&__pyx_n_s_ldc,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_devInfo,0};
    PyObject* values[14] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_side)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zunmqr", 1, 14, 14, 1); __PYX_ERR(0, 1735, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_trans)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zunmqr", 1, 14, 14, 2); __PYX_ERR(0, 1735, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zunmqr", 1, 14, 14, 3); __PYX_ERR(0, 1735, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zunmqr", 1, 14, 14, 4); __PYX_ERR(0, 1735, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_k)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zunmqr", 1, 14, 14, 5); __PYX_ERR(0, 1735, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zunmqr", 1, 14, 14, 6); __PYX_ERR(0, 1735, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zunmqr", 1, 14, 14, 7); __PYX_ERR(0, 1735, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tau)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zunmqr", 1, 14, 14, 8); __PYX_ERR(0, 1735, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_C)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zunmqr", 1, 14, 14, 9); __PYX_ERR(0, 1735, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldc)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zunmqr", 1, 14, 14, 10); __PYX_ERR(0, 1735, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zunmqr", 1, 14, 14, 11); __PYX_ERR(0, 1735, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zunmqr", 1, 14, 14, 12); __PYX_ERR(0, 1735, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (likely((values[13] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zunmqr", 1, 14, 14, 13); __PYX_ERR(0, 1735, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zunmqr") < 0)) __PYX_ERR(0, 1735, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 14) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
      values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1735, __pyx_L3_error)
    __pyx_v_side = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_side == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1735, __pyx_L3_error)
    __pyx_v_trans = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_trans == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1735, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1736, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1736, __pyx_L3_error)
    __pyx_v_k = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1736, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1736, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1736, __pyx_L3_error)
    __pyx_v_tau = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_tau == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1736, __pyx_L3_error)
    __pyx_v_C = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_C == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1737, __pyx_L3_error)
    __pyx_v_ldc = __Pyx_PyInt_As_int(values[10]); if (unlikely((__pyx_v_ldc == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1737, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1737, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[12]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1737, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[13]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1737, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zunmqr", 1, 14, 14, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1735, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zunmqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_132zunmqr(__pyx_self, __pyx_v_handle, __pyx_v_side, __pyx_v_trans, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_C, __pyx_v_ldc, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_132zunmqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zunmqr", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zunmqr(__pyx_v_handle, __pyx_v_side, __pyx_v_trans, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_C, __pyx_v_ldc, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1735, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zunmqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1748
 * 
 * # (obsoleted)
 * cpdef cormqr(intptr_t handle, int side, int trans,             # <<<<<<<<<<<<<<
 *              int m, int n, int k, size_t A, int lda, size_t tau,
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_135cormqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cormqr(intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cormqr", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1751
 *              int m, int n, int k, size_t A, int lda, size_t tau,
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 *     return cunmqr(handle, side, trans, m, n, k, A, lda, tau,             # <<<<<<<<<<<<<<
 *                   C, ldc, work, lwork, devInfo)
 * 
 */
  __Pyx_XDECREF(__pyx_r);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1752
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 *     return cunmqr(handle, side, trans, m, n, k, A, lda, tau,
 *                   C, ldc, work, lwork, devInfo)             # <<<<<<<<<<<<<<
 * 
 * # (obsoleted)
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cunmqr(__pyx_v_handle, __pyx_v_side, __pyx_v_trans, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_C, __pyx_v_ldc, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1751, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1748
 * 
 * # (obsoleted)
 * cpdef cormqr(intptr_t handle, int side, int trans,             # <<<<<<<<<<<<<<
 *              int m, int n, int k, size_t A, int lda, size_t tau,
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cormqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_135cormqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_134cormqr[] = "cormqr(intptr_t handle, int side, int trans, int m, int n, int k, size_t A, int lda, size_t tau, size_t C, int ldc, size_t work, int lwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_135cormqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_side;
  int __pyx_v_trans;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_k;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_tau;
  size_t __pyx_v_C;
  int __pyx_v_ldc;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cormqr (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_side,&__pyx_n_s_trans,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_k,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_tau,&__pyx_n_s_C,&__pyx_n_s_ldc,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_devInfo,0};
    PyObject* values[14] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_side)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cormqr", 1, 14, 14, 1); __PYX_ERR(0, 1748, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_trans)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cormqr", 1, 14, 14, 2); __PYX_ERR(0, 1748, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cormqr", 1, 14, 14, 3); __PYX_ERR(0, 1748, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cormqr", 1, 14, 14, 4); __PYX_ERR(0, 1748, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_k)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cormqr", 1, 14, 14, 5); __PYX_ERR(0, 1748, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cormqr", 1, 14, 14, 6); __PYX_ERR(0, 1748, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cormqr", 1, 14, 14, 7); __PYX_ERR(0, 1748, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tau)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cormqr", 1, 14, 14, 8); __PYX_ERR(0, 1748, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_C)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cormqr", 1, 14, 14, 9); __PYX_ERR(0, 1748, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldc)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cormqr", 1, 14, 14, 10); __PYX_ERR(0, 1748, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cormqr", 1, 14, 14, 11); __PYX_ERR(0, 1748, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cormqr", 1, 14, 14, 12); __PYX_ERR(0, 1748, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (likely((values[13] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cormqr", 1, 14, 14, 13); __PYX_ERR(0, 1748, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cormqr") < 0)) __PYX_ERR(0, 1748, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 14) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
      values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1748, __pyx_L3_error)
    __pyx_v_side = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_side == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1748, __pyx_L3_error)
    __pyx_v_trans = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_trans == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1748, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1749, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1749, __pyx_L3_error)
    __pyx_v_k = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1749, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1749, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1749, __pyx_L3_error)
    __pyx_v_tau = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_tau == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1749, __pyx_L3_error)
    __pyx_v_C = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_C == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1750, __pyx_L3_error)
    __pyx_v_ldc = __Pyx_PyInt_As_int(values[10]); if (unlikely((__pyx_v_ldc == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1750, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1750, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[12]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1750, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[13]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1750, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cormqr", 1, 14, 14, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1748, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cormqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_134cormqr(__pyx_self, __pyx_v_handle, __pyx_v_side, __pyx_v_trans, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_C, __pyx_v_ldc, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_134cormqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cormqr", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cormqr(__pyx_v_handle, __pyx_v_side, __pyx_v_trans, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_C, __pyx_v_ldc, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1748, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cormqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1755
 * 
 * # (obsoleted)
 * cpdef zormqr(intptr_t handle, int side, int trans,             # <<<<<<<<<<<<<<
 *              int m, int n, int k, size_t A, int lda, size_t tau,
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_137zormqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zormqr(intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zormqr", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1758
 *              int m, int n, int k, size_t A, int lda, size_t tau,
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 *     return zunmqr(handle, side, trans, m, n, k, A, lda, tau,             # <<<<<<<<<<<<<<
 *                   C, ldc, work, lwork, devInfo)
 * 
 */
  __Pyx_XDECREF(__pyx_r);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1759
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 *     return zunmqr(handle, side, trans, m, n, k, A, lda, tau,
 *                   C, ldc, work, lwork, devInfo)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zunmqr(__pyx_v_handle, __pyx_v_side, __pyx_v_trans, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_C, __pyx_v_ldc, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1758, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1755
 * 
 * # (obsoleted)
 * cpdef zormqr(intptr_t handle, int side, int trans,             # <<<<<<<<<<<<<<
 *              int m, int n, int k, size_t A, int lda, size_t tau,
 *              size_t C, int ldc, size_t work, int lwork, size_t devInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zormqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_137zormqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_136zormqr[] = "zormqr(intptr_t handle, int side, int trans, int m, int n, int k, size_t A, int lda, size_t tau, size_t C, int ldc, size_t work, int lwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_137zormqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_side;
  int __pyx_v_trans;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_k;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_tau;
  size_t __pyx_v_C;
  int __pyx_v_ldc;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zormqr (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_side,&__pyx_n_s_trans,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_k,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_tau,&__pyx_n_s_C,&__pyx_n_s_ldc,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_devInfo,0};
    PyObject* values[14] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_side)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zormqr", 1, 14, 14, 1); __PYX_ERR(0, 1755, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_trans)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zormqr", 1, 14, 14, 2); __PYX_ERR(0, 1755, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zormqr", 1, 14, 14, 3); __PYX_ERR(0, 1755, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zormqr", 1, 14, 14, 4); __PYX_ERR(0, 1755, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_k)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zormqr", 1, 14, 14, 5); __PYX_ERR(0, 1755, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zormqr", 1, 14, 14, 6); __PYX_ERR(0, 1755, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zormqr", 1, 14, 14, 7); __PYX_ERR(0, 1755, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tau)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zormqr", 1, 14, 14, 8); __PYX_ERR(0, 1755, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_C)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zormqr", 1, 14, 14, 9); __PYX_ERR(0, 1755, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldc)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zormqr", 1, 14, 14, 10); __PYX_ERR(0, 1755, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zormqr", 1, 14, 14, 11); __PYX_ERR(0, 1755, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zormqr", 1, 14, 14, 12); __PYX_ERR(0, 1755, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (likely((values[13] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zormqr", 1, 14, 14, 13); __PYX_ERR(0, 1755, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zormqr") < 0)) __PYX_ERR(0, 1755, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 14) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
      values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1755, __pyx_L3_error)
    __pyx_v_side = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_side == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1755, __pyx_L3_error)
    __pyx_v_trans = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_trans == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1755, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1756, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1756, __pyx_L3_error)
    __pyx_v_k = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1756, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1756, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1756, __pyx_L3_error)
    __pyx_v_tau = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_tau == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1756, __pyx_L3_error)
    __pyx_v_C = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_C == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1757, __pyx_L3_error)
    __pyx_v_ldc = __Pyx_PyInt_As_int(values[10]); if (unlikely((__pyx_v_ldc == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1757, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1757, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[12]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1757, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[13]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1757, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zormqr", 1, 14, 14, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1755, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zormqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_136zormqr(__pyx_self, __pyx_v_handle, __pyx_v_side, __pyx_v_trans, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_C, __pyx_v_ldc, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_136zormqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_side, int __pyx_v_trans, int __pyx_v_m, int __pyx_v_n, int __pyx_v_k, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_tau, size_t __pyx_v_C, int __pyx_v_ldc, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zormqr", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zormqr(__pyx_v_handle, __pyx_v_side, __pyx_v_trans, __pyx_v_m, __pyx_v_n, __pyx_v_k, __pyx_v_A, __pyx_v_lda, __pyx_v_tau, __pyx_v_C, __pyx_v_ldc, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1755, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zormqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1763
 * 
 * # L*D*L**T,U*D*U**T factorization
 * cpdef int ssytrf_bufferSize(intptr_t handle, int n, size_t A,             # <<<<<<<<<<<<<<
 *                             int lda) except? -1:
 *     cdef int lwork
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_139ssytrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssytrf_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ssytrf_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1766
 *                             int lda) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSsytrf_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1766, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1767
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSsytrf_bufferSize(
 *             <Handle>handle, n, <float*>A, lda, &lwork)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1768
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSsytrf_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, <float*>A, lda, &lwork)
 *     check_status(status)
 */
        __pyx_v_status = cusolverDnSsytrf_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, ((float *)__pyx_v_A), __pyx_v_lda, (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1767
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSsytrf_bufferSize(
 *             <Handle>handle, n, <float*>A, lda, &lwork)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1770
 *         status = cusolverDnSsytrf_bufferSize(
 *             <Handle>handle, n, <float*>A, lda, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1770, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1771
 *             <Handle>handle, n, <float*>A, lda, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int dsytrf_bufferSize(intptr_t handle, int n, size_t A,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1763
 * 
 * # L*D*L**T,U*D*U**T factorization
 * cpdef int ssytrf_bufferSize(intptr_t handle, int n, size_t A,             # <<<<<<<<<<<<<<
 *                             int lda) except? -1:
 *     cdef int lwork
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssytrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_139ssytrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_138ssytrf_bufferSize[] = "ssytrf_bufferSize(intptr_t handle, int n, size_t A, int lda) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_139ssytrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ssytrf_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssytrf_bufferSize", 1, 4, 4, 1); __PYX_ERR(0, 1763, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssytrf_bufferSize", 1, 4, 4, 2); __PYX_ERR(0, 1763, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssytrf_bufferSize", 1, 4, 4, 3); __PYX_ERR(0, 1763, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ssytrf_bufferSize") < 0)) __PYX_ERR(0, 1763, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1763, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1763, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[2]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1763, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1764, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ssytrf_bufferSize", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1763, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssytrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_138ssytrf_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_A, __pyx_v_lda);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_138ssytrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ssytrf_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssytrf_bufferSize(__pyx_v_handle, __pyx_v_n, __pyx_v_A, __pyx_v_lda, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1763, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1763, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssytrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1773
 *     return lwork
 * 
 * cpdef int dsytrf_bufferSize(intptr_t handle, int n, size_t A,             # <<<<<<<<<<<<<<
 *                             int lda) except? -1:
 *     cdef int lwork
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_141dsytrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsytrf_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dsytrf_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1776
 *                             int lda) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDsytrf_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1776, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1777
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDsytrf_bufferSize(
 *             <Handle>handle, n, <double*>A, lda, &lwork)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1778
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDsytrf_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, <double*>A, lda, &lwork)
 *     check_status(status)
 */
        __pyx_v_status = cusolverDnDsytrf_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, ((double *)__pyx_v_A), __pyx_v_lda, (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1777
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDsytrf_bufferSize(
 *             <Handle>handle, n, <double*>A, lda, &lwork)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1780
 *         status = cusolverDnDsytrf_bufferSize(
 *             <Handle>handle, n, <double*>A, lda, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1780, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1781
 *             <Handle>handle, n, <double*>A, lda, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int csytrf_bufferSize(intptr_t handle, int n, size_t A,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1773
 *     return lwork
 * 
 * cpdef int dsytrf_bufferSize(intptr_t handle, int n, size_t A,             # <<<<<<<<<<<<<<
 *                             int lda) except? -1:
 *     cdef int lwork
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsytrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_141dsytrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_140dsytrf_bufferSize[] = "dsytrf_bufferSize(intptr_t handle, int n, size_t A, int lda) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_141dsytrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dsytrf_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsytrf_bufferSize", 1, 4, 4, 1); __PYX_ERR(0, 1773, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsytrf_bufferSize", 1, 4, 4, 2); __PYX_ERR(0, 1773, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsytrf_bufferSize", 1, 4, 4, 3); __PYX_ERR(0, 1773, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dsytrf_bufferSize") < 0)) __PYX_ERR(0, 1773, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1773, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1773, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[2]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1773, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1774, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dsytrf_bufferSize", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1773, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsytrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_140dsytrf_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_A, __pyx_v_lda);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_140dsytrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dsytrf_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsytrf_bufferSize(__pyx_v_handle, __pyx_v_n, __pyx_v_A, __pyx_v_lda, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1773, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1773, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsytrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1783
 *     return lwork
 * 
 * cpdef int csytrf_bufferSize(intptr_t handle, int n, size_t A,             # <<<<<<<<<<<<<<
 *                             int lda) except? -1:
 *     cdef int lwork
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_143csytrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_csytrf_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("csytrf_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1786
 *                             int lda) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCsytrf_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1787
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCsytrf_bufferSize(
 *             <Handle>handle, n, <cuComplex*>A, lda, &lwork)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1788
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCsytrf_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, <cuComplex*>A, lda, &lwork)
 *     check_status(status)
 */
        __pyx_v_status = cusolverDnCsytrf_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, ((cuComplex *)__pyx_v_A), __pyx_v_lda, (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1787
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCsytrf_bufferSize(
 *             <Handle>handle, n, <cuComplex*>A, lda, &lwork)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1790
 *         status = cusolverDnCsytrf_bufferSize(
 *             <Handle>handle, n, <cuComplex*>A, lda, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1790, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1791
 *             <Handle>handle, n, <cuComplex*>A, lda, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int zsytrf_bufferSize(intptr_t handle, int n, size_t A,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1783
 *     return lwork
 * 
 * cpdef int csytrf_bufferSize(intptr_t handle, int n, size_t A,             # <<<<<<<<<<<<<<
 *                             int lda) except? -1:
 *     cdef int lwork
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.csytrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_143csytrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_142csytrf_bufferSize[] = "csytrf_bufferSize(intptr_t handle, int n, size_t A, int lda) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_143csytrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("csytrf_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("csytrf_bufferSize", 1, 4, 4, 1); __PYX_ERR(0, 1783, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("csytrf_bufferSize", 1, 4, 4, 2); __PYX_ERR(0, 1783, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("csytrf_bufferSize", 1, 4, 4, 3); __PYX_ERR(0, 1783, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "csytrf_bufferSize") < 0)) __PYX_ERR(0, 1783, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1783, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1783, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[2]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1783, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1784, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("csytrf_bufferSize", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1783, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.csytrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_142csytrf_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_A, __pyx_v_lda);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_142csytrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("csytrf_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_csytrf_bufferSize(__pyx_v_handle, __pyx_v_n, __pyx_v_A, __pyx_v_lda, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1783, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1783, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.csytrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1793
 *     return lwork
 * 
 * cpdef int zsytrf_bufferSize(intptr_t handle, int n, size_t A,             # <<<<<<<<<<<<<<
 *                             int lda) except? -1:
 *     cdef int lwork
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_145zsytrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zsytrf_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zsytrf_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1796
 *                             int lda) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZsytrf_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1796, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1797
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZsytrf_bufferSize(
 *             <Handle>handle, n, <cuDoubleComplex*>A, lda, &lwork)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1798
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZsytrf_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, <cuDoubleComplex*>A, lda, &lwork)
 *     check_status(status)
 */
        __pyx_v_status = cusolverDnZsytrf_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, ((cuDoubleComplex *)__pyx_v_A), __pyx_v_lda, (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1797
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZsytrf_bufferSize(
 *             <Handle>handle, n, <cuDoubleComplex*>A, lda, &lwork)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1800
 *         status = cusolverDnZsytrf_bufferSize(
 *             <Handle>handle, n, <cuDoubleComplex*>A, lda, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1800, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1801
 *             <Handle>handle, n, <cuDoubleComplex*>A, lda, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef ssytrf(intptr_t handle, int uplo, int n, size_t A, int lda,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1793
 *     return lwork
 * 
 * cpdef int zsytrf_bufferSize(intptr_t handle, int n, size_t A,             # <<<<<<<<<<<<<<
 *                             int lda) except? -1:
 *     cdef int lwork
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zsytrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_145zsytrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_144zsytrf_bufferSize[] = "zsytrf_bufferSize(intptr_t handle, int n, size_t A, int lda) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_145zsytrf_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zsytrf_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zsytrf_bufferSize", 1, 4, 4, 1); __PYX_ERR(0, 1793, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zsytrf_bufferSize", 1, 4, 4, 2); __PYX_ERR(0, 1793, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zsytrf_bufferSize", 1, 4, 4, 3); __PYX_ERR(0, 1793, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zsytrf_bufferSize") < 0)) __PYX_ERR(0, 1793, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1793, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1793, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[2]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1793, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1794, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zsytrf_bufferSize", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1793, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zsytrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_144zsytrf_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_A, __pyx_v_lda);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_144zsytrf_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zsytrf_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zsytrf_bufferSize(__pyx_v_handle, __pyx_v_n, __pyx_v_A, __pyx_v_lda, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1793, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1793, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zsytrf_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1803
 *     return lwork
 * 
 * cpdef ssytrf(intptr_t handle, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t ipiv, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_147ssytrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssytrf(intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_ipiv, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ssytrf", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1805
 * cpdef ssytrf(intptr_t handle, int uplo, int n, size_t A, int lda,
 *              size_t ipiv, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSsytrf(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1805, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1806
 *              size_t ipiv, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSsytrf(
 *             <Handle>handle, <FillMode>uplo, n, <float*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1807
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSsytrf(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <FillMode>uplo, n, <float*>A, lda,
 *             <int*>ipiv, <float*>work, lwork, <int*>devInfo)
 */
        __pyx_v_status = cusolverDnSsytrf(((cusolverDnHandle_t)__pyx_v_handle), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((float *)__pyx_v_A), __pyx_v_lda, ((int *)__pyx_v_ipiv), ((float *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1806
 *              size_t ipiv, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSsytrf(
 *             <Handle>handle, <FillMode>uplo, n, <float*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1810
 *             <Handle>handle, <FillMode>uplo, n, <float*>A, lda,
 *             <int*>ipiv, <float*>work, lwork, <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef dsytrf(intptr_t handle, int uplo, int n, size_t A, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1810, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1803
 *     return lwork
 * 
 * cpdef ssytrf(intptr_t handle, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t ipiv, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssytrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_147ssytrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_146ssytrf[] = "ssytrf(intptr_t handle, int uplo, int n, size_t A, int lda, size_t ipiv, size_t work, int lwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_147ssytrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_ipiv;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ssytrf (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_ipiv,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_devInfo,0};
    PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssytrf", 1, 9, 9, 1); __PYX_ERR(0, 1803, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssytrf", 1, 9, 9, 2); __PYX_ERR(0, 1803, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssytrf", 1, 9, 9, 3); __PYX_ERR(0, 1803, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssytrf", 1, 9, 9, 4); __PYX_ERR(0, 1803, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssytrf", 1, 9, 9, 5); __PYX_ERR(0, 1803, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssytrf", 1, 9, 9, 6); __PYX_ERR(0, 1803, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssytrf", 1, 9, 9, 7); __PYX_ERR(0, 1803, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssytrf", 1, 9, 9, 8); __PYX_ERR(0, 1803, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ssytrf") < 0)) __PYX_ERR(0, 1803, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1803, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1803, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1803, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1803, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1803, __pyx_L3_error)
    __pyx_v_ipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_ipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1804, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1804, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1804, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1804, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ssytrf", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1803, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssytrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_146ssytrf(__pyx_self, __pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_ipiv, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_146ssytrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_ipiv, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ssytrf", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssytrf(__pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_ipiv, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1803, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssytrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1812
 *     check_status(status)
 * 
 * cpdef dsytrf(intptr_t handle, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t ipiv, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_149dsytrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsytrf(intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_ipiv, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dsytrf", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1814
 * cpdef dsytrf(intptr_t handle, int uplo, int n, size_t A, int lda,
 *              size_t ipiv, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDsytrf(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1814, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1815
 *              size_t ipiv, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDsytrf(
 *             <Handle>handle, <FillMode>uplo, n, <double*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1816
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDsytrf(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <FillMode>uplo, n, <double*>A, lda,
 *             <int*>ipiv, <double*>work, lwork, <int*>devInfo)
 */
        __pyx_v_status = cusolverDnDsytrf(((cusolverDnHandle_t)__pyx_v_handle), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((double *)__pyx_v_A), __pyx_v_lda, ((int *)__pyx_v_ipiv), ((double *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1815
 *              size_t ipiv, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDsytrf(
 *             <Handle>handle, <FillMode>uplo, n, <double*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1819
 *             <Handle>handle, <FillMode>uplo, n, <double*>A, lda,
 *             <int*>ipiv, <double*>work, lwork, <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef csytrf(intptr_t handle, int uplo, int n, size_t A, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1819, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1812
 *     check_status(status)
 * 
 * cpdef dsytrf(intptr_t handle, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t ipiv, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsytrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_149dsytrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_148dsytrf[] = "dsytrf(intptr_t handle, int uplo, int n, size_t A, int lda, size_t ipiv, size_t work, int lwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_149dsytrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_ipiv;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dsytrf (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_ipiv,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_devInfo,0};
    PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsytrf", 1, 9, 9, 1); __PYX_ERR(0, 1812, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsytrf", 1, 9, 9, 2); __PYX_ERR(0, 1812, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsytrf", 1, 9, 9, 3); __PYX_ERR(0, 1812, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsytrf", 1, 9, 9, 4); __PYX_ERR(0, 1812, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsytrf", 1, 9, 9, 5); __PYX_ERR(0, 1812, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsytrf", 1, 9, 9, 6); __PYX_ERR(0, 1812, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsytrf", 1, 9, 9, 7); __PYX_ERR(0, 1812, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsytrf", 1, 9, 9, 8); __PYX_ERR(0, 1812, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dsytrf") < 0)) __PYX_ERR(0, 1812, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1812, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1812, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1812, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1812, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1812, __pyx_L3_error)
    __pyx_v_ipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_ipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1813, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1813, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1813, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1813, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dsytrf", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1812, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsytrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_148dsytrf(__pyx_self, __pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_ipiv, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_148dsytrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_ipiv, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dsytrf", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsytrf(__pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_ipiv, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1812, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsytrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1821
 *     check_status(status)
 * 
 * cpdef csytrf(intptr_t handle, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t ipiv, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_151csytrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_csytrf(intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_ipiv, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("csytrf", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1823
 * cpdef csytrf(intptr_t handle, int uplo, int n, size_t A, int lda,
 *              size_t ipiv, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCsytrf(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1823, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1824
 *              size_t ipiv, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCsytrf(
 *             <Handle>handle, <FillMode>uplo, n, <cuComplex*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1825
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCsytrf(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <FillMode>uplo, n, <cuComplex*>A, lda,
 *             <int*>ipiv, <cuComplex*>work, lwork, <int*>devInfo)
 */
        __pyx_v_status = cusolverDnCsytrf(((cusolverDnHandle_t)__pyx_v_handle), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((cuComplex *)__pyx_v_A), __pyx_v_lda, ((int *)__pyx_v_ipiv), ((cuComplex *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1824
 *              size_t ipiv, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCsytrf(
 *             <Handle>handle, <FillMode>uplo, n, <cuComplex*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1828
 *             <Handle>handle, <FillMode>uplo, n, <cuComplex*>A, lda,
 *             <int*>ipiv, <cuComplex*>work, lwork, <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef zsytrf(intptr_t handle, int uplo, int n, size_t A, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1828, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1821
 *     check_status(status)
 * 
 * cpdef csytrf(intptr_t handle, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t ipiv, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.csytrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_151csytrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_150csytrf[] = "csytrf(intptr_t handle, int uplo, int n, size_t A, int lda, size_t ipiv, size_t work, int lwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_151csytrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_ipiv;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("csytrf (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_ipiv,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_devInfo,0};
    PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("csytrf", 1, 9, 9, 1); __PYX_ERR(0, 1821, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("csytrf", 1, 9, 9, 2); __PYX_ERR(0, 1821, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("csytrf", 1, 9, 9, 3); __PYX_ERR(0, 1821, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("csytrf", 1, 9, 9, 4); __PYX_ERR(0, 1821, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("csytrf", 1, 9, 9, 5); __PYX_ERR(0, 1821, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("csytrf", 1, 9, 9, 6); __PYX_ERR(0, 1821, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("csytrf", 1, 9, 9, 7); __PYX_ERR(0, 1821, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("csytrf", 1, 9, 9, 8); __PYX_ERR(0, 1821, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "csytrf") < 0)) __PYX_ERR(0, 1821, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1821, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1821, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1821, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1821, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1821, __pyx_L3_error)
    __pyx_v_ipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_ipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1822, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1822, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1822, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1822, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("csytrf", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1821, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.csytrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_150csytrf(__pyx_self, __pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_ipiv, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_150csytrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_ipiv, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("csytrf", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_csytrf(__pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_ipiv, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1821, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.csytrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1830
 *     check_status(status)
 * 
 * cpdef zsytrf(intptr_t handle, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t ipiv, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_153zsytrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zsytrf(intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_ipiv, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zsytrf", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1832
 * cpdef zsytrf(intptr_t handle, int uplo, int n, size_t A, int lda,
 *              size_t ipiv, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZsytrf(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1832, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1833
 *              size_t ipiv, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZsytrf(
 *             <Handle>handle, <FillMode>uplo, n, <cuDoubleComplex*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1834
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZsytrf(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <FillMode>uplo, n, <cuDoubleComplex*>A, lda,
 *             <int*>ipiv, <cuDoubleComplex*>work, lwork, <int*>devInfo)
 */
        __pyx_v_status = cusolverDnZsytrf(((cusolverDnHandle_t)__pyx_v_handle), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((cuDoubleComplex *)__pyx_v_A), __pyx_v_lda, ((int *)__pyx_v_ipiv), ((cuDoubleComplex *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1833
 *              size_t ipiv, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZsytrf(
 *             <Handle>handle, <FillMode>uplo, n, <cuDoubleComplex*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1837
 *             <Handle>handle, <FillMode>uplo, n, <cuDoubleComplex*>A, lda,
 *             <int*>ipiv, <cuDoubleComplex*>work, lwork, <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t zzgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1837, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1830
 *     check_status(status)
 * 
 * cpdef zsytrf(intptr_t handle, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t ipiv, size_t work, int lwork, size_t devInfo):
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zsytrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_153zsytrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_152zsytrf[] = "zsytrf(intptr_t handle, int uplo, int n, size_t A, int lda, size_t ipiv, size_t work, int lwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_153zsytrf(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_ipiv;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zsytrf (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_ipiv,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_devInfo,0};
    PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zsytrf", 1, 9, 9, 1); __PYX_ERR(0, 1830, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zsytrf", 1, 9, 9, 2); __PYX_ERR(0, 1830, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zsytrf", 1, 9, 9, 3); __PYX_ERR(0, 1830, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zsytrf", 1, 9, 9, 4); __PYX_ERR(0, 1830, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zsytrf", 1, 9, 9, 5); __PYX_ERR(0, 1830, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zsytrf", 1, 9, 9, 6); __PYX_ERR(0, 1830, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zsytrf", 1, 9, 9, 7); __PYX_ERR(0, 1830, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zsytrf", 1, 9, 9, 8); __PYX_ERR(0, 1830, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zsytrf") < 0)) __PYX_ERR(0, 1830, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1830, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1830, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1830, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1830, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1830, __pyx_L3_error)
    __pyx_v_ipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_ipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1831, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1831, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1831, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1831, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zsytrf", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1830, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zsytrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_152zsytrf(__pyx_self, __pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_ipiv, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_152zsytrf(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_ipiv, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zsytrf", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zsytrf(__pyx_v_handle, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_ipiv, __pyx_v_work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1830, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zsytrf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1839
 *     check_status(status)
 * 
 * cpdef size_t zzgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_155zzgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zzgesv_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zzgesv_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1843
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZZgesv_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1843, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1844
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZZgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <cuDoubleComplex*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1845
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZZgesv_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <cuDoubleComplex*>dA, ldda, <int*>dipiv,
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 */
        __pyx_v_status = cusolverDnZZgesv_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((cuDoubleComplex *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((cuDoubleComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuDoubleComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1844
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZZgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <cuDoubleComplex*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1849
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 *             <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1849, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1850
 *             <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t zcgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1839
 *     check_status(status)
 * 
 * cpdef size_t zzgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zzgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_155zzgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_154zzgesv_bufferSize[] = "zzgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_155zzgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zzgesv_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgesv_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 1839, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgesv_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 1839, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgesv_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 1839, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgesv_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 1839, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgesv_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 1839, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgesv_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 1839, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgesv_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 1839, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgesv_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 1839, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgesv_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 1839, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgesv_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 1839, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zzgesv_bufferSize") < 0)) __PYX_ERR(0, 1839, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1839, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1839, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1839, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1839, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1840, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1840, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1840, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1840, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1841, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1841, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1841, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zzgesv_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1839, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zzgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_154zzgesv_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_154zzgesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zzgesv_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zzgesv_bufferSize(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 1839, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1839, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zzgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1852
 *     return lwork
 * 
 * cpdef size_t zcgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_157zcgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcgesv_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zcgesv_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1856
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZCgesv_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1856, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1857
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZCgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <cuDoubleComplex*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1858
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZCgesv_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <cuDoubleComplex*>dA, ldda, <int*>dipiv,
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 */
        __pyx_v_status = cusolverDnZCgesv_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((cuDoubleComplex *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((cuDoubleComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuDoubleComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1857
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZCgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <cuDoubleComplex*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1862
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 *             <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1862, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1863
 *             <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t zygesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1852
 *     return lwork
 * 
 * cpdef size_t zcgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zcgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_157zcgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_156zcgesv_bufferSize[] = "zcgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_157zcgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zcgesv_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgesv_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 1852, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgesv_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 1852, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgesv_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 1852, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgesv_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 1852, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgesv_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 1852, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgesv_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 1852, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgesv_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 1852, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgesv_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 1852, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgesv_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 1852, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgesv_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 1852, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zcgesv_bufferSize") < 0)) __PYX_ERR(0, 1852, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1852, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1852, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1852, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1852, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1853, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1853, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1853, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1853, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1854, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1854, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1854, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zcgesv_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1852, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zcgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_156zcgesv_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_156zcgesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zcgesv_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcgesv_bufferSize(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 1852, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zcgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1865
 *     return lwork
 * 
 * cpdef size_t zygesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_159zygesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zygesv_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zygesv_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1869
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZYgesv_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1869, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1870
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZYgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <cuDoubleComplex*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1871
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZYgesv_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <cuDoubleComplex*>dA, ldda, <int*>dipiv,
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 */
        __pyx_v_status = cusolverDnZYgesv_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((cuDoubleComplex *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((cuDoubleComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuDoubleComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1870
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZYgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <cuDoubleComplex*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1875
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 *             <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1875, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1876
 *             <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t zkgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1865
 *     return lwork
 * 
 * cpdef size_t zygesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zygesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_159zygesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_158zygesv_bufferSize[] = "zygesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_159zygesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zygesv_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygesv_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 1865, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygesv_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 1865, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygesv_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 1865, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygesv_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 1865, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygesv_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 1865, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygesv_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 1865, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygesv_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 1865, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygesv_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 1865, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygesv_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 1865, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygesv_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 1865, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zygesv_bufferSize") < 0)) __PYX_ERR(0, 1865, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1865, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1865, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1865, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1865, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1866, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1866, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1866, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1866, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1867, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1867, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1867, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zygesv_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1865, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zygesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_158zygesv_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_158zygesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zygesv_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zygesv_bufferSize(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 1865, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1865, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zygesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1878
 *     return lwork
 * 
 * cpdef size_t zkgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_161zkgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zkgesv_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zkgesv_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1882
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZKgesv_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1882, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1883
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZKgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <cuDoubleComplex*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1884
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZKgesv_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <cuDoubleComplex*>dA, ldda, <int*>dipiv,
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 */
        __pyx_v_status = cusolverDnZKgesv_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((cuDoubleComplex *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((cuDoubleComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuDoubleComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1883
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZKgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <cuDoubleComplex*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1888
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 *             <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1888, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1889
 *             <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t ccgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1878
 *     return lwork
 * 
 * cpdef size_t zkgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zkgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_161zkgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_160zkgesv_bufferSize[] = "zkgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_161zkgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zkgesv_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgesv_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 1878, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgesv_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 1878, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgesv_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 1878, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgesv_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 1878, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgesv_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 1878, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgesv_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 1878, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgesv_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 1878, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgesv_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 1878, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgesv_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 1878, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgesv_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 1878, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zkgesv_bufferSize") < 0)) __PYX_ERR(0, 1878, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1878, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1878, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1878, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1878, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1879, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1879, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1879, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1879, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1880, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1880, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1880, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zkgesv_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1878, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zkgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_160zkgesv_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_160zkgesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zkgesv_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zkgesv_bufferSize(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 1878, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1878, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zkgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1891
 *     return lwork
 * 
 * cpdef size_t ccgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_163ccgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccgesv_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ccgesv_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1895
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCCgesv_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1895, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1896
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCCgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <cuComplex*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1897
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCCgesv_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <cuComplex*>dA, ldda, <int*>dipiv,
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx, <void*>dwork, &lwork)
 */
        __pyx_v_status = cusolverDnCCgesv_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((cuComplex *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((cuComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1896
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCCgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <cuComplex*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1900
 *             <Handle>handle, n, nrhs, <cuComplex*>dA, ldda, <int*>dipiv,
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1900, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1901
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t cygesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1891
 *     return lwork
 * 
 * cpdef size_t ccgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ccgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_163ccgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_162ccgesv_bufferSize[] = "ccgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_163ccgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ccgesv_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgesv_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 1891, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgesv_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 1891, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgesv_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 1891, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgesv_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 1891, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgesv_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 1891, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgesv_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 1891, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgesv_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 1891, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgesv_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 1891, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgesv_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 1891, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgesv_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 1891, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ccgesv_bufferSize") < 0)) __PYX_ERR(0, 1891, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1891, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1891, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1891, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1891, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1892, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1892, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1892, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1892, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1893, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1893, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1893, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ccgesv_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1891, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ccgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_162ccgesv_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_162ccgesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ccgesv_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccgesv_bufferSize(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 1891, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ccgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1903
 *     return lwork
 * 
 * cpdef size_t cygesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_165cygesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cygesv_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cygesv_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1907
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCYgesv_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1907, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1908
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCYgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <cuComplex*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1909
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCYgesv_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <cuComplex*>dA, ldda, <int*>dipiv,
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx, <void*>dwork, &lwork)
 */
        __pyx_v_status = cusolverDnCYgesv_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((cuComplex *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((cuComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1908
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCYgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <cuComplex*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1912
 *             <Handle>handle, n, nrhs, <cuComplex*>dA, ldda, <int*>dipiv,
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1912, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1913
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t ckgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1903
 *     return lwork
 * 
 * cpdef size_t cygesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cygesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_165cygesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_164cygesv_bufferSize[] = "cygesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_165cygesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cygesv_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygesv_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 1903, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygesv_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 1903, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygesv_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 1903, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygesv_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 1903, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygesv_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 1903, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygesv_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 1903, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygesv_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 1903, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygesv_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 1903, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygesv_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 1903, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygesv_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 1903, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cygesv_bufferSize") < 0)) __PYX_ERR(0, 1903, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1903, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1903, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1903, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1903, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1904, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1904, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1904, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1904, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1905, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1905, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1905, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cygesv_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1903, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cygesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_164cygesv_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_164cygesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cygesv_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cygesv_bufferSize(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 1903, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1903, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cygesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1915
 *     return lwork
 * 
 * cpdef size_t ckgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_167ckgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ckgesv_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ckgesv_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1919
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCKgesv_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1920
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCKgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <cuComplex*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1921
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCKgesv_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <cuComplex*>dA, ldda, <int*>dipiv,
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx, <void*>dwork, &lwork)
 */
        __pyx_v_status = cusolverDnCKgesv_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((cuComplex *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((cuComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1920
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCKgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <cuComplex*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1924
 *             <Handle>handle, n, nrhs, <cuComplex*>dA, ldda, <int*>dipiv,
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1924, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1925
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t ddgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1915
 *     return lwork
 * 
 * cpdef size_t ckgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ckgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_167ckgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_166ckgesv_bufferSize[] = "ckgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_167ckgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ckgesv_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgesv_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 1915, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgesv_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 1915, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgesv_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 1915, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgesv_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 1915, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgesv_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 1915, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgesv_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 1915, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgesv_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 1915, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgesv_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 1915, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgesv_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 1915, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgesv_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 1915, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ckgesv_bufferSize") < 0)) __PYX_ERR(0, 1915, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1915, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1915, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1915, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1915, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1916, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1916, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1916, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1916, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1917, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1917, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1917, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ckgesv_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1915, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ckgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_166ckgesv_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_166ckgesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ckgesv_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ckgesv_bufferSize(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 1915, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1915, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ckgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1927
 *     return lwork
 * 
 * cpdef size_t ddgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_169ddgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ddgesv_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ddgesv_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1931
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDDgesv_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1931, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1932
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDDgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1933
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDDgesv_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 *             <double*>dB, lddb, <double*>dX, lddx, <void*>dwork, &lwork)
 */
        __pyx_v_status = cusolverDnDDgesv_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((double *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((double *)__pyx_v_dB), __pyx_v_lddb, ((double *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1932
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDDgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1936
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 *             <double*>dB, lddb, <double*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1936, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1937
 *             <double*>dB, lddb, <double*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t dsgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1927
 *     return lwork
 * 
 * cpdef size_t ddgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ddgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_169ddgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_168ddgesv_bufferSize[] = "ddgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_169ddgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ddgesv_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgesv_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 1927, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgesv_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 1927, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgesv_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 1927, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgesv_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 1927, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgesv_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 1927, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgesv_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 1927, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgesv_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 1927, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgesv_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 1927, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgesv_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 1927, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgesv_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 1927, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ddgesv_bufferSize") < 0)) __PYX_ERR(0, 1927, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1927, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1927, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1927, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1927, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1928, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1928, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1928, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1928, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1929, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1929, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1929, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ddgesv_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1927, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ddgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_168ddgesv_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_168ddgesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ddgesv_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ddgesv_bufferSize(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 1927, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ddgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1939
 *     return lwork
 * 
 * cpdef size_t dsgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_171dsgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsgesv_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dsgesv_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1943
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDSgesv_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1943, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1944
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDSgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1945
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDSgesv_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 *             <double*>dB, lddb, <double*>dX, lddx, <void*>dwork, &lwork)
 */
        __pyx_v_status = cusolverDnDSgesv_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((double *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((double *)__pyx_v_dB), __pyx_v_lddb, ((double *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1944
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDSgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1948
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 *             <double*>dB, lddb, <double*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1949
 *             <double*>dB, lddb, <double*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t dxgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1939
 *     return lwork
 * 
 * cpdef size_t dsgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_171dsgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_170dsgesv_bufferSize[] = "dsgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_171dsgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dsgesv_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgesv_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 1939, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgesv_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 1939, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgesv_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 1939, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgesv_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 1939, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgesv_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 1939, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgesv_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 1939, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgesv_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 1939, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgesv_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 1939, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgesv_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 1939, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgesv_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 1939, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dsgesv_bufferSize") < 0)) __PYX_ERR(0, 1939, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1939, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1939, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1939, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1939, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1940, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1940, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1940, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1940, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1941, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1941, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1941, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dsgesv_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1939, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_170dsgesv_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_170dsgesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dsgesv_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsgesv_bufferSize(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 1939, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1939, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1951
 *     return lwork
 * 
 * cpdef size_t dxgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_173dxgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dxgesv_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dxgesv_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1955
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDXgesv_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1955, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1956
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDXgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1957
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDXgesv_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 *             <double*>dB, lddb, <double*>dX, lddx, <void*>dwork, &lwork)
 */
        __pyx_v_status = cusolverDnDXgesv_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((double *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((double *)__pyx_v_dB), __pyx_v_lddb, ((double *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1956
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDXgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1960
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 *             <double*>dB, lddb, <double*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1960, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1961
 *             <double*>dB, lddb, <double*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t dhgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1951
 *     return lwork
 * 
 * cpdef size_t dxgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dxgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_173dxgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_172dxgesv_bufferSize[] = "dxgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_173dxgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dxgesv_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgesv_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 1951, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgesv_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 1951, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgesv_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 1951, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgesv_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 1951, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgesv_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 1951, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgesv_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 1951, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgesv_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 1951, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgesv_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 1951, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgesv_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 1951, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgesv_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 1951, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dxgesv_bufferSize") < 0)) __PYX_ERR(0, 1951, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1951, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1951, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1951, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1951, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1952, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1952, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1952, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1952, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1953, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1953, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1953, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dxgesv_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1951, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dxgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_172dxgesv_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_172dxgesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dxgesv_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dxgesv_bufferSize(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 1951, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1951, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dxgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1963
 *     return lwork
 * 
 * cpdef size_t dhgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_175dhgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dhgesv_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dhgesv_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1967
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDHgesv_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1967, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1968
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDHgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1969
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDHgesv_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 *             <double*>dB, lddb, <double*>dX, lddx, <void*>dwork, &lwork)
 */
        __pyx_v_status = cusolverDnDHgesv_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((double *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((double *)__pyx_v_dB), __pyx_v_lddb, ((double *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1968
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDHgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1972
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 *             <double*>dB, lddb, <double*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1972, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1973
 *             <double*>dB, lddb, <double*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t ssgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1963
 *     return lwork
 * 
 * cpdef size_t dhgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dhgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_175dhgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_174dhgesv_bufferSize[] = "dhgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_175dhgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dhgesv_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgesv_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 1963, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgesv_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 1963, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgesv_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 1963, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgesv_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 1963, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgesv_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 1963, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgesv_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 1963, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgesv_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 1963, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgesv_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 1963, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgesv_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 1963, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgesv_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 1963, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dhgesv_bufferSize") < 0)) __PYX_ERR(0, 1963, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1963, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1963, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1963, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1963, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1964, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1964, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1964, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1964, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1965, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1965, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1965, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dhgesv_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1963, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dhgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_174dhgesv_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_174dhgesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dhgesv_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dhgesv_bufferSize(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 1963, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1963, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dhgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1975
 *     return lwork
 * 
 * cpdef size_t ssgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_177ssgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssgesv_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ssgesv_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1979
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSSgesv_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1979, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1980
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSSgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <float*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1981
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSSgesv_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <float*>dA, ldda, <int*>dipiv,
 *             <float*>dB, lddb, <float*>dX, lddx, <void*>dwork, &lwork)
 */
        __pyx_v_status = cusolverDnSSgesv_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((float *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((float *)__pyx_v_dB), __pyx_v_lddb, ((float *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1980
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSSgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <float*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1984
 *             <Handle>handle, n, nrhs, <float*>dA, ldda, <int*>dipiv,
 *             <float*>dB, lddb, <float*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1984, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1985
 *             <float*>dB, lddb, <float*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t sxgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1975
 *     return lwork
 * 
 * cpdef size_t ssgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_177ssgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_176ssgesv_bufferSize[] = "ssgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_177ssgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ssgesv_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgesv_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 1975, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgesv_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 1975, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgesv_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 1975, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgesv_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 1975, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgesv_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 1975, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgesv_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 1975, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgesv_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 1975, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgesv_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 1975, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgesv_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 1975, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgesv_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 1975, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ssgesv_bufferSize") < 0)) __PYX_ERR(0, 1975, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1975, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1975, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1975, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1975, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1976, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1976, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1976, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1976, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1977, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1977, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1977, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ssgesv_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1975, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_176ssgesv_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_176ssgesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ssgesv_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssgesv_bufferSize(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 1975, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1975, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1987
 *     return lwork
 * 
 * cpdef size_t sxgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_179sxgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sxgesv_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sxgesv_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1991
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSXgesv_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1991, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1992
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSXgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <float*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":1993
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSXgesv_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <float*>dA, ldda, <int*>dipiv,
 *             <float*>dB, lddb, <float*>dX, lddx, <void*>dwork, &lwork)
 */
        __pyx_v_status = cusolverDnSXgesv_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((float *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((float *)__pyx_v_dB), __pyx_v_lddb, ((float *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":1992
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSXgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <float*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":1996
 *             <Handle>handle, n, nrhs, <float*>dA, ldda, <int*>dipiv,
 *             <float*>dB, lddb, <float*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1996, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1997
 *             <float*>dB, lddb, <float*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t shgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1987
 *     return lwork
 * 
 * cpdef size_t sxgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sxgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_179sxgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_178sxgesv_bufferSize[] = "sxgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_179sxgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sxgesv_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgesv_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 1987, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgesv_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 1987, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgesv_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 1987, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgesv_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 1987, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgesv_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 1987, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgesv_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 1987, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgesv_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 1987, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgesv_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 1987, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgesv_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 1987, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgesv_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 1987, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sxgesv_bufferSize") < 0)) __PYX_ERR(0, 1987, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1987, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1987, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1987, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1987, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1988, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1988, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1988, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1988, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1989, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1989, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1989, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sxgesv_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1987, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sxgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_178sxgesv_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_178sxgesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sxgesv_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sxgesv_bufferSize(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 1987, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1987, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sxgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":1999
 *     return lwork
 * 
 * cpdef size_t shgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_181shgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_shgesv_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("shgesv_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2003
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSHgesv_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2003, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2004
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSHgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <float*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2005
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSHgesv_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <float*>dA, ldda, <int*>dipiv,
 *             <float*>dB, lddb, <float*>dX, lddx, <void*>dwork, &lwork)
 */
        __pyx_v_status = cusolverDnSHgesv_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((float *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((float *)__pyx_v_dB), __pyx_v_lddb, ((float *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2004
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSHgesv_bufferSize(
 *             <Handle>handle, n, nrhs, <float*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2008
 *             <Handle>handle, n, nrhs, <float*>dA, ldda, <int*>dipiv,
 *             <float*>dB, lddb, <float*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2008, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2009
 *             <float*>dB, lddb, <float*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int zzgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1999
 *     return lwork
 * 
 * cpdef size_t shgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA,             # <<<<<<<<<<<<<<
 *                                int ldda, size_t dipiv, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.shgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_181shgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_180shgesv_bufferSize[] = "shgesv_bufferSize(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_181shgesv_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("shgesv_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgesv_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 1999, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgesv_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 1999, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgesv_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 1999, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgesv_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 1999, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgesv_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 1999, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgesv_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 1999, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgesv_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 1999, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgesv_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 1999, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgesv_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 1999, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgesv_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 1999, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "shgesv_bufferSize") < 0)) __PYX_ERR(0, 1999, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1999, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1999, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1999, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1999, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2000, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2000, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2000, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2000, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2001, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2001, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2001, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("shgesv_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1999, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.shgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_180shgesv_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_180shgesv_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("shgesv_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_shgesv_bufferSize(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 1999, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.shgesv_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2011
 *     return lwork
 * 
 * cpdef int zzgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_183zzgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zzgesv(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zzgesv", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2015
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZZgesv(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2015, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2016
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZZgesv(
 *             <Handle>handle, n, nrhs, <cuDoubleComplex*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2017
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZZgesv(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <cuDoubleComplex*>dA, ldda, <int*>dipiv,
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 */
        __pyx_v_status = cusolverDnZZgesv(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((cuDoubleComplex *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((cuDoubleComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuDoubleComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2016
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZZgesv(
 *             <Handle>handle, n, nrhs, <cuDoubleComplex*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2021
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2021, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2022
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * cpdef int zcgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2011
 *     return lwork
 * 
 * cpdef int zzgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.zzgesv", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_183zzgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_182zzgesv[] = "zzgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_183zzgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zzgesv (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgesv", 1, 13, 13, 1); __PYX_ERR(0, 2011, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgesv", 1, 13, 13, 2); __PYX_ERR(0, 2011, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgesv", 1, 13, 13, 3); __PYX_ERR(0, 2011, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgesv", 1, 13, 13, 4); __PYX_ERR(0, 2011, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgesv", 1, 13, 13, 5); __PYX_ERR(0, 2011, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgesv", 1, 13, 13, 6); __PYX_ERR(0, 2011, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgesv", 1, 13, 13, 7); __PYX_ERR(0, 2011, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgesv", 1, 13, 13, 8); __PYX_ERR(0, 2011, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgesv", 1, 13, 13, 9); __PYX_ERR(0, 2011, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgesv", 1, 13, 13, 10); __PYX_ERR(0, 2011, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgesv", 1, 13, 13, 11); __PYX_ERR(0, 2011, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgesv", 1, 13, 13, 12); __PYX_ERR(0, 2011, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zzgesv") < 0)) __PYX_ERR(0, 2011, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2011, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2011, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2011, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2011, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2011, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2012, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2012, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2012, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2012, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2012, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2013, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2013, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2013, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zzgesv", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2011, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zzgesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_182zzgesv(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_182zzgesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zzgesv", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zzgesv(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2011, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zzgesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2024
 *     return iter
 * 
 * cpdef int zcgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_185zcgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcgesv(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zcgesv", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2028
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZCgesv(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2028, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2029
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZCgesv(
 *             <Handle>handle, n, nrhs, <cuDoubleComplex*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2030
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZCgesv(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <cuDoubleComplex*>dA, ldda, <int*>dipiv,
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 */
        __pyx_v_status = cusolverDnZCgesv(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((cuDoubleComplex *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((cuDoubleComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuDoubleComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2029
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZCgesv(
 *             <Handle>handle, n, nrhs, <cuDoubleComplex*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2034
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2034, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2035
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * cpdef int zygesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2024
 *     return iter
 * 
 * cpdef int zcgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.zcgesv", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_185zcgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_184zcgesv[] = "zcgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_185zcgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zcgesv (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgesv", 1, 13, 13, 1); __PYX_ERR(0, 2024, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgesv", 1, 13, 13, 2); __PYX_ERR(0, 2024, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgesv", 1, 13, 13, 3); __PYX_ERR(0, 2024, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgesv", 1, 13, 13, 4); __PYX_ERR(0, 2024, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgesv", 1, 13, 13, 5); __PYX_ERR(0, 2024, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgesv", 1, 13, 13, 6); __PYX_ERR(0, 2024, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgesv", 1, 13, 13, 7); __PYX_ERR(0, 2024, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgesv", 1, 13, 13, 8); __PYX_ERR(0, 2024, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgesv", 1, 13, 13, 9); __PYX_ERR(0, 2024, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgesv", 1, 13, 13, 10); __PYX_ERR(0, 2024, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgesv", 1, 13, 13, 11); __PYX_ERR(0, 2024, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgesv", 1, 13, 13, 12); __PYX_ERR(0, 2024, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zcgesv") < 0)) __PYX_ERR(0, 2024, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2024, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2024, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2024, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2024, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2024, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2025, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2025, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2025, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2025, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2025, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2026, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2026, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2026, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zcgesv", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2024, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zcgesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_184zcgesv(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_184zcgesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zcgesv", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcgesv(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2024, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zcgesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2037
 *     return iter
 * 
 * cpdef int zygesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_187zygesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zygesv(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zygesv", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2041
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZYgesv(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2041, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2042
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZYgesv(
 *             <Handle>handle, n, nrhs, <cuDoubleComplex*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2043
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZYgesv(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <cuDoubleComplex*>dA, ldda, <int*>dipiv,
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 */
        __pyx_v_status = cusolverDnZYgesv(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((cuDoubleComplex *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((cuDoubleComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuDoubleComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2042
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZYgesv(
 *             <Handle>handle, n, nrhs, <cuDoubleComplex*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2047
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2047, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2048
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * cpdef int zkgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2037
 *     return iter
 * 
 * cpdef int zygesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.zygesv", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_187zygesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_186zygesv[] = "zygesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_187zygesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zygesv (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygesv", 1, 13, 13, 1); __PYX_ERR(0, 2037, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygesv", 1, 13, 13, 2); __PYX_ERR(0, 2037, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygesv", 1, 13, 13, 3); __PYX_ERR(0, 2037, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygesv", 1, 13, 13, 4); __PYX_ERR(0, 2037, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygesv", 1, 13, 13, 5); __PYX_ERR(0, 2037, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygesv", 1, 13, 13, 6); __PYX_ERR(0, 2037, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygesv", 1, 13, 13, 7); __PYX_ERR(0, 2037, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygesv", 1, 13, 13, 8); __PYX_ERR(0, 2037, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygesv", 1, 13, 13, 9); __PYX_ERR(0, 2037, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygesv", 1, 13, 13, 10); __PYX_ERR(0, 2037, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygesv", 1, 13, 13, 11); __PYX_ERR(0, 2037, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygesv", 1, 13, 13, 12); __PYX_ERR(0, 2037, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zygesv") < 0)) __PYX_ERR(0, 2037, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2037, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2037, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2037, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2037, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2037, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2038, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2038, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2038, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2038, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2038, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2039, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2039, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2039, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zygesv", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2037, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zygesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_186zygesv(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_186zygesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zygesv", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zygesv(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2037, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zygesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2050
 *     return iter
 * 
 * cpdef int zkgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_189zkgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zkgesv(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zkgesv", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2054
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZKgesv(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2055
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZKgesv(
 *             <Handle>handle, n, nrhs, <cuDoubleComplex*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2056
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZKgesv(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <cuDoubleComplex*>dA, ldda, <int*>dipiv,
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 */
        __pyx_v_status = cusolverDnZKgesv(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((cuDoubleComplex *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((cuDoubleComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuDoubleComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2055
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZKgesv(
 *             <Handle>handle, n, nrhs, <cuDoubleComplex*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2060
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2060, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2061
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * cpdef int ccgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2050
 *     return iter
 * 
 * cpdef int zkgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.zkgesv", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_189zkgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_188zkgesv[] = "zkgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_189zkgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zkgesv (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgesv", 1, 13, 13, 1); __PYX_ERR(0, 2050, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgesv", 1, 13, 13, 2); __PYX_ERR(0, 2050, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgesv", 1, 13, 13, 3); __PYX_ERR(0, 2050, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgesv", 1, 13, 13, 4); __PYX_ERR(0, 2050, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgesv", 1, 13, 13, 5); __PYX_ERR(0, 2050, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgesv", 1, 13, 13, 6); __PYX_ERR(0, 2050, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgesv", 1, 13, 13, 7); __PYX_ERR(0, 2050, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgesv", 1, 13, 13, 8); __PYX_ERR(0, 2050, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgesv", 1, 13, 13, 9); __PYX_ERR(0, 2050, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgesv", 1, 13, 13, 10); __PYX_ERR(0, 2050, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgesv", 1, 13, 13, 11); __PYX_ERR(0, 2050, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgesv", 1, 13, 13, 12); __PYX_ERR(0, 2050, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zkgesv") < 0)) __PYX_ERR(0, 2050, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2050, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2050, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2050, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2050, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2050, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2051, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2051, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2051, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2051, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2051, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2052, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2052, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2052, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zkgesv", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2050, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zkgesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_188zkgesv(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_188zkgesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zkgesv", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zkgesv(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2050, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zkgesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2063
 *     return iter
 * 
 * cpdef int ccgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_191ccgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccgesv(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ccgesv", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2067
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCCgesv(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2068
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCCgesv(
 *             <Handle>handle, n, nrhs, <cuComplex*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2069
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCCgesv(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <cuComplex*>dA, ldda, <int*>dipiv,
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx,
 */
        __pyx_v_status = cusolverDnCCgesv(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((cuComplex *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((cuComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2068
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCCgesv(
 *             <Handle>handle, n, nrhs, <cuComplex*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2073
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2073, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2074
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * cpdef int cygesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2063
 *     return iter
 * 
 * cpdef int ccgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.ccgesv", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_191ccgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_190ccgesv[] = "ccgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_191ccgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ccgesv (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgesv", 1, 13, 13, 1); __PYX_ERR(0, 2063, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgesv", 1, 13, 13, 2); __PYX_ERR(0, 2063, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgesv", 1, 13, 13, 3); __PYX_ERR(0, 2063, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgesv", 1, 13, 13, 4); __PYX_ERR(0, 2063, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgesv", 1, 13, 13, 5); __PYX_ERR(0, 2063, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgesv", 1, 13, 13, 6); __PYX_ERR(0, 2063, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgesv", 1, 13, 13, 7); __PYX_ERR(0, 2063, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgesv", 1, 13, 13, 8); __PYX_ERR(0, 2063, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgesv", 1, 13, 13, 9); __PYX_ERR(0, 2063, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgesv", 1, 13, 13, 10); __PYX_ERR(0, 2063, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgesv", 1, 13, 13, 11); __PYX_ERR(0, 2063, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgesv", 1, 13, 13, 12); __PYX_ERR(0, 2063, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ccgesv") < 0)) __PYX_ERR(0, 2063, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2063, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2063, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2063, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2063, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2063, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2064, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2064, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2064, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2064, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2064, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2065, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2065, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2065, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ccgesv", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2063, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ccgesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_190ccgesv(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_190ccgesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ccgesv", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccgesv(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ccgesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2076
 *     return iter
 * 
 * cpdef int cygesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_193cygesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cygesv(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cygesv", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2080
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCYgesv(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2080, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2081
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCYgesv(
 *             <Handle>handle, n, nrhs, <cuComplex*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2082
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCYgesv(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <cuComplex*>dA, ldda, <int*>dipiv,
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx,
 */
        __pyx_v_status = cusolverDnCYgesv(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((cuComplex *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((cuComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2081
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCYgesv(
 *             <Handle>handle, n, nrhs, <cuComplex*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2086
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2087
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * cpdef int ckgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2076
 *     return iter
 * 
 * cpdef int cygesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.cygesv", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_193cygesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_192cygesv[] = "cygesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_193cygesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cygesv (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygesv", 1, 13, 13, 1); __PYX_ERR(0, 2076, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygesv", 1, 13, 13, 2); __PYX_ERR(0, 2076, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygesv", 1, 13, 13, 3); __PYX_ERR(0, 2076, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygesv", 1, 13, 13, 4); __PYX_ERR(0, 2076, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygesv", 1, 13, 13, 5); __PYX_ERR(0, 2076, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygesv", 1, 13, 13, 6); __PYX_ERR(0, 2076, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygesv", 1, 13, 13, 7); __PYX_ERR(0, 2076, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygesv", 1, 13, 13, 8); __PYX_ERR(0, 2076, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygesv", 1, 13, 13, 9); __PYX_ERR(0, 2076, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygesv", 1, 13, 13, 10); __PYX_ERR(0, 2076, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygesv", 1, 13, 13, 11); __PYX_ERR(0, 2076, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygesv", 1, 13, 13, 12); __PYX_ERR(0, 2076, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cygesv") < 0)) __PYX_ERR(0, 2076, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2076, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2076, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2076, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2076, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2076, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2077, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2077, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2077, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2077, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2077, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2078, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2078, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2078, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cygesv", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2076, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cygesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_192cygesv(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_192cygesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cygesv", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cygesv(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cygesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2089
 *     return iter
 * 
 * cpdef int ckgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_195ckgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ckgesv(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ckgesv", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2093
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCKgesv(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2093, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2094
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCKgesv(
 *             <Handle>handle, n, nrhs, <cuComplex*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2095
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCKgesv(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <cuComplex*>dA, ldda, <int*>dipiv,
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx,
 */
        __pyx_v_status = cusolverDnCKgesv(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((cuComplex *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((cuComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2094
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCKgesv(
 *             <Handle>handle, n, nrhs, <cuComplex*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2099
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2099, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2100
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * cpdef int ddgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2089
 *     return iter
 * 
 * cpdef int ckgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.ckgesv", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_195ckgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_194ckgesv[] = "ckgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_195ckgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ckgesv (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgesv", 1, 13, 13, 1); __PYX_ERR(0, 2089, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgesv", 1, 13, 13, 2); __PYX_ERR(0, 2089, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgesv", 1, 13, 13, 3); __PYX_ERR(0, 2089, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgesv", 1, 13, 13, 4); __PYX_ERR(0, 2089, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgesv", 1, 13, 13, 5); __PYX_ERR(0, 2089, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgesv", 1, 13, 13, 6); __PYX_ERR(0, 2089, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgesv", 1, 13, 13, 7); __PYX_ERR(0, 2089, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgesv", 1, 13, 13, 8); __PYX_ERR(0, 2089, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgesv", 1, 13, 13, 9); __PYX_ERR(0, 2089, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgesv", 1, 13, 13, 10); __PYX_ERR(0, 2089, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgesv", 1, 13, 13, 11); __PYX_ERR(0, 2089, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgesv", 1, 13, 13, 12); __PYX_ERR(0, 2089, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ckgesv") < 0)) __PYX_ERR(0, 2089, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2089, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2089, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2089, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2089, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2089, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2090, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2090, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2090, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2090, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2090, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2091, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2091, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2091, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ckgesv", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2089, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ckgesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_194ckgesv(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_194ckgesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ckgesv", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ckgesv(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2089, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ckgesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2102
 *     return iter
 * 
 * cpdef int ddgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_197ddgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ddgesv(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ddgesv", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2106
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDDgesv(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2107
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDDgesv(
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2108
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDDgesv(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 *             <double*>dB, lddb, <double*>dX, lddx,
 */
        __pyx_v_status = cusolverDnDDgesv(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((double *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((double *)__pyx_v_dB), __pyx_v_lddb, ((double *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2107
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDDgesv(
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2112
 *             <double*>dB, lddb, <double*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2113
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * cpdef int dsgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2102
 *     return iter
 * 
 * cpdef int ddgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.ddgesv", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_197ddgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_196ddgesv[] = "ddgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_197ddgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ddgesv (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgesv", 1, 13, 13, 1); __PYX_ERR(0, 2102, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgesv", 1, 13, 13, 2); __PYX_ERR(0, 2102, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgesv", 1, 13, 13, 3); __PYX_ERR(0, 2102, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgesv", 1, 13, 13, 4); __PYX_ERR(0, 2102, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgesv", 1, 13, 13, 5); __PYX_ERR(0, 2102, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgesv", 1, 13, 13, 6); __PYX_ERR(0, 2102, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgesv", 1, 13, 13, 7); __PYX_ERR(0, 2102, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgesv", 1, 13, 13, 8); __PYX_ERR(0, 2102, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgesv", 1, 13, 13, 9); __PYX_ERR(0, 2102, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgesv", 1, 13, 13, 10); __PYX_ERR(0, 2102, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgesv", 1, 13, 13, 11); __PYX_ERR(0, 2102, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgesv", 1, 13, 13, 12); __PYX_ERR(0, 2102, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ddgesv") < 0)) __PYX_ERR(0, 2102, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2102, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2102, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2102, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2102, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2102, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2103, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2103, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2103, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2103, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2103, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2104, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2104, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2104, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ddgesv", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2102, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ddgesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_196ddgesv(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_196ddgesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ddgesv", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ddgesv(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ddgesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2115
 *     return iter
 * 
 * cpdef int dsgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_199dsgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsgesv(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dsgesv", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2119
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDSgesv(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2120
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDSgesv(
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2121
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDSgesv(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 *             <double*>dB, lddb, <double*>dX, lddx,
 */
        __pyx_v_status = cusolverDnDSgesv(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((double *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((double *)__pyx_v_dB), __pyx_v_lddb, ((double *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2120
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDSgesv(
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2125
 *             <double*>dB, lddb, <double*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2126
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * cpdef int dxgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2115
 *     return iter
 * 
 * cpdef int dsgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.dsgesv", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_199dsgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_198dsgesv[] = "dsgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_199dsgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dsgesv (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgesv", 1, 13, 13, 1); __PYX_ERR(0, 2115, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgesv", 1, 13, 13, 2); __PYX_ERR(0, 2115, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgesv", 1, 13, 13, 3); __PYX_ERR(0, 2115, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgesv", 1, 13, 13, 4); __PYX_ERR(0, 2115, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgesv", 1, 13, 13, 5); __PYX_ERR(0, 2115, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgesv", 1, 13, 13, 6); __PYX_ERR(0, 2115, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgesv", 1, 13, 13, 7); __PYX_ERR(0, 2115, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgesv", 1, 13, 13, 8); __PYX_ERR(0, 2115, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgesv", 1, 13, 13, 9); __PYX_ERR(0, 2115, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgesv", 1, 13, 13, 10); __PYX_ERR(0, 2115, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgesv", 1, 13, 13, 11); __PYX_ERR(0, 2115, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgesv", 1, 13, 13, 12); __PYX_ERR(0, 2115, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dsgesv") < 0)) __PYX_ERR(0, 2115, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2115, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2115, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2115, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2115, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2115, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2116, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2116, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2116, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2116, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2116, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2117, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2117, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2117, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dsgesv", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2115, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsgesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_198dsgesv(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_198dsgesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dsgesv", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsgesv(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsgesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2128
 *     return iter
 * 
 * cpdef int dxgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_201dxgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dxgesv(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dxgesv", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2132
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDXgesv(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2133
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDXgesv(
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2134
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDXgesv(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 *             <double*>dB, lddb, <double*>dX, lddx,
 */
        __pyx_v_status = cusolverDnDXgesv(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((double *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((double *)__pyx_v_dB), __pyx_v_lddb, ((double *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2133
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDXgesv(
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2138
 *             <double*>dB, lddb, <double*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2139
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * cpdef int dhgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2128
 *     return iter
 * 
 * cpdef int dxgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.dxgesv", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_201dxgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_200dxgesv[] = "dxgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_201dxgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dxgesv (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgesv", 1, 13, 13, 1); __PYX_ERR(0, 2128, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgesv", 1, 13, 13, 2); __PYX_ERR(0, 2128, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgesv", 1, 13, 13, 3); __PYX_ERR(0, 2128, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgesv", 1, 13, 13, 4); __PYX_ERR(0, 2128, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgesv", 1, 13, 13, 5); __PYX_ERR(0, 2128, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgesv", 1, 13, 13, 6); __PYX_ERR(0, 2128, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgesv", 1, 13, 13, 7); __PYX_ERR(0, 2128, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgesv", 1, 13, 13, 8); __PYX_ERR(0, 2128, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgesv", 1, 13, 13, 9); __PYX_ERR(0, 2128, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgesv", 1, 13, 13, 10); __PYX_ERR(0, 2128, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgesv", 1, 13, 13, 11); __PYX_ERR(0, 2128, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgesv", 1, 13, 13, 12); __PYX_ERR(0, 2128, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dxgesv") < 0)) __PYX_ERR(0, 2128, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2128, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2128, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2128, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2128, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2128, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2129, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2129, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2129, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2129, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2129, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2130, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2130, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2130, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dxgesv", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2128, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dxgesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_200dxgesv(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_200dxgesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dxgesv", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dxgesv(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dxgesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2141
 *     return iter
 * 
 * cpdef int dhgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_203dhgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dhgesv(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dhgesv", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2145
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDHgesv(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2146
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDHgesv(
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2147
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDHgesv(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 *             <double*>dB, lddb, <double*>dX, lddx,
 */
        __pyx_v_status = cusolverDnDHgesv(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((double *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((double *)__pyx_v_dB), __pyx_v_lddb, ((double *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2146
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDHgesv(
 *             <Handle>handle, n, nrhs, <double*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2151
 *             <double*>dB, lddb, <double*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2152
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * cpdef int ssgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2141
 *     return iter
 * 
 * cpdef int dhgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.dhgesv", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_203dhgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_202dhgesv[] = "dhgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_203dhgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dhgesv (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgesv", 1, 13, 13, 1); __PYX_ERR(0, 2141, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgesv", 1, 13, 13, 2); __PYX_ERR(0, 2141, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgesv", 1, 13, 13, 3); __PYX_ERR(0, 2141, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgesv", 1, 13, 13, 4); __PYX_ERR(0, 2141, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgesv", 1, 13, 13, 5); __PYX_ERR(0, 2141, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgesv", 1, 13, 13, 6); __PYX_ERR(0, 2141, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgesv", 1, 13, 13, 7); __PYX_ERR(0, 2141, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgesv", 1, 13, 13, 8); __PYX_ERR(0, 2141, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgesv", 1, 13, 13, 9); __PYX_ERR(0, 2141, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgesv", 1, 13, 13, 10); __PYX_ERR(0, 2141, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgesv", 1, 13, 13, 11); __PYX_ERR(0, 2141, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgesv", 1, 13, 13, 12); __PYX_ERR(0, 2141, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dhgesv") < 0)) __PYX_ERR(0, 2141, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2141, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2141, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2141, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2141, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2141, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2142, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2142, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2142, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2142, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2142, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2143, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2143, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2143, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dhgesv", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2141, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dhgesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_202dhgesv(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_202dhgesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dhgesv", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dhgesv(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dhgesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2154
 *     return iter
 * 
 * cpdef int ssgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_205ssgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssgesv(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ssgesv", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2158
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSSgesv(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2159
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSSgesv(
 *             <Handle>handle, n, nrhs, <float*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2160
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSSgesv(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <float*>dA, ldda, <int*>dipiv,
 *             <float*>dB, lddb, <float*>dX, lddx,
 */
        __pyx_v_status = cusolverDnSSgesv(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((float *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((float *)__pyx_v_dB), __pyx_v_lddb, ((float *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2159
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSSgesv(
 *             <Handle>handle, n, nrhs, <float*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2164
 *             <float*>dB, lddb, <float*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2165
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * cpdef int sxgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2154
 *     return iter
 * 
 * cpdef int ssgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.ssgesv", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_205ssgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_204ssgesv[] = "ssgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_205ssgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ssgesv (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgesv", 1, 13, 13, 1); __PYX_ERR(0, 2154, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgesv", 1, 13, 13, 2); __PYX_ERR(0, 2154, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgesv", 1, 13, 13, 3); __PYX_ERR(0, 2154, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgesv", 1, 13, 13, 4); __PYX_ERR(0, 2154, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgesv", 1, 13, 13, 5); __PYX_ERR(0, 2154, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgesv", 1, 13, 13, 6); __PYX_ERR(0, 2154, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgesv", 1, 13, 13, 7); __PYX_ERR(0, 2154, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgesv", 1, 13, 13, 8); __PYX_ERR(0, 2154, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgesv", 1, 13, 13, 9); __PYX_ERR(0, 2154, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgesv", 1, 13, 13, 10); __PYX_ERR(0, 2154, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgesv", 1, 13, 13, 11); __PYX_ERR(0, 2154, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgesv", 1, 13, 13, 12); __PYX_ERR(0, 2154, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ssgesv") < 0)) __PYX_ERR(0, 2154, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2154, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2154, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2154, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2154, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2154, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2155, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2155, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2155, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2155, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2155, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2156, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2156, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2156, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ssgesv", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2154, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssgesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_204ssgesv(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_204ssgesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ssgesv", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssgesv(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssgesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2167
 *     return iter
 * 
 * cpdef int sxgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_207sxgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sxgesv(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sxgesv", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2171
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSXgesv(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2171, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2172
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSXgesv(
 *             <Handle>handle, n, nrhs, <float*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2173
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSXgesv(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <float*>dA, ldda, <int*>dipiv,
 *             <float*>dB, lddb, <float*>dX, lddx,
 */
        __pyx_v_status = cusolverDnSXgesv(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((float *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((float *)__pyx_v_dB), __pyx_v_lddb, ((float *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2172
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSXgesv(
 *             <Handle>handle, n, nrhs, <float*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2177
 *             <float*>dB, lddb, <float*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2178
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * cpdef int shgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2167
 *     return iter
 * 
 * cpdef int sxgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.sxgesv", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_207sxgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_206sxgesv[] = "sxgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_207sxgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sxgesv (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgesv", 1, 13, 13, 1); __PYX_ERR(0, 2167, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgesv", 1, 13, 13, 2); __PYX_ERR(0, 2167, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgesv", 1, 13, 13, 3); __PYX_ERR(0, 2167, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgesv", 1, 13, 13, 4); __PYX_ERR(0, 2167, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgesv", 1, 13, 13, 5); __PYX_ERR(0, 2167, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgesv", 1, 13, 13, 6); __PYX_ERR(0, 2167, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgesv", 1, 13, 13, 7); __PYX_ERR(0, 2167, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgesv", 1, 13, 13, 8); __PYX_ERR(0, 2167, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgesv", 1, 13, 13, 9); __PYX_ERR(0, 2167, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgesv", 1, 13, 13, 10); __PYX_ERR(0, 2167, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgesv", 1, 13, 13, 11); __PYX_ERR(0, 2167, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgesv", 1, 13, 13, 12); __PYX_ERR(0, 2167, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sxgesv") < 0)) __PYX_ERR(0, 2167, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2167, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2167, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2167, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2167, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2167, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2168, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2168, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2168, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2168, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2168, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2169, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2169, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2169, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sxgesv", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2167, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sxgesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_206sxgesv(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_206sxgesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sxgesv", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sxgesv(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sxgesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2180
 *     return iter
 * 
 * cpdef int shgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_209shgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_shgesv(intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("shgesv", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2184
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSHgesv(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2185
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSHgesv(
 *             <Handle>handle, n, nrhs, <float*>dA, ldda, <int*>dipiv,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2186
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSHgesv(             # <<<<<<<<<<<<<<
 *             <Handle>handle, n, nrhs, <float*>dA, ldda, <int*>dipiv,
 *             <float*>dB, lddb, <float*>dX, lddx,
 */
        __pyx_v_status = cusolverDnSHgesv(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_n, __pyx_v_nrhs, ((float *)__pyx_v_dA), __pyx_v_ldda, ((int *)__pyx_v_dipiv), ((float *)__pyx_v_dB), __pyx_v_lddb, ((float *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2185
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSHgesv(
 *             <Handle>handle, n, nrhs, <float*>dA, ldda, <int*>dipiv,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2190
 *             <float*>dB, lddb, <float*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2191
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t zzgels_bufferSize(intptr_t handle, int m, int n, int nrhs,
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2180
 *     return iter
 * 
 * cpdef int shgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dipiv, size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.shgesv", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_209shgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_208shgesv[] = "shgesv(intptr_t handle, int n, int nrhs, size_t dA, int ldda, size_t dipiv, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_209shgesv(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dipiv;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("shgesv (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dipiv,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgesv", 1, 13, 13, 1); __PYX_ERR(0, 2180, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgesv", 1, 13, 13, 2); __PYX_ERR(0, 2180, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgesv", 1, 13, 13, 3); __PYX_ERR(0, 2180, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgesv", 1, 13, 13, 4); __PYX_ERR(0, 2180, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dipiv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgesv", 1, 13, 13, 5); __PYX_ERR(0, 2180, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgesv", 1, 13, 13, 6); __PYX_ERR(0, 2180, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgesv", 1, 13, 13, 7); __PYX_ERR(0, 2180, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgesv", 1, 13, 13, 8); __PYX_ERR(0, 2180, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgesv", 1, 13, 13, 9); __PYX_ERR(0, 2180, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgesv", 1, 13, 13, 10); __PYX_ERR(0, 2180, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgesv", 1, 13, 13, 11); __PYX_ERR(0, 2180, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgesv", 1, 13, 13, 12); __PYX_ERR(0, 2180, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "shgesv") < 0)) __PYX_ERR(0, 2180, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2180, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2180, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2180, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2180, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2180, __pyx_L3_error)
    __pyx_v_dipiv = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_dipiv == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2181, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2181, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2181, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2181, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2181, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2182, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2182, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2182, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("shgesv", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2180, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.shgesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_208shgesv(__pyx_self, __pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_208shgesv(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dipiv, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("shgesv", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_shgesv(__pyx_v_handle, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dipiv, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.shgesv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2193
 *     return iter
 * 
 * cpdef size_t zzgels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_211zzgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zzgels_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zzgels_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2197
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZZgels_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2198
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZZgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <cuDoubleComplex*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2199
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZZgels_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <cuDoubleComplex*>dA, ldda,
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 */
        __pyx_v_status = cusolverDnZZgels_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((cuDoubleComplex *)__pyx_v_dA), __pyx_v_ldda, ((cuDoubleComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuDoubleComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2198
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZZgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <cuDoubleComplex*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2203
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 *             <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2204
 *             <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t zcgels_bufferSize(intptr_t handle, int m, int n, int nrhs,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2193
 *     return iter
 * 
 * cpdef size_t zzgels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zzgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_211zzgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_210zzgels_bufferSize[] = "zzgels_bufferSize(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_211zzgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zzgels_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgels_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 2193, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgels_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 2193, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgels_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 2193, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgels_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 2193, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgels_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 2193, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgels_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 2193, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgels_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 2193, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgels_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 2193, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgels_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 2193, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgels_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 2193, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zzgels_bufferSize") < 0)) __PYX_ERR(0, 2193, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2193, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2193, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2193, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2193, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2194, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2194, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2194, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2194, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2195, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2195, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2195, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zzgels_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2193, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zzgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_210zzgels_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_210zzgels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zzgels_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zzgels_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 2193, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zzgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2206
 *     return lwork
 * 
 * cpdef size_t zcgels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_213zcgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcgels_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zcgels_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2210
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZCgels_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2211
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZCgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <cuDoubleComplex*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2212
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZCgels_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <cuDoubleComplex*>dA, ldda,
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 */
        __pyx_v_status = cusolverDnZCgels_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((cuDoubleComplex *)__pyx_v_dA), __pyx_v_ldda, ((cuDoubleComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuDoubleComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2211
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZCgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <cuDoubleComplex*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2216
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 *             <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2217
 *             <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t zygels_bufferSize(intptr_t handle, int m, int n, int nrhs,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2206
 *     return lwork
 * 
 * cpdef size_t zcgels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zcgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_213zcgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_212zcgels_bufferSize[] = "zcgels_bufferSize(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_213zcgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zcgels_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgels_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 2206, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgels_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 2206, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgels_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 2206, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgels_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 2206, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgels_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 2206, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgels_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 2206, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgels_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 2206, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgels_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 2206, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgels_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 2206, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgels_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 2206, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zcgels_bufferSize") < 0)) __PYX_ERR(0, 2206, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2206, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2206, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2206, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2206, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2207, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2207, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2207, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2207, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2208, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2208, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2208, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zcgels_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2206, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zcgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_212zcgels_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_212zcgels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zcgels_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcgels_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 2206, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zcgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2219
 *     return lwork
 * 
 * cpdef size_t zygels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_215zygels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zygels_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zygels_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2223
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZYgels_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2223, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2224
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZYgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <cuDoubleComplex*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2225
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZYgels_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <cuDoubleComplex*>dA, ldda,
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 */
        __pyx_v_status = cusolverDnZYgels_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((cuDoubleComplex *)__pyx_v_dA), __pyx_v_ldda, ((cuDoubleComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuDoubleComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2224
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZYgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <cuDoubleComplex*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2229
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 *             <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2230
 *             <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t zkgels_bufferSize(intptr_t handle, int m, int n, int nrhs,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2219
 *     return lwork
 * 
 * cpdef size_t zygels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zygels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_215zygels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_214zygels_bufferSize[] = "zygels_bufferSize(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_215zygels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zygels_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygels_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 2219, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygels_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 2219, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygels_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 2219, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygels_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 2219, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygels_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 2219, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygels_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 2219, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygels_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 2219, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygels_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 2219, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygels_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 2219, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygels_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 2219, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zygels_bufferSize") < 0)) __PYX_ERR(0, 2219, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2219, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2219, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2219, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2219, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2220, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2220, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2220, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2220, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2221, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2221, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2221, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zygels_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2219, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zygels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_214zygels_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_214zygels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zygels_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zygels_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 2219, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zygels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2232
 *     return lwork
 * 
 * cpdef size_t zkgels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_217zkgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zkgels_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zkgels_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2236
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZKgels_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2236, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2237
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZKgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <cuDoubleComplex*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2238
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZKgels_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <cuDoubleComplex*>dA, ldda,
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 */
        __pyx_v_status = cusolverDnZKgels_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((cuDoubleComplex *)__pyx_v_dA), __pyx_v_ldda, ((cuDoubleComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuDoubleComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2237
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZKgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <cuDoubleComplex*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2242
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 *             <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2242, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2243
 *             <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t ccgels_bufferSize(intptr_t handle, int m, int n, int nrhs,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2232
 *     return lwork
 * 
 * cpdef size_t zkgels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zkgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_217zkgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_216zkgels_bufferSize[] = "zkgels_bufferSize(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_217zkgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zkgels_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgels_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 2232, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgels_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 2232, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgels_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 2232, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgels_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 2232, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgels_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 2232, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgels_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 2232, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgels_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 2232, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgels_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 2232, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgels_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 2232, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgels_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 2232, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zkgels_bufferSize") < 0)) __PYX_ERR(0, 2232, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2232, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2232, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2232, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2232, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2233, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2233, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2233, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2233, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2234, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2234, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2234, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zkgels_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2232, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zkgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_216zkgels_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_216zkgels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zkgels_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zkgels_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 2232, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zkgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2245
 *     return lwork
 * 
 * cpdef size_t ccgels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_219ccgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccgels_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ccgels_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2249
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCCgels_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2250
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCCgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <cuComplex*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2251
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCCgels_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <cuComplex*>dA, ldda,
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx, <void*>dwork, &lwork)
 */
        __pyx_v_status = cusolverDnCCgels_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((cuComplex *)__pyx_v_dA), __pyx_v_ldda, ((cuComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2250
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCCgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <cuComplex*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2254
 *             <Handle>handle, m, n, nrhs, <cuComplex*>dA, ldda,
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2255
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t cygels_bufferSize(intptr_t handle, int m, int n, int nrhs,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2245
 *     return lwork
 * 
 * cpdef size_t ccgels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ccgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_219ccgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_218ccgels_bufferSize[] = "ccgels_bufferSize(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_219ccgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ccgels_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgels_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 2245, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgels_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 2245, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgels_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 2245, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgels_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 2245, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgels_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 2245, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgels_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 2245, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgels_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 2245, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgels_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 2245, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgels_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 2245, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgels_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 2245, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ccgels_bufferSize") < 0)) __PYX_ERR(0, 2245, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2245, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2245, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2245, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2245, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2246, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2246, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2246, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2246, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2247, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2247, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2247, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ccgels_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2245, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ccgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_218ccgels_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_218ccgels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ccgels_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccgels_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 2245, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ccgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2257
 *     return lwork
 * 
 * cpdef size_t cygels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_221cygels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cygels_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cygels_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2261
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCYgels_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2262
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCYgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <cuComplex*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2263
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCYgels_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <cuComplex*>dA, ldda,
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx, <void*>dwork, &lwork)
 */
        __pyx_v_status = cusolverDnCYgels_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((cuComplex *)__pyx_v_dA), __pyx_v_ldda, ((cuComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2262
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCYgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <cuComplex*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2266
 *             <Handle>handle, m, n, nrhs, <cuComplex*>dA, ldda,
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2267
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t ckgels_bufferSize(intptr_t handle, int m, int n, int nrhs,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2257
 *     return lwork
 * 
 * cpdef size_t cygels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cygels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_221cygels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_220cygels_bufferSize[] = "cygels_bufferSize(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_221cygels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cygels_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygels_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 2257, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygels_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 2257, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygels_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 2257, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygels_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 2257, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygels_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 2257, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygels_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 2257, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygels_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 2257, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygels_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 2257, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygels_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 2257, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygels_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 2257, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cygels_bufferSize") < 0)) __PYX_ERR(0, 2257, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2257, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2257, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2257, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2257, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2258, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2258, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2258, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2258, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2259, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2259, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2259, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cygels_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2257, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cygels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_220cygels_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_220cygels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cygels_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cygels_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 2257, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cygels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2269
 *     return lwork
 * 
 * cpdef size_t ckgels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_223ckgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ckgels_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ckgels_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2273
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCKgels_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2274
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCKgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <cuComplex*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2275
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCKgels_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <cuComplex*>dA, ldda,
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx, <void*>dwork, &lwork)
 */
        __pyx_v_status = cusolverDnCKgels_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((cuComplex *)__pyx_v_dA), __pyx_v_ldda, ((cuComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2274
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCKgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <cuComplex*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2278
 *             <Handle>handle, m, n, nrhs, <cuComplex*>dA, ldda,
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2279
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t ddgels_bufferSize(intptr_t handle, int m, int n, int nrhs,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2269
 *     return lwork
 * 
 * cpdef size_t ckgels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ckgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_223ckgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_222ckgels_bufferSize[] = "ckgels_bufferSize(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_223ckgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ckgels_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgels_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 2269, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgels_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 2269, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgels_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 2269, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgels_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 2269, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgels_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 2269, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgels_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 2269, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgels_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 2269, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgels_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 2269, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgels_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 2269, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgels_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 2269, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ckgels_bufferSize") < 0)) __PYX_ERR(0, 2269, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2269, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2269, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2269, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2269, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2270, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2270, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2270, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2270, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2271, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2271, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2271, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ckgels_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2269, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ckgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_222ckgels_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_222ckgels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ckgels_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ckgels_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 2269, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ckgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2281
 *     return lwork
 * 
 * cpdef size_t ddgels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_225ddgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ddgels_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ddgels_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2285
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDDgels_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2286
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDDgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2287
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDDgels_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 *             <double*>dB, lddb, <double*>dX, lddx, <void*>dwork, &lwork)
 */
        __pyx_v_status = cusolverDnDDgels_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((double *)__pyx_v_dA), __pyx_v_ldda, ((double *)__pyx_v_dB), __pyx_v_lddb, ((double *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2286
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDDgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2290
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 *             <double*>dB, lddb, <double*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2291
 *             <double*>dB, lddb, <double*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t dsgels_bufferSize(intptr_t handle, int m, int n, int nrhs,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2281
 *     return lwork
 * 
 * cpdef size_t ddgels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ddgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_225ddgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_224ddgels_bufferSize[] = "ddgels_bufferSize(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_225ddgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ddgels_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgels_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 2281, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgels_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 2281, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgels_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 2281, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgels_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 2281, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgels_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 2281, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgels_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 2281, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgels_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 2281, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgels_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 2281, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgels_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 2281, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgels_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 2281, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ddgels_bufferSize") < 0)) __PYX_ERR(0, 2281, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2281, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2281, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2281, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2281, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2282, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2282, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2282, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2282, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2283, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2283, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2283, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ddgels_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2281, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ddgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_224ddgels_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_224ddgels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ddgels_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ddgels_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 2281, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ddgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2293
 *     return lwork
 * 
 * cpdef size_t dsgels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_227dsgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsgels_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dsgels_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2297
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDSgels_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2298
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDSgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2299
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDSgels_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 *             <double*>dB, lddb, <double*>dX, lddx, <void*>dwork, &lwork)
 */
        __pyx_v_status = cusolverDnDSgels_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((double *)__pyx_v_dA), __pyx_v_ldda, ((double *)__pyx_v_dB), __pyx_v_lddb, ((double *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2298
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDSgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2302
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 *             <double*>dB, lddb, <double*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2302, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2303
 *             <double*>dB, lddb, <double*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t dxgels_bufferSize(intptr_t handle, int m, int n, int nrhs,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2293
 *     return lwork
 * 
 * cpdef size_t dsgels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_227dsgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_226dsgels_bufferSize[] = "dsgels_bufferSize(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_227dsgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dsgels_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgels_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 2293, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgels_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 2293, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgels_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 2293, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgels_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 2293, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgels_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 2293, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgels_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 2293, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgels_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 2293, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgels_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 2293, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgels_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 2293, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgels_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 2293, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dsgels_bufferSize") < 0)) __PYX_ERR(0, 2293, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2293, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2293, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2293, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2293, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2294, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2294, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2294, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2294, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2295, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2295, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2295, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dsgels_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2293, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_226dsgels_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_226dsgels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dsgels_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsgels_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 2293, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2305
 *     return lwork
 * 
 * cpdef size_t dxgels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_229dxgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dxgels_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dxgels_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2309
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDXgels_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2310
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDXgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2311
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDXgels_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 *             <double*>dB, lddb, <double*>dX, lddx, <void*>dwork, &lwork)
 */
        __pyx_v_status = cusolverDnDXgels_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((double *)__pyx_v_dA), __pyx_v_ldda, ((double *)__pyx_v_dB), __pyx_v_lddb, ((double *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2310
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDXgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2314
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 *             <double*>dB, lddb, <double*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2314, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2315
 *             <double*>dB, lddb, <double*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t dhgels_bufferSize(intptr_t handle, int m, int n, int nrhs,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2305
 *     return lwork
 * 
 * cpdef size_t dxgels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dxgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_229dxgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_228dxgels_bufferSize[] = "dxgels_bufferSize(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_229dxgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dxgels_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgels_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 2305, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgels_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 2305, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgels_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 2305, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgels_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 2305, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgels_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 2305, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgels_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 2305, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgels_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 2305, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgels_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 2305, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgels_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 2305, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgels_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 2305, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dxgels_bufferSize") < 0)) __PYX_ERR(0, 2305, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2305, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2305, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2305, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2305, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2306, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2306, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2306, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2306, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2307, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2307, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2307, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dxgels_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2305, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dxgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_228dxgels_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_228dxgels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dxgels_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dxgels_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 2305, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dxgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2317
 *     return lwork
 * 
 * cpdef size_t dhgels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_231dhgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dhgels_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dhgels_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2321
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDHgels_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2322
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDHgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2323
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDHgels_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 *             <double*>dB, lddb, <double*>dX, lddx, <void*>dwork, &lwork)
 */
        __pyx_v_status = cusolverDnDHgels_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((double *)__pyx_v_dA), __pyx_v_ldda, ((double *)__pyx_v_dB), __pyx_v_lddb, ((double *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2322
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDHgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2326
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 *             <double*>dB, lddb, <double*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2327
 *             <double*>dB, lddb, <double*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t ssgels_bufferSize(intptr_t handle, int m, int n, int nrhs,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2317
 *     return lwork
 * 
 * cpdef size_t dhgels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dhgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_231dhgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_230dhgels_bufferSize[] = "dhgels_bufferSize(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_231dhgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dhgels_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgels_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 2317, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgels_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 2317, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgels_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 2317, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgels_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 2317, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgels_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 2317, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgels_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 2317, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgels_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 2317, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgels_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 2317, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgels_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 2317, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgels_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 2317, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dhgels_bufferSize") < 0)) __PYX_ERR(0, 2317, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2317, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2317, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2317, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2317, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2318, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2318, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2318, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2318, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2319, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2319, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2319, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dhgels_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2317, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dhgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_230dhgels_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_230dhgels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dhgels_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dhgels_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 2317, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dhgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2329
 *     return lwork
 * 
 * cpdef size_t ssgels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_233ssgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssgels_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ssgels_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2333
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSSgels_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2334
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSSgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <float*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2335
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSSgels_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <float*>dA, ldda,
 *             <float*>dB, lddb, <float*>dX, lddx, <void*>dwork, &lwork)
 */
        __pyx_v_status = cusolverDnSSgels_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((float *)__pyx_v_dA), __pyx_v_ldda, ((float *)__pyx_v_dB), __pyx_v_lddb, ((float *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2334
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSSgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <float*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2338
 *             <Handle>handle, m, n, nrhs, <float*>dA, ldda,
 *             <float*>dB, lddb, <float*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2338, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2339
 *             <float*>dB, lddb, <float*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t sxgels_bufferSize(intptr_t handle, int m, int n, int nrhs,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2329
 *     return lwork
 * 
 * cpdef size_t ssgels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_233ssgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_232ssgels_bufferSize[] = "ssgels_bufferSize(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_233ssgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ssgels_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgels_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 2329, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgels_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 2329, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgels_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 2329, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgels_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 2329, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgels_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 2329, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgels_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 2329, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgels_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 2329, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgels_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 2329, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgels_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 2329, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgels_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 2329, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ssgels_bufferSize") < 0)) __PYX_ERR(0, 2329, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2329, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2329, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2329, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2329, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2330, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2330, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2330, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2330, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2331, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2331, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2331, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ssgels_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2329, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_232ssgels_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_232ssgels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ssgels_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssgels_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 2329, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2341
 *     return lwork
 * 
 * cpdef size_t sxgels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_235sxgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sxgels_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sxgels_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2345
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSXgels_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2346
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSXgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <float*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2347
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSXgels_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <float*>dA, ldda,
 *             <float*>dB, lddb, <float*>dX, lddx, <void*>dwork, &lwork)
 */
        __pyx_v_status = cusolverDnSXgels_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((float *)__pyx_v_dA), __pyx_v_ldda, ((float *)__pyx_v_dB), __pyx_v_lddb, ((float *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2346
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSXgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <float*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2350
 *             <Handle>handle, m, n, nrhs, <float*>dA, ldda,
 *             <float*>dB, lddb, <float*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2351
 *             <float*>dB, lddb, <float*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef size_t shgels_bufferSize(intptr_t handle, int m, int n, int nrhs,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2341
 *     return lwork
 * 
 * cpdef size_t sxgels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sxgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_235sxgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_234sxgels_bufferSize[] = "sxgels_bufferSize(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_235sxgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sxgels_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgels_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 2341, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgels_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 2341, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgels_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 2341, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgels_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 2341, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgels_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 2341, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgels_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 2341, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgels_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 2341, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgels_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 2341, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgels_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 2341, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgels_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 2341, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sxgels_bufferSize") < 0)) __PYX_ERR(0, 2341, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2341, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2341, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2341, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2341, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2342, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2342, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2342, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2342, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2343, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2343, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2343, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sxgels_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2341, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sxgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_234sxgels_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_234sxgels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sxgels_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sxgels_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 2341, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2341, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sxgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2353
 *     return lwork
 * 
 * cpdef size_t shgels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_237shgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static size_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_shgels_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, CYTHON_UNUSED int __pyx_skip_dispatch) {
  size_t __pyx_v_lwork;
  int __pyx_v_status;
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("shgels_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2357
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 *     cdef size_t lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSHgels_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2358
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSHgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <float*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2359
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSHgels_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <float*>dA, ldda,
 *             <float*>dB, lddb, <float*>dX, lddx, <void*>dwork, &lwork)
 */
        __pyx_v_status = cusolverDnSHgels_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((float *)__pyx_v_dA), __pyx_v_ldda, ((float *)__pyx_v_dB), __pyx_v_lddb, ((float *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2358
 *     cdef size_t lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSHgels_bufferSize(
 *             <Handle>handle, m, n, nrhs, <float*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2362
 *             <Handle>handle, m, n, nrhs, <float*>dA, ldda,
 *             <float*>dB, lddb, <float*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2363
 *             <float*>dB, lddb, <float*>dX, lddx, <void*>dwork, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int zzgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2353
 *     return lwork
 * 
 * cpdef size_t shgels_bufferSize(intptr_t handle, int m, int n, int nrhs,             # <<<<<<<<<<<<<<
 *                                size_t dA, int ldda, size_t dB, int lddb,
 *                                size_t dX, int lddx, size_t dwork) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.shgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_237shgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_236shgels_bufferSize[] = "shgels_bufferSize(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork) -> size_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_237shgels_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("shgels_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgels_bufferSize", 1, 11, 11, 1); __PYX_ERR(0, 2353, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgels_bufferSize", 1, 11, 11, 2); __PYX_ERR(0, 2353, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgels_bufferSize", 1, 11, 11, 3); __PYX_ERR(0, 2353, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgels_bufferSize", 1, 11, 11, 4); __PYX_ERR(0, 2353, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgels_bufferSize", 1, 11, 11, 5); __PYX_ERR(0, 2353, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgels_bufferSize", 1, 11, 11, 6); __PYX_ERR(0, 2353, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgels_bufferSize", 1, 11, 11, 7); __PYX_ERR(0, 2353, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgels_bufferSize", 1, 11, 11, 8); __PYX_ERR(0, 2353, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgels_bufferSize", 1, 11, 11, 9); __PYX_ERR(0, 2353, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgels_bufferSize", 1, 11, 11, 10); __PYX_ERR(0, 2353, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "shgels_bufferSize") < 0)) __PYX_ERR(0, 2353, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2353, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2353, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2353, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2353, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2354, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2354, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2354, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2354, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2355, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2355, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2355, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("shgels_bufferSize", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2353, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.shgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_236shgels_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_236shgels_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("shgels_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_shgels_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, 0); if (unlikely(__pyx_t_1 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 2353, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2353, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.shgels_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2365
 *     return lwork
 * 
 * cpdef int zzgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_239zzgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zzgels(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zzgels", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2369
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZZgels(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2369, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2370
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZZgels(
 *             <Handle>handle, m, n, nrhs, <cuDoubleComplex*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2371
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZZgels(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <cuDoubleComplex*>dA, ldda,
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 */
        __pyx_v_status = cusolverDnZZgels(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((cuDoubleComplex *)__pyx_v_dA), __pyx_v_ldda, ((cuDoubleComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuDoubleComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2370
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZZgels(
 *             <Handle>handle, m, n, nrhs, <cuDoubleComplex*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2375
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2375, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2376
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * cpdef int zcgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2365
 *     return lwork
 * 
 * cpdef int zzgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.zzgels", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_239zzgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_238zzgels[] = "zzgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_239zzgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zzgels (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgels", 1, 13, 13, 1); __PYX_ERR(0, 2365, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgels", 1, 13, 13, 2); __PYX_ERR(0, 2365, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgels", 1, 13, 13, 3); __PYX_ERR(0, 2365, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgels", 1, 13, 13, 4); __PYX_ERR(0, 2365, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgels", 1, 13, 13, 5); __PYX_ERR(0, 2365, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgels", 1, 13, 13, 6); __PYX_ERR(0, 2365, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgels", 1, 13, 13, 7); __PYX_ERR(0, 2365, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgels", 1, 13, 13, 8); __PYX_ERR(0, 2365, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgels", 1, 13, 13, 9); __PYX_ERR(0, 2365, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgels", 1, 13, 13, 10); __PYX_ERR(0, 2365, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgels", 1, 13, 13, 11); __PYX_ERR(0, 2365, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zzgels", 1, 13, 13, 12); __PYX_ERR(0, 2365, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zzgels") < 0)) __PYX_ERR(0, 2365, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2365, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2365, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2365, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2365, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2365, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2365, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2366, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2366, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2366, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2366, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2367, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2367, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2367, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zzgels", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2365, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zzgels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_238zzgels(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_238zzgels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zzgels", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zzgels(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zzgels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2378
 *     return iter
 * 
 * cpdef int zcgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_241zcgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcgels(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zcgels", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2382
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZCgels(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2382, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2383
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZCgels(
 *             <Handle>handle, m, n, nrhs, <cuDoubleComplex*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2384
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZCgels(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <cuDoubleComplex*>dA, ldda,
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 */
        __pyx_v_status = cusolverDnZCgels(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((cuDoubleComplex *)__pyx_v_dA), __pyx_v_ldda, ((cuDoubleComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuDoubleComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2383
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZCgels(
 *             <Handle>handle, m, n, nrhs, <cuDoubleComplex*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2388
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2388, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2389
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * cpdef int zygels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2378
 *     return iter
 * 
 * cpdef int zcgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.zcgels", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_241zcgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_240zcgels[] = "zcgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_241zcgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zcgels (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgels", 1, 13, 13, 1); __PYX_ERR(0, 2378, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgels", 1, 13, 13, 2); __PYX_ERR(0, 2378, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgels", 1, 13, 13, 3); __PYX_ERR(0, 2378, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgels", 1, 13, 13, 4); __PYX_ERR(0, 2378, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgels", 1, 13, 13, 5); __PYX_ERR(0, 2378, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgels", 1, 13, 13, 6); __PYX_ERR(0, 2378, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgels", 1, 13, 13, 7); __PYX_ERR(0, 2378, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgels", 1, 13, 13, 8); __PYX_ERR(0, 2378, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgels", 1, 13, 13, 9); __PYX_ERR(0, 2378, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgels", 1, 13, 13, 10); __PYX_ERR(0, 2378, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgels", 1, 13, 13, 11); __PYX_ERR(0, 2378, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcgels", 1, 13, 13, 12); __PYX_ERR(0, 2378, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zcgels") < 0)) __PYX_ERR(0, 2378, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2378, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2378, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2378, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2378, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2378, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2378, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2379, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2379, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2379, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2379, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2380, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2380, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2380, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zcgels", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2378, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zcgels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_240zcgels(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_240zcgels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zcgels", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcgels(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2378, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zcgels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2391
 *     return iter
 * 
 * cpdef int zygels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_243zygels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zygels(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zygels", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2395
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZYgels(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2395, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2396
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZYgels(
 *             <Handle>handle, m, n, nrhs, <cuDoubleComplex*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2397
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZYgels(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <cuDoubleComplex*>dA, ldda,
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 */
        __pyx_v_status = cusolverDnZYgels(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((cuDoubleComplex *)__pyx_v_dA), __pyx_v_ldda, ((cuDoubleComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuDoubleComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2396
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZYgels(
 *             <Handle>handle, m, n, nrhs, <cuDoubleComplex*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2401
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2402
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * cpdef int zkgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2391
 *     return iter
 * 
 * cpdef int zygels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.zygels", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_243zygels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_242zygels[] = "zygels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_243zygels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zygels (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygels", 1, 13, 13, 1); __PYX_ERR(0, 2391, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygels", 1, 13, 13, 2); __PYX_ERR(0, 2391, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygels", 1, 13, 13, 3); __PYX_ERR(0, 2391, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygels", 1, 13, 13, 4); __PYX_ERR(0, 2391, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygels", 1, 13, 13, 5); __PYX_ERR(0, 2391, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygels", 1, 13, 13, 6); __PYX_ERR(0, 2391, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygels", 1, 13, 13, 7); __PYX_ERR(0, 2391, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygels", 1, 13, 13, 8); __PYX_ERR(0, 2391, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygels", 1, 13, 13, 9); __PYX_ERR(0, 2391, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygels", 1, 13, 13, 10); __PYX_ERR(0, 2391, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygels", 1, 13, 13, 11); __PYX_ERR(0, 2391, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zygels", 1, 13, 13, 12); __PYX_ERR(0, 2391, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zygels") < 0)) __PYX_ERR(0, 2391, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2391, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2391, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2391, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2391, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2391, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2391, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2392, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2392, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2392, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2392, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2393, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2393, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2393, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zygels", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2391, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zygels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_242zygels(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_242zygels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zygels", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zygels(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2391, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zygels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2404
 *     return iter
 * 
 * cpdef int zkgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_245zkgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zkgels(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zkgels", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2408
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZKgels(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2408, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2409
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZKgels(
 *             <Handle>handle, m, n, nrhs, <cuDoubleComplex*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2410
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZKgels(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <cuDoubleComplex*>dA, ldda,
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 */
        __pyx_v_status = cusolverDnZKgels(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((cuDoubleComplex *)__pyx_v_dA), __pyx_v_ldda, ((cuDoubleComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuDoubleComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2409
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZKgels(
 *             <Handle>handle, m, n, nrhs, <cuDoubleComplex*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2414
 *             <cuDoubleComplex*>dB, lddb, <cuDoubleComplex*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2414, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2415
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * cpdef int ccgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2404
 *     return iter
 * 
 * cpdef int zkgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.zkgels", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_245zkgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_244zkgels[] = "zkgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_245zkgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zkgels (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgels", 1, 13, 13, 1); __PYX_ERR(0, 2404, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgels", 1, 13, 13, 2); __PYX_ERR(0, 2404, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgels", 1, 13, 13, 3); __PYX_ERR(0, 2404, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgels", 1, 13, 13, 4); __PYX_ERR(0, 2404, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgels", 1, 13, 13, 5); __PYX_ERR(0, 2404, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgels", 1, 13, 13, 6); __PYX_ERR(0, 2404, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgels", 1, 13, 13, 7); __PYX_ERR(0, 2404, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgels", 1, 13, 13, 8); __PYX_ERR(0, 2404, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgels", 1, 13, 13, 9); __PYX_ERR(0, 2404, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgels", 1, 13, 13, 10); __PYX_ERR(0, 2404, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgels", 1, 13, 13, 11); __PYX_ERR(0, 2404, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zkgels", 1, 13, 13, 12); __PYX_ERR(0, 2404, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zkgels") < 0)) __PYX_ERR(0, 2404, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2404, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2404, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2404, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2404, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2404, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2404, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2405, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2405, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2405, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2405, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2406, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2406, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2406, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zkgels", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2404, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zkgels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_244zkgels(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_244zkgels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zkgels", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zkgels(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zkgels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2417
 *     return iter
 * 
 * cpdef int ccgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_247ccgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccgels(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ccgels", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2421
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCCgels(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2421, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2422
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCCgels(
 *             <Handle>handle, m, n, nrhs, <cuComplex*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2423
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCCgels(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <cuComplex*>dA, ldda,
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx,
 */
        __pyx_v_status = cusolverDnCCgels(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((cuComplex *)__pyx_v_dA), __pyx_v_ldda, ((cuComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2422
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCCgels(
 *             <Handle>handle, m, n, nrhs, <cuComplex*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2427
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2427, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2428
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * cpdef int cygels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2417
 *     return iter
 * 
 * cpdef int ccgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.ccgels", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_247ccgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_246ccgels[] = "ccgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_247ccgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ccgels (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgels", 1, 13, 13, 1); __PYX_ERR(0, 2417, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgels", 1, 13, 13, 2); __PYX_ERR(0, 2417, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgels", 1, 13, 13, 3); __PYX_ERR(0, 2417, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgels", 1, 13, 13, 4); __PYX_ERR(0, 2417, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgels", 1, 13, 13, 5); __PYX_ERR(0, 2417, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgels", 1, 13, 13, 6); __PYX_ERR(0, 2417, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgels", 1, 13, 13, 7); __PYX_ERR(0, 2417, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgels", 1, 13, 13, 8); __PYX_ERR(0, 2417, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgels", 1, 13, 13, 9); __PYX_ERR(0, 2417, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgels", 1, 13, 13, 10); __PYX_ERR(0, 2417, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgels", 1, 13, 13, 11); __PYX_ERR(0, 2417, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccgels", 1, 13, 13, 12); __PYX_ERR(0, 2417, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ccgels") < 0)) __PYX_ERR(0, 2417, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2417, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2417, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2417, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2417, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2417, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2417, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2418, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2418, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2418, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2418, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2419, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2419, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2419, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ccgels", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2417, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ccgels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_246ccgels(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_246ccgels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ccgels", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccgels(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2417, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ccgels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2430
 *     return iter
 * 
 * cpdef int cygels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_249cygels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cygels(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cygels", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2434
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCYgels(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2434, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2435
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCYgels(
 *             <Handle>handle, m, n, nrhs, <cuComplex*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2436
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCYgels(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <cuComplex*>dA, ldda,
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx,
 */
        __pyx_v_status = cusolverDnCYgels(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((cuComplex *)__pyx_v_dA), __pyx_v_ldda, ((cuComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2435
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCYgels(
 *             <Handle>handle, m, n, nrhs, <cuComplex*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2440
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2440, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2441
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * cpdef int ckgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2430
 *     return iter
 * 
 * cpdef int cygels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.cygels", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_249cygels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_248cygels[] = "cygels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_249cygels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cygels (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygels", 1, 13, 13, 1); __PYX_ERR(0, 2430, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygels", 1, 13, 13, 2); __PYX_ERR(0, 2430, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygels", 1, 13, 13, 3); __PYX_ERR(0, 2430, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygels", 1, 13, 13, 4); __PYX_ERR(0, 2430, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygels", 1, 13, 13, 5); __PYX_ERR(0, 2430, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygels", 1, 13, 13, 6); __PYX_ERR(0, 2430, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygels", 1, 13, 13, 7); __PYX_ERR(0, 2430, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygels", 1, 13, 13, 8); __PYX_ERR(0, 2430, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygels", 1, 13, 13, 9); __PYX_ERR(0, 2430, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygels", 1, 13, 13, 10); __PYX_ERR(0, 2430, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygels", 1, 13, 13, 11); __PYX_ERR(0, 2430, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cygels", 1, 13, 13, 12); __PYX_ERR(0, 2430, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cygels") < 0)) __PYX_ERR(0, 2430, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2430, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2430, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2430, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2430, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2430, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2430, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2431, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2431, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2431, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2431, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2432, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2432, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2432, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cygels", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2430, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cygels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_248cygels(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_248cygels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cygels", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cygels(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cygels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2443
 *     return iter
 * 
 * cpdef int ckgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_251ckgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ckgels(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ckgels", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2447
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCKgels(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2448
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCKgels(
 *             <Handle>handle, m, n, nrhs, <cuComplex*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2449
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCKgels(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <cuComplex*>dA, ldda,
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx,
 */
        __pyx_v_status = cusolverDnCKgels(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((cuComplex *)__pyx_v_dA), __pyx_v_ldda, ((cuComplex *)__pyx_v_dB), __pyx_v_lddb, ((cuComplex *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2448
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCKgels(
 *             <Handle>handle, m, n, nrhs, <cuComplex*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2453
 *             <cuComplex*>dB, lddb, <cuComplex*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2454
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * cpdef int ddgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2443
 *     return iter
 * 
 * cpdef int ckgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.ckgels", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_251ckgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_250ckgels[] = "ckgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_251ckgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ckgels (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgels", 1, 13, 13, 1); __PYX_ERR(0, 2443, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgels", 1, 13, 13, 2); __PYX_ERR(0, 2443, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgels", 1, 13, 13, 3); __PYX_ERR(0, 2443, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgels", 1, 13, 13, 4); __PYX_ERR(0, 2443, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgels", 1, 13, 13, 5); __PYX_ERR(0, 2443, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgels", 1, 13, 13, 6); __PYX_ERR(0, 2443, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgels", 1, 13, 13, 7); __PYX_ERR(0, 2443, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgels", 1, 13, 13, 8); __PYX_ERR(0, 2443, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgels", 1, 13, 13, 9); __PYX_ERR(0, 2443, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgels", 1, 13, 13, 10); __PYX_ERR(0, 2443, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgels", 1, 13, 13, 11); __PYX_ERR(0, 2443, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ckgels", 1, 13, 13, 12); __PYX_ERR(0, 2443, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ckgels") < 0)) __PYX_ERR(0, 2443, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2443, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2443, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2443, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2443, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2443, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2443, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2444, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2444, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2444, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2444, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2445, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2445, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2445, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ckgels", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2443, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ckgels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_250ckgels(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_250ckgels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ckgels", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ckgels(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2443, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ckgels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2456
 *     return iter
 * 
 * cpdef int ddgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_253ddgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ddgels(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ddgels", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2460
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDDgels(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2460, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2461
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDDgels(
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2462
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDDgels(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 *             <double*>dB, lddb, <double*>dX, lddx,
 */
        __pyx_v_status = cusolverDnDDgels(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((double *)__pyx_v_dA), __pyx_v_ldda, ((double *)__pyx_v_dB), __pyx_v_lddb, ((double *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2461
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDDgels(
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2466
 *             <double*>dB, lddb, <double*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2466, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2467
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * cpdef int dsgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2456
 *     return iter
 * 
 * cpdef int ddgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.ddgels", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_253ddgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_252ddgels[] = "ddgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_253ddgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ddgels (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgels", 1, 13, 13, 1); __PYX_ERR(0, 2456, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgels", 1, 13, 13, 2); __PYX_ERR(0, 2456, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgels", 1, 13, 13, 3); __PYX_ERR(0, 2456, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgels", 1, 13, 13, 4); __PYX_ERR(0, 2456, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgels", 1, 13, 13, 5); __PYX_ERR(0, 2456, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgels", 1, 13, 13, 6); __PYX_ERR(0, 2456, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgels", 1, 13, 13, 7); __PYX_ERR(0, 2456, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgels", 1, 13, 13, 8); __PYX_ERR(0, 2456, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgels", 1, 13, 13, 9); __PYX_ERR(0, 2456, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgels", 1, 13, 13, 10); __PYX_ERR(0, 2456, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgels", 1, 13, 13, 11); __PYX_ERR(0, 2456, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ddgels", 1, 13, 13, 12); __PYX_ERR(0, 2456, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ddgels") < 0)) __PYX_ERR(0, 2456, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2456, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2456, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2456, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2456, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2456, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2456, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2457, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2457, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2457, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2457, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2458, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2458, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2458, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ddgels", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2456, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ddgels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_252ddgels(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_252ddgels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ddgels", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ddgels(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2456, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ddgels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2469
 *     return iter
 * 
 * cpdef int dsgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_255dsgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsgels(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dsgels", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2473
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDSgels(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2473, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2474
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDSgels(
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2475
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDSgels(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 *             <double*>dB, lddb, <double*>dX, lddx,
 */
        __pyx_v_status = cusolverDnDSgels(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((double *)__pyx_v_dA), __pyx_v_ldda, ((double *)__pyx_v_dB), __pyx_v_lddb, ((double *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2474
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDSgels(
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2479
 *             <double*>dB, lddb, <double*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2480
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * cpdef int dxgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2469
 *     return iter
 * 
 * cpdef int dsgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.dsgels", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_255dsgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_254dsgels[] = "dsgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_255dsgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dsgels (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgels", 1, 13, 13, 1); __PYX_ERR(0, 2469, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgels", 1, 13, 13, 2); __PYX_ERR(0, 2469, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgels", 1, 13, 13, 3); __PYX_ERR(0, 2469, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgels", 1, 13, 13, 4); __PYX_ERR(0, 2469, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgels", 1, 13, 13, 5); __PYX_ERR(0, 2469, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgels", 1, 13, 13, 6); __PYX_ERR(0, 2469, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgels", 1, 13, 13, 7); __PYX_ERR(0, 2469, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgels", 1, 13, 13, 8); __PYX_ERR(0, 2469, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgels", 1, 13, 13, 9); __PYX_ERR(0, 2469, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgels", 1, 13, 13, 10); __PYX_ERR(0, 2469, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgels", 1, 13, 13, 11); __PYX_ERR(0, 2469, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsgels", 1, 13, 13, 12); __PYX_ERR(0, 2469, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dsgels") < 0)) __PYX_ERR(0, 2469, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2469, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2469, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2469, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2469, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2469, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2469, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2470, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2470, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2470, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2470, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2471, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2471, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2471, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dsgels", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2469, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsgels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_254dsgels(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_254dsgels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dsgels", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsgels(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsgels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2482
 *     return iter
 * 
 * cpdef int dxgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_257dxgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dxgels(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dxgels", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2486
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDXgels(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2487
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDXgels(
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2488
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDXgels(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 *             <double*>dB, lddb, <double*>dX, lddx,
 */
        __pyx_v_status = cusolverDnDXgels(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((double *)__pyx_v_dA), __pyx_v_ldda, ((double *)__pyx_v_dB), __pyx_v_lddb, ((double *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2487
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDXgels(
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2492
 *             <double*>dB, lddb, <double*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2493
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * cpdef int dhgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2482
 *     return iter
 * 
 * cpdef int dxgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.dxgels", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_257dxgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_256dxgels[] = "dxgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_257dxgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dxgels (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgels", 1, 13, 13, 1); __PYX_ERR(0, 2482, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgels", 1, 13, 13, 2); __PYX_ERR(0, 2482, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgels", 1, 13, 13, 3); __PYX_ERR(0, 2482, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgels", 1, 13, 13, 4); __PYX_ERR(0, 2482, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgels", 1, 13, 13, 5); __PYX_ERR(0, 2482, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgels", 1, 13, 13, 6); __PYX_ERR(0, 2482, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgels", 1, 13, 13, 7); __PYX_ERR(0, 2482, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgels", 1, 13, 13, 8); __PYX_ERR(0, 2482, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgels", 1, 13, 13, 9); __PYX_ERR(0, 2482, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgels", 1, 13, 13, 10); __PYX_ERR(0, 2482, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgels", 1, 13, 13, 11); __PYX_ERR(0, 2482, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dxgels", 1, 13, 13, 12); __PYX_ERR(0, 2482, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dxgels") < 0)) __PYX_ERR(0, 2482, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2482, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2482, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2482, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2482, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2482, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2482, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2483, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2483, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2483, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2483, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2484, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2484, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2484, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dxgels", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2482, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dxgels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_256dxgels(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_256dxgels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dxgels", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dxgels(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2482, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dxgels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2495
 *     return iter
 * 
 * cpdef int dhgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_259dhgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dhgels(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dhgels", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2499
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDHgels(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2499, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2500
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDHgels(
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2501
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDHgels(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 *             <double*>dB, lddb, <double*>dX, lddx,
 */
        __pyx_v_status = cusolverDnDHgels(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((double *)__pyx_v_dA), __pyx_v_ldda, ((double *)__pyx_v_dB), __pyx_v_lddb, ((double *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2500
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDHgels(
 *             <Handle>handle, m, n, nrhs, <double*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2505
 *             <double*>dB, lddb, <double*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2505, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2506
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * cpdef int ssgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2495
 *     return iter
 * 
 * cpdef int dhgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.dhgels", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_259dhgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_258dhgels[] = "dhgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_259dhgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dhgels (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgels", 1, 13, 13, 1); __PYX_ERR(0, 2495, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgels", 1, 13, 13, 2); __PYX_ERR(0, 2495, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgels", 1, 13, 13, 3); __PYX_ERR(0, 2495, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgels", 1, 13, 13, 4); __PYX_ERR(0, 2495, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgels", 1, 13, 13, 5); __PYX_ERR(0, 2495, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgels", 1, 13, 13, 6); __PYX_ERR(0, 2495, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgels", 1, 13, 13, 7); __PYX_ERR(0, 2495, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgels", 1, 13, 13, 8); __PYX_ERR(0, 2495, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgels", 1, 13, 13, 9); __PYX_ERR(0, 2495, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgels", 1, 13, 13, 10); __PYX_ERR(0, 2495, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgels", 1, 13, 13, 11); __PYX_ERR(0, 2495, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dhgels", 1, 13, 13, 12); __PYX_ERR(0, 2495, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dhgels") < 0)) __PYX_ERR(0, 2495, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2495, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2495, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2495, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2495, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2495, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2495, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2496, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2496, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2496, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2496, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2497, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2497, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2497, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dhgels", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2495, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dhgels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_258dhgels(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_258dhgels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dhgels", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dhgels(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dhgels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2508
 *     return iter
 * 
 * cpdef int ssgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_261ssgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssgels(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ssgels", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2512
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSSgels(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2513
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSSgels(
 *             <Handle>handle, m, n, nrhs, <float*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2514
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSSgels(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <float*>dA, ldda,
 *             <float*>dB, lddb, <float*>dX, lddx,
 */
        __pyx_v_status = cusolverDnSSgels(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((float *)__pyx_v_dA), __pyx_v_ldda, ((float *)__pyx_v_dB), __pyx_v_lddb, ((float *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2513
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSSgels(
 *             <Handle>handle, m, n, nrhs, <float*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2518
 *             <float*>dB, lddb, <float*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2519
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * cpdef int sxgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2508
 *     return iter
 * 
 * cpdef int ssgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.ssgels", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_261ssgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_260ssgels[] = "ssgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_261ssgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ssgels (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgels", 1, 13, 13, 1); __PYX_ERR(0, 2508, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgels", 1, 13, 13, 2); __PYX_ERR(0, 2508, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgels", 1, 13, 13, 3); __PYX_ERR(0, 2508, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgels", 1, 13, 13, 4); __PYX_ERR(0, 2508, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgels", 1, 13, 13, 5); __PYX_ERR(0, 2508, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgels", 1, 13, 13, 6); __PYX_ERR(0, 2508, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgels", 1, 13, 13, 7); __PYX_ERR(0, 2508, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgels", 1, 13, 13, 8); __PYX_ERR(0, 2508, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgels", 1, 13, 13, 9); __PYX_ERR(0, 2508, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgels", 1, 13, 13, 10); __PYX_ERR(0, 2508, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgels", 1, 13, 13, 11); __PYX_ERR(0, 2508, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssgels", 1, 13, 13, 12); __PYX_ERR(0, 2508, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ssgels") < 0)) __PYX_ERR(0, 2508, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2508, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2508, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2508, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2508, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2508, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2508, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2509, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2509, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2509, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2509, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2510, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2510, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2510, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ssgels", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2508, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssgels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_260ssgels(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_260ssgels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ssgels", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssgels(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssgels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2521
 *     return iter
 * 
 * cpdef int sxgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_263sxgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sxgels(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sxgels", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2525
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSXgels(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2526
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSXgels(
 *             <Handle>handle, m, n, nrhs, <float*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2527
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSXgels(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <float*>dA, ldda,
 *             <float*>dB, lddb, <float*>dX, lddx,
 */
        __pyx_v_status = cusolverDnSXgels(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((float *)__pyx_v_dA), __pyx_v_ldda, ((float *)__pyx_v_dB), __pyx_v_lddb, ((float *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2526
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSXgels(
 *             <Handle>handle, m, n, nrhs, <float*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2531
 *             <float*>dB, lddb, <float*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2532
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * cpdef int shgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2521
 *     return iter
 * 
 * cpdef int sxgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.sxgels", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_263sxgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_262sxgels[] = "sxgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_263sxgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sxgels (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgels", 1, 13, 13, 1); __PYX_ERR(0, 2521, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgels", 1, 13, 13, 2); __PYX_ERR(0, 2521, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgels", 1, 13, 13, 3); __PYX_ERR(0, 2521, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgels", 1, 13, 13, 4); __PYX_ERR(0, 2521, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgels", 1, 13, 13, 5); __PYX_ERR(0, 2521, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgels", 1, 13, 13, 6); __PYX_ERR(0, 2521, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgels", 1, 13, 13, 7); __PYX_ERR(0, 2521, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgels", 1, 13, 13, 8); __PYX_ERR(0, 2521, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgels", 1, 13, 13, 9); __PYX_ERR(0, 2521, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgels", 1, 13, 13, 10); __PYX_ERR(0, 2521, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgels", 1, 13, 13, 11); __PYX_ERR(0, 2521, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sxgels", 1, 13, 13, 12); __PYX_ERR(0, 2521, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sxgels") < 0)) __PYX_ERR(0, 2521, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2521, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2521, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2521, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2521, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2521, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2521, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2522, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2522, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2522, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2522, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2523, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2523, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2523, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sxgels", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2521, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sxgels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_262sxgels(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_262sxgels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sxgels", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sxgels(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sxgels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2534
 *     return iter
 * 
 * cpdef int shgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_265shgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_shgels(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_iter;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("shgels", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2538
 *                  size_t dwork, size_t lwork, size_t dInfo):
 *     cdef int iter
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSHgels(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2538, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2539
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSHgels(
 *             <Handle>handle, m, n, nrhs, <float*>dA, ldda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2540
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSHgels(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n, nrhs, <float*>dA, ldda,
 *             <float*>dB, lddb, <float*>dX, lddx,
 */
        __pyx_v_status = cusolverDnSHgels(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, ((float *)__pyx_v_dA), __pyx_v_ldda, ((float *)__pyx_v_dB), __pyx_v_lddb, ((float *)__pyx_v_dX), __pyx_v_lddx, ((void *)__pyx_v_dwork), __pyx_v_lwork, (&__pyx_v_iter), ((int *)__pyx_v_dInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2539
 *     cdef int iter
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSHgels(
 *             <Handle>handle, m, n, nrhs, <float*>dA, ldda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2544
 *             <float*>dB, lddb, <float*>dX, lddx,
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return iter
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2544, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2545
 *             <void*>dwork, lwork, &iter, <int*>dInfo)
 *     check_status(status)
 *     return iter             # <<<<<<<<<<<<<<
 * 
 * ###############################################################################
 */
  __pyx_r = __pyx_v_iter;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2534
 *     return iter
 * 
 * cpdef int shgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda,             # <<<<<<<<<<<<<<
 *                  size_t dB, int lddb, size_t dX, int lddx,
 *                  size_t dwork, size_t lwork, size_t dInfo):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.shgels", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_265shgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_264shgels[] = "shgels(intptr_t handle, int m, int n, int nrhs, size_t dA, int ldda, size_t dB, int lddb, size_t dX, int lddx, size_t dwork, size_t lwork, size_t dInfo) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_265shgels(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_v_nrhs;
  size_t __pyx_v_dA;
  int __pyx_v_ldda;
  size_t __pyx_v_dB;
  int __pyx_v_lddb;
  size_t __pyx_v_dX;
  int __pyx_v_lddx;
  size_t __pyx_v_dwork;
  size_t __pyx_v_lwork;
  size_t __pyx_v_dInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("shgels (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_nrhs,&__pyx_n_s_dA,&__pyx_n_s_ldda,&__pyx_n_s_dB,&__pyx_n_s_lddb,&__pyx_n_s_dX,&__pyx_n_s_lddx,&__pyx_n_s_dwork,&__pyx_n_s_lwork,&__pyx_n_s_dInfo,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgels", 1, 13, 13, 1); __PYX_ERR(0, 2534, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgels", 1, 13, 13, 2); __PYX_ERR(0, 2534, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgels", 1, 13, 13, 3); __PYX_ERR(0, 2534, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgels", 1, 13, 13, 4); __PYX_ERR(0, 2534, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgels", 1, 13, 13, 5); __PYX_ERR(0, 2534, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dB)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgels", 1, 13, 13, 6); __PYX_ERR(0, 2534, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddb)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgels", 1, 13, 13, 7); __PYX_ERR(0, 2534, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dX)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgels", 1, 13, 13, 8); __PYX_ERR(0, 2534, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lddx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgels", 1, 13, 13, 9); __PYX_ERR(0, 2534, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgels", 1, 13, 13, 10); __PYX_ERR(0, 2534, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgels", 1, 13, 13, 11); __PYX_ERR(0, 2534, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shgels", 1, 13, 13, 12); __PYX_ERR(0, 2534, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "shgels") < 0)) __PYX_ERR(0, 2534, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2534, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2534, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2534, __pyx_L3_error)
    __pyx_v_nrhs = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_nrhs == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2534, __pyx_L3_error)
    __pyx_v_dA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_dA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2534, __pyx_L3_error)
    __pyx_v_ldda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_ldda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2534, __pyx_L3_error)
    __pyx_v_dB = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_dB == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2535, __pyx_L3_error)
    __pyx_v_lddb = __Pyx_PyInt_As_int(values[7]); if (unlikely((__pyx_v_lddb == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2535, __pyx_L3_error)
    __pyx_v_dX = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_dX == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2535, __pyx_L3_error)
    __pyx_v_lddx = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_lddx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2535, __pyx_L3_error)
    __pyx_v_dwork = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_dwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2536, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_lwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2536, __pyx_L3_error)
    __pyx_v_dInfo = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_dInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2536, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("shgels", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2534, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.shgels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_264shgels(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_264shgels(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, int __pyx_v_nrhs, size_t __pyx_v_dA, int __pyx_v_ldda, size_t __pyx_v_dB, int __pyx_v_lddb, size_t __pyx_v_dX, int __pyx_v_lddx, size_t __pyx_v_dwork, size_t __pyx_v_lwork, size_t __pyx_v_dInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("shgels", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_shgels(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_nrhs, __pyx_v_dA, __pyx_v_ldda, __pyx_v_dB, __pyx_v_lddb, __pyx_v_dX, __pyx_v_lddx, __pyx_v_dwork, __pyx_v_lwork, __pyx_v_dInfo, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.shgels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2552
 * 
 * # Bidiagonal factorization
 * cpdef int sgebrd_bufferSize(intptr_t handle, int m, int n) except? -1:             # <<<<<<<<<<<<<<
 *     cdef int lwork
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_267sgebrd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgebrd_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgebrd_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2554
 * cpdef int sgebrd_bufferSize(intptr_t handle, int m, int n) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSgebrd_bufferSize(<Handle>handle, m, n, &lwork)
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2554, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2555
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgebrd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2556
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSgebrd_bufferSize(<Handle>handle, m, n, &lwork)             # <<<<<<<<<<<<<<
 *     check_status(status)
 *     return lwork
 */
        __pyx_v_status = cusolverDnSgebrd_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2555
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgebrd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2557
 *     with nogil:
 *         status = cusolverDnSgebrd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2557, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2558
 *         status = cusolverDnSgebrd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int dgebrd_bufferSize(intptr_t handle, int m, int n) except? -1:
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2552
 * 
 * # Bidiagonal factorization
 * cpdef int sgebrd_bufferSize(intptr_t handle, int m, int n) except? -1:             # <<<<<<<<<<<<<<
 *     cdef int lwork
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgebrd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_267sgebrd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_266sgebrd_bufferSize[] = "sgebrd_bufferSize(intptr_t handle, int m, int n) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_267sgebrd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sgebrd_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgebrd_bufferSize", 1, 3, 3, 1); __PYX_ERR(0, 2552, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgebrd_bufferSize", 1, 3, 3, 2); __PYX_ERR(0, 2552, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sgebrd_bufferSize") < 0)) __PYX_ERR(0, 2552, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2552, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2552, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2552, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sgebrd_bufferSize", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2552, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgebrd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_266sgebrd_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_266sgebrd_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgebrd_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgebrd_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2552, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgebrd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2560
 *     return lwork
 * 
 * cpdef int dgebrd_bufferSize(intptr_t handle, int m, int n) except? -1:             # <<<<<<<<<<<<<<
 *     cdef int lwork
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_269dgebrd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgebrd_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgebrd_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2562
 * cpdef int dgebrd_bufferSize(intptr_t handle, int m, int n) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDgebrd_bufferSize(<Handle>handle, m, n, &lwork)
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2562, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2563
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgebrd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2564
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDgebrd_bufferSize(<Handle>handle, m, n, &lwork)             # <<<<<<<<<<<<<<
 *     check_status(status)
 *     return lwork
 */
        __pyx_v_status = cusolverDnDgebrd_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2563
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgebrd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2565
 *     with nogil:
 *         status = cusolverDnDgebrd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2565, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2566
 *         status = cusolverDnDgebrd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int cgebrd_bufferSize(intptr_t handle, int m, int n) except? -1:
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2560
 *     return lwork
 * 
 * cpdef int dgebrd_bufferSize(intptr_t handle, int m, int n) except? -1:             # <<<<<<<<<<<<<<
 *     cdef int lwork
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgebrd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_269dgebrd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_268dgebrd_bufferSize[] = "dgebrd_bufferSize(intptr_t handle, int m, int n) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_269dgebrd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dgebrd_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgebrd_bufferSize", 1, 3, 3, 1); __PYX_ERR(0, 2560, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgebrd_bufferSize", 1, 3, 3, 2); __PYX_ERR(0, 2560, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dgebrd_bufferSize") < 0)) __PYX_ERR(0, 2560, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2560, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2560, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2560, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dgebrd_bufferSize", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2560, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgebrd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_268dgebrd_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_268dgebrd_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgebrd_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgebrd_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2560, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgebrd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2568
 *     return lwork
 * 
 * cpdef int cgebrd_bufferSize(intptr_t handle, int m, int n) except? -1:             # <<<<<<<<<<<<<<
 *     cdef int lwork
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_271cgebrd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgebrd_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgebrd_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2570
 * cpdef int cgebrd_bufferSize(intptr_t handle, int m, int n) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCgebrd_bufferSize(<Handle>handle, m, n, &lwork)
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2571
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgebrd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2572
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCgebrd_bufferSize(<Handle>handle, m, n, &lwork)             # <<<<<<<<<<<<<<
 *     check_status(status)
 *     return lwork
 */
        __pyx_v_status = cusolverDnCgebrd_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2571
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgebrd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2573
 *     with nogil:
 *         status = cusolverDnCgebrd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2573, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2574
 *         status = cusolverDnCgebrd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int zgebrd_bufferSize(intptr_t handle, int m, int n) except? -1:
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2568
 *     return lwork
 * 
 * cpdef int cgebrd_bufferSize(intptr_t handle, int m, int n) except? -1:             # <<<<<<<<<<<<<<
 *     cdef int lwork
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgebrd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_271cgebrd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_270cgebrd_bufferSize[] = "cgebrd_bufferSize(intptr_t handle, int m, int n) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_271cgebrd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cgebrd_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgebrd_bufferSize", 1, 3, 3, 1); __PYX_ERR(0, 2568, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgebrd_bufferSize", 1, 3, 3, 2); __PYX_ERR(0, 2568, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cgebrd_bufferSize") < 0)) __PYX_ERR(0, 2568, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2568, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2568, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2568, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cgebrd_bufferSize", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2568, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgebrd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_270cgebrd_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_270cgebrd_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgebrd_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgebrd_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2568, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2568, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgebrd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2576
 *     return lwork
 * 
 * cpdef int zgebrd_bufferSize(intptr_t handle, int m, int n) except? -1:             # <<<<<<<<<<<<<<
 *     cdef int lwork
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_273zgebrd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgebrd_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgebrd_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2578
 * cpdef int zgebrd_bufferSize(intptr_t handle, int m, int n) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZgebrd_bufferSize(<Handle>handle, m, n, &lwork)
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2578, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2579
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgebrd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2580
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZgebrd_bufferSize(<Handle>handle, m, n, &lwork)             # <<<<<<<<<<<<<<
 *     check_status(status)
 *     return lwork
 */
        __pyx_v_status = cusolverDnZgebrd_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2579
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgebrd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2581
 *     with nogil:
 *         status = cusolverDnZgebrd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2581, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2582
 *         status = cusolverDnZgebrd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef sgebrd(intptr_t handle, int m, int n, size_t A, int lda,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2576
 *     return lwork
 * 
 * cpdef int zgebrd_bufferSize(intptr_t handle, int m, int n) except? -1:             # <<<<<<<<<<<<<<
 *     cdef int lwork
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgebrd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_273zgebrd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_272zgebrd_bufferSize[] = "zgebrd_bufferSize(intptr_t handle, int m, int n) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_273zgebrd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zgebrd_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgebrd_bufferSize", 1, 3, 3, 1); __PYX_ERR(0, 2576, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgebrd_bufferSize", 1, 3, 3, 2); __PYX_ERR(0, 2576, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zgebrd_bufferSize") < 0)) __PYX_ERR(0, 2576, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2576, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2576, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2576, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zgebrd_bufferSize", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2576, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgebrd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_272zgebrd_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_272zgebrd_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgebrd_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgebrd_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2576, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2576, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgebrd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2584
 *     return lwork
 * 
 * cpdef sgebrd(intptr_t handle, int m, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t D, size_t E, size_t tauQ, size_t tauP,
 *              size_t Work, int lwork, size_t devInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_275sgebrd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgebrd(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_D, size_t __pyx_v_E, size_t __pyx_v_tauQ, size_t __pyx_v_tauP, size_t __pyx_v_Work, int __pyx_v_lwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgebrd", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2587
 *              size_t D, size_t E, size_t tauQ, size_t tauP,
 *              size_t Work, int lwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSgebrd(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2587, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2588
 *              size_t Work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgebrd(
 *             <Handle>handle, m, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2589
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSgebrd(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n,
 *             <float*>A, lda,
 */
        __pyx_v_status = cusolverDnSgebrd(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, ((float *)__pyx_v_A), __pyx_v_lda, ((float *)__pyx_v_D), ((float *)__pyx_v_E), ((float *)__pyx_v_tauQ), ((float *)__pyx_v_tauP), ((float *)__pyx_v_Work), __pyx_v_lwork, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2588
 *              size_t Work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgebrd(
 *             <Handle>handle, m, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2595
 *             <float*>tauQ, <float*>tauP,
 *             <float*>Work, lwork, <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef dgebrd(intptr_t handle, int m, int n, size_t A, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2584
 *     return lwork
 * 
 * cpdef sgebrd(intptr_t handle, int m, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t D, size_t E, size_t tauQ, size_t tauP,
 *              size_t Work, int lwork, size_t devInfo):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgebrd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_275sgebrd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_274sgebrd[] = "sgebrd(intptr_t handle, int m, int n, size_t A, int lda, size_t D, size_t E, size_t tauQ, size_t tauP, size_t Work, int lwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_275sgebrd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_D;
  size_t __pyx_v_E;
  size_t __pyx_v_tauQ;
  size_t __pyx_v_tauP;
  size_t __pyx_v_Work;
  int __pyx_v_lwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sgebrd (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_D,&__pyx_n_s_E,&__pyx_n_s_tauQ,&__pyx_n_s_tauP,&__pyx_n_s_Work,&__pyx_n_s_lwork,&__pyx_n_s_devInfo,0};
    PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgebrd", 1, 12, 12, 1); __PYX_ERR(0, 2584, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgebrd", 1, 12, 12, 2); __PYX_ERR(0, 2584, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgebrd", 1, 12, 12, 3); __PYX_ERR(0, 2584, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgebrd", 1, 12, 12, 4); __PYX_ERR(0, 2584, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_D)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgebrd", 1, 12, 12, 5); __PYX_ERR(0, 2584, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_E)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgebrd", 1, 12, 12, 6); __PYX_ERR(0, 2584, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tauQ)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgebrd", 1, 12, 12, 7); __PYX_ERR(0, 2584, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tauP)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgebrd", 1, 12, 12, 8); __PYX_ERR(0, 2584, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgebrd", 1, 12, 12, 9); __PYX_ERR(0, 2584, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgebrd", 1, 12, 12, 10); __PYX_ERR(0, 2584, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgebrd", 1, 12, 12, 11); __PYX_ERR(0, 2584, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sgebrd") < 0)) __PYX_ERR(0, 2584, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 12) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2584, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2584, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2584, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2584, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2584, __pyx_L3_error)
    __pyx_v_D = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_D == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2585, __pyx_L3_error)
    __pyx_v_E = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_E == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2585, __pyx_L3_error)
    __pyx_v_tauQ = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_tauQ == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2585, __pyx_L3_error)
    __pyx_v_tauP = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_tauP == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2585, __pyx_L3_error)
    __pyx_v_Work = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_Work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2586, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[10]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2586, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2586, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sgebrd", 1, 12, 12, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2584, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgebrd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_274sgebrd(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_D, __pyx_v_E, __pyx_v_tauQ, __pyx_v_tauP, __pyx_v_Work, __pyx_v_lwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_274sgebrd(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_D, size_t __pyx_v_E, size_t __pyx_v_tauQ, size_t __pyx_v_tauP, size_t __pyx_v_Work, int __pyx_v_lwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgebrd", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgebrd(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_D, __pyx_v_E, __pyx_v_tauQ, __pyx_v_tauP, __pyx_v_Work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2584, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgebrd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2597
 *     check_status(status)
 * 
 * cpdef dgebrd(intptr_t handle, int m, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t D, size_t E, size_t tauQ, size_t tauP,
 *              size_t Work, int lwork, size_t devInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_277dgebrd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgebrd(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_D, size_t __pyx_v_E, size_t __pyx_v_tauQ, size_t __pyx_v_tauP, size_t __pyx_v_Work, int __pyx_v_lwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgebrd", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2600
 *              size_t D, size_t E, size_t tauQ, size_t tauP,
 *              size_t Work, int lwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDgebrd(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2601
 *              size_t Work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgebrd(
 *             <Handle>handle, m, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2602
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDgebrd(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n,
 *             <double*>A, lda,
 */
        __pyx_v_status = cusolverDnDgebrd(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, ((double *)__pyx_v_A), __pyx_v_lda, ((double *)__pyx_v_D), ((double *)__pyx_v_E), ((double *)__pyx_v_tauQ), ((double *)__pyx_v_tauP), ((double *)__pyx_v_Work), __pyx_v_lwork, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2601
 *              size_t Work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgebrd(
 *             <Handle>handle, m, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2608
 *             <double*>tauQ, <double*>tauP,
 *             <double*>Work, lwork, <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef cgebrd(intptr_t handle, int m, int n, size_t A, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2608, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2597
 *     check_status(status)
 * 
 * cpdef dgebrd(intptr_t handle, int m, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t D, size_t E, size_t tauQ, size_t tauP,
 *              size_t Work, int lwork, size_t devInfo):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgebrd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_277dgebrd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_276dgebrd[] = "dgebrd(intptr_t handle, int m, int n, size_t A, int lda, size_t D, size_t E, size_t tauQ, size_t tauP, size_t Work, int lwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_277dgebrd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_D;
  size_t __pyx_v_E;
  size_t __pyx_v_tauQ;
  size_t __pyx_v_tauP;
  size_t __pyx_v_Work;
  int __pyx_v_lwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dgebrd (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_D,&__pyx_n_s_E,&__pyx_n_s_tauQ,&__pyx_n_s_tauP,&__pyx_n_s_Work,&__pyx_n_s_lwork,&__pyx_n_s_devInfo,0};
    PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgebrd", 1, 12, 12, 1); __PYX_ERR(0, 2597, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgebrd", 1, 12, 12, 2); __PYX_ERR(0, 2597, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgebrd", 1, 12, 12, 3); __PYX_ERR(0, 2597, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgebrd", 1, 12, 12, 4); __PYX_ERR(0, 2597, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_D)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgebrd", 1, 12, 12, 5); __PYX_ERR(0, 2597, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_E)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgebrd", 1, 12, 12, 6); __PYX_ERR(0, 2597, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tauQ)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgebrd", 1, 12, 12, 7); __PYX_ERR(0, 2597, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tauP)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgebrd", 1, 12, 12, 8); __PYX_ERR(0, 2597, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgebrd", 1, 12, 12, 9); __PYX_ERR(0, 2597, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgebrd", 1, 12, 12, 10); __PYX_ERR(0, 2597, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgebrd", 1, 12, 12, 11); __PYX_ERR(0, 2597, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dgebrd") < 0)) __PYX_ERR(0, 2597, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 12) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2597, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2597, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2597, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2597, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2597, __pyx_L3_error)
    __pyx_v_D = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_D == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2598, __pyx_L3_error)
    __pyx_v_E = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_E == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2598, __pyx_L3_error)
    __pyx_v_tauQ = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_tauQ == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2598, __pyx_L3_error)
    __pyx_v_tauP = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_tauP == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2598, __pyx_L3_error)
    __pyx_v_Work = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_Work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2599, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[10]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2599, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2599, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dgebrd", 1, 12, 12, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2597, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgebrd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_276dgebrd(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_D, __pyx_v_E, __pyx_v_tauQ, __pyx_v_tauP, __pyx_v_Work, __pyx_v_lwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_276dgebrd(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_D, size_t __pyx_v_E, size_t __pyx_v_tauQ, size_t __pyx_v_tauP, size_t __pyx_v_Work, int __pyx_v_lwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgebrd", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgebrd(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_D, __pyx_v_E, __pyx_v_tauQ, __pyx_v_tauP, __pyx_v_Work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgebrd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2610
 *     check_status(status)
 * 
 * cpdef cgebrd(intptr_t handle, int m, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t D, size_t E, size_t tauQ, size_t tauP,
 *              size_t Work, int lwork, size_t devInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_279cgebrd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgebrd(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_D, size_t __pyx_v_E, size_t __pyx_v_tauQ, size_t __pyx_v_tauP, size_t __pyx_v_Work, int __pyx_v_lwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgebrd", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2613
 *              size_t D, size_t E, size_t tauQ, size_t tauP,
 *              size_t Work, int lwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCgebrd(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2613, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2614
 *              size_t Work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgebrd(
 *             <Handle>handle, m, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2615
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCgebrd(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n,
 *             <cuComplex*>A, lda,
 */
        __pyx_v_status = cusolverDnCgebrd(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, ((cuComplex *)__pyx_v_A), __pyx_v_lda, ((float *)__pyx_v_D), ((float *)__pyx_v_E), ((cuComplex *)__pyx_v_tauQ), ((cuComplex *)__pyx_v_tauP), ((cuComplex *)__pyx_v_Work), __pyx_v_lwork, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2614
 *              size_t Work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgebrd(
 *             <Handle>handle, m, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2621
 *             <cuComplex*>tauQ, <cuComplex*>tauP,
 *             <cuComplex*>Work, lwork, <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef zgebrd(intptr_t handle, int m, int n, size_t A, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2621, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2610
 *     check_status(status)
 * 
 * cpdef cgebrd(intptr_t handle, int m, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t D, size_t E, size_t tauQ, size_t tauP,
 *              size_t Work, int lwork, size_t devInfo):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgebrd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_279cgebrd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_278cgebrd[] = "cgebrd(intptr_t handle, int m, int n, size_t A, int lda, size_t D, size_t E, size_t tauQ, size_t tauP, size_t Work, int lwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_279cgebrd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_D;
  size_t __pyx_v_E;
  size_t __pyx_v_tauQ;
  size_t __pyx_v_tauP;
  size_t __pyx_v_Work;
  int __pyx_v_lwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cgebrd (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_D,&__pyx_n_s_E,&__pyx_n_s_tauQ,&__pyx_n_s_tauP,&__pyx_n_s_Work,&__pyx_n_s_lwork,&__pyx_n_s_devInfo,0};
    PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgebrd", 1, 12, 12, 1); __PYX_ERR(0, 2610, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgebrd", 1, 12, 12, 2); __PYX_ERR(0, 2610, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgebrd", 1, 12, 12, 3); __PYX_ERR(0, 2610, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgebrd", 1, 12, 12, 4); __PYX_ERR(0, 2610, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_D)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgebrd", 1, 12, 12, 5); __PYX_ERR(0, 2610, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_E)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgebrd", 1, 12, 12, 6); __PYX_ERR(0, 2610, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tauQ)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgebrd", 1, 12, 12, 7); __PYX_ERR(0, 2610, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tauP)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgebrd", 1, 12, 12, 8); __PYX_ERR(0, 2610, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgebrd", 1, 12, 12, 9); __PYX_ERR(0, 2610, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgebrd", 1, 12, 12, 10); __PYX_ERR(0, 2610, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgebrd", 1, 12, 12, 11); __PYX_ERR(0, 2610, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cgebrd") < 0)) __PYX_ERR(0, 2610, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 12) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2610, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2610, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2610, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2610, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2610, __pyx_L3_error)
    __pyx_v_D = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_D == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2611, __pyx_L3_error)
    __pyx_v_E = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_E == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2611, __pyx_L3_error)
    __pyx_v_tauQ = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_tauQ == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2611, __pyx_L3_error)
    __pyx_v_tauP = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_tauP == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2611, __pyx_L3_error)
    __pyx_v_Work = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_Work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2612, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[10]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2612, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2612, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cgebrd", 1, 12, 12, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2610, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgebrd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_278cgebrd(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_D, __pyx_v_E, __pyx_v_tauQ, __pyx_v_tauP, __pyx_v_Work, __pyx_v_lwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_278cgebrd(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_D, size_t __pyx_v_E, size_t __pyx_v_tauQ, size_t __pyx_v_tauP, size_t __pyx_v_Work, int __pyx_v_lwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgebrd", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgebrd(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_D, __pyx_v_E, __pyx_v_tauQ, __pyx_v_tauP, __pyx_v_Work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2610, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgebrd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2623
 *     check_status(status)
 * 
 * cpdef zgebrd(intptr_t handle, int m, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t D, size_t E, size_t tauQ, size_t tauP,
 *              size_t Work, int lwork, size_t devInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_281zgebrd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgebrd(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_D, size_t __pyx_v_E, size_t __pyx_v_tauQ, size_t __pyx_v_tauP, size_t __pyx_v_Work, int __pyx_v_lwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgebrd", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2626
 *              size_t D, size_t E, size_t tauQ, size_t tauP,
 *              size_t Work, int lwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZgebrd(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2626, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2627
 *              size_t Work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgebrd(
 *             <Handle>handle, m, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2628
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZgebrd(             # <<<<<<<<<<<<<<
 *             <Handle>handle, m, n,
 *             <cuDoubleComplex*>A, lda,
 */
        __pyx_v_status = cusolverDnZgebrd(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, ((cuDoubleComplex *)__pyx_v_A), __pyx_v_lda, ((double *)__pyx_v_D), ((double *)__pyx_v_E), ((cuDoubleComplex *)__pyx_v_tauQ), ((cuDoubleComplex *)__pyx_v_tauP), ((cuDoubleComplex *)__pyx_v_Work), __pyx_v_lwork, ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2627
 *              size_t Work, int lwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgebrd(
 *             <Handle>handle, m, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2634
 *             <cuDoubleComplex*>tauQ, <cuDoubleComplex*>tauP,
 *             <cuDoubleComplex*>Work, lwork, <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2623
 *     check_status(status)
 * 
 * cpdef zgebrd(intptr_t handle, int m, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t D, size_t E, size_t tauQ, size_t tauP,
 *              size_t Work, int lwork, size_t devInfo):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgebrd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_281zgebrd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_280zgebrd[] = "zgebrd(intptr_t handle, int m, int n, size_t A, int lda, size_t D, size_t E, size_t tauQ, size_t tauP, size_t Work, int lwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_281zgebrd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_D;
  size_t __pyx_v_E;
  size_t __pyx_v_tauQ;
  size_t __pyx_v_tauP;
  size_t __pyx_v_Work;
  int __pyx_v_lwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zgebrd (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_D,&__pyx_n_s_E,&__pyx_n_s_tauQ,&__pyx_n_s_tauP,&__pyx_n_s_Work,&__pyx_n_s_lwork,&__pyx_n_s_devInfo,0};
    PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgebrd", 1, 12, 12, 1); __PYX_ERR(0, 2623, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgebrd", 1, 12, 12, 2); __PYX_ERR(0, 2623, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgebrd", 1, 12, 12, 3); __PYX_ERR(0, 2623, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgebrd", 1, 12, 12, 4); __PYX_ERR(0, 2623, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_D)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgebrd", 1, 12, 12, 5); __PYX_ERR(0, 2623, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_E)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgebrd", 1, 12, 12, 6); __PYX_ERR(0, 2623, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tauQ)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgebrd", 1, 12, 12, 7); __PYX_ERR(0, 2623, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tauP)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgebrd", 1, 12, 12, 8); __PYX_ERR(0, 2623, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgebrd", 1, 12, 12, 9); __PYX_ERR(0, 2623, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgebrd", 1, 12, 12, 10); __PYX_ERR(0, 2623, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgebrd", 1, 12, 12, 11); __PYX_ERR(0, 2623, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zgebrd") < 0)) __PYX_ERR(0, 2623, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 12) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2623, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2623, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2623, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2623, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2623, __pyx_L3_error)
    __pyx_v_D = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_D == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2624, __pyx_L3_error)
    __pyx_v_E = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_E == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2624, __pyx_L3_error)
    __pyx_v_tauQ = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_tauQ == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2624, __pyx_L3_error)
    __pyx_v_tauP = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_tauP == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2624, __pyx_L3_error)
    __pyx_v_Work = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_Work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2625, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[10]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2625, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2625, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zgebrd", 1, 12, 12, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2623, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgebrd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_280zgebrd(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_D, __pyx_v_E, __pyx_v_tauQ, __pyx_v_tauP, __pyx_v_Work, __pyx_v_lwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_280zgebrd(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_D, size_t __pyx_v_E, size_t __pyx_v_tauQ, size_t __pyx_v_tauP, size_t __pyx_v_Work, int __pyx_v_lwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgebrd", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgebrd(__pyx_v_handle, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_D, __pyx_v_E, __pyx_v_tauQ, __pyx_v_tauP, __pyx_v_Work, __pyx_v_lwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2623, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgebrd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2638
 * 
 * # Singular value decomposition, A = U * Sigma * V^H
 * cpdef int sgesvd_bufferSize(intptr_t handle, int m, int n) except? -1:             # <<<<<<<<<<<<<<
 *     cdef int lwork
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_283sgesvd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvd_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgesvd_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2640
 * cpdef int sgesvd_bufferSize(intptr_t handle, int m, int n) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSgesvd_bufferSize(<Handle>handle, m, n, &lwork)
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2640, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2641
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgesvd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2642
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSgesvd_bufferSize(<Handle>handle, m, n, &lwork)             # <<<<<<<<<<<<<<
 *     check_status(status)
 *     return lwork
 */
        __pyx_v_status = cusolverDnSgesvd_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2641
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgesvd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2643
 *     with nogil:
 *         status = cusolverDnSgesvd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2643, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2644
 *         status = cusolverDnSgesvd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int dgesvd_bufferSize(intptr_t handle, int m, int n) except? -1:
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2638
 * 
 * # Singular value decomposition, A = U * Sigma * V^H
 * cpdef int sgesvd_bufferSize(intptr_t handle, int m, int n) except? -1:             # <<<<<<<<<<<<<<
 *     cdef int lwork
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgesvd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_283sgesvd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_282sgesvd_bufferSize[] = "sgesvd_bufferSize(intptr_t handle, int m, int n) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_283sgesvd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sgesvd_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvd_bufferSize", 1, 3, 3, 1); __PYX_ERR(0, 2638, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvd_bufferSize", 1, 3, 3, 2); __PYX_ERR(0, 2638, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sgesvd_bufferSize") < 0)) __PYX_ERR(0, 2638, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2638, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2638, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2638, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sgesvd_bufferSize", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2638, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgesvd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_282sgesvd_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_282sgesvd_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgesvd_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvd_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2638, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2638, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgesvd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2646
 *     return lwork
 * 
 * cpdef int dgesvd_bufferSize(intptr_t handle, int m, int n) except? -1:             # <<<<<<<<<<<<<<
 *     cdef int lwork
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_285dgesvd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvd_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgesvd_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2648
 * cpdef int dgesvd_bufferSize(intptr_t handle, int m, int n) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDgesvd_bufferSize(<Handle>handle, m, n, &lwork)
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2648, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2649
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgesvd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2650
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDgesvd_bufferSize(<Handle>handle, m, n, &lwork)             # <<<<<<<<<<<<<<
 *     check_status(status)
 *     return lwork
 */
        __pyx_v_status = cusolverDnDgesvd_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2649
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgesvd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2651
 *     with nogil:
 *         status = cusolverDnDgesvd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2652
 *         status = cusolverDnDgesvd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int cgesvd_bufferSize(intptr_t handle, int m, int n) except? -1:
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2646
 *     return lwork
 * 
 * cpdef int dgesvd_bufferSize(intptr_t handle, int m, int n) except? -1:             # <<<<<<<<<<<<<<
 *     cdef int lwork
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgesvd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_285dgesvd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_284dgesvd_bufferSize[] = "dgesvd_bufferSize(intptr_t handle, int m, int n) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_285dgesvd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dgesvd_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvd_bufferSize", 1, 3, 3, 1); __PYX_ERR(0, 2646, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvd_bufferSize", 1, 3, 3, 2); __PYX_ERR(0, 2646, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dgesvd_bufferSize") < 0)) __PYX_ERR(0, 2646, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2646, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2646, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2646, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dgesvd_bufferSize", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2646, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgesvd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_284dgesvd_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_284dgesvd_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgesvd_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvd_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2646, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgesvd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2654
 *     return lwork
 * 
 * cpdef int cgesvd_bufferSize(intptr_t handle, int m, int n) except? -1:             # <<<<<<<<<<<<<<
 *     cdef int lwork
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_287cgesvd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvd_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgesvd_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2656
 * cpdef int cgesvd_bufferSize(intptr_t handle, int m, int n) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCgesvd_bufferSize(<Handle>handle, m, n, &lwork)
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2656, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2657
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgesvd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2658
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCgesvd_bufferSize(<Handle>handle, m, n, &lwork)             # <<<<<<<<<<<<<<
 *     check_status(status)
 *     return lwork
 */
        __pyx_v_status = cusolverDnCgesvd_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2657
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgesvd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2659
 *     with nogil:
 *         status = cusolverDnCgesvd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2659, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2660
 *         status = cusolverDnCgesvd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int zgesvd_bufferSize(intptr_t handle, int m, int n) except? -1:
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2654
 *     return lwork
 * 
 * cpdef int cgesvd_bufferSize(intptr_t handle, int m, int n) except? -1:             # <<<<<<<<<<<<<<
 *     cdef int lwork
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgesvd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_287cgesvd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_286cgesvd_bufferSize[] = "cgesvd_bufferSize(intptr_t handle, int m, int n) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_287cgesvd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cgesvd_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvd_bufferSize", 1, 3, 3, 1); __PYX_ERR(0, 2654, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvd_bufferSize", 1, 3, 3, 2); __PYX_ERR(0, 2654, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cgesvd_bufferSize") < 0)) __PYX_ERR(0, 2654, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2654, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2654, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2654, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cgesvd_bufferSize", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2654, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgesvd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_286cgesvd_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_286cgesvd_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgesvd_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvd_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2654, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgesvd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2662
 *     return lwork
 * 
 * cpdef int zgesvd_bufferSize(intptr_t handle, int m, int n) except? -1:             # <<<<<<<<<<<<<<
 *     cdef int lwork
 *     _setStream(handle)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_289zgesvd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvd_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgesvd_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2664
 * cpdef int zgesvd_bufferSize(intptr_t handle, int m, int n) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZgesvd_bufferSize(<Handle>handle, m, n, &lwork)
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2664, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2665
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgesvd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2666
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZgesvd_bufferSize(<Handle>handle, m, n, &lwork)             # <<<<<<<<<<<<<<
 *     check_status(status)
 *     return lwork
 */
        __pyx_v_status = cusolverDnZgesvd_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_n, (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2665
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgesvd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2667
 *     with nogil:
 *         status = cusolverDnZgesvd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2667, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2668
 *         status = cusolverDnZgesvd_bufferSize(<Handle>handle, m, n, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef sgesvd(intptr_t handle, char jobu, char jobvt, int m, int n, size_t A,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2662
 *     return lwork
 * 
 * cpdef int zgesvd_bufferSize(intptr_t handle, int m, int n) except? -1:             # <<<<<<<<<<<<<<
 *     cdef int lwork
 *     _setStream(handle)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgesvd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_289zgesvd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_288zgesvd_bufferSize[] = "zgesvd_bufferSize(intptr_t handle, int m, int n) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_289zgesvd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_n;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zgesvd_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_n,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvd_bufferSize", 1, 3, 3, 1); __PYX_ERR(0, 2662, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvd_bufferSize", 1, 3, 3, 2); __PYX_ERR(0, 2662, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zgesvd_bufferSize") < 0)) __PYX_ERR(0, 2662, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2662, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2662, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2662, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zgesvd_bufferSize", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2662, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgesvd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_288zgesvd_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_n);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_288zgesvd_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_n) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgesvd_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvd_bufferSize(__pyx_v_handle, __pyx_v_m, __pyx_v_n, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2662, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2662, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgesvd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2670
 *     return lwork
 * 
 * cpdef sgesvd(intptr_t handle, char jobu, char jobvt, int m, int n, size_t A,             # <<<<<<<<<<<<<<
 *              int lda, size_t S, size_t U, int ldu, size_t VT, int ldvt,
 *              size_t Work, int lwork, size_t rwork, size_t devInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_291sgesvd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvd(intptr_t __pyx_v_handle, char __pyx_v_jobu, char __pyx_v_jobvt, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_S, size_t __pyx_v_U, int __pyx_v_ldu, size_t __pyx_v_VT, int __pyx_v_ldvt, size_t __pyx_v_Work, int __pyx_v_lwork, size_t __pyx_v_rwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgesvd", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2673
 *              int lda, size_t S, size_t U, int ldu, size_t VT, int ldvt,
 *              size_t Work, int lwork, size_t rwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSgesvd(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2673, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2674
 *              size_t Work, int lwork, size_t rwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgesvd(
 *             <Handle>handle, jobu, jobvt, m, n, <float*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2675
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSgesvd(             # <<<<<<<<<<<<<<
 *             <Handle>handle, jobu, jobvt, m, n, <float*>A, lda,
 *             <float*>S, <float*>U, ldu, <float*>VT, ldvt,
 */
        __pyx_v_status = cusolverDnSgesvd(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_jobu, __pyx_v_jobvt, __pyx_v_m, __pyx_v_n, ((float *)__pyx_v_A), __pyx_v_lda, ((float *)__pyx_v_S), ((float *)__pyx_v_U), __pyx_v_ldu, ((float *)__pyx_v_VT), __pyx_v_ldvt, ((float *)__pyx_v_Work), __pyx_v_lwork, ((float *)__pyx_v_rwork), ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2674
 *              size_t Work, int lwork, size_t rwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgesvd(
 *             <Handle>handle, jobu, jobvt, m, n, <float*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2679
 *             <float*>S, <float*>U, ldu, <float*>VT, ldvt,
 *             <float*>Work, lwork, <float*>rwork, <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef dgesvd(intptr_t handle, char jobu, char jobvt, int m, int n, size_t A,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2679, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2670
 *     return lwork
 * 
 * cpdef sgesvd(intptr_t handle, char jobu, char jobvt, int m, int n, size_t A,             # <<<<<<<<<<<<<<
 *              int lda, size_t S, size_t U, int ldu, size_t VT, int ldvt,
 *              size_t Work, int lwork, size_t rwork, size_t devInfo):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgesvd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_291sgesvd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_290sgesvd[] = "sgesvd(intptr_t handle, char jobu, char jobvt, int m, int n, size_t A, int lda, size_t S, size_t U, int ldu, size_t VT, int ldvt, size_t Work, int lwork, size_t rwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_291sgesvd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  char __pyx_v_jobu;
  char __pyx_v_jobvt;
  int __pyx_v_m;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_S;
  size_t __pyx_v_U;
  int __pyx_v_ldu;
  size_t __pyx_v_VT;
  int __pyx_v_ldvt;
  size_t __pyx_v_Work;
  int __pyx_v_lwork;
  size_t __pyx_v_rwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sgesvd (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobu,&__pyx_n_s_jobvt,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_S,&__pyx_n_s_U,&__pyx_n_s_ldu,&__pyx_n_s_VT,&__pyx_n_s_ldvt,&__pyx_n_s_Work,&__pyx_n_s_lwork,&__pyx_n_s_rwork,&__pyx_n_s_devInfo,0};
    PyObject* values[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
        CYTHON_FALLTHROUGH;
        case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
        CYTHON_FALLTHROUGH;
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvd", 1, 16, 16, 1); __PYX_ERR(0, 2670, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobvt)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvd", 1, 16, 16, 2); __PYX_ERR(0, 2670, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvd", 1, 16, 16, 3); __PYX_ERR(0, 2670, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvd", 1, 16, 16, 4); __PYX_ERR(0, 2670, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvd", 1, 16, 16, 5); __PYX_ERR(0, 2670, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvd", 1, 16, 16, 6); __PYX_ERR(0, 2670, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvd", 1, 16, 16, 7); __PYX_ERR(0, 2670, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvd", 1, 16, 16, 8); __PYX_ERR(0, 2670, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvd", 1, 16, 16, 9); __PYX_ERR(0, 2670, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_VT)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvd", 1, 16, 16, 10); __PYX_ERR(0, 2670, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldvt)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvd", 1, 16, 16, 11); __PYX_ERR(0, 2670, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvd", 1, 16, 16, 12); __PYX_ERR(0, 2670, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (likely((values[13] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvd", 1, 16, 16, 13); __PYX_ERR(0, 2670, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 14:
        if (likely((values[14] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvd", 1, 16, 16, 14); __PYX_ERR(0, 2670, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 15:
        if (likely((values[15] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvd", 1, 16, 16, 15); __PYX_ERR(0, 2670, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sgesvd") < 0)) __PYX_ERR(0, 2670, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 16) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
      values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
      values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
      values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2670, __pyx_L3_error)
    __pyx_v_jobu = __Pyx_PyInt_As_char(values[1]); if (unlikely((__pyx_v_jobu == (char)-1) && PyErr_Occurred())) __PYX_ERR(0, 2670, __pyx_L3_error)
    __pyx_v_jobvt = __Pyx_PyInt_As_char(values[2]); if (unlikely((__pyx_v_jobvt == (char)-1) && PyErr_Occurred())) __PYX_ERR(0, 2670, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2670, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2670, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2670, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2671, __pyx_L3_error)
    __pyx_v_S = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_S == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2671, __pyx_L3_error)
    __pyx_v_U = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_U == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2671, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2671, __pyx_L3_error)
    __pyx_v_VT = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_VT == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2671, __pyx_L3_error)
    __pyx_v_ldvt = __Pyx_PyInt_As_int(values[11]); if (unlikely((__pyx_v_ldvt == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2671, __pyx_L3_error)
    __pyx_v_Work = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_Work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2672, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[13]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2672, __pyx_L3_error)
    __pyx_v_rwork = __Pyx_PyInt_As_size_t(values[14]); if (unlikely((__pyx_v_rwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2672, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[15]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2672, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sgesvd", 1, 16, 16, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2670, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgesvd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_290sgesvd(__pyx_self, __pyx_v_handle, __pyx_v_jobu, __pyx_v_jobvt, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_VT, __pyx_v_ldvt, __pyx_v_Work, __pyx_v_lwork, __pyx_v_rwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_290sgesvd(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, char __pyx_v_jobu, char __pyx_v_jobvt, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_S, size_t __pyx_v_U, int __pyx_v_ldu, size_t __pyx_v_VT, int __pyx_v_ldvt, size_t __pyx_v_Work, int __pyx_v_lwork, size_t __pyx_v_rwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgesvd", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvd(__pyx_v_handle, __pyx_v_jobu, __pyx_v_jobvt, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_VT, __pyx_v_ldvt, __pyx_v_Work, __pyx_v_lwork, __pyx_v_rwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2670, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgesvd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2681
 *     check_status(status)
 * 
 * cpdef dgesvd(intptr_t handle, char jobu, char jobvt, int m, int n, size_t A,             # <<<<<<<<<<<<<<
 *              int lda, size_t S, size_t U, int ldu, size_t VT, int ldvt,
 *              size_t Work, int lwork, size_t rwork, size_t devInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_293dgesvd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvd(intptr_t __pyx_v_handle, char __pyx_v_jobu, char __pyx_v_jobvt, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_S, size_t __pyx_v_U, int __pyx_v_ldu, size_t __pyx_v_VT, int __pyx_v_ldvt, size_t __pyx_v_Work, int __pyx_v_lwork, size_t __pyx_v_rwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgesvd", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2684
 *              int lda, size_t S, size_t U, int ldu, size_t VT, int ldvt,
 *              size_t Work, int lwork, size_t rwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDgesvd(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2684, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2685
 *              size_t Work, int lwork, size_t rwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgesvd(
 *             <Handle>handle, jobu, jobvt, m, n, <double*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2686
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDgesvd(             # <<<<<<<<<<<<<<
 *             <Handle>handle, jobu, jobvt, m, n, <double*>A, lda,
 *             <double*>S, <double*>U, ldu, <double*>VT, ldvt,
 */
        __pyx_v_status = cusolverDnDgesvd(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_jobu, __pyx_v_jobvt, __pyx_v_m, __pyx_v_n, ((double *)__pyx_v_A), __pyx_v_lda, ((double *)__pyx_v_S), ((double *)__pyx_v_U), __pyx_v_ldu, ((double *)__pyx_v_VT), __pyx_v_ldvt, ((double *)__pyx_v_Work), __pyx_v_lwork, ((double *)__pyx_v_rwork), ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2685
 *              size_t Work, int lwork, size_t rwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgesvd(
 *             <Handle>handle, jobu, jobvt, m, n, <double*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2690
 *             <double*>S, <double*>U, ldu, <double*>VT, ldvt,
 *             <double*>Work, lwork, <double*>rwork, <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef cgesvd(intptr_t handle, char jobu, char jobvt, int m, int n, size_t A,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2690, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2681
 *     check_status(status)
 * 
 * cpdef dgesvd(intptr_t handle, char jobu, char jobvt, int m, int n, size_t A,             # <<<<<<<<<<<<<<
 *              int lda, size_t S, size_t U, int ldu, size_t VT, int ldvt,
 *              size_t Work, int lwork, size_t rwork, size_t devInfo):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgesvd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_293dgesvd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_292dgesvd[] = "dgesvd(intptr_t handle, char jobu, char jobvt, int m, int n, size_t A, int lda, size_t S, size_t U, int ldu, size_t VT, int ldvt, size_t Work, int lwork, size_t rwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_293dgesvd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  char __pyx_v_jobu;
  char __pyx_v_jobvt;
  int __pyx_v_m;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_S;
  size_t __pyx_v_U;
  int __pyx_v_ldu;
  size_t __pyx_v_VT;
  int __pyx_v_ldvt;
  size_t __pyx_v_Work;
  int __pyx_v_lwork;
  size_t __pyx_v_rwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dgesvd (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobu,&__pyx_n_s_jobvt,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_S,&__pyx_n_s_U,&__pyx_n_s_ldu,&__pyx_n_s_VT,&__pyx_n_s_ldvt,&__pyx_n_s_Work,&__pyx_n_s_lwork,&__pyx_n_s_rwork,&__pyx_n_s_devInfo,0};
    PyObject* values[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
        CYTHON_FALLTHROUGH;
        case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
        CYTHON_FALLTHROUGH;
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvd", 1, 16, 16, 1); __PYX_ERR(0, 2681, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobvt)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvd", 1, 16, 16, 2); __PYX_ERR(0, 2681, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvd", 1, 16, 16, 3); __PYX_ERR(0, 2681, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvd", 1, 16, 16, 4); __PYX_ERR(0, 2681, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvd", 1, 16, 16, 5); __PYX_ERR(0, 2681, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvd", 1, 16, 16, 6); __PYX_ERR(0, 2681, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvd", 1, 16, 16, 7); __PYX_ERR(0, 2681, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvd", 1, 16, 16, 8); __PYX_ERR(0, 2681, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvd", 1, 16, 16, 9); __PYX_ERR(0, 2681, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_VT)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvd", 1, 16, 16, 10); __PYX_ERR(0, 2681, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldvt)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvd", 1, 16, 16, 11); __PYX_ERR(0, 2681, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvd", 1, 16, 16, 12); __PYX_ERR(0, 2681, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (likely((values[13] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvd", 1, 16, 16, 13); __PYX_ERR(0, 2681, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 14:
        if (likely((values[14] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvd", 1, 16, 16, 14); __PYX_ERR(0, 2681, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 15:
        if (likely((values[15] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvd", 1, 16, 16, 15); __PYX_ERR(0, 2681, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dgesvd") < 0)) __PYX_ERR(0, 2681, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 16) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
      values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
      values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
      values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2681, __pyx_L3_error)
    __pyx_v_jobu = __Pyx_PyInt_As_char(values[1]); if (unlikely((__pyx_v_jobu == (char)-1) && PyErr_Occurred())) __PYX_ERR(0, 2681, __pyx_L3_error)
    __pyx_v_jobvt = __Pyx_PyInt_As_char(values[2]); if (unlikely((__pyx_v_jobvt == (char)-1) && PyErr_Occurred())) __PYX_ERR(0, 2681, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2681, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2681, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2681, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2682, __pyx_L3_error)
    __pyx_v_S = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_S == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2682, __pyx_L3_error)
    __pyx_v_U = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_U == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2682, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2682, __pyx_L3_error)
    __pyx_v_VT = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_VT == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2682, __pyx_L3_error)
    __pyx_v_ldvt = __Pyx_PyInt_As_int(values[11]); if (unlikely((__pyx_v_ldvt == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2682, __pyx_L3_error)
    __pyx_v_Work = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_Work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2683, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[13]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2683, __pyx_L3_error)
    __pyx_v_rwork = __Pyx_PyInt_As_size_t(values[14]); if (unlikely((__pyx_v_rwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2683, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[15]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2683, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dgesvd", 1, 16, 16, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2681, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgesvd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_292dgesvd(__pyx_self, __pyx_v_handle, __pyx_v_jobu, __pyx_v_jobvt, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_VT, __pyx_v_ldvt, __pyx_v_Work, __pyx_v_lwork, __pyx_v_rwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_292dgesvd(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, char __pyx_v_jobu, char __pyx_v_jobvt, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_S, size_t __pyx_v_U, int __pyx_v_ldu, size_t __pyx_v_VT, int __pyx_v_ldvt, size_t __pyx_v_Work, int __pyx_v_lwork, size_t __pyx_v_rwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgesvd", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvd(__pyx_v_handle, __pyx_v_jobu, __pyx_v_jobvt, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_VT, __pyx_v_ldvt, __pyx_v_Work, __pyx_v_lwork, __pyx_v_rwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgesvd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2692
 *     check_status(status)
 * 
 * cpdef cgesvd(intptr_t handle, char jobu, char jobvt, int m, int n, size_t A,             # <<<<<<<<<<<<<<
 *              int lda, size_t S, size_t U, int ldu, size_t VT, int ldvt,
 *              size_t Work, int lwork, size_t rwork, size_t devInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_295cgesvd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvd(intptr_t __pyx_v_handle, char __pyx_v_jobu, char __pyx_v_jobvt, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_S, size_t __pyx_v_U, int __pyx_v_ldu, size_t __pyx_v_VT, int __pyx_v_ldvt, size_t __pyx_v_Work, int __pyx_v_lwork, size_t __pyx_v_rwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgesvd", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2695
 *              int lda, size_t S, size_t U, int ldu, size_t VT, int ldvt,
 *              size_t Work, int lwork, size_t rwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCgesvd(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2695, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2696
 *              size_t Work, int lwork, size_t rwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgesvd(
 *             <Handle>handle, jobu, jobvt, m, n, <cuComplex*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2697
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCgesvd(             # <<<<<<<<<<<<<<
 *             <Handle>handle, jobu, jobvt, m, n, <cuComplex*>A, lda,
 *             <float*>S, <cuComplex*>U, ldu, <cuComplex*>VT, ldvt,
 */
        __pyx_v_status = cusolverDnCgesvd(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_jobu, __pyx_v_jobvt, __pyx_v_m, __pyx_v_n, ((cuComplex *)__pyx_v_A), __pyx_v_lda, ((float *)__pyx_v_S), ((cuComplex *)__pyx_v_U), __pyx_v_ldu, ((cuComplex *)__pyx_v_VT), __pyx_v_ldvt, ((cuComplex *)__pyx_v_Work), __pyx_v_lwork, ((float *)__pyx_v_rwork), ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2696
 *              size_t Work, int lwork, size_t rwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgesvd(
 *             <Handle>handle, jobu, jobvt, m, n, <cuComplex*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2701
 *             <float*>S, <cuComplex*>U, ldu, <cuComplex*>VT, ldvt,
 *             <cuComplex*>Work, lwork, <float*>rwork, <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef zgesvd(intptr_t handle, char jobu, char jobvt, int m, int n, size_t A,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2701, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2692
 *     check_status(status)
 * 
 * cpdef cgesvd(intptr_t handle, char jobu, char jobvt, int m, int n, size_t A,             # <<<<<<<<<<<<<<
 *              int lda, size_t S, size_t U, int ldu, size_t VT, int ldvt,
 *              size_t Work, int lwork, size_t rwork, size_t devInfo):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgesvd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_295cgesvd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_294cgesvd[] = "cgesvd(intptr_t handle, char jobu, char jobvt, int m, int n, size_t A, int lda, size_t S, size_t U, int ldu, size_t VT, int ldvt, size_t Work, int lwork, size_t rwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_295cgesvd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  char __pyx_v_jobu;
  char __pyx_v_jobvt;
  int __pyx_v_m;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_S;
  size_t __pyx_v_U;
  int __pyx_v_ldu;
  size_t __pyx_v_VT;
  int __pyx_v_ldvt;
  size_t __pyx_v_Work;
  int __pyx_v_lwork;
  size_t __pyx_v_rwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cgesvd (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobu,&__pyx_n_s_jobvt,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_S,&__pyx_n_s_U,&__pyx_n_s_ldu,&__pyx_n_s_VT,&__pyx_n_s_ldvt,&__pyx_n_s_Work,&__pyx_n_s_lwork,&__pyx_n_s_rwork,&__pyx_n_s_devInfo,0};
    PyObject* values[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
        CYTHON_FALLTHROUGH;
        case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
        CYTHON_FALLTHROUGH;
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvd", 1, 16, 16, 1); __PYX_ERR(0, 2692, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobvt)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvd", 1, 16, 16, 2); __PYX_ERR(0, 2692, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvd", 1, 16, 16, 3); __PYX_ERR(0, 2692, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvd", 1, 16, 16, 4); __PYX_ERR(0, 2692, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvd", 1, 16, 16, 5); __PYX_ERR(0, 2692, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvd", 1, 16, 16, 6); __PYX_ERR(0, 2692, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvd", 1, 16, 16, 7); __PYX_ERR(0, 2692, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvd", 1, 16, 16, 8); __PYX_ERR(0, 2692, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvd", 1, 16, 16, 9); __PYX_ERR(0, 2692, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_VT)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvd", 1, 16, 16, 10); __PYX_ERR(0, 2692, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldvt)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvd", 1, 16, 16, 11); __PYX_ERR(0, 2692, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvd", 1, 16, 16, 12); __PYX_ERR(0, 2692, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (likely((values[13] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvd", 1, 16, 16, 13); __PYX_ERR(0, 2692, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 14:
        if (likely((values[14] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvd", 1, 16, 16, 14); __PYX_ERR(0, 2692, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 15:
        if (likely((values[15] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvd", 1, 16, 16, 15); __PYX_ERR(0, 2692, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cgesvd") < 0)) __PYX_ERR(0, 2692, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 16) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
      values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
      values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
      values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2692, __pyx_L3_error)
    __pyx_v_jobu = __Pyx_PyInt_As_char(values[1]); if (unlikely((__pyx_v_jobu == (char)-1) && PyErr_Occurred())) __PYX_ERR(0, 2692, __pyx_L3_error)
    __pyx_v_jobvt = __Pyx_PyInt_As_char(values[2]); if (unlikely((__pyx_v_jobvt == (char)-1) && PyErr_Occurred())) __PYX_ERR(0, 2692, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2692, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2692, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2692, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2693, __pyx_L3_error)
    __pyx_v_S = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_S == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2693, __pyx_L3_error)
    __pyx_v_U = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_U == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2693, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2693, __pyx_L3_error)
    __pyx_v_VT = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_VT == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2693, __pyx_L3_error)
    __pyx_v_ldvt = __Pyx_PyInt_As_int(values[11]); if (unlikely((__pyx_v_ldvt == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2693, __pyx_L3_error)
    __pyx_v_Work = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_Work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2694, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[13]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2694, __pyx_L3_error)
    __pyx_v_rwork = __Pyx_PyInt_As_size_t(values[14]); if (unlikely((__pyx_v_rwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2694, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[15]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2694, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cgesvd", 1, 16, 16, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2692, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgesvd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_294cgesvd(__pyx_self, __pyx_v_handle, __pyx_v_jobu, __pyx_v_jobvt, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_VT, __pyx_v_ldvt, __pyx_v_Work, __pyx_v_lwork, __pyx_v_rwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_294cgesvd(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, char __pyx_v_jobu, char __pyx_v_jobvt, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_S, size_t __pyx_v_U, int __pyx_v_ldu, size_t __pyx_v_VT, int __pyx_v_ldvt, size_t __pyx_v_Work, int __pyx_v_lwork, size_t __pyx_v_rwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgesvd", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvd(__pyx_v_handle, __pyx_v_jobu, __pyx_v_jobvt, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_VT, __pyx_v_ldvt, __pyx_v_Work, __pyx_v_lwork, __pyx_v_rwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2692, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgesvd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2703
 *     check_status(status)
 * 
 * cpdef zgesvd(intptr_t handle, char jobu, char jobvt, int m, int n, size_t A,             # <<<<<<<<<<<<<<
 *              int lda, size_t S, size_t U, int ldu, size_t VT, int ldvt,
 *              size_t Work, int lwork, size_t rwork, size_t devInfo):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_297zgesvd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvd(intptr_t __pyx_v_handle, char __pyx_v_jobu, char __pyx_v_jobvt, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_S, size_t __pyx_v_U, int __pyx_v_ldu, size_t __pyx_v_VT, int __pyx_v_ldvt, size_t __pyx_v_Work, int __pyx_v_lwork, size_t __pyx_v_rwork, size_t __pyx_v_devInfo, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgesvd", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2706
 *              int lda, size_t S, size_t U, int ldu, size_t VT, int ldvt,
 *              size_t Work, int lwork, size_t rwork, size_t devInfo):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZgesvd(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2706, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2707
 *              size_t Work, int lwork, size_t rwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgesvd(
 *             <Handle>handle, jobu, jobvt, m, n, <cuDoubleComplex*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2708
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZgesvd(             # <<<<<<<<<<<<<<
 *             <Handle>handle, jobu, jobvt, m, n, <cuDoubleComplex*>A, lda,
 *             <double*>S, <cuDoubleComplex*>U, ldu, <cuDoubleComplex*>VT, ldvt,
 */
        __pyx_v_status = cusolverDnZgesvd(((cusolverDnHandle_t)__pyx_v_handle), __pyx_v_jobu, __pyx_v_jobvt, __pyx_v_m, __pyx_v_n, ((cuDoubleComplex *)__pyx_v_A), __pyx_v_lda, ((double *)__pyx_v_S), ((cuDoubleComplex *)__pyx_v_U), __pyx_v_ldu, ((cuDoubleComplex *)__pyx_v_VT), __pyx_v_ldvt, ((cuDoubleComplex *)__pyx_v_Work), __pyx_v_lwork, ((double *)__pyx_v_rwork), ((int *)__pyx_v_devInfo));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2707
 *              size_t Work, int lwork, size_t rwork, size_t devInfo):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgesvd(
 *             <Handle>handle, jobu, jobvt, m, n, <cuDoubleComplex*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2712
 *             <double*>S, <cuDoubleComplex*>U, ldu, <cuDoubleComplex*>VT, ldvt,
 *             <cuDoubleComplex*>Work, lwork, <double*>rwork, <int*>devInfo)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * # gesvdj ... Singular value decomposition using Jacobi mathod
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2703
 *     check_status(status)
 * 
 * cpdef zgesvd(intptr_t handle, char jobu, char jobvt, int m, int n, size_t A,             # <<<<<<<<<<<<<<
 *              int lda, size_t S, size_t U, int ldu, size_t VT, int ldvt,
 *              size_t Work, int lwork, size_t rwork, size_t devInfo):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgesvd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_297zgesvd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_296zgesvd[] = "zgesvd(intptr_t handle, char jobu, char jobvt, int m, int n, size_t A, int lda, size_t S, size_t U, int ldu, size_t VT, int ldvt, size_t Work, int lwork, size_t rwork, size_t devInfo)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_297zgesvd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  char __pyx_v_jobu;
  char __pyx_v_jobvt;
  int __pyx_v_m;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_S;
  size_t __pyx_v_U;
  int __pyx_v_ldu;
  size_t __pyx_v_VT;
  int __pyx_v_ldvt;
  size_t __pyx_v_Work;
  int __pyx_v_lwork;
  size_t __pyx_v_rwork;
  size_t __pyx_v_devInfo;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zgesvd (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobu,&__pyx_n_s_jobvt,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_S,&__pyx_n_s_U,&__pyx_n_s_ldu,&__pyx_n_s_VT,&__pyx_n_s_ldvt,&__pyx_n_s_Work,&__pyx_n_s_lwork,&__pyx_n_s_rwork,&__pyx_n_s_devInfo,0};
    PyObject* values[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
        CYTHON_FALLTHROUGH;
        case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
        CYTHON_FALLTHROUGH;
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvd", 1, 16, 16, 1); __PYX_ERR(0, 2703, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobvt)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvd", 1, 16, 16, 2); __PYX_ERR(0, 2703, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvd", 1, 16, 16, 3); __PYX_ERR(0, 2703, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvd", 1, 16, 16, 4); __PYX_ERR(0, 2703, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvd", 1, 16, 16, 5); __PYX_ERR(0, 2703, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvd", 1, 16, 16, 6); __PYX_ERR(0, 2703, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvd", 1, 16, 16, 7); __PYX_ERR(0, 2703, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvd", 1, 16, 16, 8); __PYX_ERR(0, 2703, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvd", 1, 16, 16, 9); __PYX_ERR(0, 2703, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_VT)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvd", 1, 16, 16, 10); __PYX_ERR(0, 2703, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldvt)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvd", 1, 16, 16, 11); __PYX_ERR(0, 2703, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvd", 1, 16, 16, 12); __PYX_ERR(0, 2703, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (likely((values[13] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvd", 1, 16, 16, 13); __PYX_ERR(0, 2703, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 14:
        if (likely((values[14] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvd", 1, 16, 16, 14); __PYX_ERR(0, 2703, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 15:
        if (likely((values[15] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_devInfo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvd", 1, 16, 16, 15); __PYX_ERR(0, 2703, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zgesvd") < 0)) __PYX_ERR(0, 2703, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 16) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
      values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
      values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
      values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2703, __pyx_L3_error)
    __pyx_v_jobu = __Pyx_PyInt_As_char(values[1]); if (unlikely((__pyx_v_jobu == (char)-1) && PyErr_Occurred())) __PYX_ERR(0, 2703, __pyx_L3_error)
    __pyx_v_jobvt = __Pyx_PyInt_As_char(values[2]); if (unlikely((__pyx_v_jobvt == (char)-1) && PyErr_Occurred())) __PYX_ERR(0, 2703, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2703, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2703, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2703, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2704, __pyx_L3_error)
    __pyx_v_S = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_S == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2704, __pyx_L3_error)
    __pyx_v_U = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_U == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2704, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2704, __pyx_L3_error)
    __pyx_v_VT = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_VT == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2704, __pyx_L3_error)
    __pyx_v_ldvt = __Pyx_PyInt_As_int(values[11]); if (unlikely((__pyx_v_ldvt == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2704, __pyx_L3_error)
    __pyx_v_Work = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_Work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2705, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[13]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2705, __pyx_L3_error)
    __pyx_v_rwork = __Pyx_PyInt_As_size_t(values[14]); if (unlikely((__pyx_v_rwork == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2705, __pyx_L3_error)
    __pyx_v_devInfo = __Pyx_PyInt_As_size_t(values[15]); if (unlikely((__pyx_v_devInfo == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2705, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zgesvd", 1, 16, 16, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2703, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgesvd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_296zgesvd(__pyx_self, __pyx_v_handle, __pyx_v_jobu, __pyx_v_jobvt, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_VT, __pyx_v_ldvt, __pyx_v_Work, __pyx_v_lwork, __pyx_v_rwork, __pyx_v_devInfo);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_296zgesvd(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, char __pyx_v_jobu, char __pyx_v_jobvt, int __pyx_v_m, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_S, size_t __pyx_v_U, int __pyx_v_ldu, size_t __pyx_v_VT, int __pyx_v_ldvt, size_t __pyx_v_Work, int __pyx_v_lwork, size_t __pyx_v_rwork, size_t __pyx_v_devInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgesvd", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvd(__pyx_v_handle, __pyx_v_jobu, __pyx_v_jobvt, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_VT, __pyx_v_ldvt, __pyx_v_Work, __pyx_v_lwork, __pyx_v_rwork, __pyx_v_devInfo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2703, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgesvd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2715
 * 
 * # gesvdj ... Singular value decomposition using Jacobi mathod
 * cpdef intptr_t createGesvdjInfo() except? 0:             # <<<<<<<<<<<<<<
 *     cdef GesvdjInfo info
 *     status = cusolverDnCreateGesvdjInfo(&info)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_299createGesvdjInfo(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static intptr_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_createGesvdjInfo(CYTHON_UNUSED int __pyx_skip_dispatch) {
  gesvdjInfo_t __pyx_v_info;
  int __pyx_v_status;
  intptr_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("createGesvdjInfo", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2717
 * cpdef intptr_t createGesvdjInfo() except? 0:
 *     cdef GesvdjInfo info
 *     status = cusolverDnCreateGesvdjInfo(&info)             # <<<<<<<<<<<<<<
 *     check_status(status)
 *     return <intptr_t>info
 */
  __pyx_v_status = cusolverDnCreateGesvdjInfo((&__pyx_v_info));

  /* "cupy_backends/cuda/libs/cusolver.pyx":2718
 *     cdef GesvdjInfo info
 *     status = cusolverDnCreateGesvdjInfo(&info)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return <intptr_t>info
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2718, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2719
 *     status = cusolverDnCreateGesvdjInfo(&info)
 *     check_status(status)
 *     return <intptr_t>info             # <<<<<<<<<<<<<<
 * 
 * cpdef destroyGesvdjInfo(intptr_t info):
 */
  __pyx_r = ((intptr_t)__pyx_v_info);
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2715
 * 
 * # gesvdj ... Singular value decomposition using Jacobi mathod
 * cpdef intptr_t createGesvdjInfo() except? 0:             # <<<<<<<<<<<<<<
 *     cdef GesvdjInfo info
 *     status = cusolverDnCreateGesvdjInfo(&info)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.createGesvdjInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_299createGesvdjInfo(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_298createGesvdjInfo[] = "createGesvdjInfo() -> intptr_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_299createGesvdjInfo(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("createGesvdjInfo (wrapper)", 0);
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_298createGesvdjInfo(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_298createGesvdjInfo(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  intptr_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("createGesvdjInfo", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_createGesvdjInfo(0); if (unlikely(__pyx_t_1 == ((intptr_t)0) && PyErr_Occurred())) __PYX_ERR(0, 2715, __pyx_L1_error)
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2715, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.createGesvdjInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2721
 *     return <intptr_t>info
 * 
 * cpdef destroyGesvdjInfo(intptr_t info):             # <<<<<<<<<<<<<<
 *     status = cusolverDnDestroyGesvdjInfo(<GesvdjInfo>info)
 *     check_status(status)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_301destroyGesvdjInfo(PyObject *__pyx_self, PyObject *__pyx_arg_info); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_destroyGesvdjInfo(intptr_t __pyx_v_info, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("destroyGesvdjInfo", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2722
 * 
 * cpdef destroyGesvdjInfo(intptr_t info):
 *     status = cusolverDnDestroyGesvdjInfo(<GesvdjInfo>info)             # <<<<<<<<<<<<<<
 *     check_status(status)
 * 
 */
  __pyx_v_status = cusolverDnDestroyGesvdjInfo(((gesvdjInfo_t)__pyx_v_info));

  /* "cupy_backends/cuda/libs/cusolver.pyx":2723
 * cpdef destroyGesvdjInfo(intptr_t info):
 *     status = cusolverDnDestroyGesvdjInfo(<GesvdjInfo>info)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef xgesvdjSetTolerance(intptr_t info, double tolerance):
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2723, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2721
 *     return <intptr_t>info
 * 
 * cpdef destroyGesvdjInfo(intptr_t info):             # <<<<<<<<<<<<<<
 *     status = cusolverDnDestroyGesvdjInfo(<GesvdjInfo>info)
 *     check_status(status)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.destroyGesvdjInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_301destroyGesvdjInfo(PyObject *__pyx_self, PyObject *__pyx_arg_info); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_300destroyGesvdjInfo[] = "destroyGesvdjInfo(intptr_t info)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_301destroyGesvdjInfo(PyObject *__pyx_self, PyObject *__pyx_arg_info) {
  intptr_t __pyx_v_info;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("destroyGesvdjInfo (wrapper)", 0);
  assert(__pyx_arg_info); {
    __pyx_v_info = PyInt_AsSsize_t(__pyx_arg_info); if (unlikely((__pyx_v_info == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2721, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.destroyGesvdjInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_300destroyGesvdjInfo(__pyx_self, ((intptr_t)__pyx_v_info));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_300destroyGesvdjInfo(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_info) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("destroyGesvdjInfo", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_destroyGesvdjInfo(__pyx_v_info, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2721, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.destroyGesvdjInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2725
 *     check_status(status)
 * 
 * cpdef xgesvdjSetTolerance(intptr_t info, double tolerance):             # <<<<<<<<<<<<<<
 *     status = cusolverDnXgesvdjSetTolerance(<GesvdjInfo>info, tolerance)
 *     check_status(status)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_303xgesvdjSetTolerance(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xgesvdjSetTolerance(intptr_t __pyx_v_info, double __pyx_v_tolerance, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xgesvdjSetTolerance", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2726
 * 
 * cpdef xgesvdjSetTolerance(intptr_t info, double tolerance):
 *     status = cusolverDnXgesvdjSetTolerance(<GesvdjInfo>info, tolerance)             # <<<<<<<<<<<<<<
 *     check_status(status)
 * 
 */
  __pyx_v_status = cusolverDnXgesvdjSetTolerance(((gesvdjInfo_t)__pyx_v_info), __pyx_v_tolerance);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2727
 * cpdef xgesvdjSetTolerance(intptr_t info, double tolerance):
 *     status = cusolverDnXgesvdjSetTolerance(<GesvdjInfo>info, tolerance)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef xgesvdjSetMaxSweeps(intptr_t info, int max_sweeps):
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2727, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2725
 *     check_status(status)
 * 
 * cpdef xgesvdjSetTolerance(intptr_t info, double tolerance):             # <<<<<<<<<<<<<<
 *     status = cusolverDnXgesvdjSetTolerance(<GesvdjInfo>info, tolerance)
 *     check_status(status)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.xgesvdjSetTolerance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_303xgesvdjSetTolerance(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_302xgesvdjSetTolerance[] = "xgesvdjSetTolerance(intptr_t info, double tolerance)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_303xgesvdjSetTolerance(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_info;
  double __pyx_v_tolerance;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xgesvdjSetTolerance (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_info,&__pyx_n_s_tolerance,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tolerance)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("xgesvdjSetTolerance", 1, 2, 2, 1); __PYX_ERR(0, 2725, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "xgesvdjSetTolerance") < 0)) __PYX_ERR(0, 2725, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_info = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_info == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2725, __pyx_L3_error)
    __pyx_v_tolerance = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_tolerance == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2725, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xgesvdjSetTolerance", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2725, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.xgesvdjSetTolerance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_302xgesvdjSetTolerance(__pyx_self, __pyx_v_info, __pyx_v_tolerance);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_302xgesvdjSetTolerance(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_info, double __pyx_v_tolerance) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xgesvdjSetTolerance", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xgesvdjSetTolerance(__pyx_v_info, __pyx_v_tolerance, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2725, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.xgesvdjSetTolerance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2729
 *     check_status(status)
 * 
 * cpdef xgesvdjSetMaxSweeps(intptr_t info, int max_sweeps):             # <<<<<<<<<<<<<<
 *     status = cusolverDnXgesvdjSetMaxSweeps(<GesvdjInfo>info, max_sweeps)
 *     check_status(status)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_305xgesvdjSetMaxSweeps(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xgesvdjSetMaxSweeps(intptr_t __pyx_v_info, int __pyx_v_max_sweeps, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xgesvdjSetMaxSweeps", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2730
 * 
 * cpdef xgesvdjSetMaxSweeps(intptr_t info, int max_sweeps):
 *     status = cusolverDnXgesvdjSetMaxSweeps(<GesvdjInfo>info, max_sweeps)             # <<<<<<<<<<<<<<
 *     check_status(status)
 * 
 */
  __pyx_v_status = cusolverDnXgesvdjSetMaxSweeps(((gesvdjInfo_t)__pyx_v_info), __pyx_v_max_sweeps);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2731
 * cpdef xgesvdjSetMaxSweeps(intptr_t info, int max_sweeps):
 *     status = cusolverDnXgesvdjSetMaxSweeps(<GesvdjInfo>info, max_sweeps)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef xgesvdjSetSortEig(intptr_t info, int sort_svd):
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2731, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2729
 *     check_status(status)
 * 
 * cpdef xgesvdjSetMaxSweeps(intptr_t info, int max_sweeps):             # <<<<<<<<<<<<<<
 *     status = cusolverDnXgesvdjSetMaxSweeps(<GesvdjInfo>info, max_sweeps)
 *     check_status(status)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.xgesvdjSetMaxSweeps", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_305xgesvdjSetMaxSweeps(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_304xgesvdjSetMaxSweeps[] = "xgesvdjSetMaxSweeps(intptr_t info, int max_sweeps)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_305xgesvdjSetMaxSweeps(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_info;
  int __pyx_v_max_sweeps;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xgesvdjSetMaxSweeps (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_info,&__pyx_n_s_max_sweeps,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_sweeps)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("xgesvdjSetMaxSweeps", 1, 2, 2, 1); __PYX_ERR(0, 2729, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "xgesvdjSetMaxSweeps") < 0)) __PYX_ERR(0, 2729, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_info = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_info == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2729, __pyx_L3_error)
    __pyx_v_max_sweeps = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_max_sweeps == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2729, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xgesvdjSetMaxSweeps", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2729, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.xgesvdjSetMaxSweeps", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_304xgesvdjSetMaxSweeps(__pyx_self, __pyx_v_info, __pyx_v_max_sweeps);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_304xgesvdjSetMaxSweeps(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_info, int __pyx_v_max_sweeps) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xgesvdjSetMaxSweeps", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xgesvdjSetMaxSweeps(__pyx_v_info, __pyx_v_max_sweeps, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2729, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.xgesvdjSetMaxSweeps", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2733
 *     check_status(status)
 * 
 * cpdef xgesvdjSetSortEig(intptr_t info, int sort_svd):             # <<<<<<<<<<<<<<
 *     status = cusolverDnXgesvdjSetSortEig(<GesvdjInfo>info, sort_svd)
 *     check_status(status)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_307xgesvdjSetSortEig(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xgesvdjSetSortEig(intptr_t __pyx_v_info, int __pyx_v_sort_svd, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xgesvdjSetSortEig", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2734
 * 
 * cpdef xgesvdjSetSortEig(intptr_t info, int sort_svd):
 *     status = cusolverDnXgesvdjSetSortEig(<GesvdjInfo>info, sort_svd)             # <<<<<<<<<<<<<<
 *     check_status(status)
 * 
 */
  __pyx_v_status = cusolverDnXgesvdjSetSortEig(((gesvdjInfo_t)__pyx_v_info), __pyx_v_sort_svd);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2735
 * cpdef xgesvdjSetSortEig(intptr_t info, int sort_svd):
 *     status = cusolverDnXgesvdjSetSortEig(<GesvdjInfo>info, sort_svd)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef double xgesvdjGetResidual(intptr_t handle, intptr_t info):
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2735, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2733
 *     check_status(status)
 * 
 * cpdef xgesvdjSetSortEig(intptr_t info, int sort_svd):             # <<<<<<<<<<<<<<
 *     status = cusolverDnXgesvdjSetSortEig(<GesvdjInfo>info, sort_svd)
 *     check_status(status)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.xgesvdjSetSortEig", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_307xgesvdjSetSortEig(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_306xgesvdjSetSortEig[] = "xgesvdjSetSortEig(intptr_t info, int sort_svd)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_307xgesvdjSetSortEig(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_info;
  int __pyx_v_sort_svd;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xgesvdjSetSortEig (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_info,&__pyx_n_s_sort_svd,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sort_svd)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("xgesvdjSetSortEig", 1, 2, 2, 1); __PYX_ERR(0, 2733, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "xgesvdjSetSortEig") < 0)) __PYX_ERR(0, 2733, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_info = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_info == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2733, __pyx_L3_error)
    __pyx_v_sort_svd = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_sort_svd == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2733, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xgesvdjSetSortEig", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2733, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.xgesvdjSetSortEig", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_306xgesvdjSetSortEig(__pyx_self, __pyx_v_info, __pyx_v_sort_svd);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_306xgesvdjSetSortEig(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_info, int __pyx_v_sort_svd) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xgesvdjSetSortEig", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xgesvdjSetSortEig(__pyx_v_info, __pyx_v_sort_svd, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2733, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.xgesvdjSetSortEig", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2737
 *     check_status(status)
 * 
 * cpdef double xgesvdjGetResidual(intptr_t handle, intptr_t info):             # <<<<<<<<<<<<<<
 *     cdef double residual
 *     status = cusolverDnXgesvdjGetResidual(<Handle>handle, <GesvdjInfo>info,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_309xgesvdjGetResidual(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static double __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xgesvdjGetResidual(intptr_t __pyx_v_handle, intptr_t __pyx_v_info, CYTHON_UNUSED int __pyx_skip_dispatch) {
  double __pyx_v_residual;
  int __pyx_v_status;
  double __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xgesvdjGetResidual", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2739
 * cpdef double xgesvdjGetResidual(intptr_t handle, intptr_t info):
 *     cdef double residual
 *     status = cusolverDnXgesvdjGetResidual(<Handle>handle, <GesvdjInfo>info,             # <<<<<<<<<<<<<<
 *                                           &residual)
 *     check_status(status)
 */
  __pyx_v_status = cusolverDnXgesvdjGetResidual(((cusolverDnHandle_t)__pyx_v_handle), ((gesvdjInfo_t)__pyx_v_info), (&__pyx_v_residual));

  /* "cupy_backends/cuda/libs/cusolver.pyx":2741
 *     status = cusolverDnXgesvdjGetResidual(<Handle>handle, <GesvdjInfo>info,
 *                                           &residual)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return residual
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2742
 *                                           &residual)
 *     check_status(status)
 *     return residual             # <<<<<<<<<<<<<<
 * 
 * cpdef int xgesvdjGetSweeps(intptr_t handle, intptr_t info):
 */
  __pyx_r = __pyx_v_residual;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2737
 *     check_status(status)
 * 
 * cpdef double xgesvdjGetResidual(intptr_t handle, intptr_t info):             # <<<<<<<<<<<<<<
 *     cdef double residual
 *     status = cusolverDnXgesvdjGetResidual(<Handle>handle, <GesvdjInfo>info,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.xgesvdjGetResidual", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_309xgesvdjGetResidual(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_308xgesvdjGetResidual[] = "xgesvdjGetResidual(intptr_t handle, intptr_t info) -> double";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_309xgesvdjGetResidual(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  intptr_t __pyx_v_info;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xgesvdjGetResidual (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_info,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("xgesvdjGetResidual", 1, 2, 2, 1); __PYX_ERR(0, 2737, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "xgesvdjGetResidual") < 0)) __PYX_ERR(0, 2737, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2737, __pyx_L3_error)
    __pyx_v_info = PyInt_AsSsize_t(values[1]); if (unlikely((__pyx_v_info == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2737, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xgesvdjGetResidual", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2737, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.xgesvdjGetResidual", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_308xgesvdjGetResidual(__pyx_self, __pyx_v_handle, __pyx_v_info);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_308xgesvdjGetResidual(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, intptr_t __pyx_v_info) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xgesvdjGetResidual", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xgesvdjGetResidual(__pyx_v_handle, __pyx_v_info, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2737, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.xgesvdjGetResidual", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2744
 *     return residual
 * 
 * cpdef int xgesvdjGetSweeps(intptr_t handle, intptr_t info):             # <<<<<<<<<<<<<<
 *     cdef int executed_sweeps
 *     status = cusolverDnXgesvdjGetSweeps(<Handle>handle, <GesvdjInfo>info,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_311xgesvdjGetSweeps(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xgesvdjGetSweeps(intptr_t __pyx_v_handle, intptr_t __pyx_v_info, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_executed_sweeps;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xgesvdjGetSweeps", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2746
 * cpdef int xgesvdjGetSweeps(intptr_t handle, intptr_t info):
 *     cdef int executed_sweeps
 *     status = cusolverDnXgesvdjGetSweeps(<Handle>handle, <GesvdjInfo>info,             # <<<<<<<<<<<<<<
 *                                         &executed_sweeps)
 *     check_status(status)
 */
  __pyx_v_status = cusolverDnXgesvdjGetSweeps(((cusolverDnHandle_t)__pyx_v_handle), ((gesvdjInfo_t)__pyx_v_info), (&__pyx_v_executed_sweeps));

  /* "cupy_backends/cuda/libs/cusolver.pyx":2748
 *     status = cusolverDnXgesvdjGetSweeps(<Handle>handle, <GesvdjInfo>info,
 *                                         &executed_sweeps)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return executed_sweeps
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2748, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2749
 *                                         &executed_sweeps)
 *     check_status(status)
 *     return executed_sweeps             # <<<<<<<<<<<<<<
 * 
 * cpdef int sgesvdj_bufferSize(intptr_t handle, int jobz, int econ, int m, int n,
 */
  __pyx_r = __pyx_v_executed_sweeps;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2744
 *     return residual
 * 
 * cpdef int xgesvdjGetSweeps(intptr_t handle, intptr_t info):             # <<<<<<<<<<<<<<
 *     cdef int executed_sweeps
 *     status = cusolverDnXgesvdjGetSweeps(<Handle>handle, <GesvdjInfo>info,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.xgesvdjGetSweeps", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_311xgesvdjGetSweeps(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_310xgesvdjGetSweeps[] = "xgesvdjGetSweeps(intptr_t handle, intptr_t info) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_311xgesvdjGetSweeps(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  intptr_t __pyx_v_info;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xgesvdjGetSweeps (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_info,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("xgesvdjGetSweeps", 1, 2, 2, 1); __PYX_ERR(0, 2744, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "xgesvdjGetSweeps") < 0)) __PYX_ERR(0, 2744, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2744, __pyx_L3_error)
    __pyx_v_info = PyInt_AsSsize_t(values[1]); if (unlikely((__pyx_v_info == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2744, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xgesvdjGetSweeps", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2744, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.xgesvdjGetSweeps", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_310xgesvdjGetSweeps(__pyx_self, __pyx_v_handle, __pyx_v_info);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_310xgesvdjGetSweeps(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, intptr_t __pyx_v_info) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xgesvdjGetSweeps", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xgesvdjGetSweeps(__pyx_v_handle, __pyx_v_info, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2744, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.xgesvdjGetSweeps", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2751
 *     return executed_sweeps
 * 
 * cpdef int sgesvdj_bufferSize(intptr_t handle, int jobz, int econ, int m, int n,             # <<<<<<<<<<<<<<
 *                              intptr_t A, int lda, intptr_t S, intptr_t U,
 *                              int ldu, intptr_t V, int ldv, intptr_t params):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_313sgesvdj_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvdj_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_econ, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_params, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgesvdj_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2755
 *                              int ldu, intptr_t V, int ldv, intptr_t params):
 *     cdef int lwork, status
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSgesvdj_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2755, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2756
 *     cdef int lwork, status
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgesvdj_bufferSize(
 *             <Handle>handle, <EigMode>jobz, econ, m, n, <const float*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2757
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSgesvdj_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, econ, m, n, <const float*>A, lda,
 *             <const float*>S, <const float*>U, ldu, <const float*>V, ldv,
 */
        __pyx_v_status = cusolverDnSgesvdj_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), __pyx_v_econ, __pyx_v_m, __pyx_v_n, ((float const *)__pyx_v_A), __pyx_v_lda, ((float const *)__pyx_v_S), ((float const *)__pyx_v_U), __pyx_v_ldu, ((float const *)__pyx_v_V), __pyx_v_ldv, (&__pyx_v_lwork), ((gesvdjInfo_t)__pyx_v_params));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2756
 *     cdef int lwork, status
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgesvdj_bufferSize(
 *             <Handle>handle, <EigMode>jobz, econ, m, n, <const float*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2761
 *             <const float*>S, <const float*>U, ldu, <const float*>V, ldv,
 *             &lwork, <GesvdjInfo>params)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2761, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2762
 *             &lwork, <GesvdjInfo>params)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int dgesvdj_bufferSize(intptr_t handle, int jobz, int econ, int m, int n,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2751
 *     return executed_sweeps
 * 
 * cpdef int sgesvdj_bufferSize(intptr_t handle, int jobz, int econ, int m, int n,             # <<<<<<<<<<<<<<
 *                              intptr_t A, int lda, intptr_t S, intptr_t U,
 *                              int ldu, intptr_t V, int ldv, intptr_t params):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.sgesvdj_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_313sgesvdj_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_312sgesvdj_bufferSize[] = "sgesvdj_bufferSize(intptr_t handle, int jobz, int econ, int m, int n, intptr_t A, int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv, intptr_t params) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_313sgesvdj_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_econ;
  int __pyx_v_m;
  int __pyx_v_n;
  intptr_t __pyx_v_A;
  int __pyx_v_lda;
  intptr_t __pyx_v_S;
  intptr_t __pyx_v_U;
  int __pyx_v_ldu;
  intptr_t __pyx_v_V;
  int __pyx_v_ldv;
  intptr_t __pyx_v_params;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sgesvdj_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_econ,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_S,&__pyx_n_s_U,&__pyx_n_s_ldu,&__pyx_n_s_V,&__pyx_n_s_ldv,&__pyx_n_s_params,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdj_bufferSize", 1, 13, 13, 1); __PYX_ERR(0, 2751, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_econ)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdj_bufferSize", 1, 13, 13, 2); __PYX_ERR(0, 2751, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdj_bufferSize", 1, 13, 13, 3); __PYX_ERR(0, 2751, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdj_bufferSize", 1, 13, 13, 4); __PYX_ERR(0, 2751, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdj_bufferSize", 1, 13, 13, 5); __PYX_ERR(0, 2751, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdj_bufferSize", 1, 13, 13, 6); __PYX_ERR(0, 2751, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdj_bufferSize", 1, 13, 13, 7); __PYX_ERR(0, 2751, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdj_bufferSize", 1, 13, 13, 8); __PYX_ERR(0, 2751, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdj_bufferSize", 1, 13, 13, 9); __PYX_ERR(0, 2751, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_V)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdj_bufferSize", 1, 13, 13, 10); __PYX_ERR(0, 2751, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdj_bufferSize", 1, 13, 13, 11); __PYX_ERR(0, 2751, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdj_bufferSize", 1, 13, 13, 12); __PYX_ERR(0, 2751, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sgesvdj_bufferSize") < 0)) __PYX_ERR(0, 2751, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2751, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2751, __pyx_L3_error)
    __pyx_v_econ = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_econ == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2751, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2751, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2751, __pyx_L3_error)
    __pyx_v_A = PyInt_AsSsize_t(values[5]); if (unlikely((__pyx_v_A == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2752, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2752, __pyx_L3_error)
    __pyx_v_S = PyInt_AsSsize_t(values[7]); if (unlikely((__pyx_v_S == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2752, __pyx_L3_error)
    __pyx_v_U = PyInt_AsSsize_t(values[8]); if (unlikely((__pyx_v_U == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2752, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2753, __pyx_L3_error)
    __pyx_v_V = PyInt_AsSsize_t(values[10]); if (unlikely((__pyx_v_V == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2753, __pyx_L3_error)
    __pyx_v_ldv = __Pyx_PyInt_As_int(values[11]); if (unlikely((__pyx_v_ldv == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2753, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[12]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2753, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sgesvdj_bufferSize", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2751, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgesvdj_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_312sgesvdj_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_econ, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_params);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_312sgesvdj_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_econ, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_params) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgesvdj_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvdj_bufferSize(__pyx_v_handle, __pyx_v_jobz, __pyx_v_econ, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_params, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2751, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgesvdj_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2764
 *     return lwork
 * 
 * cpdef int dgesvdj_bufferSize(intptr_t handle, int jobz, int econ, int m, int n,             # <<<<<<<<<<<<<<
 *                              intptr_t A, int lda, intptr_t S, intptr_t U,
 *                              int ldu, intptr_t V, int ldv, intptr_t params):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_315dgesvdj_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvdj_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_econ, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_params, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgesvdj_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2768
 *                              int ldu, intptr_t V, int ldv, intptr_t params):
 *     cdef int lwork, status
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDgesvdj_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2769
 *     cdef int lwork, status
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgesvdj_bufferSize(
 *             <Handle>handle, <EigMode>jobz, econ, m, n, <const double*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2770
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDgesvdj_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, econ, m, n, <const double*>A, lda,
 *             <const double*>S, <const double*>U, ldu, <const double*>V, ldv,
 */
        __pyx_v_status = cusolverDnDgesvdj_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), __pyx_v_econ, __pyx_v_m, __pyx_v_n, ((double const *)__pyx_v_A), __pyx_v_lda, ((double const *)__pyx_v_S), ((double const *)__pyx_v_U), __pyx_v_ldu, ((double const *)__pyx_v_V), __pyx_v_ldv, (&__pyx_v_lwork), ((gesvdjInfo_t)__pyx_v_params));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2769
 *     cdef int lwork, status
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgesvdj_bufferSize(
 *             <Handle>handle, <EigMode>jobz, econ, m, n, <const double*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2774
 *             <const double*>S, <const double*>U, ldu, <const double*>V, ldv,
 *             &lwork, <GesvdjInfo>params)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2774, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2775
 *             &lwork, <GesvdjInfo>params)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int cgesvdj_bufferSize(intptr_t handle, int jobz, int econ, int m, int n,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2764
 *     return lwork
 * 
 * cpdef int dgesvdj_bufferSize(intptr_t handle, int jobz, int econ, int m, int n,             # <<<<<<<<<<<<<<
 *                              intptr_t A, int lda, intptr_t S, intptr_t U,
 *                              int ldu, intptr_t V, int ldv, intptr_t params):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.dgesvdj_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_315dgesvdj_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_314dgesvdj_bufferSize[] = "dgesvdj_bufferSize(intptr_t handle, int jobz, int econ, int m, int n, intptr_t A, int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv, intptr_t params) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_315dgesvdj_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_econ;
  int __pyx_v_m;
  int __pyx_v_n;
  intptr_t __pyx_v_A;
  int __pyx_v_lda;
  intptr_t __pyx_v_S;
  intptr_t __pyx_v_U;
  int __pyx_v_ldu;
  intptr_t __pyx_v_V;
  int __pyx_v_ldv;
  intptr_t __pyx_v_params;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dgesvdj_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_econ,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_S,&__pyx_n_s_U,&__pyx_n_s_ldu,&__pyx_n_s_V,&__pyx_n_s_ldv,&__pyx_n_s_params,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdj_bufferSize", 1, 13, 13, 1); __PYX_ERR(0, 2764, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_econ)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdj_bufferSize", 1, 13, 13, 2); __PYX_ERR(0, 2764, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdj_bufferSize", 1, 13, 13, 3); __PYX_ERR(0, 2764, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdj_bufferSize", 1, 13, 13, 4); __PYX_ERR(0, 2764, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdj_bufferSize", 1, 13, 13, 5); __PYX_ERR(0, 2764, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdj_bufferSize", 1, 13, 13, 6); __PYX_ERR(0, 2764, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdj_bufferSize", 1, 13, 13, 7); __PYX_ERR(0, 2764, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdj_bufferSize", 1, 13, 13, 8); __PYX_ERR(0, 2764, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdj_bufferSize", 1, 13, 13, 9); __PYX_ERR(0, 2764, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_V)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdj_bufferSize", 1, 13, 13, 10); __PYX_ERR(0, 2764, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdj_bufferSize", 1, 13, 13, 11); __PYX_ERR(0, 2764, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdj_bufferSize", 1, 13, 13, 12); __PYX_ERR(0, 2764, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dgesvdj_bufferSize") < 0)) __PYX_ERR(0, 2764, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2764, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2764, __pyx_L3_error)
    __pyx_v_econ = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_econ == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2764, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2764, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2764, __pyx_L3_error)
    __pyx_v_A = PyInt_AsSsize_t(values[5]); if (unlikely((__pyx_v_A == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2765, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2765, __pyx_L3_error)
    __pyx_v_S = PyInt_AsSsize_t(values[7]); if (unlikely((__pyx_v_S == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2765, __pyx_L3_error)
    __pyx_v_U = PyInt_AsSsize_t(values[8]); if (unlikely((__pyx_v_U == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2765, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2766, __pyx_L3_error)
    __pyx_v_V = PyInt_AsSsize_t(values[10]); if (unlikely((__pyx_v_V == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2766, __pyx_L3_error)
    __pyx_v_ldv = __Pyx_PyInt_As_int(values[11]); if (unlikely((__pyx_v_ldv == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2766, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[12]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2766, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dgesvdj_bufferSize", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2764, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgesvdj_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_314dgesvdj_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_econ, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_params);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_314dgesvdj_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_econ, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_params) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgesvdj_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvdj_bufferSize(__pyx_v_handle, __pyx_v_jobz, __pyx_v_econ, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_params, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2764, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgesvdj_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2777
 *     return lwork
 * 
 * cpdef int cgesvdj_bufferSize(intptr_t handle, int jobz, int econ, int m, int n,             # <<<<<<<<<<<<<<
 *                              intptr_t A, int lda, intptr_t S, intptr_t U,
 *                              int ldu, intptr_t V, int ldv, intptr_t params):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_317cgesvdj_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvdj_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_econ, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_params, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgesvdj_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2781
 *                              int ldu, intptr_t V, int ldv, intptr_t params):
 *     cdef int lwork, status
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCgesvdj_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2781, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2782
 *     cdef int lwork, status
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgesvdj_bufferSize(
 *             <Handle>handle, <EigMode>jobz, econ, m, n, <const cuComplex*>A,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2783
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCgesvdj_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, econ, m, n, <const cuComplex*>A,
 *             lda, <const float*>S, <const cuComplex*>U, ldu,
 */
        __pyx_v_status = cusolverDnCgesvdj_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), __pyx_v_econ, __pyx_v_m, __pyx_v_n, ((cuComplex const *)__pyx_v_A), __pyx_v_lda, ((float const *)__pyx_v_S), ((cuComplex const *)__pyx_v_U), __pyx_v_ldu, ((cuComplex const *)__pyx_v_V), __pyx_v_ldv, (&__pyx_v_lwork), ((gesvdjInfo_t)__pyx_v_params));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2782
 *     cdef int lwork, status
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgesvdj_bufferSize(
 *             <Handle>handle, <EigMode>jobz, econ, m, n, <const cuComplex*>A,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2787
 *             lda, <const float*>S, <const cuComplex*>U, ldu,
 *             <const cuComplex*>V, ldv, &lwork, <GesvdjInfo>params)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2788
 *             <const cuComplex*>V, ldv, &lwork, <GesvdjInfo>params)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int zgesvdj_bufferSize(intptr_t handle, int jobz, int econ, int m, int n,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2777
 *     return lwork
 * 
 * cpdef int cgesvdj_bufferSize(intptr_t handle, int jobz, int econ, int m, int n,             # <<<<<<<<<<<<<<
 *                              intptr_t A, int lda, intptr_t S, intptr_t U,
 *                              int ldu, intptr_t V, int ldv, intptr_t params):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.cgesvdj_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_317cgesvdj_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_316cgesvdj_bufferSize[] = "cgesvdj_bufferSize(intptr_t handle, int jobz, int econ, int m, int n, intptr_t A, int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv, intptr_t params) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_317cgesvdj_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_econ;
  int __pyx_v_m;
  int __pyx_v_n;
  intptr_t __pyx_v_A;
  int __pyx_v_lda;
  intptr_t __pyx_v_S;
  intptr_t __pyx_v_U;
  int __pyx_v_ldu;
  intptr_t __pyx_v_V;
  int __pyx_v_ldv;
  intptr_t __pyx_v_params;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cgesvdj_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_econ,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_S,&__pyx_n_s_U,&__pyx_n_s_ldu,&__pyx_n_s_V,&__pyx_n_s_ldv,&__pyx_n_s_params,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdj_bufferSize", 1, 13, 13, 1); __PYX_ERR(0, 2777, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_econ)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdj_bufferSize", 1, 13, 13, 2); __PYX_ERR(0, 2777, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdj_bufferSize", 1, 13, 13, 3); __PYX_ERR(0, 2777, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdj_bufferSize", 1, 13, 13, 4); __PYX_ERR(0, 2777, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdj_bufferSize", 1, 13, 13, 5); __PYX_ERR(0, 2777, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdj_bufferSize", 1, 13, 13, 6); __PYX_ERR(0, 2777, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdj_bufferSize", 1, 13, 13, 7); __PYX_ERR(0, 2777, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdj_bufferSize", 1, 13, 13, 8); __PYX_ERR(0, 2777, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdj_bufferSize", 1, 13, 13, 9); __PYX_ERR(0, 2777, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_V)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdj_bufferSize", 1, 13, 13, 10); __PYX_ERR(0, 2777, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdj_bufferSize", 1, 13, 13, 11); __PYX_ERR(0, 2777, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdj_bufferSize", 1, 13, 13, 12); __PYX_ERR(0, 2777, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cgesvdj_bufferSize") < 0)) __PYX_ERR(0, 2777, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2777, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2777, __pyx_L3_error)
    __pyx_v_econ = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_econ == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2777, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2777, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2777, __pyx_L3_error)
    __pyx_v_A = PyInt_AsSsize_t(values[5]); if (unlikely((__pyx_v_A == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2778, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2778, __pyx_L3_error)
    __pyx_v_S = PyInt_AsSsize_t(values[7]); if (unlikely((__pyx_v_S == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2778, __pyx_L3_error)
    __pyx_v_U = PyInt_AsSsize_t(values[8]); if (unlikely((__pyx_v_U == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2778, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2779, __pyx_L3_error)
    __pyx_v_V = PyInt_AsSsize_t(values[10]); if (unlikely((__pyx_v_V == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2779, __pyx_L3_error)
    __pyx_v_ldv = __Pyx_PyInt_As_int(values[11]); if (unlikely((__pyx_v_ldv == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2779, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[12]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2779, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cgesvdj_bufferSize", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2777, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgesvdj_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_316cgesvdj_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_econ, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_params);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_316cgesvdj_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_econ, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_params) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgesvdj_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvdj_bufferSize(__pyx_v_handle, __pyx_v_jobz, __pyx_v_econ, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_params, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2777, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgesvdj_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2790
 *     return lwork
 * 
 * cpdef int zgesvdj_bufferSize(intptr_t handle, int jobz, int econ, int m, int n,             # <<<<<<<<<<<<<<
 *                              intptr_t A, int lda, intptr_t S, intptr_t U,
 *                              int ldu, intptr_t V, int ldv, intptr_t params):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_319zgesvdj_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvdj_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_econ, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_params, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgesvdj_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2794
 *                              int ldu, intptr_t V, int ldv, intptr_t params):
 *     cdef int lwork, status
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZgesvdj_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2794, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2795
 *     cdef int lwork, status
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgesvdj_bufferSize(
 *             <Handle>handle, <EigMode>jobz, econ, m, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2796
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZgesvdj_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, econ, m, n,
 *             <const cuDoubleComplex*>A, lda, <const double*>S,
 */
        __pyx_v_status = cusolverDnZgesvdj_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), __pyx_v_econ, __pyx_v_m, __pyx_v_n, ((cuDoubleComplex const *)__pyx_v_A), __pyx_v_lda, ((double const *)__pyx_v_S), ((cuDoubleComplex const *)__pyx_v_U), __pyx_v_ldu, ((cuDoubleComplex const *)__pyx_v_V), __pyx_v_ldv, (&__pyx_v_lwork), ((gesvdjInfo_t)__pyx_v_params));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2795
 *     cdef int lwork, status
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgesvdj_bufferSize(
 *             <Handle>handle, <EigMode>jobz, econ, m, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2801
 *             <const cuDoubleComplex*>U, ldu, <const cuDoubleComplex*>V,
 *             ldv, &lwork, <GesvdjInfo>params)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2801, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2802
 *             ldv, &lwork, <GesvdjInfo>params)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef sgesvdj(intptr_t handle, int jobz, int econ, int m, int n, intptr_t A,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2790
 *     return lwork
 * 
 * cpdef int zgesvdj_bufferSize(intptr_t handle, int jobz, int econ, int m, int n,             # <<<<<<<<<<<<<<
 *                              intptr_t A, int lda, intptr_t S, intptr_t U,
 *                              int ldu, intptr_t V, int ldv, intptr_t params):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.zgesvdj_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_319zgesvdj_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_318zgesvdj_bufferSize[] = "zgesvdj_bufferSize(intptr_t handle, int jobz, int econ, int m, int n, intptr_t A, int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv, intptr_t params) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_319zgesvdj_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_econ;
  int __pyx_v_m;
  int __pyx_v_n;
  intptr_t __pyx_v_A;
  int __pyx_v_lda;
  intptr_t __pyx_v_S;
  intptr_t __pyx_v_U;
  int __pyx_v_ldu;
  intptr_t __pyx_v_V;
  int __pyx_v_ldv;
  intptr_t __pyx_v_params;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zgesvdj_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_econ,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_S,&__pyx_n_s_U,&__pyx_n_s_ldu,&__pyx_n_s_V,&__pyx_n_s_ldv,&__pyx_n_s_params,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdj_bufferSize", 1, 13, 13, 1); __PYX_ERR(0, 2790, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_econ)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdj_bufferSize", 1, 13, 13, 2); __PYX_ERR(0, 2790, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdj_bufferSize", 1, 13, 13, 3); __PYX_ERR(0, 2790, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdj_bufferSize", 1, 13, 13, 4); __PYX_ERR(0, 2790, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdj_bufferSize", 1, 13, 13, 5); __PYX_ERR(0, 2790, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdj_bufferSize", 1, 13, 13, 6); __PYX_ERR(0, 2790, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdj_bufferSize", 1, 13, 13, 7); __PYX_ERR(0, 2790, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdj_bufferSize", 1, 13, 13, 8); __PYX_ERR(0, 2790, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdj_bufferSize", 1, 13, 13, 9); __PYX_ERR(0, 2790, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_V)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdj_bufferSize", 1, 13, 13, 10); __PYX_ERR(0, 2790, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdj_bufferSize", 1, 13, 13, 11); __PYX_ERR(0, 2790, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdj_bufferSize", 1, 13, 13, 12); __PYX_ERR(0, 2790, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zgesvdj_bufferSize") < 0)) __PYX_ERR(0, 2790, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2790, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2790, __pyx_L3_error)
    __pyx_v_econ = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_econ == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2790, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2790, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2790, __pyx_L3_error)
    __pyx_v_A = PyInt_AsSsize_t(values[5]); if (unlikely((__pyx_v_A == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2791, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2791, __pyx_L3_error)
    __pyx_v_S = PyInt_AsSsize_t(values[7]); if (unlikely((__pyx_v_S == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2791, __pyx_L3_error)
    __pyx_v_U = PyInt_AsSsize_t(values[8]); if (unlikely((__pyx_v_U == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2791, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2792, __pyx_L3_error)
    __pyx_v_V = PyInt_AsSsize_t(values[10]); if (unlikely((__pyx_v_V == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2792, __pyx_L3_error)
    __pyx_v_ldv = __Pyx_PyInt_As_int(values[11]); if (unlikely((__pyx_v_ldv == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2792, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[12]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2792, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zgesvdj_bufferSize", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2790, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgesvdj_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_318zgesvdj_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_econ, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_params);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_318zgesvdj_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_econ, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_params) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgesvdj_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvdj_bufferSize(__pyx_v_handle, __pyx_v_jobz, __pyx_v_econ, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_params, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2790, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgesvdj_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2804
 *     return lwork
 * 
 * cpdef sgesvdj(intptr_t handle, int jobz, int econ, int m, int n, intptr_t A,             # <<<<<<<<<<<<<<
 *               int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 *               intptr_t work, int lwork, intptr_t info, intptr_t params):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_321sgesvdj(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvdj(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_econ, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_work, int __pyx_v_lwork, intptr_t __pyx_v_info, intptr_t __pyx_v_params, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgesvdj", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2807
 *               int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 *               intptr_t work, int lwork, intptr_t info, intptr_t params):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSgesvdj(<Handle>handle, <EigMode>jobz, econ, m, n,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2807, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2808
 *               intptr_t work, int lwork, intptr_t info, intptr_t params):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgesvdj(<Handle>handle, <EigMode>jobz, econ, m, n,
 *                                    <float*>A, lda, <float*>S, <float*>U, ldu,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2809
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSgesvdj(<Handle>handle, <EigMode>jobz, econ, m, n,             # <<<<<<<<<<<<<<
 *                                    <float*>A, lda, <float*>S, <float*>U, ldu,
 *                                    <float*>V, ldv, <float*>work, lwork,
 */
        __pyx_v_status = cusolverDnSgesvdj(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), __pyx_v_econ, __pyx_v_m, __pyx_v_n, ((float *)__pyx_v_A), __pyx_v_lda, ((float *)__pyx_v_S), ((float *)__pyx_v_U), __pyx_v_ldu, ((float *)__pyx_v_V), __pyx_v_ldv, ((float *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_info), ((gesvdjInfo_t)__pyx_v_params));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2808
 *               intptr_t work, int lwork, intptr_t info, intptr_t params):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgesvdj(<Handle>handle, <EigMode>jobz, econ, m, n,
 *                                    <float*>A, lda, <float*>S, <float*>U, ldu,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2813
 *                                    <float*>V, ldv, <float*>work, lwork,
 *                                    <int*>info, <GesvdjInfo>params)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef dgesvdj(intptr_t handle, int jobz, int econ, int m, int n, intptr_t A,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2804
 *     return lwork
 * 
 * cpdef sgesvdj(intptr_t handle, int jobz, int econ, int m, int n, intptr_t A,             # <<<<<<<<<<<<<<
 *               int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 *               intptr_t work, int lwork, intptr_t info, intptr_t params):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgesvdj", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_321sgesvdj(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_320sgesvdj[] = "sgesvdj(intptr_t handle, int jobz, int econ, int m, int n, intptr_t A, int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv, intptr_t work, int lwork, intptr_t info, intptr_t params)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_321sgesvdj(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_econ;
  int __pyx_v_m;
  int __pyx_v_n;
  intptr_t __pyx_v_A;
  int __pyx_v_lda;
  intptr_t __pyx_v_S;
  intptr_t __pyx_v_U;
  int __pyx_v_ldu;
  intptr_t __pyx_v_V;
  int __pyx_v_ldv;
  intptr_t __pyx_v_work;
  int __pyx_v_lwork;
  intptr_t __pyx_v_info;
  intptr_t __pyx_v_params;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sgesvdj (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_econ,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_S,&__pyx_n_s_U,&__pyx_n_s_ldu,&__pyx_n_s_V,&__pyx_n_s_ldv,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_info,&__pyx_n_s_params,0};
    PyObject* values[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
        CYTHON_FALLTHROUGH;
        case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
        CYTHON_FALLTHROUGH;
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdj", 1, 16, 16, 1); __PYX_ERR(0, 2804, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_econ)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdj", 1, 16, 16, 2); __PYX_ERR(0, 2804, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdj", 1, 16, 16, 3); __PYX_ERR(0, 2804, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdj", 1, 16, 16, 4); __PYX_ERR(0, 2804, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdj", 1, 16, 16, 5); __PYX_ERR(0, 2804, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdj", 1, 16, 16, 6); __PYX_ERR(0, 2804, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdj", 1, 16, 16, 7); __PYX_ERR(0, 2804, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdj", 1, 16, 16, 8); __PYX_ERR(0, 2804, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdj", 1, 16, 16, 9); __PYX_ERR(0, 2804, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_V)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdj", 1, 16, 16, 10); __PYX_ERR(0, 2804, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdj", 1, 16, 16, 11); __PYX_ERR(0, 2804, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdj", 1, 16, 16, 12); __PYX_ERR(0, 2804, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (likely((values[13] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdj", 1, 16, 16, 13); __PYX_ERR(0, 2804, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 14:
        if (likely((values[14] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdj", 1, 16, 16, 14); __PYX_ERR(0, 2804, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 15:
        if (likely((values[15] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdj", 1, 16, 16, 15); __PYX_ERR(0, 2804, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sgesvdj") < 0)) __PYX_ERR(0, 2804, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 16) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
      values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
      values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
      values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2804, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2804, __pyx_L3_error)
    __pyx_v_econ = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_econ == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2804, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2804, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2804, __pyx_L3_error)
    __pyx_v_A = PyInt_AsSsize_t(values[5]); if (unlikely((__pyx_v_A == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2804, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2805, __pyx_L3_error)
    __pyx_v_S = PyInt_AsSsize_t(values[7]); if (unlikely((__pyx_v_S == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2805, __pyx_L3_error)
    __pyx_v_U = PyInt_AsSsize_t(values[8]); if (unlikely((__pyx_v_U == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2805, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2805, __pyx_L3_error)
    __pyx_v_V = PyInt_AsSsize_t(values[10]); if (unlikely((__pyx_v_V == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2805, __pyx_L3_error)
    __pyx_v_ldv = __Pyx_PyInt_As_int(values[11]); if (unlikely((__pyx_v_ldv == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2805, __pyx_L3_error)
    __pyx_v_work = PyInt_AsSsize_t(values[12]); if (unlikely((__pyx_v_work == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2806, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[13]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2806, __pyx_L3_error)
    __pyx_v_info = PyInt_AsSsize_t(values[14]); if (unlikely((__pyx_v_info == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2806, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[15]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2806, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sgesvdj", 1, 16, 16, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2804, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgesvdj", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_320sgesvdj(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_econ, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_320sgesvdj(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_econ, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_work, int __pyx_v_lwork, intptr_t __pyx_v_info, intptr_t __pyx_v_params) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgesvdj", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvdj(__pyx_v_handle, __pyx_v_jobz, __pyx_v_econ, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2804, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgesvdj", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2815
 *     check_status(status)
 * 
 * cpdef dgesvdj(intptr_t handle, int jobz, int econ, int m, int n, intptr_t A,             # <<<<<<<<<<<<<<
 *               int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 *               intptr_t work, int lwork, intptr_t info, intptr_t params):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_323dgesvdj(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvdj(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_econ, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_work, int __pyx_v_lwork, intptr_t __pyx_v_info, intptr_t __pyx_v_params, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgesvdj", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2818
 *               int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 *               intptr_t work, int lwork, intptr_t info, intptr_t params):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDgesvdj(<Handle>handle, <EigMode>jobz, econ, m, n,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2818, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2819
 *               intptr_t work, int lwork, intptr_t info, intptr_t params):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgesvdj(<Handle>handle, <EigMode>jobz, econ, m, n,
 *                                    <double*>A, lda, <double*>S, <double*>U,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2820
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDgesvdj(<Handle>handle, <EigMode>jobz, econ, m, n,             # <<<<<<<<<<<<<<
 *                                    <double*>A, lda, <double*>S, <double*>U,
 *                                    ldu, <double*>V, ldv, <double*>work, lwork,
 */
        __pyx_v_status = cusolverDnDgesvdj(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), __pyx_v_econ, __pyx_v_m, __pyx_v_n, ((double *)__pyx_v_A), __pyx_v_lda, ((double *)__pyx_v_S), ((double *)__pyx_v_U), __pyx_v_ldu, ((double *)__pyx_v_V), __pyx_v_ldv, ((double *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_info), ((gesvdjInfo_t)__pyx_v_params));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2819
 *               intptr_t work, int lwork, intptr_t info, intptr_t params):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgesvdj(<Handle>handle, <EigMode>jobz, econ, m, n,
 *                                    <double*>A, lda, <double*>S, <double*>U,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2824
 *                                    ldu, <double*>V, ldv, <double*>work, lwork,
 *                                    <int*>info, <GesvdjInfo>params)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef cgesvdj(intptr_t handle, int jobz, int econ, int m, int n, intptr_t A,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2824, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2815
 *     check_status(status)
 * 
 * cpdef dgesvdj(intptr_t handle, int jobz, int econ, int m, int n, intptr_t A,             # <<<<<<<<<<<<<<
 *               int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 *               intptr_t work, int lwork, intptr_t info, intptr_t params):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgesvdj", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_323dgesvdj(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_322dgesvdj[] = "dgesvdj(intptr_t handle, int jobz, int econ, int m, int n, intptr_t A, int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv, intptr_t work, int lwork, intptr_t info, intptr_t params)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_323dgesvdj(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_econ;
  int __pyx_v_m;
  int __pyx_v_n;
  intptr_t __pyx_v_A;
  int __pyx_v_lda;
  intptr_t __pyx_v_S;
  intptr_t __pyx_v_U;
  int __pyx_v_ldu;
  intptr_t __pyx_v_V;
  int __pyx_v_ldv;
  intptr_t __pyx_v_work;
  int __pyx_v_lwork;
  intptr_t __pyx_v_info;
  intptr_t __pyx_v_params;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dgesvdj (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_econ,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_S,&__pyx_n_s_U,&__pyx_n_s_ldu,&__pyx_n_s_V,&__pyx_n_s_ldv,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_info,&__pyx_n_s_params,0};
    PyObject* values[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
        CYTHON_FALLTHROUGH;
        case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
        CYTHON_FALLTHROUGH;
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdj", 1, 16, 16, 1); __PYX_ERR(0, 2815, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_econ)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdj", 1, 16, 16, 2); __PYX_ERR(0, 2815, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdj", 1, 16, 16, 3); __PYX_ERR(0, 2815, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdj", 1, 16, 16, 4); __PYX_ERR(0, 2815, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdj", 1, 16, 16, 5); __PYX_ERR(0, 2815, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdj", 1, 16, 16, 6); __PYX_ERR(0, 2815, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdj", 1, 16, 16, 7); __PYX_ERR(0, 2815, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdj", 1, 16, 16, 8); __PYX_ERR(0, 2815, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdj", 1, 16, 16, 9); __PYX_ERR(0, 2815, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_V)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdj", 1, 16, 16, 10); __PYX_ERR(0, 2815, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdj", 1, 16, 16, 11); __PYX_ERR(0, 2815, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdj", 1, 16, 16, 12); __PYX_ERR(0, 2815, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (likely((values[13] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdj", 1, 16, 16, 13); __PYX_ERR(0, 2815, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 14:
        if (likely((values[14] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdj", 1, 16, 16, 14); __PYX_ERR(0, 2815, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 15:
        if (likely((values[15] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdj", 1, 16, 16, 15); __PYX_ERR(0, 2815, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dgesvdj") < 0)) __PYX_ERR(0, 2815, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 16) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
      values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
      values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
      values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2815, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2815, __pyx_L3_error)
    __pyx_v_econ = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_econ == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2815, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2815, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2815, __pyx_L3_error)
    __pyx_v_A = PyInt_AsSsize_t(values[5]); if (unlikely((__pyx_v_A == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2815, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2816, __pyx_L3_error)
    __pyx_v_S = PyInt_AsSsize_t(values[7]); if (unlikely((__pyx_v_S == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2816, __pyx_L3_error)
    __pyx_v_U = PyInt_AsSsize_t(values[8]); if (unlikely((__pyx_v_U == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2816, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2816, __pyx_L3_error)
    __pyx_v_V = PyInt_AsSsize_t(values[10]); if (unlikely((__pyx_v_V == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2816, __pyx_L3_error)
    __pyx_v_ldv = __Pyx_PyInt_As_int(values[11]); if (unlikely((__pyx_v_ldv == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2816, __pyx_L3_error)
    __pyx_v_work = PyInt_AsSsize_t(values[12]); if (unlikely((__pyx_v_work == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2817, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[13]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2817, __pyx_L3_error)
    __pyx_v_info = PyInt_AsSsize_t(values[14]); if (unlikely((__pyx_v_info == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2817, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[15]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2817, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dgesvdj", 1, 16, 16, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2815, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgesvdj", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_322dgesvdj(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_econ, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_322dgesvdj(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_econ, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_work, int __pyx_v_lwork, intptr_t __pyx_v_info, intptr_t __pyx_v_params) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgesvdj", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvdj(__pyx_v_handle, __pyx_v_jobz, __pyx_v_econ, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2815, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgesvdj", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2826
 *     check_status(status)
 * 
 * cpdef cgesvdj(intptr_t handle, int jobz, int econ, int m, int n, intptr_t A,             # <<<<<<<<<<<<<<
 *               int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 *               intptr_t work, int lwork, intptr_t info, intptr_t params):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_325cgesvdj(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvdj(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_econ, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_work, int __pyx_v_lwork, intptr_t __pyx_v_info, intptr_t __pyx_v_params, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgesvdj", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2829
 *               int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 *               intptr_t work, int lwork, intptr_t info, intptr_t params):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCgesvdj(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2829, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2830
 *               intptr_t work, int lwork, intptr_t info, intptr_t params):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgesvdj(
 *             <Handle>handle, <EigMode>jobz, econ, m, n, <cuComplex*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2831
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCgesvdj(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, econ, m, n, <cuComplex*>A, lda,
 *             <float*>S, <cuComplex*>U, ldu, <cuComplex*>V, ldv,
 */
        __pyx_v_status = cusolverDnCgesvdj(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), __pyx_v_econ, __pyx_v_m, __pyx_v_n, ((cuComplex *)__pyx_v_A), __pyx_v_lda, ((float *)__pyx_v_S), ((cuComplex *)__pyx_v_U), __pyx_v_ldu, ((cuComplex *)__pyx_v_V), __pyx_v_ldv, ((cuComplex *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_info), ((gesvdjInfo_t)__pyx_v_params));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2830
 *               intptr_t work, int lwork, intptr_t info, intptr_t params):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgesvdj(
 *             <Handle>handle, <EigMode>jobz, econ, m, n, <cuComplex*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2835
 *             <float*>S, <cuComplex*>U, ldu, <cuComplex*>V, ldv,
 *             <cuComplex*>work, lwork, <int*>info, <GesvdjInfo>params)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef zgesvdj(intptr_t handle, int jobz, int econ, int m, int n, intptr_t A,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2835, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2826
 *     check_status(status)
 * 
 * cpdef cgesvdj(intptr_t handle, int jobz, int econ, int m, int n, intptr_t A,             # <<<<<<<<<<<<<<
 *               int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 *               intptr_t work, int lwork, intptr_t info, intptr_t params):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgesvdj", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_325cgesvdj(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_324cgesvdj[] = "cgesvdj(intptr_t handle, int jobz, int econ, int m, int n, intptr_t A, int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv, intptr_t work, int lwork, intptr_t info, intptr_t params)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_325cgesvdj(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_econ;
  int __pyx_v_m;
  int __pyx_v_n;
  intptr_t __pyx_v_A;
  int __pyx_v_lda;
  intptr_t __pyx_v_S;
  intptr_t __pyx_v_U;
  int __pyx_v_ldu;
  intptr_t __pyx_v_V;
  int __pyx_v_ldv;
  intptr_t __pyx_v_work;
  int __pyx_v_lwork;
  intptr_t __pyx_v_info;
  intptr_t __pyx_v_params;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cgesvdj (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_econ,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_S,&__pyx_n_s_U,&__pyx_n_s_ldu,&__pyx_n_s_V,&__pyx_n_s_ldv,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_info,&__pyx_n_s_params,0};
    PyObject* values[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
        CYTHON_FALLTHROUGH;
        case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
        CYTHON_FALLTHROUGH;
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdj", 1, 16, 16, 1); __PYX_ERR(0, 2826, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_econ)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdj", 1, 16, 16, 2); __PYX_ERR(0, 2826, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdj", 1, 16, 16, 3); __PYX_ERR(0, 2826, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdj", 1, 16, 16, 4); __PYX_ERR(0, 2826, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdj", 1, 16, 16, 5); __PYX_ERR(0, 2826, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdj", 1, 16, 16, 6); __PYX_ERR(0, 2826, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdj", 1, 16, 16, 7); __PYX_ERR(0, 2826, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdj", 1, 16, 16, 8); __PYX_ERR(0, 2826, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdj", 1, 16, 16, 9); __PYX_ERR(0, 2826, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_V)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdj", 1, 16, 16, 10); __PYX_ERR(0, 2826, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdj", 1, 16, 16, 11); __PYX_ERR(0, 2826, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdj", 1, 16, 16, 12); __PYX_ERR(0, 2826, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (likely((values[13] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdj", 1, 16, 16, 13); __PYX_ERR(0, 2826, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 14:
        if (likely((values[14] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdj", 1, 16, 16, 14); __PYX_ERR(0, 2826, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 15:
        if (likely((values[15] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdj", 1, 16, 16, 15); __PYX_ERR(0, 2826, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cgesvdj") < 0)) __PYX_ERR(0, 2826, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 16) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
      values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
      values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
      values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2826, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2826, __pyx_L3_error)
    __pyx_v_econ = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_econ == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2826, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2826, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2826, __pyx_L3_error)
    __pyx_v_A = PyInt_AsSsize_t(values[5]); if (unlikely((__pyx_v_A == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2826, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2827, __pyx_L3_error)
    __pyx_v_S = PyInt_AsSsize_t(values[7]); if (unlikely((__pyx_v_S == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2827, __pyx_L3_error)
    __pyx_v_U = PyInt_AsSsize_t(values[8]); if (unlikely((__pyx_v_U == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2827, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2827, __pyx_L3_error)
    __pyx_v_V = PyInt_AsSsize_t(values[10]); if (unlikely((__pyx_v_V == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2827, __pyx_L3_error)
    __pyx_v_ldv = __Pyx_PyInt_As_int(values[11]); if (unlikely((__pyx_v_ldv == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2827, __pyx_L3_error)
    __pyx_v_work = PyInt_AsSsize_t(values[12]); if (unlikely((__pyx_v_work == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2828, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[13]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2828, __pyx_L3_error)
    __pyx_v_info = PyInt_AsSsize_t(values[14]); if (unlikely((__pyx_v_info == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2828, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[15]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2828, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cgesvdj", 1, 16, 16, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2826, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgesvdj", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_324cgesvdj(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_econ, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_324cgesvdj(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_econ, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_work, int __pyx_v_lwork, intptr_t __pyx_v_info, intptr_t __pyx_v_params) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgesvdj", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvdj(__pyx_v_handle, __pyx_v_jobz, __pyx_v_econ, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2826, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgesvdj", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2837
 *     check_status(status)
 * 
 * cpdef zgesvdj(intptr_t handle, int jobz, int econ, int m, int n, intptr_t A,             # <<<<<<<<<<<<<<
 *               int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 *               intptr_t work, int lwork, intptr_t info, intptr_t params):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_327zgesvdj(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvdj(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_econ, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_work, int __pyx_v_lwork, intptr_t __pyx_v_info, intptr_t __pyx_v_params, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgesvdj", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2840
 *               int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 *               intptr_t work, int lwork, intptr_t info, intptr_t params):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZgesvdj(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2840, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2841
 *               intptr_t work, int lwork, intptr_t info, intptr_t params):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgesvdj(
 *             <Handle>handle, <EigMode>jobz, econ, m, n, <cuDoubleComplex*>A,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2842
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZgesvdj(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, econ, m, n, <cuDoubleComplex*>A,
 *             lda, <double*>S, <cuDoubleComplex*>U, ldu, <cuDoubleComplex*>V,
 */
        __pyx_v_status = cusolverDnZgesvdj(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), __pyx_v_econ, __pyx_v_m, __pyx_v_n, ((cuDoubleComplex *)__pyx_v_A), __pyx_v_lda, ((double *)__pyx_v_S), ((cuDoubleComplex *)__pyx_v_U), __pyx_v_ldu, ((cuDoubleComplex *)__pyx_v_V), __pyx_v_ldv, ((cuDoubleComplex *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_info), ((gesvdjInfo_t)__pyx_v_params));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2841
 *               intptr_t work, int lwork, intptr_t info, intptr_t params):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgesvdj(
 *             <Handle>handle, <EigMode>jobz, econ, m, n, <cuDoubleComplex*>A,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2846
 *             lda, <double*>S, <cuDoubleComplex*>U, ldu, <cuDoubleComplex*>V,
 *             ldv, <cuDoubleComplex*>work, lwork, <int*>info, <GesvdjInfo>params)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef int sgesvdjBatched_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2846, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2837
 *     check_status(status)
 * 
 * cpdef zgesvdj(intptr_t handle, int jobz, int econ, int m, int n, intptr_t A,             # <<<<<<<<<<<<<<
 *               int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 *               intptr_t work, int lwork, intptr_t info, intptr_t params):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgesvdj", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_327zgesvdj(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_326zgesvdj[] = "zgesvdj(intptr_t handle, int jobz, int econ, int m, int n, intptr_t A, int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv, intptr_t work, int lwork, intptr_t info, intptr_t params)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_327zgesvdj(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_econ;
  int __pyx_v_m;
  int __pyx_v_n;
  intptr_t __pyx_v_A;
  int __pyx_v_lda;
  intptr_t __pyx_v_S;
  intptr_t __pyx_v_U;
  int __pyx_v_ldu;
  intptr_t __pyx_v_V;
  int __pyx_v_ldv;
  intptr_t __pyx_v_work;
  int __pyx_v_lwork;
  intptr_t __pyx_v_info;
  intptr_t __pyx_v_params;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zgesvdj (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_econ,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_S,&__pyx_n_s_U,&__pyx_n_s_ldu,&__pyx_n_s_V,&__pyx_n_s_ldv,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_info,&__pyx_n_s_params,0};
    PyObject* values[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
        CYTHON_FALLTHROUGH;
        case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
        CYTHON_FALLTHROUGH;
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdj", 1, 16, 16, 1); __PYX_ERR(0, 2837, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_econ)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdj", 1, 16, 16, 2); __PYX_ERR(0, 2837, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdj", 1, 16, 16, 3); __PYX_ERR(0, 2837, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdj", 1, 16, 16, 4); __PYX_ERR(0, 2837, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdj", 1, 16, 16, 5); __PYX_ERR(0, 2837, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdj", 1, 16, 16, 6); __PYX_ERR(0, 2837, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdj", 1, 16, 16, 7); __PYX_ERR(0, 2837, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdj", 1, 16, 16, 8); __PYX_ERR(0, 2837, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdj", 1, 16, 16, 9); __PYX_ERR(0, 2837, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_V)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdj", 1, 16, 16, 10); __PYX_ERR(0, 2837, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdj", 1, 16, 16, 11); __PYX_ERR(0, 2837, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdj", 1, 16, 16, 12); __PYX_ERR(0, 2837, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (likely((values[13] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdj", 1, 16, 16, 13); __PYX_ERR(0, 2837, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 14:
        if (likely((values[14] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdj", 1, 16, 16, 14); __PYX_ERR(0, 2837, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 15:
        if (likely((values[15] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdj", 1, 16, 16, 15); __PYX_ERR(0, 2837, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zgesvdj") < 0)) __PYX_ERR(0, 2837, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 16) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
      values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
      values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
      values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2837, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2837, __pyx_L3_error)
    __pyx_v_econ = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_econ == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2837, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2837, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2837, __pyx_L3_error)
    __pyx_v_A = PyInt_AsSsize_t(values[5]); if (unlikely((__pyx_v_A == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2837, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2838, __pyx_L3_error)
    __pyx_v_S = PyInt_AsSsize_t(values[7]); if (unlikely((__pyx_v_S == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2838, __pyx_L3_error)
    __pyx_v_U = PyInt_AsSsize_t(values[8]); if (unlikely((__pyx_v_U == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2838, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2838, __pyx_L3_error)
    __pyx_v_V = PyInt_AsSsize_t(values[10]); if (unlikely((__pyx_v_V == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2838, __pyx_L3_error)
    __pyx_v_ldv = __Pyx_PyInt_As_int(values[11]); if (unlikely((__pyx_v_ldv == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2838, __pyx_L3_error)
    __pyx_v_work = PyInt_AsSsize_t(values[12]); if (unlikely((__pyx_v_work == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2839, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[13]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2839, __pyx_L3_error)
    __pyx_v_info = PyInt_AsSsize_t(values[14]); if (unlikely((__pyx_v_info == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2839, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[15]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2839, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zgesvdj", 1, 16, 16, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2837, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgesvdj", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_326zgesvdj(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_econ, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_326zgesvdj(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_econ, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_work, int __pyx_v_lwork, intptr_t __pyx_v_info, intptr_t __pyx_v_params) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgesvdj", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvdj(__pyx_v_handle, __pyx_v_jobz, __pyx_v_econ, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2837, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgesvdj", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2848
 *     check_status(status)
 * 
 * cpdef int sgesvdjBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int m, int n, intptr_t A,
 *         int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_329sgesvdjBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvdjBatched_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_params, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgesvdjBatched_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2853
 *         intptr_t params, int batchSize) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSgesvdjBatched_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2853, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2854
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgesvdjBatched_bufferSize(
 *             <Handle>handle, <EigMode>jobz, m, n, <float*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2855
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSgesvdjBatched_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, m, n, <float*>A, lda,
 *             <float*>S, <float*>U, ldu, <float*>V, ldv, &lwork,
 */
        __pyx_v_status = cusolverDnSgesvdjBatched_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), __pyx_v_m, __pyx_v_n, ((float *)__pyx_v_A), __pyx_v_lda, ((float *)__pyx_v_S), ((float *)__pyx_v_U), __pyx_v_ldu, ((float *)__pyx_v_V), __pyx_v_ldv, (&__pyx_v_lwork), ((gesvdjInfo_t)__pyx_v_params), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2854
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgesvdjBatched_bufferSize(
 *             <Handle>handle, <EigMode>jobz, m, n, <float*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2859
 *             <float*>S, <float*>U, ldu, <float*>V, ldv, &lwork,
 *             <GesvdjInfo>params, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2859, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2860
 *             <GesvdjInfo>params, batchSize)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int dgesvdjBatched_bufferSize(
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2848
 *     check_status(status)
 * 
 * cpdef int sgesvdjBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int m, int n, intptr_t A,
 *         int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgesvdjBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_329sgesvdjBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_328sgesvdjBatched_bufferSize[] = "sgesvdjBatched_bufferSize(intptr_t handle, int jobz, int m, int n, intptr_t A, int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv, intptr_t params, int batchSize) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_329sgesvdjBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_m;
  int __pyx_v_n;
  intptr_t __pyx_v_A;
  int __pyx_v_lda;
  intptr_t __pyx_v_S;
  intptr_t __pyx_v_U;
  int __pyx_v_ldu;
  intptr_t __pyx_v_V;
  int __pyx_v_ldv;
  intptr_t __pyx_v_params;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sgesvdjBatched_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_S,&__pyx_n_s_U,&__pyx_n_s_ldu,&__pyx_n_s_V,&__pyx_n_s_ldv,&__pyx_n_s_params,&__pyx_n_s_batchSize,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdjBatched_bufferSize", 1, 13, 13, 1); __PYX_ERR(0, 2848, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdjBatched_bufferSize", 1, 13, 13, 2); __PYX_ERR(0, 2848, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdjBatched_bufferSize", 1, 13, 13, 3); __PYX_ERR(0, 2848, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdjBatched_bufferSize", 1, 13, 13, 4); __PYX_ERR(0, 2848, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdjBatched_bufferSize", 1, 13, 13, 5); __PYX_ERR(0, 2848, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdjBatched_bufferSize", 1, 13, 13, 6); __PYX_ERR(0, 2848, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdjBatched_bufferSize", 1, 13, 13, 7); __PYX_ERR(0, 2848, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdjBatched_bufferSize", 1, 13, 13, 8); __PYX_ERR(0, 2848, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_V)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdjBatched_bufferSize", 1, 13, 13, 9); __PYX_ERR(0, 2848, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdjBatched_bufferSize", 1, 13, 13, 10); __PYX_ERR(0, 2848, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdjBatched_bufferSize", 1, 13, 13, 11); __PYX_ERR(0, 2848, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdjBatched_bufferSize", 1, 13, 13, 12); __PYX_ERR(0, 2848, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sgesvdjBatched_bufferSize") < 0)) __PYX_ERR(0, 2848, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2849, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2849, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2849, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2849, __pyx_L3_error)
    __pyx_v_A = PyInt_AsSsize_t(values[4]); if (unlikely((__pyx_v_A == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2849, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2850, __pyx_L3_error)
    __pyx_v_S = PyInt_AsSsize_t(values[6]); if (unlikely((__pyx_v_S == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2850, __pyx_L3_error)
    __pyx_v_U = PyInt_AsSsize_t(values[7]); if (unlikely((__pyx_v_U == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2850, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2850, __pyx_L3_error)
    __pyx_v_V = PyInt_AsSsize_t(values[9]); if (unlikely((__pyx_v_V == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2850, __pyx_L3_error)
    __pyx_v_ldv = __Pyx_PyInt_As_int(values[10]); if (unlikely((__pyx_v_ldv == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2850, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[11]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2851, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[12]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2851, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sgesvdjBatched_bufferSize", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2848, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgesvdjBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_328sgesvdjBatched_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_params, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_328sgesvdjBatched_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_params, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgesvdjBatched_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvdjBatched_bufferSize(__pyx_v_handle, __pyx_v_jobz, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_params, __pyx_v_batchSize, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2848, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2848, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgesvdjBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2862
 *     return lwork
 * 
 * cpdef int dgesvdjBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int m, int n, intptr_t A,
 *         int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_331dgesvdjBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvdjBatched_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_params, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgesvdjBatched_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2867
 *         intptr_t params, int batchSize) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDgesvdjBatched_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2867, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2868
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgesvdjBatched_bufferSize(
 *             <Handle>handle, <EigMode>jobz, m, n, <double*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2869
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDgesvdjBatched_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, m, n, <double*>A, lda,
 *             <double*>S, <double*>U, ldu, <double*>V, ldv, &lwork,
 */
        __pyx_v_status = cusolverDnDgesvdjBatched_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), __pyx_v_m, __pyx_v_n, ((double *)__pyx_v_A), __pyx_v_lda, ((double *)__pyx_v_S), ((double *)__pyx_v_U), __pyx_v_ldu, ((double *)__pyx_v_V), __pyx_v_ldv, (&__pyx_v_lwork), ((gesvdjInfo_t)__pyx_v_params), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2868
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgesvdjBatched_bufferSize(
 *             <Handle>handle, <EigMode>jobz, m, n, <double*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2873
 *             <double*>S, <double*>U, ldu, <double*>V, ldv, &lwork,
 *             <GesvdjInfo>params, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2873, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2874
 *             <GesvdjInfo>params, batchSize)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int cgesvdjBatched_bufferSize(
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2862
 *     return lwork
 * 
 * cpdef int dgesvdjBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int m, int n, intptr_t A,
 *         int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgesvdjBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_331dgesvdjBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_330dgesvdjBatched_bufferSize[] = "dgesvdjBatched_bufferSize(intptr_t handle, int jobz, int m, int n, intptr_t A, int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv, intptr_t params, int batchSize) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_331dgesvdjBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_m;
  int __pyx_v_n;
  intptr_t __pyx_v_A;
  int __pyx_v_lda;
  intptr_t __pyx_v_S;
  intptr_t __pyx_v_U;
  int __pyx_v_ldu;
  intptr_t __pyx_v_V;
  int __pyx_v_ldv;
  intptr_t __pyx_v_params;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dgesvdjBatched_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_S,&__pyx_n_s_U,&__pyx_n_s_ldu,&__pyx_n_s_V,&__pyx_n_s_ldv,&__pyx_n_s_params,&__pyx_n_s_batchSize,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdjBatched_bufferSize", 1, 13, 13, 1); __PYX_ERR(0, 2862, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdjBatched_bufferSize", 1, 13, 13, 2); __PYX_ERR(0, 2862, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdjBatched_bufferSize", 1, 13, 13, 3); __PYX_ERR(0, 2862, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdjBatched_bufferSize", 1, 13, 13, 4); __PYX_ERR(0, 2862, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdjBatched_bufferSize", 1, 13, 13, 5); __PYX_ERR(0, 2862, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdjBatched_bufferSize", 1, 13, 13, 6); __PYX_ERR(0, 2862, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdjBatched_bufferSize", 1, 13, 13, 7); __PYX_ERR(0, 2862, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdjBatched_bufferSize", 1, 13, 13, 8); __PYX_ERR(0, 2862, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_V)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdjBatched_bufferSize", 1, 13, 13, 9); __PYX_ERR(0, 2862, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdjBatched_bufferSize", 1, 13, 13, 10); __PYX_ERR(0, 2862, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdjBatched_bufferSize", 1, 13, 13, 11); __PYX_ERR(0, 2862, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdjBatched_bufferSize", 1, 13, 13, 12); __PYX_ERR(0, 2862, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dgesvdjBatched_bufferSize") < 0)) __PYX_ERR(0, 2862, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2863, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2863, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2863, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2863, __pyx_L3_error)
    __pyx_v_A = PyInt_AsSsize_t(values[4]); if (unlikely((__pyx_v_A == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2863, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2864, __pyx_L3_error)
    __pyx_v_S = PyInt_AsSsize_t(values[6]); if (unlikely((__pyx_v_S == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2864, __pyx_L3_error)
    __pyx_v_U = PyInt_AsSsize_t(values[7]); if (unlikely((__pyx_v_U == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2864, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2864, __pyx_L3_error)
    __pyx_v_V = PyInt_AsSsize_t(values[9]); if (unlikely((__pyx_v_V == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2864, __pyx_L3_error)
    __pyx_v_ldv = __Pyx_PyInt_As_int(values[10]); if (unlikely((__pyx_v_ldv == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2864, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[11]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2865, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[12]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2865, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dgesvdjBatched_bufferSize", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2862, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgesvdjBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_330dgesvdjBatched_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_params, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_330dgesvdjBatched_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_params, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgesvdjBatched_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvdjBatched_bufferSize(__pyx_v_handle, __pyx_v_jobz, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_params, __pyx_v_batchSize, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2862, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2862, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgesvdjBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2876
 *     return lwork
 * 
 * cpdef int cgesvdjBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int m, int n, intptr_t A,
 *         int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_333cgesvdjBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvdjBatched_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_params, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgesvdjBatched_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2881
 *         intptr_t params, int batchSize) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCgesvdjBatched_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2881, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2882
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgesvdjBatched_bufferSize(
 *             <Handle>handle, <EigMode>jobz, m, n, <cuComplex*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2883
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCgesvdjBatched_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, m, n, <cuComplex*>A, lda,
 *             <float*>S, <cuComplex*>U, ldu, <cuComplex*>V, ldv, &lwork,
 */
        __pyx_v_status = cusolverDnCgesvdjBatched_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), __pyx_v_m, __pyx_v_n, ((cuComplex *)__pyx_v_A), __pyx_v_lda, ((float *)__pyx_v_S), ((cuComplex *)__pyx_v_U), __pyx_v_ldu, ((cuComplex *)__pyx_v_V), __pyx_v_ldv, (&__pyx_v_lwork), ((gesvdjInfo_t)__pyx_v_params), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2882
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgesvdjBatched_bufferSize(
 *             <Handle>handle, <EigMode>jobz, m, n, <cuComplex*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2887
 *             <float*>S, <cuComplex*>U, ldu, <cuComplex*>V, ldv, &lwork,
 *             <GesvdjInfo>params, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2887, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2888
 *             <GesvdjInfo>params, batchSize)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int zgesvdjBatched_bufferSize(
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2876
 *     return lwork
 * 
 * cpdef int cgesvdjBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int m, int n, intptr_t A,
 *         int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgesvdjBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_333cgesvdjBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_332cgesvdjBatched_bufferSize[] = "cgesvdjBatched_bufferSize(intptr_t handle, int jobz, int m, int n, intptr_t A, int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv, intptr_t params, int batchSize) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_333cgesvdjBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_m;
  int __pyx_v_n;
  intptr_t __pyx_v_A;
  int __pyx_v_lda;
  intptr_t __pyx_v_S;
  intptr_t __pyx_v_U;
  int __pyx_v_ldu;
  intptr_t __pyx_v_V;
  int __pyx_v_ldv;
  intptr_t __pyx_v_params;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cgesvdjBatched_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_S,&__pyx_n_s_U,&__pyx_n_s_ldu,&__pyx_n_s_V,&__pyx_n_s_ldv,&__pyx_n_s_params,&__pyx_n_s_batchSize,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdjBatched_bufferSize", 1, 13, 13, 1); __PYX_ERR(0, 2876, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdjBatched_bufferSize", 1, 13, 13, 2); __PYX_ERR(0, 2876, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdjBatched_bufferSize", 1, 13, 13, 3); __PYX_ERR(0, 2876, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdjBatched_bufferSize", 1, 13, 13, 4); __PYX_ERR(0, 2876, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdjBatched_bufferSize", 1, 13, 13, 5); __PYX_ERR(0, 2876, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdjBatched_bufferSize", 1, 13, 13, 6); __PYX_ERR(0, 2876, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdjBatched_bufferSize", 1, 13, 13, 7); __PYX_ERR(0, 2876, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdjBatched_bufferSize", 1, 13, 13, 8); __PYX_ERR(0, 2876, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_V)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdjBatched_bufferSize", 1, 13, 13, 9); __PYX_ERR(0, 2876, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdjBatched_bufferSize", 1, 13, 13, 10); __PYX_ERR(0, 2876, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdjBatched_bufferSize", 1, 13, 13, 11); __PYX_ERR(0, 2876, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdjBatched_bufferSize", 1, 13, 13, 12); __PYX_ERR(0, 2876, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cgesvdjBatched_bufferSize") < 0)) __PYX_ERR(0, 2876, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2877, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2877, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2877, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2877, __pyx_L3_error)
    __pyx_v_A = PyInt_AsSsize_t(values[4]); if (unlikely((__pyx_v_A == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2877, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2878, __pyx_L3_error)
    __pyx_v_S = PyInt_AsSsize_t(values[6]); if (unlikely((__pyx_v_S == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2878, __pyx_L3_error)
    __pyx_v_U = PyInt_AsSsize_t(values[7]); if (unlikely((__pyx_v_U == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2878, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2878, __pyx_L3_error)
    __pyx_v_V = PyInt_AsSsize_t(values[9]); if (unlikely((__pyx_v_V == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2878, __pyx_L3_error)
    __pyx_v_ldv = __Pyx_PyInt_As_int(values[10]); if (unlikely((__pyx_v_ldv == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2878, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[11]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2879, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[12]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2879, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cgesvdjBatched_bufferSize", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2876, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgesvdjBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_332cgesvdjBatched_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_params, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_332cgesvdjBatched_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_params, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgesvdjBatched_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvdjBatched_bufferSize(__pyx_v_handle, __pyx_v_jobz, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_params, __pyx_v_batchSize, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2876, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2876, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgesvdjBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2890
 *     return lwork
 * 
 * cpdef int zgesvdjBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int m, int n, intptr_t A,
 *         int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_335zgesvdjBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvdjBatched_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_params, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgesvdjBatched_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2895
 *         intptr_t params, int batchSize) except? -1:
 *     cdef int lwork
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZgesvdjBatched_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2895, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2896
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgesvdjBatched_bufferSize(
 *             <Handle>handle, <EigMode>jobz, m, n, <cuDoubleComplex*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2897
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZgesvdjBatched_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, m, n, <cuDoubleComplex*>A, lda,
 *             <double*>S, <cuDoubleComplex*>U, ldu, <cuDoubleComplex*>V, ldv,
 */
        __pyx_v_status = cusolverDnZgesvdjBatched_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), __pyx_v_m, __pyx_v_n, ((cuDoubleComplex *)__pyx_v_A), __pyx_v_lda, ((double *)__pyx_v_S), ((cuDoubleComplex *)__pyx_v_U), __pyx_v_ldu, ((cuDoubleComplex *)__pyx_v_V), __pyx_v_ldv, (&__pyx_v_lwork), ((gesvdjInfo_t)__pyx_v_params), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2896
 *     cdef int lwork
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgesvdjBatched_bufferSize(
 *             <Handle>handle, <EigMode>jobz, m, n, <cuDoubleComplex*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2902
 *             &lwork,
 *             <GesvdjInfo>params, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2902, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2903
 *             <GesvdjInfo>params, batchSize)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef sgesvdjBatched(
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2890
 *     return lwork
 * 
 * cpdef int zgesvdjBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int m, int n, intptr_t A,
 *         int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgesvdjBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_335zgesvdjBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_334zgesvdjBatched_bufferSize[] = "zgesvdjBatched_bufferSize(intptr_t handle, int jobz, int m, int n, intptr_t A, int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv, intptr_t params, int batchSize) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_335zgesvdjBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_m;
  int __pyx_v_n;
  intptr_t __pyx_v_A;
  int __pyx_v_lda;
  intptr_t __pyx_v_S;
  intptr_t __pyx_v_U;
  int __pyx_v_ldu;
  intptr_t __pyx_v_V;
  int __pyx_v_ldv;
  intptr_t __pyx_v_params;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zgesvdjBatched_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_S,&__pyx_n_s_U,&__pyx_n_s_ldu,&__pyx_n_s_V,&__pyx_n_s_ldv,&__pyx_n_s_params,&__pyx_n_s_batchSize,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdjBatched_bufferSize", 1, 13, 13, 1); __PYX_ERR(0, 2890, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdjBatched_bufferSize", 1, 13, 13, 2); __PYX_ERR(0, 2890, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdjBatched_bufferSize", 1, 13, 13, 3); __PYX_ERR(0, 2890, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdjBatched_bufferSize", 1, 13, 13, 4); __PYX_ERR(0, 2890, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdjBatched_bufferSize", 1, 13, 13, 5); __PYX_ERR(0, 2890, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdjBatched_bufferSize", 1, 13, 13, 6); __PYX_ERR(0, 2890, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdjBatched_bufferSize", 1, 13, 13, 7); __PYX_ERR(0, 2890, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdjBatched_bufferSize", 1, 13, 13, 8); __PYX_ERR(0, 2890, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_V)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdjBatched_bufferSize", 1, 13, 13, 9); __PYX_ERR(0, 2890, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdjBatched_bufferSize", 1, 13, 13, 10); __PYX_ERR(0, 2890, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdjBatched_bufferSize", 1, 13, 13, 11); __PYX_ERR(0, 2890, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdjBatched_bufferSize", 1, 13, 13, 12); __PYX_ERR(0, 2890, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zgesvdjBatched_bufferSize") < 0)) __PYX_ERR(0, 2890, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2891, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2891, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2891, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2891, __pyx_L3_error)
    __pyx_v_A = PyInt_AsSsize_t(values[4]); if (unlikely((__pyx_v_A == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2891, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2892, __pyx_L3_error)
    __pyx_v_S = PyInt_AsSsize_t(values[6]); if (unlikely((__pyx_v_S == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2892, __pyx_L3_error)
    __pyx_v_U = PyInt_AsSsize_t(values[7]); if (unlikely((__pyx_v_U == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2892, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2892, __pyx_L3_error)
    __pyx_v_V = PyInt_AsSsize_t(values[9]); if (unlikely((__pyx_v_V == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2892, __pyx_L3_error)
    __pyx_v_ldv = __Pyx_PyInt_As_int(values[10]); if (unlikely((__pyx_v_ldv == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2892, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[11]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2893, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[12]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2893, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zgesvdjBatched_bufferSize", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2890, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgesvdjBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_334zgesvdjBatched_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_params, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_334zgesvdjBatched_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_params, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgesvdjBatched_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvdjBatched_bufferSize(__pyx_v_handle, __pyx_v_jobz, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_params, __pyx_v_batchSize, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2890, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2890, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgesvdjBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2905
 *     return lwork
 * 
 * cpdef sgesvdjBatched(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int m, int n, intptr_t A,
 *         int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_337sgesvdjBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvdjBatched(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_work, int __pyx_v_lwork, intptr_t __pyx_v_info, intptr_t __pyx_v_params, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgesvdjBatched", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2910
 *         intptr_t work, int lwork, intptr_t info,
 *         intptr_t params, int batchSize):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSgesvdjBatched(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2910, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2911
 *         intptr_t params, int batchSize):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgesvdjBatched(
 *             <Handle>handle, <EigMode>jobz, m, n, <float*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2912
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSgesvdjBatched(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, m, n, <float*>A, lda,
 *             <float*>S, <float*>U, ldu, <float*>V, ldv,
 */
        __pyx_v_status = cusolverDnSgesvdjBatched(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), __pyx_v_m, __pyx_v_n, ((float *)__pyx_v_A), __pyx_v_lda, ((float *)__pyx_v_S), ((float *)__pyx_v_U), __pyx_v_ldu, ((float *)__pyx_v_V), __pyx_v_ldv, ((float *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_info), ((gesvdjInfo_t)__pyx_v_params), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2911
 *         intptr_t params, int batchSize):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgesvdjBatched(
 *             <Handle>handle, <EigMode>jobz, m, n, <float*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2917
 *             <float*>work, lwork, <int*>info,
 *             <GesvdjInfo>params, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef dgesvdjBatched(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2905
 *     return lwork
 * 
 * cpdef sgesvdjBatched(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int m, int n, intptr_t A,
 *         int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgesvdjBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_337sgesvdjBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_336sgesvdjBatched[] = "sgesvdjBatched(intptr_t handle, int jobz, int m, int n, intptr_t A, int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv, intptr_t work, int lwork, intptr_t info, intptr_t params, int batchSize)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_337sgesvdjBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_m;
  int __pyx_v_n;
  intptr_t __pyx_v_A;
  int __pyx_v_lda;
  intptr_t __pyx_v_S;
  intptr_t __pyx_v_U;
  int __pyx_v_ldu;
  intptr_t __pyx_v_V;
  int __pyx_v_ldv;
  intptr_t __pyx_v_work;
  int __pyx_v_lwork;
  intptr_t __pyx_v_info;
  intptr_t __pyx_v_params;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sgesvdjBatched (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_S,&__pyx_n_s_U,&__pyx_n_s_ldu,&__pyx_n_s_V,&__pyx_n_s_ldv,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_info,&__pyx_n_s_params,&__pyx_n_s_batchSize,0};
    PyObject* values[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
        CYTHON_FALLTHROUGH;
        case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
        CYTHON_FALLTHROUGH;
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdjBatched", 1, 16, 16, 1); __PYX_ERR(0, 2905, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdjBatched", 1, 16, 16, 2); __PYX_ERR(0, 2905, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdjBatched", 1, 16, 16, 3); __PYX_ERR(0, 2905, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdjBatched", 1, 16, 16, 4); __PYX_ERR(0, 2905, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdjBatched", 1, 16, 16, 5); __PYX_ERR(0, 2905, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdjBatched", 1, 16, 16, 6); __PYX_ERR(0, 2905, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdjBatched", 1, 16, 16, 7); __PYX_ERR(0, 2905, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdjBatched", 1, 16, 16, 8); __PYX_ERR(0, 2905, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_V)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdjBatched", 1, 16, 16, 9); __PYX_ERR(0, 2905, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdjBatched", 1, 16, 16, 10); __PYX_ERR(0, 2905, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdjBatched", 1, 16, 16, 11); __PYX_ERR(0, 2905, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdjBatched", 1, 16, 16, 12); __PYX_ERR(0, 2905, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (likely((values[13] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdjBatched", 1, 16, 16, 13); __PYX_ERR(0, 2905, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 14:
        if (likely((values[14] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdjBatched", 1, 16, 16, 14); __PYX_ERR(0, 2905, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 15:
        if (likely((values[15] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdjBatched", 1, 16, 16, 15); __PYX_ERR(0, 2905, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sgesvdjBatched") < 0)) __PYX_ERR(0, 2905, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 16) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
      values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
      values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
      values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2906, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2906, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2906, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2906, __pyx_L3_error)
    __pyx_v_A = PyInt_AsSsize_t(values[4]); if (unlikely((__pyx_v_A == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2906, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2907, __pyx_L3_error)
    __pyx_v_S = PyInt_AsSsize_t(values[6]); if (unlikely((__pyx_v_S == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2907, __pyx_L3_error)
    __pyx_v_U = PyInt_AsSsize_t(values[7]); if (unlikely((__pyx_v_U == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2907, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2907, __pyx_L3_error)
    __pyx_v_V = PyInt_AsSsize_t(values[9]); if (unlikely((__pyx_v_V == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2907, __pyx_L3_error)
    __pyx_v_ldv = __Pyx_PyInt_As_int(values[10]); if (unlikely((__pyx_v_ldv == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2907, __pyx_L3_error)
    __pyx_v_work = PyInt_AsSsize_t(values[11]); if (unlikely((__pyx_v_work == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2908, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[12]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2908, __pyx_L3_error)
    __pyx_v_info = PyInt_AsSsize_t(values[13]); if (unlikely((__pyx_v_info == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2908, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[14]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2909, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[15]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2909, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sgesvdjBatched", 1, 16, 16, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2905, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgesvdjBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_336sgesvdjBatched(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_336sgesvdjBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_work, int __pyx_v_lwork, intptr_t __pyx_v_info, intptr_t __pyx_v_params, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgesvdjBatched", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvdjBatched(__pyx_v_handle, __pyx_v_jobz, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params, __pyx_v_batchSize, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2905, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgesvdjBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2919
 *     check_status(status)
 * 
 * cpdef dgesvdjBatched(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int m, int n, intptr_t A,
 *         int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_339dgesvdjBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvdjBatched(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_work, int __pyx_v_lwork, intptr_t __pyx_v_info, intptr_t __pyx_v_params, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgesvdjBatched", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2924
 *         intptr_t work, int lwork, intptr_t info,
 *         intptr_t params, int batchSize):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDgesvdjBatched(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2924, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2925
 *         intptr_t params, int batchSize):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgesvdjBatched(
 *             <Handle>handle, <EigMode>jobz, m, n, <double*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2926
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDgesvdjBatched(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, m, n, <double*>A, lda,
 *             <double*>S, <double*>U, ldu, <double*>V, ldv,
 */
        __pyx_v_status = cusolverDnDgesvdjBatched(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), __pyx_v_m, __pyx_v_n, ((double *)__pyx_v_A), __pyx_v_lda, ((double *)__pyx_v_S), ((double *)__pyx_v_U), __pyx_v_ldu, ((double *)__pyx_v_V), __pyx_v_ldv, ((double *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_info), ((gesvdjInfo_t)__pyx_v_params), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2925
 *         intptr_t params, int batchSize):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgesvdjBatched(
 *             <Handle>handle, <EigMode>jobz, m, n, <double*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2931
 *             <double*>work, lwork, <int*>info,
 *             <GesvdjInfo>params, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef cgesvdjBatched(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2931, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2919
 *     check_status(status)
 * 
 * cpdef dgesvdjBatched(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int m, int n, intptr_t A,
 *         int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgesvdjBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_339dgesvdjBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_338dgesvdjBatched[] = "dgesvdjBatched(intptr_t handle, int jobz, int m, int n, intptr_t A, int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv, intptr_t work, int lwork, intptr_t info, intptr_t params, int batchSize)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_339dgesvdjBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_m;
  int __pyx_v_n;
  intptr_t __pyx_v_A;
  int __pyx_v_lda;
  intptr_t __pyx_v_S;
  intptr_t __pyx_v_U;
  int __pyx_v_ldu;
  intptr_t __pyx_v_V;
  int __pyx_v_ldv;
  intptr_t __pyx_v_work;
  int __pyx_v_lwork;
  intptr_t __pyx_v_info;
  intptr_t __pyx_v_params;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dgesvdjBatched (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_S,&__pyx_n_s_U,&__pyx_n_s_ldu,&__pyx_n_s_V,&__pyx_n_s_ldv,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_info,&__pyx_n_s_params,&__pyx_n_s_batchSize,0};
    PyObject* values[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
        CYTHON_FALLTHROUGH;
        case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
        CYTHON_FALLTHROUGH;
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdjBatched", 1, 16, 16, 1); __PYX_ERR(0, 2919, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdjBatched", 1, 16, 16, 2); __PYX_ERR(0, 2919, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdjBatched", 1, 16, 16, 3); __PYX_ERR(0, 2919, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdjBatched", 1, 16, 16, 4); __PYX_ERR(0, 2919, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdjBatched", 1, 16, 16, 5); __PYX_ERR(0, 2919, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdjBatched", 1, 16, 16, 6); __PYX_ERR(0, 2919, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdjBatched", 1, 16, 16, 7); __PYX_ERR(0, 2919, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdjBatched", 1, 16, 16, 8); __PYX_ERR(0, 2919, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_V)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdjBatched", 1, 16, 16, 9); __PYX_ERR(0, 2919, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdjBatched", 1, 16, 16, 10); __PYX_ERR(0, 2919, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdjBatched", 1, 16, 16, 11); __PYX_ERR(0, 2919, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdjBatched", 1, 16, 16, 12); __PYX_ERR(0, 2919, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (likely((values[13] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdjBatched", 1, 16, 16, 13); __PYX_ERR(0, 2919, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 14:
        if (likely((values[14] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdjBatched", 1, 16, 16, 14); __PYX_ERR(0, 2919, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 15:
        if (likely((values[15] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdjBatched", 1, 16, 16, 15); __PYX_ERR(0, 2919, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dgesvdjBatched") < 0)) __PYX_ERR(0, 2919, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 16) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
      values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
      values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
      values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2920, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2920, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2920, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2920, __pyx_L3_error)
    __pyx_v_A = PyInt_AsSsize_t(values[4]); if (unlikely((__pyx_v_A == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2920, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2921, __pyx_L3_error)
    __pyx_v_S = PyInt_AsSsize_t(values[6]); if (unlikely((__pyx_v_S == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2921, __pyx_L3_error)
    __pyx_v_U = PyInt_AsSsize_t(values[7]); if (unlikely((__pyx_v_U == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2921, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2921, __pyx_L3_error)
    __pyx_v_V = PyInt_AsSsize_t(values[9]); if (unlikely((__pyx_v_V == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2921, __pyx_L3_error)
    __pyx_v_ldv = __Pyx_PyInt_As_int(values[10]); if (unlikely((__pyx_v_ldv == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2921, __pyx_L3_error)
    __pyx_v_work = PyInt_AsSsize_t(values[11]); if (unlikely((__pyx_v_work == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2922, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[12]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2922, __pyx_L3_error)
    __pyx_v_info = PyInt_AsSsize_t(values[13]); if (unlikely((__pyx_v_info == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2922, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[14]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2923, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[15]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2923, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dgesvdjBatched", 1, 16, 16, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2919, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgesvdjBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_338dgesvdjBatched(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_338dgesvdjBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_work, int __pyx_v_lwork, intptr_t __pyx_v_info, intptr_t __pyx_v_params, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgesvdjBatched", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvdjBatched(__pyx_v_handle, __pyx_v_jobz, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params, __pyx_v_batchSize, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgesvdjBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2933
 *     check_status(status)
 * 
 * cpdef cgesvdjBatched(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int m, int n, intptr_t A,
 *         int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_341cgesvdjBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvdjBatched(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_work, int __pyx_v_lwork, intptr_t __pyx_v_info, intptr_t __pyx_v_params, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgesvdjBatched", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2938
 *         intptr_t work, int lwork, intptr_t info,
 *         intptr_t params, int batchSize):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCgesvdjBatched(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2938, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2939
 *         intptr_t params, int batchSize):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgesvdjBatched(
 *             <Handle>handle, <EigMode>jobz, m, n, <cuComplex*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2940
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCgesvdjBatched(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, m, n, <cuComplex*>A, lda,
 *             <float*>S, <cuComplex*>U, ldu, <cuComplex*>V, ldv,
 */
        __pyx_v_status = cusolverDnCgesvdjBatched(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), __pyx_v_m, __pyx_v_n, ((cuComplex *)__pyx_v_A), __pyx_v_lda, ((float *)__pyx_v_S), ((cuComplex *)__pyx_v_U), __pyx_v_ldu, ((cuComplex *)__pyx_v_V), __pyx_v_ldv, ((cuComplex *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_info), ((gesvdjInfo_t)__pyx_v_params), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2939
 *         intptr_t params, int batchSize):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgesvdjBatched(
 *             <Handle>handle, <EigMode>jobz, m, n, <cuComplex*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2945
 *             <cuComplex*>work, lwork, <int*>info,
 *             <GesvdjInfo>params, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef zgesvdjBatched(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2945, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2933
 *     check_status(status)
 * 
 * cpdef cgesvdjBatched(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int m, int n, intptr_t A,
 *         int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgesvdjBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_341cgesvdjBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_340cgesvdjBatched[] = "cgesvdjBatched(intptr_t handle, int jobz, int m, int n, intptr_t A, int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv, intptr_t work, int lwork, intptr_t info, intptr_t params, int batchSize)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_341cgesvdjBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_m;
  int __pyx_v_n;
  intptr_t __pyx_v_A;
  int __pyx_v_lda;
  intptr_t __pyx_v_S;
  intptr_t __pyx_v_U;
  int __pyx_v_ldu;
  intptr_t __pyx_v_V;
  int __pyx_v_ldv;
  intptr_t __pyx_v_work;
  int __pyx_v_lwork;
  intptr_t __pyx_v_info;
  intptr_t __pyx_v_params;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cgesvdjBatched (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_S,&__pyx_n_s_U,&__pyx_n_s_ldu,&__pyx_n_s_V,&__pyx_n_s_ldv,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_info,&__pyx_n_s_params,&__pyx_n_s_batchSize,0};
    PyObject* values[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
        CYTHON_FALLTHROUGH;
        case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
        CYTHON_FALLTHROUGH;
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdjBatched", 1, 16, 16, 1); __PYX_ERR(0, 2933, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdjBatched", 1, 16, 16, 2); __PYX_ERR(0, 2933, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdjBatched", 1, 16, 16, 3); __PYX_ERR(0, 2933, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdjBatched", 1, 16, 16, 4); __PYX_ERR(0, 2933, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdjBatched", 1, 16, 16, 5); __PYX_ERR(0, 2933, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdjBatched", 1, 16, 16, 6); __PYX_ERR(0, 2933, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdjBatched", 1, 16, 16, 7); __PYX_ERR(0, 2933, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdjBatched", 1, 16, 16, 8); __PYX_ERR(0, 2933, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_V)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdjBatched", 1, 16, 16, 9); __PYX_ERR(0, 2933, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdjBatched", 1, 16, 16, 10); __PYX_ERR(0, 2933, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdjBatched", 1, 16, 16, 11); __PYX_ERR(0, 2933, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdjBatched", 1, 16, 16, 12); __PYX_ERR(0, 2933, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (likely((values[13] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdjBatched", 1, 16, 16, 13); __PYX_ERR(0, 2933, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 14:
        if (likely((values[14] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdjBatched", 1, 16, 16, 14); __PYX_ERR(0, 2933, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 15:
        if (likely((values[15] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdjBatched", 1, 16, 16, 15); __PYX_ERR(0, 2933, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cgesvdjBatched") < 0)) __PYX_ERR(0, 2933, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 16) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
      values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
      values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
      values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2934, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2934, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2934, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2934, __pyx_L3_error)
    __pyx_v_A = PyInt_AsSsize_t(values[4]); if (unlikely((__pyx_v_A == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2934, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2935, __pyx_L3_error)
    __pyx_v_S = PyInt_AsSsize_t(values[6]); if (unlikely((__pyx_v_S == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2935, __pyx_L3_error)
    __pyx_v_U = PyInt_AsSsize_t(values[7]); if (unlikely((__pyx_v_U == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2935, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2935, __pyx_L3_error)
    __pyx_v_V = PyInt_AsSsize_t(values[9]); if (unlikely((__pyx_v_V == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2935, __pyx_L3_error)
    __pyx_v_ldv = __Pyx_PyInt_As_int(values[10]); if (unlikely((__pyx_v_ldv == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2935, __pyx_L3_error)
    __pyx_v_work = PyInt_AsSsize_t(values[11]); if (unlikely((__pyx_v_work == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2936, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[12]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2936, __pyx_L3_error)
    __pyx_v_info = PyInt_AsSsize_t(values[13]); if (unlikely((__pyx_v_info == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2936, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[14]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2937, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[15]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2937, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cgesvdjBatched", 1, 16, 16, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2933, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgesvdjBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_340cgesvdjBatched(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_340cgesvdjBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_work, int __pyx_v_lwork, intptr_t __pyx_v_info, intptr_t __pyx_v_params, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgesvdjBatched", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvdjBatched(__pyx_v_handle, __pyx_v_jobz, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params, __pyx_v_batchSize, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2933, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgesvdjBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2947
 *     check_status(status)
 * 
 * cpdef zgesvdjBatched(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int m, int n, intptr_t A,
 *         int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_343zgesvdjBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvdjBatched(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_work, int __pyx_v_lwork, intptr_t __pyx_v_info, intptr_t __pyx_v_params, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgesvdjBatched", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2952
 *         intptr_t work, int lwork, intptr_t info,
 *         intptr_t params, int batchSize):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZgesvdjBatched(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2952, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2953
 *         intptr_t params, int batchSize):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgesvdjBatched(
 *             <Handle>handle, <EigMode>jobz, m, n, <cuDoubleComplex*>A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":2954
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZgesvdjBatched(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, m, n, <cuDoubleComplex*>A, lda,
 *             <double*>S, <cuDoubleComplex*>U, ldu, <cuDoubleComplex*>V, ldv,
 */
        __pyx_v_status = cusolverDnZgesvdjBatched(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), __pyx_v_m, __pyx_v_n, ((cuDoubleComplex *)__pyx_v_A), __pyx_v_lda, ((double *)__pyx_v_S), ((cuDoubleComplex *)__pyx_v_U), __pyx_v_ldu, ((cuDoubleComplex *)__pyx_v_V), __pyx_v_ldv, ((cuDoubleComplex *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_info), ((gesvdjInfo_t)__pyx_v_params), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":2953
 *         intptr_t params, int batchSize):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgesvdjBatched(
 *             <Handle>handle, <EigMode>jobz, m, n, <cuDoubleComplex*>A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":2959
 *             <cuDoubleComplex*>work, lwork, <int*>info,
 *             <GesvdjInfo>params, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * # gesvda ... Approximate singular value decomposition
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2959, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2947
 *     check_status(status)
 * 
 * cpdef zgesvdjBatched(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int m, int n, intptr_t A,
 *         int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgesvdjBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_343zgesvdjBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_342zgesvdjBatched[] = "zgesvdjBatched(intptr_t handle, int jobz, int m, int n, intptr_t A, int lda, intptr_t S, intptr_t U, int ldu, intptr_t V, int ldv, intptr_t work, int lwork, intptr_t info, intptr_t params, int batchSize)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_343zgesvdjBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_m;
  int __pyx_v_n;
  intptr_t __pyx_v_A;
  int __pyx_v_lda;
  intptr_t __pyx_v_S;
  intptr_t __pyx_v_U;
  int __pyx_v_ldu;
  intptr_t __pyx_v_V;
  int __pyx_v_ldv;
  intptr_t __pyx_v_work;
  int __pyx_v_lwork;
  intptr_t __pyx_v_info;
  intptr_t __pyx_v_params;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zgesvdjBatched (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_S,&__pyx_n_s_U,&__pyx_n_s_ldu,&__pyx_n_s_V,&__pyx_n_s_ldv,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_info,&__pyx_n_s_params,&__pyx_n_s_batchSize,0};
    PyObject* values[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
        CYTHON_FALLTHROUGH;
        case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
        CYTHON_FALLTHROUGH;
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdjBatched", 1, 16, 16, 1); __PYX_ERR(0, 2947, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdjBatched", 1, 16, 16, 2); __PYX_ERR(0, 2947, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdjBatched", 1, 16, 16, 3); __PYX_ERR(0, 2947, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdjBatched", 1, 16, 16, 4); __PYX_ERR(0, 2947, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdjBatched", 1, 16, 16, 5); __PYX_ERR(0, 2947, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdjBatched", 1, 16, 16, 6); __PYX_ERR(0, 2947, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdjBatched", 1, 16, 16, 7); __PYX_ERR(0, 2947, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdjBatched", 1, 16, 16, 8); __PYX_ERR(0, 2947, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_V)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdjBatched", 1, 16, 16, 9); __PYX_ERR(0, 2947, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdjBatched", 1, 16, 16, 10); __PYX_ERR(0, 2947, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdjBatched", 1, 16, 16, 11); __PYX_ERR(0, 2947, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdjBatched", 1, 16, 16, 12); __PYX_ERR(0, 2947, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (likely((values[13] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdjBatched", 1, 16, 16, 13); __PYX_ERR(0, 2947, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 14:
        if (likely((values[14] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdjBatched", 1, 16, 16, 14); __PYX_ERR(0, 2947, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 15:
        if (likely((values[15] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdjBatched", 1, 16, 16, 15); __PYX_ERR(0, 2947, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zgesvdjBatched") < 0)) __PYX_ERR(0, 2947, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 16) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
      values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
      values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
      values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2948, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2948, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2948, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2948, __pyx_L3_error)
    __pyx_v_A = PyInt_AsSsize_t(values[4]); if (unlikely((__pyx_v_A == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2948, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2949, __pyx_L3_error)
    __pyx_v_S = PyInt_AsSsize_t(values[6]); if (unlikely((__pyx_v_S == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2949, __pyx_L3_error)
    __pyx_v_U = PyInt_AsSsize_t(values[7]); if (unlikely((__pyx_v_U == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2949, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2949, __pyx_L3_error)
    __pyx_v_V = PyInt_AsSsize_t(values[9]); if (unlikely((__pyx_v_V == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2949, __pyx_L3_error)
    __pyx_v_ldv = __Pyx_PyInt_As_int(values[10]); if (unlikely((__pyx_v_ldv == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2949, __pyx_L3_error)
    __pyx_v_work = PyInt_AsSsize_t(values[11]); if (unlikely((__pyx_v_work == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2950, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[12]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2950, __pyx_L3_error)
    __pyx_v_info = PyInt_AsSsize_t(values[13]); if (unlikely((__pyx_v_info == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2950, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[14]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2951, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[15]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2951, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zgesvdjBatched", 1, 16, 16, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2947, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgesvdjBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_342zgesvdjBatched(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_342zgesvdjBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_A, int __pyx_v_lda, intptr_t __pyx_v_S, intptr_t __pyx_v_U, int __pyx_v_ldu, intptr_t __pyx_v_V, int __pyx_v_ldv, intptr_t __pyx_v_work, int __pyx_v_lwork, intptr_t __pyx_v_info, intptr_t __pyx_v_params, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgesvdjBatched", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvdjBatched(__pyx_v_handle, __pyx_v_jobz, __pyx_v_m, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_S, __pyx_v_U, __pyx_v_ldu, __pyx_v_V, __pyx_v_ldv, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params, __pyx_v_batchSize, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgesvdjBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2962
 * 
 * # gesvda ... Approximate singular value decomposition
 * cpdef int sgesvdaStridedBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int rank, int m, int n, intptr_t d_A,
 *         int lda, long long int strideA, intptr_t d_S, long long int strideS,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_345sgesvdaStridedBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvdaStridedBatched_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_rank, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_d_A, int __pyx_v_lda, PY_LONG_LONG __pyx_v_strideA, intptr_t __pyx_v_d_S, PY_LONG_LONG __pyx_v_strideS, intptr_t __pyx_v_d_U, int __pyx_v_ldu, PY_LONG_LONG __pyx_v_strideU, intptr_t __pyx_v_d_V, int __pyx_v_ldv, PY_LONG_LONG __pyx_v_strideV, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgesvdaStridedBatched_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2968
 *         long long int strideV, int batchSize):
 *     cdef int lwork
 *     status = cusolverDnSgesvdaStridedBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         <Handle>handle, <EigMode>jobz, rank, m, n, <const float*>d_A, lda,
 *         strideA, <const float*>d_S, strideS, <const float*>d_U, ldu, strideU,
 */
  __pyx_v_status = cusolverDnSgesvdaStridedBatched_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), __pyx_v_rank, __pyx_v_m, __pyx_v_n, ((float const *)__pyx_v_d_A), __pyx_v_lda, __pyx_v_strideA, ((float const *)__pyx_v_d_S), __pyx_v_strideS, ((float const *)__pyx_v_d_U), __pyx_v_ldu, __pyx_v_strideU, ((float const *)__pyx_v_d_V), __pyx_v_ldv, __pyx_v_strideV, (&__pyx_v_lwork), __pyx_v_batchSize);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2972
 *         strideA, <const float*>d_S, strideS, <const float*>d_U, ldu, strideU,
 *         <const float*>d_V, ldv, strideV, &lwork, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2972, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2973
 *         <const float*>d_V, ldv, strideV, &lwork, batchSize)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int dgesvdaStridedBatched_bufferSize(
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2962
 * 
 * # gesvda ... Approximate singular value decomposition
 * cpdef int sgesvdaStridedBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int rank, int m, int n, intptr_t d_A,
 *         int lda, long long int strideA, intptr_t d_S, long long int strideS,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.sgesvdaStridedBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_345sgesvdaStridedBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_344sgesvdaStridedBatched_bufferSize[] = "sgesvdaStridedBatched_bufferSize(intptr_t handle, int jobz, int rank, int m, int n, intptr_t d_A, int lda, long long strideA, intptr_t d_S, long long strideS, intptr_t d_U, int ldu, long long strideU, intptr_t d_V, int ldv, long long strideV, int batchSize) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_345sgesvdaStridedBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_rank;
  int __pyx_v_m;
  int __pyx_v_n;
  intptr_t __pyx_v_d_A;
  int __pyx_v_lda;
  PY_LONG_LONG __pyx_v_strideA;
  intptr_t __pyx_v_d_S;
  PY_LONG_LONG __pyx_v_strideS;
  intptr_t __pyx_v_d_U;
  int __pyx_v_ldu;
  PY_LONG_LONG __pyx_v_strideU;
  intptr_t __pyx_v_d_V;
  int __pyx_v_ldv;
  PY_LONG_LONG __pyx_v_strideV;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sgesvdaStridedBatched_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_rank,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_d_A,&__pyx_n_s_lda,&__pyx_n_s_strideA,&__pyx_n_s_d_S,&__pyx_n_s_strideS,&__pyx_n_s_d_U,&__pyx_n_s_ldu,&__pyx_n_s_strideU,&__pyx_n_s_d_V,&__pyx_n_s_ldv,&__pyx_n_s_strideV,&__pyx_n_s_batchSize,0};
    PyObject* values[17] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
        CYTHON_FALLTHROUGH;
        case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
        CYTHON_FALLTHROUGH;
        case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
        CYTHON_FALLTHROUGH;
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched_bufferSize", 1, 17, 17, 1); __PYX_ERR(0, 2962, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rank)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched_bufferSize", 1, 17, 17, 2); __PYX_ERR(0, 2962, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched_bufferSize", 1, 17, 17, 3); __PYX_ERR(0, 2962, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched_bufferSize", 1, 17, 17, 4); __PYX_ERR(0, 2962, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched_bufferSize", 1, 17, 17, 5); __PYX_ERR(0, 2962, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched_bufferSize", 1, 17, 17, 6); __PYX_ERR(0, 2962, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched_bufferSize", 1, 17, 17, 7); __PYX_ERR(0, 2962, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched_bufferSize", 1, 17, 17, 8); __PYX_ERR(0, 2962, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideS)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched_bufferSize", 1, 17, 17, 9); __PYX_ERR(0, 2962, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched_bufferSize", 1, 17, 17, 10); __PYX_ERR(0, 2962, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched_bufferSize", 1, 17, 17, 11); __PYX_ERR(0, 2962, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideU)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched_bufferSize", 1, 17, 17, 12); __PYX_ERR(0, 2962, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (likely((values[13] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_V)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched_bufferSize", 1, 17, 17, 13); __PYX_ERR(0, 2962, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 14:
        if (likely((values[14] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched_bufferSize", 1, 17, 17, 14); __PYX_ERR(0, 2962, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 15:
        if (likely((values[15] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideV)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched_bufferSize", 1, 17, 17, 15); __PYX_ERR(0, 2962, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 16:
        if (likely((values[16] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched_bufferSize", 1, 17, 17, 16); __PYX_ERR(0, 2962, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sgesvdaStridedBatched_bufferSize") < 0)) __PYX_ERR(0, 2962, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 17) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
      values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
      values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
      values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
      values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2963, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2963, __pyx_L3_error)
    __pyx_v_rank = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2963, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2963, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2963, __pyx_L3_error)
    __pyx_v_d_A = PyInt_AsSsize_t(values[5]); if (unlikely((__pyx_v_d_A == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2963, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2964, __pyx_L3_error)
    __pyx_v_strideA = __Pyx_PyInt_As_PY_LONG_LONG(values[7]); if (unlikely((__pyx_v_strideA == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2964, __pyx_L3_error)
    __pyx_v_d_S = PyInt_AsSsize_t(values[8]); if (unlikely((__pyx_v_d_S == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2964, __pyx_L3_error)
    __pyx_v_strideS = __Pyx_PyInt_As_PY_LONG_LONG(values[9]); if (unlikely((__pyx_v_strideS == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2964, __pyx_L3_error)
    __pyx_v_d_U = PyInt_AsSsize_t(values[10]); if (unlikely((__pyx_v_d_U == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2965, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[11]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2965, __pyx_L3_error)
    __pyx_v_strideU = __Pyx_PyInt_As_PY_LONG_LONG(values[12]); if (unlikely((__pyx_v_strideU == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2965, __pyx_L3_error)
    __pyx_v_d_V = PyInt_AsSsize_t(values[13]); if (unlikely((__pyx_v_d_V == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2965, __pyx_L3_error)
    __pyx_v_ldv = __Pyx_PyInt_As_int(values[14]); if (unlikely((__pyx_v_ldv == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2965, __pyx_L3_error)
    __pyx_v_strideV = __Pyx_PyInt_As_PY_LONG_LONG(values[15]); if (unlikely((__pyx_v_strideV == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2966, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[16]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2966, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched_bufferSize", 1, 17, 17, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2962, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgesvdaStridedBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_344sgesvdaStridedBatched_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_rank, __pyx_v_m, __pyx_v_n, __pyx_v_d_A, __pyx_v_lda, __pyx_v_strideA, __pyx_v_d_S, __pyx_v_strideS, __pyx_v_d_U, __pyx_v_ldu, __pyx_v_strideU, __pyx_v_d_V, __pyx_v_ldv, __pyx_v_strideV, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_344sgesvdaStridedBatched_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_rank, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_d_A, int __pyx_v_lda, PY_LONG_LONG __pyx_v_strideA, intptr_t __pyx_v_d_S, PY_LONG_LONG __pyx_v_strideS, intptr_t __pyx_v_d_U, int __pyx_v_ldu, PY_LONG_LONG __pyx_v_strideU, intptr_t __pyx_v_d_V, int __pyx_v_ldv, PY_LONG_LONG __pyx_v_strideV, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgesvdaStridedBatched_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvdaStridedBatched_bufferSize(__pyx_v_handle, __pyx_v_jobz, __pyx_v_rank, __pyx_v_m, __pyx_v_n, __pyx_v_d_A, __pyx_v_lda, __pyx_v_strideA, __pyx_v_d_S, __pyx_v_strideS, __pyx_v_d_U, __pyx_v_ldu, __pyx_v_strideU, __pyx_v_d_V, __pyx_v_ldv, __pyx_v_strideV, __pyx_v_batchSize, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2962, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgesvdaStridedBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2975
 *     return lwork
 * 
 * cpdef int dgesvdaStridedBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int rank, int m, int n, intptr_t d_A,
 *         int lda, long long int strideA, intptr_t d_S, long long int strideS,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_347dgesvdaStridedBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvdaStridedBatched_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_rank, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_d_A, int __pyx_v_lda, PY_LONG_LONG __pyx_v_strideA, intptr_t __pyx_v_d_S, PY_LONG_LONG __pyx_v_strideS, intptr_t __pyx_v_d_U, int __pyx_v_ldu, PY_LONG_LONG __pyx_v_strideU, intptr_t __pyx_v_d_V, int __pyx_v_ldv, PY_LONG_LONG __pyx_v_strideV, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgesvdaStridedBatched_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2981
 *         long long int strideV, int batchSize):
 *     cdef int lwork
 *     status = cusolverDnDgesvdaStridedBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         <Handle>handle, <EigMode>jobz, rank, m, n, <const double*>d_A, lda,
 *         strideA, <const double*>d_S, strideS, <const double*>d_U, ldu, strideU,
 */
  __pyx_v_status = cusolverDnDgesvdaStridedBatched_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), __pyx_v_rank, __pyx_v_m, __pyx_v_n, ((double const *)__pyx_v_d_A), __pyx_v_lda, __pyx_v_strideA, ((double const *)__pyx_v_d_S), __pyx_v_strideS, ((double const *)__pyx_v_d_U), __pyx_v_ldu, __pyx_v_strideU, ((double const *)__pyx_v_d_V), __pyx_v_ldv, __pyx_v_strideV, (&__pyx_v_lwork), __pyx_v_batchSize);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2985
 *         strideA, <const double*>d_S, strideS, <const double*>d_U, ldu, strideU,
 *         <const double*>d_V, ldv, strideV, &lwork, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2985, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2986
 *         <const double*>d_V, ldv, strideV, &lwork, batchSize)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int cgesvdaStridedBatched_bufferSize(
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2975
 *     return lwork
 * 
 * cpdef int dgesvdaStridedBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int rank, int m, int n, intptr_t d_A,
 *         int lda, long long int strideA, intptr_t d_S, long long int strideS,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.dgesvdaStridedBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_347dgesvdaStridedBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_346dgesvdaStridedBatched_bufferSize[] = "dgesvdaStridedBatched_bufferSize(intptr_t handle, int jobz, int rank, int m, int n, intptr_t d_A, int lda, long long strideA, intptr_t d_S, long long strideS, intptr_t d_U, int ldu, long long strideU, intptr_t d_V, int ldv, long long strideV, int batchSize) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_347dgesvdaStridedBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_rank;
  int __pyx_v_m;
  int __pyx_v_n;
  intptr_t __pyx_v_d_A;
  int __pyx_v_lda;
  PY_LONG_LONG __pyx_v_strideA;
  intptr_t __pyx_v_d_S;
  PY_LONG_LONG __pyx_v_strideS;
  intptr_t __pyx_v_d_U;
  int __pyx_v_ldu;
  PY_LONG_LONG __pyx_v_strideU;
  intptr_t __pyx_v_d_V;
  int __pyx_v_ldv;
  PY_LONG_LONG __pyx_v_strideV;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dgesvdaStridedBatched_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_rank,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_d_A,&__pyx_n_s_lda,&__pyx_n_s_strideA,&__pyx_n_s_d_S,&__pyx_n_s_strideS,&__pyx_n_s_d_U,&__pyx_n_s_ldu,&__pyx_n_s_strideU,&__pyx_n_s_d_V,&__pyx_n_s_ldv,&__pyx_n_s_strideV,&__pyx_n_s_batchSize,0};
    PyObject* values[17] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
        CYTHON_FALLTHROUGH;
        case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
        CYTHON_FALLTHROUGH;
        case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
        CYTHON_FALLTHROUGH;
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched_bufferSize", 1, 17, 17, 1); __PYX_ERR(0, 2975, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rank)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched_bufferSize", 1, 17, 17, 2); __PYX_ERR(0, 2975, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched_bufferSize", 1, 17, 17, 3); __PYX_ERR(0, 2975, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched_bufferSize", 1, 17, 17, 4); __PYX_ERR(0, 2975, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched_bufferSize", 1, 17, 17, 5); __PYX_ERR(0, 2975, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched_bufferSize", 1, 17, 17, 6); __PYX_ERR(0, 2975, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched_bufferSize", 1, 17, 17, 7); __PYX_ERR(0, 2975, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched_bufferSize", 1, 17, 17, 8); __PYX_ERR(0, 2975, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideS)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched_bufferSize", 1, 17, 17, 9); __PYX_ERR(0, 2975, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched_bufferSize", 1, 17, 17, 10); __PYX_ERR(0, 2975, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched_bufferSize", 1, 17, 17, 11); __PYX_ERR(0, 2975, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideU)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched_bufferSize", 1, 17, 17, 12); __PYX_ERR(0, 2975, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (likely((values[13] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_V)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched_bufferSize", 1, 17, 17, 13); __PYX_ERR(0, 2975, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 14:
        if (likely((values[14] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched_bufferSize", 1, 17, 17, 14); __PYX_ERR(0, 2975, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 15:
        if (likely((values[15] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideV)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched_bufferSize", 1, 17, 17, 15); __PYX_ERR(0, 2975, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 16:
        if (likely((values[16] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched_bufferSize", 1, 17, 17, 16); __PYX_ERR(0, 2975, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dgesvdaStridedBatched_bufferSize") < 0)) __PYX_ERR(0, 2975, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 17) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
      values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
      values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
      values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
      values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2976, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2976, __pyx_L3_error)
    __pyx_v_rank = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2976, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2976, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2976, __pyx_L3_error)
    __pyx_v_d_A = PyInt_AsSsize_t(values[5]); if (unlikely((__pyx_v_d_A == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2976, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2977, __pyx_L3_error)
    __pyx_v_strideA = __Pyx_PyInt_As_PY_LONG_LONG(values[7]); if (unlikely((__pyx_v_strideA == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2977, __pyx_L3_error)
    __pyx_v_d_S = PyInt_AsSsize_t(values[8]); if (unlikely((__pyx_v_d_S == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2977, __pyx_L3_error)
    __pyx_v_strideS = __Pyx_PyInt_As_PY_LONG_LONG(values[9]); if (unlikely((__pyx_v_strideS == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2977, __pyx_L3_error)
    __pyx_v_d_U = PyInt_AsSsize_t(values[10]); if (unlikely((__pyx_v_d_U == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2978, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[11]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2978, __pyx_L3_error)
    __pyx_v_strideU = __Pyx_PyInt_As_PY_LONG_LONG(values[12]); if (unlikely((__pyx_v_strideU == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2978, __pyx_L3_error)
    __pyx_v_d_V = PyInt_AsSsize_t(values[13]); if (unlikely((__pyx_v_d_V == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2978, __pyx_L3_error)
    __pyx_v_ldv = __Pyx_PyInt_As_int(values[14]); if (unlikely((__pyx_v_ldv == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2978, __pyx_L3_error)
    __pyx_v_strideV = __Pyx_PyInt_As_PY_LONG_LONG(values[15]); if (unlikely((__pyx_v_strideV == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2979, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[16]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2979, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched_bufferSize", 1, 17, 17, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2975, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgesvdaStridedBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_346dgesvdaStridedBatched_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_rank, __pyx_v_m, __pyx_v_n, __pyx_v_d_A, __pyx_v_lda, __pyx_v_strideA, __pyx_v_d_S, __pyx_v_strideS, __pyx_v_d_U, __pyx_v_ldu, __pyx_v_strideU, __pyx_v_d_V, __pyx_v_ldv, __pyx_v_strideV, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_346dgesvdaStridedBatched_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_rank, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_d_A, int __pyx_v_lda, PY_LONG_LONG __pyx_v_strideA, intptr_t __pyx_v_d_S, PY_LONG_LONG __pyx_v_strideS, intptr_t __pyx_v_d_U, int __pyx_v_ldu, PY_LONG_LONG __pyx_v_strideU, intptr_t __pyx_v_d_V, int __pyx_v_ldv, PY_LONG_LONG __pyx_v_strideV, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgesvdaStridedBatched_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvdaStridedBatched_bufferSize(__pyx_v_handle, __pyx_v_jobz, __pyx_v_rank, __pyx_v_m, __pyx_v_n, __pyx_v_d_A, __pyx_v_lda, __pyx_v_strideA, __pyx_v_d_S, __pyx_v_strideS, __pyx_v_d_U, __pyx_v_ldu, __pyx_v_strideU, __pyx_v_d_V, __pyx_v_ldv, __pyx_v_strideV, __pyx_v_batchSize, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2975, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgesvdaStridedBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":2988
 *     return lwork
 * 
 * cpdef int cgesvdaStridedBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int rank, int m, int n, intptr_t d_A,
 *         int lda, long long int strideA, intptr_t d_S, long long int strideS,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_349cgesvdaStridedBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvdaStridedBatched_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_rank, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_d_A, int __pyx_v_lda, PY_LONG_LONG __pyx_v_strideA, intptr_t __pyx_v_d_S, PY_LONG_LONG __pyx_v_strideS, intptr_t __pyx_v_d_U, int __pyx_v_ldu, PY_LONG_LONG __pyx_v_strideU, intptr_t __pyx_v_d_V, int __pyx_v_ldv, PY_LONG_LONG __pyx_v_strideV, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgesvdaStridedBatched_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2994
 *         long long int strideV, int batchSize):
 *     cdef int lwork
 *     status = cusolverDnCgesvdaStridedBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         <Handle>handle, <EigMode>jobz, rank, m, n, <const cuComplex*>d_A, lda,
 *         strideA, <const float*>d_S, strideS, <const cuComplex*>d_U, ldu,
 */
  __pyx_v_status = cusolverDnCgesvdaStridedBatched_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), __pyx_v_rank, __pyx_v_m, __pyx_v_n, ((cuComplex const *)__pyx_v_d_A), __pyx_v_lda, __pyx_v_strideA, ((float const *)__pyx_v_d_S), __pyx_v_strideS, ((cuComplex const *)__pyx_v_d_U), __pyx_v_ldu, __pyx_v_strideU, ((cuComplex const *)__pyx_v_d_V), __pyx_v_ldv, __pyx_v_strideV, (&__pyx_v_lwork), __pyx_v_batchSize);

  /* "cupy_backends/cuda/libs/cusolver.pyx":2998
 *         strideA, <const float*>d_S, strideS, <const cuComplex*>d_U, ldu,
 *         strideU, <const cuComplex*>d_V, ldv, strideV, &lwork, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2998, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2999
 *         strideU, <const cuComplex*>d_V, ldv, strideV, &lwork, batchSize)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int zgesvdaStridedBatched_bufferSize(
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":2988
 *     return lwork
 * 
 * cpdef int cgesvdaStridedBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int rank, int m, int n, intptr_t d_A,
 *         int lda, long long int strideA, intptr_t d_S, long long int strideS,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.cgesvdaStridedBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_349cgesvdaStridedBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_348cgesvdaStridedBatched_bufferSize[] = "cgesvdaStridedBatched_bufferSize(intptr_t handle, int jobz, int rank, int m, int n, intptr_t d_A, int lda, long long strideA, intptr_t d_S, long long strideS, intptr_t d_U, int ldu, long long strideU, intptr_t d_V, int ldv, long long strideV, int batchSize) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_349cgesvdaStridedBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_rank;
  int __pyx_v_m;
  int __pyx_v_n;
  intptr_t __pyx_v_d_A;
  int __pyx_v_lda;
  PY_LONG_LONG __pyx_v_strideA;
  intptr_t __pyx_v_d_S;
  PY_LONG_LONG __pyx_v_strideS;
  intptr_t __pyx_v_d_U;
  int __pyx_v_ldu;
  PY_LONG_LONG __pyx_v_strideU;
  intptr_t __pyx_v_d_V;
  int __pyx_v_ldv;
  PY_LONG_LONG __pyx_v_strideV;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cgesvdaStridedBatched_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_rank,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_d_A,&__pyx_n_s_lda,&__pyx_n_s_strideA,&__pyx_n_s_d_S,&__pyx_n_s_strideS,&__pyx_n_s_d_U,&__pyx_n_s_ldu,&__pyx_n_s_strideU,&__pyx_n_s_d_V,&__pyx_n_s_ldv,&__pyx_n_s_strideV,&__pyx_n_s_batchSize,0};
    PyObject* values[17] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
        CYTHON_FALLTHROUGH;
        case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
        CYTHON_FALLTHROUGH;
        case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
        CYTHON_FALLTHROUGH;
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched_bufferSize", 1, 17, 17, 1); __PYX_ERR(0, 2988, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rank)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched_bufferSize", 1, 17, 17, 2); __PYX_ERR(0, 2988, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched_bufferSize", 1, 17, 17, 3); __PYX_ERR(0, 2988, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched_bufferSize", 1, 17, 17, 4); __PYX_ERR(0, 2988, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched_bufferSize", 1, 17, 17, 5); __PYX_ERR(0, 2988, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched_bufferSize", 1, 17, 17, 6); __PYX_ERR(0, 2988, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched_bufferSize", 1, 17, 17, 7); __PYX_ERR(0, 2988, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched_bufferSize", 1, 17, 17, 8); __PYX_ERR(0, 2988, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideS)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched_bufferSize", 1, 17, 17, 9); __PYX_ERR(0, 2988, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched_bufferSize", 1, 17, 17, 10); __PYX_ERR(0, 2988, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched_bufferSize", 1, 17, 17, 11); __PYX_ERR(0, 2988, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideU)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched_bufferSize", 1, 17, 17, 12); __PYX_ERR(0, 2988, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (likely((values[13] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_V)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched_bufferSize", 1, 17, 17, 13); __PYX_ERR(0, 2988, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 14:
        if (likely((values[14] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched_bufferSize", 1, 17, 17, 14); __PYX_ERR(0, 2988, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 15:
        if (likely((values[15] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideV)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched_bufferSize", 1, 17, 17, 15); __PYX_ERR(0, 2988, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 16:
        if (likely((values[16] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched_bufferSize", 1, 17, 17, 16); __PYX_ERR(0, 2988, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cgesvdaStridedBatched_bufferSize") < 0)) __PYX_ERR(0, 2988, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 17) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
      values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
      values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
      values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
      values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2989, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2989, __pyx_L3_error)
    __pyx_v_rank = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2989, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2989, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2989, __pyx_L3_error)
    __pyx_v_d_A = PyInt_AsSsize_t(values[5]); if (unlikely((__pyx_v_d_A == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2989, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2990, __pyx_L3_error)
    __pyx_v_strideA = __Pyx_PyInt_As_PY_LONG_LONG(values[7]); if (unlikely((__pyx_v_strideA == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2990, __pyx_L3_error)
    __pyx_v_d_S = PyInt_AsSsize_t(values[8]); if (unlikely((__pyx_v_d_S == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2990, __pyx_L3_error)
    __pyx_v_strideS = __Pyx_PyInt_As_PY_LONG_LONG(values[9]); if (unlikely((__pyx_v_strideS == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2990, __pyx_L3_error)
    __pyx_v_d_U = PyInt_AsSsize_t(values[10]); if (unlikely((__pyx_v_d_U == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2991, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[11]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2991, __pyx_L3_error)
    __pyx_v_strideU = __Pyx_PyInt_As_PY_LONG_LONG(values[12]); if (unlikely((__pyx_v_strideU == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2991, __pyx_L3_error)
    __pyx_v_d_V = PyInt_AsSsize_t(values[13]); if (unlikely((__pyx_v_d_V == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2991, __pyx_L3_error)
    __pyx_v_ldv = __Pyx_PyInt_As_int(values[14]); if (unlikely((__pyx_v_ldv == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2991, __pyx_L3_error)
    __pyx_v_strideV = __Pyx_PyInt_As_PY_LONG_LONG(values[15]); if (unlikely((__pyx_v_strideV == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2992, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[16]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2992, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched_bufferSize", 1, 17, 17, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2988, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgesvdaStridedBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_348cgesvdaStridedBatched_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_rank, __pyx_v_m, __pyx_v_n, __pyx_v_d_A, __pyx_v_lda, __pyx_v_strideA, __pyx_v_d_S, __pyx_v_strideS, __pyx_v_d_U, __pyx_v_ldu, __pyx_v_strideU, __pyx_v_d_V, __pyx_v_ldv, __pyx_v_strideV, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_348cgesvdaStridedBatched_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_rank, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_d_A, int __pyx_v_lda, PY_LONG_LONG __pyx_v_strideA, intptr_t __pyx_v_d_S, PY_LONG_LONG __pyx_v_strideS, intptr_t __pyx_v_d_U, int __pyx_v_ldu, PY_LONG_LONG __pyx_v_strideU, intptr_t __pyx_v_d_V, int __pyx_v_ldv, PY_LONG_LONG __pyx_v_strideV, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgesvdaStridedBatched_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvdaStridedBatched_bufferSize(__pyx_v_handle, __pyx_v_jobz, __pyx_v_rank, __pyx_v_m, __pyx_v_n, __pyx_v_d_A, __pyx_v_lda, __pyx_v_strideA, __pyx_v_d_S, __pyx_v_strideS, __pyx_v_d_U, __pyx_v_ldu, __pyx_v_strideU, __pyx_v_d_V, __pyx_v_ldv, __pyx_v_strideV, __pyx_v_batchSize, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2988, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgesvdaStridedBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3001
 *     return lwork
 * 
 * cpdef int zgesvdaStridedBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int rank, int m, int n, intptr_t d_A,
 *         int lda, long long int strideA, intptr_t d_S, long long int strideS,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_351zgesvdaStridedBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvdaStridedBatched_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_rank, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_d_A, int __pyx_v_lda, PY_LONG_LONG __pyx_v_strideA, intptr_t __pyx_v_d_S, PY_LONG_LONG __pyx_v_strideS, intptr_t __pyx_v_d_U, int __pyx_v_ldu, PY_LONG_LONG __pyx_v_strideU, intptr_t __pyx_v_d_V, int __pyx_v_ldv, PY_LONG_LONG __pyx_v_strideV, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgesvdaStridedBatched_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3007
 *         long long int strideV, int batchSize):
 *     cdef int lwork
 *     status = cusolverDnZgesvdaStridedBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         <Handle>handle, <EigMode>jobz, rank, m, n, <const cuDoubleComplex*>d_A,
 *         lda, strideA, <const double*>d_S, strideS, <const cuDoubleComplex*>d_U,
 */
  __pyx_v_status = cusolverDnZgesvdaStridedBatched_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), __pyx_v_rank, __pyx_v_m, __pyx_v_n, ((cuDoubleComplex const *)__pyx_v_d_A), __pyx_v_lda, __pyx_v_strideA, ((double const *)__pyx_v_d_S), __pyx_v_strideS, ((cuDoubleComplex const *)__pyx_v_d_U), __pyx_v_ldu, __pyx_v_strideU, ((cuDoubleComplex const *)__pyx_v_d_V), __pyx_v_ldv, __pyx_v_strideV, (&__pyx_v_lwork), __pyx_v_batchSize);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3012
 *         ldu, strideU, <const cuDoubleComplex*>d_V, ldv, strideV, &lwork,
 *         batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3012, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3013
 *         batchSize)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef sgesvdaStridedBatched(
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3001
 *     return lwork
 * 
 * cpdef int zgesvdaStridedBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int rank, int m, int n, intptr_t d_A,
 *         int lda, long long int strideA, intptr_t d_S, long long int strideS,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.zgesvdaStridedBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_351zgesvdaStridedBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_350zgesvdaStridedBatched_bufferSize[] = "zgesvdaStridedBatched_bufferSize(intptr_t handle, int jobz, int rank, int m, int n, intptr_t d_A, int lda, long long strideA, intptr_t d_S, long long strideS, intptr_t d_U, int ldu, long long strideU, intptr_t d_V, int ldv, long long strideV, int batchSize) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_351zgesvdaStridedBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_rank;
  int __pyx_v_m;
  int __pyx_v_n;
  intptr_t __pyx_v_d_A;
  int __pyx_v_lda;
  PY_LONG_LONG __pyx_v_strideA;
  intptr_t __pyx_v_d_S;
  PY_LONG_LONG __pyx_v_strideS;
  intptr_t __pyx_v_d_U;
  int __pyx_v_ldu;
  PY_LONG_LONG __pyx_v_strideU;
  intptr_t __pyx_v_d_V;
  int __pyx_v_ldv;
  PY_LONG_LONG __pyx_v_strideV;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zgesvdaStridedBatched_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_rank,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_d_A,&__pyx_n_s_lda,&__pyx_n_s_strideA,&__pyx_n_s_d_S,&__pyx_n_s_strideS,&__pyx_n_s_d_U,&__pyx_n_s_ldu,&__pyx_n_s_strideU,&__pyx_n_s_d_V,&__pyx_n_s_ldv,&__pyx_n_s_strideV,&__pyx_n_s_batchSize,0};
    PyObject* values[17] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
        CYTHON_FALLTHROUGH;
        case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
        CYTHON_FALLTHROUGH;
        case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
        CYTHON_FALLTHROUGH;
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched_bufferSize", 1, 17, 17, 1); __PYX_ERR(0, 3001, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rank)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched_bufferSize", 1, 17, 17, 2); __PYX_ERR(0, 3001, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched_bufferSize", 1, 17, 17, 3); __PYX_ERR(0, 3001, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched_bufferSize", 1, 17, 17, 4); __PYX_ERR(0, 3001, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched_bufferSize", 1, 17, 17, 5); __PYX_ERR(0, 3001, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched_bufferSize", 1, 17, 17, 6); __PYX_ERR(0, 3001, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched_bufferSize", 1, 17, 17, 7); __PYX_ERR(0, 3001, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched_bufferSize", 1, 17, 17, 8); __PYX_ERR(0, 3001, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideS)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched_bufferSize", 1, 17, 17, 9); __PYX_ERR(0, 3001, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched_bufferSize", 1, 17, 17, 10); __PYX_ERR(0, 3001, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched_bufferSize", 1, 17, 17, 11); __PYX_ERR(0, 3001, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideU)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched_bufferSize", 1, 17, 17, 12); __PYX_ERR(0, 3001, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (likely((values[13] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_V)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched_bufferSize", 1, 17, 17, 13); __PYX_ERR(0, 3001, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 14:
        if (likely((values[14] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched_bufferSize", 1, 17, 17, 14); __PYX_ERR(0, 3001, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 15:
        if (likely((values[15] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideV)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched_bufferSize", 1, 17, 17, 15); __PYX_ERR(0, 3001, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 16:
        if (likely((values[16] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched_bufferSize", 1, 17, 17, 16); __PYX_ERR(0, 3001, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zgesvdaStridedBatched_bufferSize") < 0)) __PYX_ERR(0, 3001, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 17) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
      values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
      values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
      values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
      values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3002, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3002, __pyx_L3_error)
    __pyx_v_rank = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3002, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3002, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3002, __pyx_L3_error)
    __pyx_v_d_A = PyInt_AsSsize_t(values[5]); if (unlikely((__pyx_v_d_A == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3002, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3003, __pyx_L3_error)
    __pyx_v_strideA = __Pyx_PyInt_As_PY_LONG_LONG(values[7]); if (unlikely((__pyx_v_strideA == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3003, __pyx_L3_error)
    __pyx_v_d_S = PyInt_AsSsize_t(values[8]); if (unlikely((__pyx_v_d_S == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3003, __pyx_L3_error)
    __pyx_v_strideS = __Pyx_PyInt_As_PY_LONG_LONG(values[9]); if (unlikely((__pyx_v_strideS == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3003, __pyx_L3_error)
    __pyx_v_d_U = PyInt_AsSsize_t(values[10]); if (unlikely((__pyx_v_d_U == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3004, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[11]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3004, __pyx_L3_error)
    __pyx_v_strideU = __Pyx_PyInt_As_PY_LONG_LONG(values[12]); if (unlikely((__pyx_v_strideU == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3004, __pyx_L3_error)
    __pyx_v_d_V = PyInt_AsSsize_t(values[13]); if (unlikely((__pyx_v_d_V == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3004, __pyx_L3_error)
    __pyx_v_ldv = __Pyx_PyInt_As_int(values[14]); if (unlikely((__pyx_v_ldv == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3004, __pyx_L3_error)
    __pyx_v_strideV = __Pyx_PyInt_As_PY_LONG_LONG(values[15]); if (unlikely((__pyx_v_strideV == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3005, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[16]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3005, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched_bufferSize", 1, 17, 17, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3001, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgesvdaStridedBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_350zgesvdaStridedBatched_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_rank, __pyx_v_m, __pyx_v_n, __pyx_v_d_A, __pyx_v_lda, __pyx_v_strideA, __pyx_v_d_S, __pyx_v_strideS, __pyx_v_d_U, __pyx_v_ldu, __pyx_v_strideU, __pyx_v_d_V, __pyx_v_ldv, __pyx_v_strideV, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_350zgesvdaStridedBatched_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_rank, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_d_A, int __pyx_v_lda, PY_LONG_LONG __pyx_v_strideA, intptr_t __pyx_v_d_S, PY_LONG_LONG __pyx_v_strideS, intptr_t __pyx_v_d_U, int __pyx_v_ldu, PY_LONG_LONG __pyx_v_strideU, intptr_t __pyx_v_d_V, int __pyx_v_ldv, PY_LONG_LONG __pyx_v_strideV, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgesvdaStridedBatched_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvdaStridedBatched_bufferSize(__pyx_v_handle, __pyx_v_jobz, __pyx_v_rank, __pyx_v_m, __pyx_v_n, __pyx_v_d_A, __pyx_v_lda, __pyx_v_strideA, __pyx_v_d_S, __pyx_v_strideS, __pyx_v_d_U, __pyx_v_ldu, __pyx_v_strideU, __pyx_v_d_V, __pyx_v_ldv, __pyx_v_strideV, __pyx_v_batchSize, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgesvdaStridedBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3015
 *     return lwork
 * 
 * cpdef sgesvdaStridedBatched(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int rank, int m, int n, intptr_t d_A,
 *         int lda, long long int strideA, intptr_t d_S, long long int strideS,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_353sgesvdaStridedBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvdaStridedBatched(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_rank, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_d_A, int __pyx_v_lda, PY_LONG_LONG __pyx_v_strideA, intptr_t __pyx_v_d_S, PY_LONG_LONG __pyx_v_strideS, intptr_t __pyx_v_d_U, int __pyx_v_ldu, PY_LONG_LONG __pyx_v_strideU, intptr_t __pyx_v_d_V, int __pyx_v_ldv, PY_LONG_LONG __pyx_v_strideV, intptr_t __pyx_v_d_work, int __pyx_v_lwork, intptr_t __pyx_v_d_info, intptr_t __pyx_v_h_R_nrmF, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgesvdaStridedBatched", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3021
 *         long long int strideV, intptr_t d_work, int lwork, intptr_t d_info,
 *         intptr_t h_R_nrmF, int batchSize):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSgesvdaStridedBatched(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3021, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3022
 *         intptr_t h_R_nrmF, int batchSize):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgesvdaStridedBatched(
 *             <Handle>handle, <EigMode>jobz, rank, m, n, <const float*>d_A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3023
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSgesvdaStridedBatched(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, rank, m, n, <const float*>d_A, lda,
 *             strideA, <float*>d_S, strideS, <float*>d_U, ldu, strideU,
 */
        __pyx_v_status = cusolverDnSgesvdaStridedBatched(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), __pyx_v_rank, __pyx_v_m, __pyx_v_n, ((float const *)__pyx_v_d_A), __pyx_v_lda, __pyx_v_strideA, ((float *)__pyx_v_d_S), __pyx_v_strideS, ((float *)__pyx_v_d_U), __pyx_v_ldu, __pyx_v_strideU, ((float *)__pyx_v_d_V), __pyx_v_ldv, __pyx_v_strideV, ((float *)__pyx_v_d_work), __pyx_v_lwork, ((int *)__pyx_v_d_info), ((double *)__pyx_v_h_R_nrmF), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3022
 *         intptr_t h_R_nrmF, int batchSize):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSgesvdaStridedBatched(
 *             <Handle>handle, <EigMode>jobz, rank, m, n, <const float*>d_A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3028
 *             <float*>d_V, ldv, strideV, <float*>d_work, lwork, <int*>d_info,
 *             <double*>h_R_nrmF, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef dgesvdaStridedBatched(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3028, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3015
 *     return lwork
 * 
 * cpdef sgesvdaStridedBatched(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int rank, int m, int n, intptr_t d_A,
 *         int lda, long long int strideA, intptr_t d_S, long long int strideS,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgesvdaStridedBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_353sgesvdaStridedBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_352sgesvdaStridedBatched[] = "sgesvdaStridedBatched(intptr_t handle, int jobz, int rank, int m, int n, intptr_t d_A, int lda, long long strideA, intptr_t d_S, long long strideS, intptr_t d_U, int ldu, long long strideU, intptr_t d_V, int ldv, long long strideV, intptr_t d_work, int lwork, intptr_t d_info, intptr_t h_R_nrmF, int batchSize)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_353sgesvdaStridedBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_rank;
  int __pyx_v_m;
  int __pyx_v_n;
  intptr_t __pyx_v_d_A;
  int __pyx_v_lda;
  PY_LONG_LONG __pyx_v_strideA;
  intptr_t __pyx_v_d_S;
  PY_LONG_LONG __pyx_v_strideS;
  intptr_t __pyx_v_d_U;
  int __pyx_v_ldu;
  PY_LONG_LONG __pyx_v_strideU;
  intptr_t __pyx_v_d_V;
  int __pyx_v_ldv;
  PY_LONG_LONG __pyx_v_strideV;
  intptr_t __pyx_v_d_work;
  int __pyx_v_lwork;
  intptr_t __pyx_v_d_info;
  intptr_t __pyx_v_h_R_nrmF;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sgesvdaStridedBatched (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_rank,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_d_A,&__pyx_n_s_lda,&__pyx_n_s_strideA,&__pyx_n_s_d_S,&__pyx_n_s_strideS,&__pyx_n_s_d_U,&__pyx_n_s_ldu,&__pyx_n_s_strideU,&__pyx_n_s_d_V,&__pyx_n_s_ldv,&__pyx_n_s_strideV,&__pyx_n_s_d_work,&__pyx_n_s_lwork,&__pyx_n_s_d_info,&__pyx_n_s_h_R_nrmF,&__pyx_n_s_batchSize,0};
    PyObject* values[21] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 21: values[20] = PyTuple_GET_ITEM(__pyx_args, 20);
        CYTHON_FALLTHROUGH;
        case 20: values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
        CYTHON_FALLTHROUGH;
        case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
        CYTHON_FALLTHROUGH;
        case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
        CYTHON_FALLTHROUGH;
        case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
        CYTHON_FALLTHROUGH;
        case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
        CYTHON_FALLTHROUGH;
        case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
        CYTHON_FALLTHROUGH;
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched", 1, 21, 21, 1); __PYX_ERR(0, 3015, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rank)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched", 1, 21, 21, 2); __PYX_ERR(0, 3015, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched", 1, 21, 21, 3); __PYX_ERR(0, 3015, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched", 1, 21, 21, 4); __PYX_ERR(0, 3015, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched", 1, 21, 21, 5); __PYX_ERR(0, 3015, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched", 1, 21, 21, 6); __PYX_ERR(0, 3015, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched", 1, 21, 21, 7); __PYX_ERR(0, 3015, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched", 1, 21, 21, 8); __PYX_ERR(0, 3015, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideS)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched", 1, 21, 21, 9); __PYX_ERR(0, 3015, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched", 1, 21, 21, 10); __PYX_ERR(0, 3015, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched", 1, 21, 21, 11); __PYX_ERR(0, 3015, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideU)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched", 1, 21, 21, 12); __PYX_ERR(0, 3015, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (likely((values[13] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_V)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched", 1, 21, 21, 13); __PYX_ERR(0, 3015, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 14:
        if (likely((values[14] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched", 1, 21, 21, 14); __PYX_ERR(0, 3015, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 15:
        if (likely((values[15] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideV)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched", 1, 21, 21, 15); __PYX_ERR(0, 3015, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 16:
        if (likely((values[16] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched", 1, 21, 21, 16); __PYX_ERR(0, 3015, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 17:
        if (likely((values[17] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched", 1, 21, 21, 17); __PYX_ERR(0, 3015, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 18:
        if (likely((values[18] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched", 1, 21, 21, 18); __PYX_ERR(0, 3015, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 19:
        if (likely((values[19] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h_R_nrmF)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched", 1, 21, 21, 19); __PYX_ERR(0, 3015, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 20:
        if (likely((values[20] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched", 1, 21, 21, 20); __PYX_ERR(0, 3015, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sgesvdaStridedBatched") < 0)) __PYX_ERR(0, 3015, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 21) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
      values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
      values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
      values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
      values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
      values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
      values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
      values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
      values[20] = PyTuple_GET_ITEM(__pyx_args, 20);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3016, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3016, __pyx_L3_error)
    __pyx_v_rank = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3016, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3016, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3016, __pyx_L3_error)
    __pyx_v_d_A = PyInt_AsSsize_t(values[5]); if (unlikely((__pyx_v_d_A == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3016, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3017, __pyx_L3_error)
    __pyx_v_strideA = __Pyx_PyInt_As_PY_LONG_LONG(values[7]); if (unlikely((__pyx_v_strideA == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3017, __pyx_L3_error)
    __pyx_v_d_S = PyInt_AsSsize_t(values[8]); if (unlikely((__pyx_v_d_S == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3017, __pyx_L3_error)
    __pyx_v_strideS = __Pyx_PyInt_As_PY_LONG_LONG(values[9]); if (unlikely((__pyx_v_strideS == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3017, __pyx_L3_error)
    __pyx_v_d_U = PyInt_AsSsize_t(values[10]); if (unlikely((__pyx_v_d_U == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3018, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[11]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3018, __pyx_L3_error)
    __pyx_v_strideU = __Pyx_PyInt_As_PY_LONG_LONG(values[12]); if (unlikely((__pyx_v_strideU == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3018, __pyx_L3_error)
    __pyx_v_d_V = PyInt_AsSsize_t(values[13]); if (unlikely((__pyx_v_d_V == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3018, __pyx_L3_error)
    __pyx_v_ldv = __Pyx_PyInt_As_int(values[14]); if (unlikely((__pyx_v_ldv == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3018, __pyx_L3_error)
    __pyx_v_strideV = __Pyx_PyInt_As_PY_LONG_LONG(values[15]); if (unlikely((__pyx_v_strideV == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3019, __pyx_L3_error)
    __pyx_v_d_work = PyInt_AsSsize_t(values[16]); if (unlikely((__pyx_v_d_work == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3019, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[17]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3019, __pyx_L3_error)
    __pyx_v_d_info = PyInt_AsSsize_t(values[18]); if (unlikely((__pyx_v_d_info == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3019, __pyx_L3_error)
    __pyx_v_h_R_nrmF = PyInt_AsSsize_t(values[19]); if (unlikely((__pyx_v_h_R_nrmF == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3020, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[20]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3020, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sgesvdaStridedBatched", 1, 21, 21, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3015, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgesvdaStridedBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_352sgesvdaStridedBatched(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_rank, __pyx_v_m, __pyx_v_n, __pyx_v_d_A, __pyx_v_lda, __pyx_v_strideA, __pyx_v_d_S, __pyx_v_strideS, __pyx_v_d_U, __pyx_v_ldu, __pyx_v_strideU, __pyx_v_d_V, __pyx_v_ldv, __pyx_v_strideV, __pyx_v_d_work, __pyx_v_lwork, __pyx_v_d_info, __pyx_v_h_R_nrmF, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_352sgesvdaStridedBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_rank, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_d_A, int __pyx_v_lda, PY_LONG_LONG __pyx_v_strideA, intptr_t __pyx_v_d_S, PY_LONG_LONG __pyx_v_strideS, intptr_t __pyx_v_d_U, int __pyx_v_ldu, PY_LONG_LONG __pyx_v_strideU, intptr_t __pyx_v_d_V, int __pyx_v_ldv, PY_LONG_LONG __pyx_v_strideV, intptr_t __pyx_v_d_work, int __pyx_v_lwork, intptr_t __pyx_v_d_info, intptr_t __pyx_v_h_R_nrmF, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sgesvdaStridedBatched", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvdaStridedBatched(__pyx_v_handle, __pyx_v_jobz, __pyx_v_rank, __pyx_v_m, __pyx_v_n, __pyx_v_d_A, __pyx_v_lda, __pyx_v_strideA, __pyx_v_d_S, __pyx_v_strideS, __pyx_v_d_U, __pyx_v_ldu, __pyx_v_strideU, __pyx_v_d_V, __pyx_v_ldv, __pyx_v_strideV, __pyx_v_d_work, __pyx_v_lwork, __pyx_v_d_info, __pyx_v_h_R_nrmF, __pyx_v_batchSize, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3015, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.sgesvdaStridedBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3030
 *     check_status(status)
 * 
 * cpdef dgesvdaStridedBatched(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int rank, int m, int n, intptr_t d_A,
 *         int lda, long long int strideA, intptr_t d_S, long long int strideS,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_355dgesvdaStridedBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvdaStridedBatched(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_rank, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_d_A, int __pyx_v_lda, PY_LONG_LONG __pyx_v_strideA, intptr_t __pyx_v_d_S, PY_LONG_LONG __pyx_v_strideS, intptr_t __pyx_v_d_U, int __pyx_v_ldu, PY_LONG_LONG __pyx_v_strideU, intptr_t __pyx_v_d_V, int __pyx_v_ldv, PY_LONG_LONG __pyx_v_strideV, intptr_t __pyx_v_d_work, int __pyx_v_lwork, intptr_t __pyx_v_d_info, intptr_t __pyx_v_h_R_nrmF, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgesvdaStridedBatched", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3036
 *         long long int strideV, intptr_t d_work, int lwork, intptr_t d_info,
 *         intptr_t h_R_nrmF, int batchSize):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDgesvdaStridedBatched(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3036, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3037
 *         intptr_t h_R_nrmF, int batchSize):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgesvdaStridedBatched(
 *             <Handle>handle, <EigMode>jobz, rank, m, n, <const double*>d_A, lda,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3038
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDgesvdaStridedBatched(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, rank, m, n, <const double*>d_A, lda,
 *             strideA, <double*>d_S, strideS, <double*>d_U, ldu, strideU,
 */
        __pyx_v_status = cusolverDnDgesvdaStridedBatched(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), __pyx_v_rank, __pyx_v_m, __pyx_v_n, ((double const *)__pyx_v_d_A), __pyx_v_lda, __pyx_v_strideA, ((double *)__pyx_v_d_S), __pyx_v_strideS, ((double *)__pyx_v_d_U), __pyx_v_ldu, __pyx_v_strideU, ((double *)__pyx_v_d_V), __pyx_v_ldv, __pyx_v_strideV, ((double *)__pyx_v_d_work), __pyx_v_lwork, ((int *)__pyx_v_d_info), ((double *)__pyx_v_h_R_nrmF), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3037
 *         intptr_t h_R_nrmF, int batchSize):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDgesvdaStridedBatched(
 *             <Handle>handle, <EigMode>jobz, rank, m, n, <const double*>d_A, lda,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3043
 *             <double*>d_V, ldv, strideV, <double*>d_work, lwork, <int*>d_info,
 *             <double*>h_R_nrmF, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef cgesvdaStridedBatched(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3043, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3030
 *     check_status(status)
 * 
 * cpdef dgesvdaStridedBatched(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int rank, int m, int n, intptr_t d_A,
 *         int lda, long long int strideA, intptr_t d_S, long long int strideS,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgesvdaStridedBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_355dgesvdaStridedBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_354dgesvdaStridedBatched[] = "dgesvdaStridedBatched(intptr_t handle, int jobz, int rank, int m, int n, intptr_t d_A, int lda, long long strideA, intptr_t d_S, long long strideS, intptr_t d_U, int ldu, long long strideU, intptr_t d_V, int ldv, long long strideV, intptr_t d_work, int lwork, intptr_t d_info, intptr_t h_R_nrmF, int batchSize)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_355dgesvdaStridedBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_rank;
  int __pyx_v_m;
  int __pyx_v_n;
  intptr_t __pyx_v_d_A;
  int __pyx_v_lda;
  PY_LONG_LONG __pyx_v_strideA;
  intptr_t __pyx_v_d_S;
  PY_LONG_LONG __pyx_v_strideS;
  intptr_t __pyx_v_d_U;
  int __pyx_v_ldu;
  PY_LONG_LONG __pyx_v_strideU;
  intptr_t __pyx_v_d_V;
  int __pyx_v_ldv;
  PY_LONG_LONG __pyx_v_strideV;
  intptr_t __pyx_v_d_work;
  int __pyx_v_lwork;
  intptr_t __pyx_v_d_info;
  intptr_t __pyx_v_h_R_nrmF;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dgesvdaStridedBatched (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_rank,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_d_A,&__pyx_n_s_lda,&__pyx_n_s_strideA,&__pyx_n_s_d_S,&__pyx_n_s_strideS,&__pyx_n_s_d_U,&__pyx_n_s_ldu,&__pyx_n_s_strideU,&__pyx_n_s_d_V,&__pyx_n_s_ldv,&__pyx_n_s_strideV,&__pyx_n_s_d_work,&__pyx_n_s_lwork,&__pyx_n_s_d_info,&__pyx_n_s_h_R_nrmF,&__pyx_n_s_batchSize,0};
    PyObject* values[21] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 21: values[20] = PyTuple_GET_ITEM(__pyx_args, 20);
        CYTHON_FALLTHROUGH;
        case 20: values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
        CYTHON_FALLTHROUGH;
        case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
        CYTHON_FALLTHROUGH;
        case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
        CYTHON_FALLTHROUGH;
        case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
        CYTHON_FALLTHROUGH;
        case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
        CYTHON_FALLTHROUGH;
        case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
        CYTHON_FALLTHROUGH;
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched", 1, 21, 21, 1); __PYX_ERR(0, 3030, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rank)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched", 1, 21, 21, 2); __PYX_ERR(0, 3030, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched", 1, 21, 21, 3); __PYX_ERR(0, 3030, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched", 1, 21, 21, 4); __PYX_ERR(0, 3030, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched", 1, 21, 21, 5); __PYX_ERR(0, 3030, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched", 1, 21, 21, 6); __PYX_ERR(0, 3030, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched", 1, 21, 21, 7); __PYX_ERR(0, 3030, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched", 1, 21, 21, 8); __PYX_ERR(0, 3030, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideS)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched", 1, 21, 21, 9); __PYX_ERR(0, 3030, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched", 1, 21, 21, 10); __PYX_ERR(0, 3030, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched", 1, 21, 21, 11); __PYX_ERR(0, 3030, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideU)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched", 1, 21, 21, 12); __PYX_ERR(0, 3030, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (likely((values[13] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_V)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched", 1, 21, 21, 13); __PYX_ERR(0, 3030, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 14:
        if (likely((values[14] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched", 1, 21, 21, 14); __PYX_ERR(0, 3030, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 15:
        if (likely((values[15] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideV)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched", 1, 21, 21, 15); __PYX_ERR(0, 3030, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 16:
        if (likely((values[16] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched", 1, 21, 21, 16); __PYX_ERR(0, 3030, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 17:
        if (likely((values[17] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched", 1, 21, 21, 17); __PYX_ERR(0, 3030, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 18:
        if (likely((values[18] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched", 1, 21, 21, 18); __PYX_ERR(0, 3030, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 19:
        if (likely((values[19] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h_R_nrmF)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched", 1, 21, 21, 19); __PYX_ERR(0, 3030, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 20:
        if (likely((values[20] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched", 1, 21, 21, 20); __PYX_ERR(0, 3030, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dgesvdaStridedBatched") < 0)) __PYX_ERR(0, 3030, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 21) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
      values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
      values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
      values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
      values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
      values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
      values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
      values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
      values[20] = PyTuple_GET_ITEM(__pyx_args, 20);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3031, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3031, __pyx_L3_error)
    __pyx_v_rank = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3031, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3031, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3031, __pyx_L3_error)
    __pyx_v_d_A = PyInt_AsSsize_t(values[5]); if (unlikely((__pyx_v_d_A == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3031, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3032, __pyx_L3_error)
    __pyx_v_strideA = __Pyx_PyInt_As_PY_LONG_LONG(values[7]); if (unlikely((__pyx_v_strideA == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3032, __pyx_L3_error)
    __pyx_v_d_S = PyInt_AsSsize_t(values[8]); if (unlikely((__pyx_v_d_S == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3032, __pyx_L3_error)
    __pyx_v_strideS = __Pyx_PyInt_As_PY_LONG_LONG(values[9]); if (unlikely((__pyx_v_strideS == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3032, __pyx_L3_error)
    __pyx_v_d_U = PyInt_AsSsize_t(values[10]); if (unlikely((__pyx_v_d_U == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3033, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[11]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3033, __pyx_L3_error)
    __pyx_v_strideU = __Pyx_PyInt_As_PY_LONG_LONG(values[12]); if (unlikely((__pyx_v_strideU == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3033, __pyx_L3_error)
    __pyx_v_d_V = PyInt_AsSsize_t(values[13]); if (unlikely((__pyx_v_d_V == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3033, __pyx_L3_error)
    __pyx_v_ldv = __Pyx_PyInt_As_int(values[14]); if (unlikely((__pyx_v_ldv == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3033, __pyx_L3_error)
    __pyx_v_strideV = __Pyx_PyInt_As_PY_LONG_LONG(values[15]); if (unlikely((__pyx_v_strideV == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3034, __pyx_L3_error)
    __pyx_v_d_work = PyInt_AsSsize_t(values[16]); if (unlikely((__pyx_v_d_work == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3034, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[17]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3034, __pyx_L3_error)
    __pyx_v_d_info = PyInt_AsSsize_t(values[18]); if (unlikely((__pyx_v_d_info == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3034, __pyx_L3_error)
    __pyx_v_h_R_nrmF = PyInt_AsSsize_t(values[19]); if (unlikely((__pyx_v_h_R_nrmF == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3035, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[20]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3035, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dgesvdaStridedBatched", 1, 21, 21, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3030, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgesvdaStridedBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_354dgesvdaStridedBatched(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_rank, __pyx_v_m, __pyx_v_n, __pyx_v_d_A, __pyx_v_lda, __pyx_v_strideA, __pyx_v_d_S, __pyx_v_strideS, __pyx_v_d_U, __pyx_v_ldu, __pyx_v_strideU, __pyx_v_d_V, __pyx_v_ldv, __pyx_v_strideV, __pyx_v_d_work, __pyx_v_lwork, __pyx_v_d_info, __pyx_v_h_R_nrmF, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_354dgesvdaStridedBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_rank, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_d_A, int __pyx_v_lda, PY_LONG_LONG __pyx_v_strideA, intptr_t __pyx_v_d_S, PY_LONG_LONG __pyx_v_strideS, intptr_t __pyx_v_d_U, int __pyx_v_ldu, PY_LONG_LONG __pyx_v_strideU, intptr_t __pyx_v_d_V, int __pyx_v_ldv, PY_LONG_LONG __pyx_v_strideV, intptr_t __pyx_v_d_work, int __pyx_v_lwork, intptr_t __pyx_v_d_info, intptr_t __pyx_v_h_R_nrmF, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dgesvdaStridedBatched", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvdaStridedBatched(__pyx_v_handle, __pyx_v_jobz, __pyx_v_rank, __pyx_v_m, __pyx_v_n, __pyx_v_d_A, __pyx_v_lda, __pyx_v_strideA, __pyx_v_d_S, __pyx_v_strideS, __pyx_v_d_U, __pyx_v_ldu, __pyx_v_strideU, __pyx_v_d_V, __pyx_v_ldv, __pyx_v_strideV, __pyx_v_d_work, __pyx_v_lwork, __pyx_v_d_info, __pyx_v_h_R_nrmF, __pyx_v_batchSize, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dgesvdaStridedBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3045
 *     check_status(status)
 * 
 * cpdef cgesvdaStridedBatched(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int rank, int m, int n, intptr_t d_A,
 *         int lda, long long int strideA, intptr_t d_S, long long int strideS,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_357cgesvdaStridedBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvdaStridedBatched(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_rank, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_d_A, int __pyx_v_lda, PY_LONG_LONG __pyx_v_strideA, intptr_t __pyx_v_d_S, PY_LONG_LONG __pyx_v_strideS, intptr_t __pyx_v_d_U, int __pyx_v_ldu, PY_LONG_LONG __pyx_v_strideU, intptr_t __pyx_v_d_V, int __pyx_v_ldv, PY_LONG_LONG __pyx_v_strideV, intptr_t __pyx_v_d_work, int __pyx_v_lwork, intptr_t __pyx_v_d_info, intptr_t __pyx_v_h_R_nrmF, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgesvdaStridedBatched", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3051
 *         long long int strideV, intptr_t d_work, int lwork, intptr_t d_info,
 *         intptr_t h_R_nrmF, int batchSize):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCgesvdaStridedBatched(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3051, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3052
 *         intptr_t h_R_nrmF, int batchSize):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgesvdaStridedBatched(
 *             <Handle>handle, <EigMode>jobz, rank, m, n, <const cuComplex*>d_A,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3053
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCgesvdaStridedBatched(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, rank, m, n, <const cuComplex*>d_A,
 *             lda, strideA, <float*>d_S, strideS, <cuComplex*>d_U, ldu, strideU,
 */
        __pyx_v_status = cusolverDnCgesvdaStridedBatched(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), __pyx_v_rank, __pyx_v_m, __pyx_v_n, ((cuComplex const *)__pyx_v_d_A), __pyx_v_lda, __pyx_v_strideA, ((float *)__pyx_v_d_S), __pyx_v_strideS, ((cuComplex *)__pyx_v_d_U), __pyx_v_ldu, __pyx_v_strideU, ((cuComplex *)__pyx_v_d_V), __pyx_v_ldv, __pyx_v_strideV, ((cuComplex *)__pyx_v_d_work), __pyx_v_lwork, ((int *)__pyx_v_d_info), ((double *)__pyx_v_h_R_nrmF), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3052
 *         intptr_t h_R_nrmF, int batchSize):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCgesvdaStridedBatched(
 *             <Handle>handle, <EigMode>jobz, rank, m, n, <const cuComplex*>d_A,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3058
 *             <cuComplex*>d_V, ldv, strideV, <cuComplex*>d_work, lwork,
 *             <int*>d_info, <double*>h_R_nrmF, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef zgesvdaStridedBatched(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3058, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3045
 *     check_status(status)
 * 
 * cpdef cgesvdaStridedBatched(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int rank, int m, int n, intptr_t d_A,
 *         int lda, long long int strideA, intptr_t d_S, long long int strideS,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgesvdaStridedBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_357cgesvdaStridedBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_356cgesvdaStridedBatched[] = "cgesvdaStridedBatched(intptr_t handle, int jobz, int rank, int m, int n, intptr_t d_A, int lda, long long strideA, intptr_t d_S, long long strideS, intptr_t d_U, int ldu, long long strideU, intptr_t d_V, int ldv, long long strideV, intptr_t d_work, int lwork, intptr_t d_info, intptr_t h_R_nrmF, int batchSize)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_357cgesvdaStridedBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_rank;
  int __pyx_v_m;
  int __pyx_v_n;
  intptr_t __pyx_v_d_A;
  int __pyx_v_lda;
  PY_LONG_LONG __pyx_v_strideA;
  intptr_t __pyx_v_d_S;
  PY_LONG_LONG __pyx_v_strideS;
  intptr_t __pyx_v_d_U;
  int __pyx_v_ldu;
  PY_LONG_LONG __pyx_v_strideU;
  intptr_t __pyx_v_d_V;
  int __pyx_v_ldv;
  PY_LONG_LONG __pyx_v_strideV;
  intptr_t __pyx_v_d_work;
  int __pyx_v_lwork;
  intptr_t __pyx_v_d_info;
  intptr_t __pyx_v_h_R_nrmF;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cgesvdaStridedBatched (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_rank,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_d_A,&__pyx_n_s_lda,&__pyx_n_s_strideA,&__pyx_n_s_d_S,&__pyx_n_s_strideS,&__pyx_n_s_d_U,&__pyx_n_s_ldu,&__pyx_n_s_strideU,&__pyx_n_s_d_V,&__pyx_n_s_ldv,&__pyx_n_s_strideV,&__pyx_n_s_d_work,&__pyx_n_s_lwork,&__pyx_n_s_d_info,&__pyx_n_s_h_R_nrmF,&__pyx_n_s_batchSize,0};
    PyObject* values[21] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 21: values[20] = PyTuple_GET_ITEM(__pyx_args, 20);
        CYTHON_FALLTHROUGH;
        case 20: values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
        CYTHON_FALLTHROUGH;
        case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
        CYTHON_FALLTHROUGH;
        case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
        CYTHON_FALLTHROUGH;
        case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
        CYTHON_FALLTHROUGH;
        case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
        CYTHON_FALLTHROUGH;
        case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
        CYTHON_FALLTHROUGH;
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched", 1, 21, 21, 1); __PYX_ERR(0, 3045, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rank)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched", 1, 21, 21, 2); __PYX_ERR(0, 3045, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched", 1, 21, 21, 3); __PYX_ERR(0, 3045, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched", 1, 21, 21, 4); __PYX_ERR(0, 3045, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched", 1, 21, 21, 5); __PYX_ERR(0, 3045, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched", 1, 21, 21, 6); __PYX_ERR(0, 3045, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched", 1, 21, 21, 7); __PYX_ERR(0, 3045, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched", 1, 21, 21, 8); __PYX_ERR(0, 3045, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideS)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched", 1, 21, 21, 9); __PYX_ERR(0, 3045, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched", 1, 21, 21, 10); __PYX_ERR(0, 3045, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched", 1, 21, 21, 11); __PYX_ERR(0, 3045, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideU)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched", 1, 21, 21, 12); __PYX_ERR(0, 3045, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (likely((values[13] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_V)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched", 1, 21, 21, 13); __PYX_ERR(0, 3045, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 14:
        if (likely((values[14] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched", 1, 21, 21, 14); __PYX_ERR(0, 3045, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 15:
        if (likely((values[15] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideV)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched", 1, 21, 21, 15); __PYX_ERR(0, 3045, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 16:
        if (likely((values[16] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched", 1, 21, 21, 16); __PYX_ERR(0, 3045, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 17:
        if (likely((values[17] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched", 1, 21, 21, 17); __PYX_ERR(0, 3045, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 18:
        if (likely((values[18] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched", 1, 21, 21, 18); __PYX_ERR(0, 3045, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 19:
        if (likely((values[19] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h_R_nrmF)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched", 1, 21, 21, 19); __PYX_ERR(0, 3045, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 20:
        if (likely((values[20] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched", 1, 21, 21, 20); __PYX_ERR(0, 3045, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cgesvdaStridedBatched") < 0)) __PYX_ERR(0, 3045, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 21) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
      values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
      values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
      values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
      values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
      values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
      values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
      values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
      values[20] = PyTuple_GET_ITEM(__pyx_args, 20);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3046, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3046, __pyx_L3_error)
    __pyx_v_rank = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3046, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3046, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3046, __pyx_L3_error)
    __pyx_v_d_A = PyInt_AsSsize_t(values[5]); if (unlikely((__pyx_v_d_A == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3046, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3047, __pyx_L3_error)
    __pyx_v_strideA = __Pyx_PyInt_As_PY_LONG_LONG(values[7]); if (unlikely((__pyx_v_strideA == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3047, __pyx_L3_error)
    __pyx_v_d_S = PyInt_AsSsize_t(values[8]); if (unlikely((__pyx_v_d_S == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3047, __pyx_L3_error)
    __pyx_v_strideS = __Pyx_PyInt_As_PY_LONG_LONG(values[9]); if (unlikely((__pyx_v_strideS == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3047, __pyx_L3_error)
    __pyx_v_d_U = PyInt_AsSsize_t(values[10]); if (unlikely((__pyx_v_d_U == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3048, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[11]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3048, __pyx_L3_error)
    __pyx_v_strideU = __Pyx_PyInt_As_PY_LONG_LONG(values[12]); if (unlikely((__pyx_v_strideU == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3048, __pyx_L3_error)
    __pyx_v_d_V = PyInt_AsSsize_t(values[13]); if (unlikely((__pyx_v_d_V == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3048, __pyx_L3_error)
    __pyx_v_ldv = __Pyx_PyInt_As_int(values[14]); if (unlikely((__pyx_v_ldv == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3048, __pyx_L3_error)
    __pyx_v_strideV = __Pyx_PyInt_As_PY_LONG_LONG(values[15]); if (unlikely((__pyx_v_strideV == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3049, __pyx_L3_error)
    __pyx_v_d_work = PyInt_AsSsize_t(values[16]); if (unlikely((__pyx_v_d_work == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3049, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[17]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3049, __pyx_L3_error)
    __pyx_v_d_info = PyInt_AsSsize_t(values[18]); if (unlikely((__pyx_v_d_info == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3049, __pyx_L3_error)
    __pyx_v_h_R_nrmF = PyInt_AsSsize_t(values[19]); if (unlikely((__pyx_v_h_R_nrmF == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3050, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[20]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3050, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cgesvdaStridedBatched", 1, 21, 21, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3045, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgesvdaStridedBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_356cgesvdaStridedBatched(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_rank, __pyx_v_m, __pyx_v_n, __pyx_v_d_A, __pyx_v_lda, __pyx_v_strideA, __pyx_v_d_S, __pyx_v_strideS, __pyx_v_d_U, __pyx_v_ldu, __pyx_v_strideU, __pyx_v_d_V, __pyx_v_ldv, __pyx_v_strideV, __pyx_v_d_work, __pyx_v_lwork, __pyx_v_d_info, __pyx_v_h_R_nrmF, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_356cgesvdaStridedBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_rank, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_d_A, int __pyx_v_lda, PY_LONG_LONG __pyx_v_strideA, intptr_t __pyx_v_d_S, PY_LONG_LONG __pyx_v_strideS, intptr_t __pyx_v_d_U, int __pyx_v_ldu, PY_LONG_LONG __pyx_v_strideU, intptr_t __pyx_v_d_V, int __pyx_v_ldv, PY_LONG_LONG __pyx_v_strideV, intptr_t __pyx_v_d_work, int __pyx_v_lwork, intptr_t __pyx_v_d_info, intptr_t __pyx_v_h_R_nrmF, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cgesvdaStridedBatched", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvdaStridedBatched(__pyx_v_handle, __pyx_v_jobz, __pyx_v_rank, __pyx_v_m, __pyx_v_n, __pyx_v_d_A, __pyx_v_lda, __pyx_v_strideA, __pyx_v_d_S, __pyx_v_strideS, __pyx_v_d_U, __pyx_v_ldu, __pyx_v_strideU, __pyx_v_d_V, __pyx_v_ldv, __pyx_v_strideV, __pyx_v_d_work, __pyx_v_lwork, __pyx_v_d_info, __pyx_v_h_R_nrmF, __pyx_v_batchSize, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3045, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cgesvdaStridedBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3060
 *     check_status(status)
 * 
 * cpdef zgesvdaStridedBatched(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int rank, int m, int n, intptr_t d_A,
 *         int lda, long long int strideA, intptr_t d_S, long long int strideS,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_359zgesvdaStridedBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvdaStridedBatched(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_rank, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_d_A, int __pyx_v_lda, PY_LONG_LONG __pyx_v_strideA, intptr_t __pyx_v_d_S, PY_LONG_LONG __pyx_v_strideS, intptr_t __pyx_v_d_U, int __pyx_v_ldu, PY_LONG_LONG __pyx_v_strideU, intptr_t __pyx_v_d_V, int __pyx_v_ldv, PY_LONG_LONG __pyx_v_strideV, intptr_t __pyx_v_d_work, int __pyx_v_lwork, intptr_t __pyx_v_d_info, intptr_t __pyx_v_h_R_nrmF, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgesvdaStridedBatched", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3066
 *         long long int strideV, intptr_t d_work, int lwork, intptr_t d_info,
 *         intptr_t h_R_nrmF, int batchSize):
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZgesvdaStridedBatched(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3067
 *         intptr_t h_R_nrmF, int batchSize):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgesvdaStridedBatched(
 *             <Handle>handle, <EigMode>jobz, rank, m, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3068
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZgesvdaStridedBatched(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, rank, m, n,
 *             <const cuDoubleComplex*>d_A, lda, strideA, <double*>d_S, strideS,
 */
        __pyx_v_status = cusolverDnZgesvdaStridedBatched(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), __pyx_v_rank, __pyx_v_m, __pyx_v_n, ((cuDoubleComplex const *)__pyx_v_d_A), __pyx_v_lda, __pyx_v_strideA, ((double *)__pyx_v_d_S), __pyx_v_strideS, ((cuDoubleComplex *)__pyx_v_d_U), __pyx_v_ldu, __pyx_v_strideU, ((cuDoubleComplex *)__pyx_v_d_V), __pyx_v_ldv, __pyx_v_strideV, ((cuDoubleComplex *)__pyx_v_d_work), __pyx_v_lwork, ((int *)__pyx_v_d_info), ((double *)__pyx_v_h_R_nrmF), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3067
 *         intptr_t h_R_nrmF, int batchSize):
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZgesvdaStridedBatched(
 *             <Handle>handle, <EigMode>jobz, rank, m, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3074
 *             strideV, <cuDoubleComplex*>d_work, lwork, <int*>d_info,
 *             <double*>h_R_nrmF, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * # Standard symmetric eigenvalue solver
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3074, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3060
 *     check_status(status)
 * 
 * cpdef zgesvdaStridedBatched(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int rank, int m, int n, intptr_t d_A,
 *         int lda, long long int strideA, intptr_t d_S, long long int strideS,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgesvdaStridedBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_359zgesvdaStridedBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_358zgesvdaStridedBatched[] = "zgesvdaStridedBatched(intptr_t handle, int jobz, int rank, int m, int n, intptr_t d_A, int lda, long long strideA, intptr_t d_S, long long strideS, intptr_t d_U, int ldu, long long strideU, intptr_t d_V, int ldv, long long strideV, intptr_t d_work, int lwork, intptr_t d_info, intptr_t h_R_nrmF, int batchSize)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_359zgesvdaStridedBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_rank;
  int __pyx_v_m;
  int __pyx_v_n;
  intptr_t __pyx_v_d_A;
  int __pyx_v_lda;
  PY_LONG_LONG __pyx_v_strideA;
  intptr_t __pyx_v_d_S;
  PY_LONG_LONG __pyx_v_strideS;
  intptr_t __pyx_v_d_U;
  int __pyx_v_ldu;
  PY_LONG_LONG __pyx_v_strideU;
  intptr_t __pyx_v_d_V;
  int __pyx_v_ldv;
  PY_LONG_LONG __pyx_v_strideV;
  intptr_t __pyx_v_d_work;
  int __pyx_v_lwork;
  intptr_t __pyx_v_d_info;
  intptr_t __pyx_v_h_R_nrmF;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zgesvdaStridedBatched (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_rank,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_d_A,&__pyx_n_s_lda,&__pyx_n_s_strideA,&__pyx_n_s_d_S,&__pyx_n_s_strideS,&__pyx_n_s_d_U,&__pyx_n_s_ldu,&__pyx_n_s_strideU,&__pyx_n_s_d_V,&__pyx_n_s_ldv,&__pyx_n_s_strideV,&__pyx_n_s_d_work,&__pyx_n_s_lwork,&__pyx_n_s_d_info,&__pyx_n_s_h_R_nrmF,&__pyx_n_s_batchSize,0};
    PyObject* values[21] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 21: values[20] = PyTuple_GET_ITEM(__pyx_args, 20);
        CYTHON_FALLTHROUGH;
        case 20: values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
        CYTHON_FALLTHROUGH;
        case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
        CYTHON_FALLTHROUGH;
        case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
        CYTHON_FALLTHROUGH;
        case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
        CYTHON_FALLTHROUGH;
        case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
        CYTHON_FALLTHROUGH;
        case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
        CYTHON_FALLTHROUGH;
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched", 1, 21, 21, 1); __PYX_ERR(0, 3060, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rank)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched", 1, 21, 21, 2); __PYX_ERR(0, 3060, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched", 1, 21, 21, 3); __PYX_ERR(0, 3060, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched", 1, 21, 21, 4); __PYX_ERR(0, 3060, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched", 1, 21, 21, 5); __PYX_ERR(0, 3060, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched", 1, 21, 21, 6); __PYX_ERR(0, 3060, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched", 1, 21, 21, 7); __PYX_ERR(0, 3060, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_S)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched", 1, 21, 21, 8); __PYX_ERR(0, 3060, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideS)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched", 1, 21, 21, 9); __PYX_ERR(0, 3060, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_U)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched", 1, 21, 21, 10); __PYX_ERR(0, 3060, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched", 1, 21, 21, 11); __PYX_ERR(0, 3060, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideU)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched", 1, 21, 21, 12); __PYX_ERR(0, 3060, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (likely((values[13] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_V)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched", 1, 21, 21, 13); __PYX_ERR(0, 3060, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 14:
        if (likely((values[14] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ldv)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched", 1, 21, 21, 14); __PYX_ERR(0, 3060, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 15:
        if (likely((values[15] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strideV)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched", 1, 21, 21, 15); __PYX_ERR(0, 3060, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 16:
        if (likely((values[16] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched", 1, 21, 21, 16); __PYX_ERR(0, 3060, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 17:
        if (likely((values[17] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched", 1, 21, 21, 17); __PYX_ERR(0, 3060, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 18:
        if (likely((values[18] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched", 1, 21, 21, 18); __PYX_ERR(0, 3060, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 19:
        if (likely((values[19] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h_R_nrmF)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched", 1, 21, 21, 19); __PYX_ERR(0, 3060, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 20:
        if (likely((values[20] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched", 1, 21, 21, 20); __PYX_ERR(0, 3060, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zgesvdaStridedBatched") < 0)) __PYX_ERR(0, 3060, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 21) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
      values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
      values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
      values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
      values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
      values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
      values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
      values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
      values[20] = PyTuple_GET_ITEM(__pyx_args, 20);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3061, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3061, __pyx_L3_error)
    __pyx_v_rank = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3061, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3061, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3061, __pyx_L3_error)
    __pyx_v_d_A = PyInt_AsSsize_t(values[5]); if (unlikely((__pyx_v_d_A == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3061, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3062, __pyx_L3_error)
    __pyx_v_strideA = __Pyx_PyInt_As_PY_LONG_LONG(values[7]); if (unlikely((__pyx_v_strideA == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3062, __pyx_L3_error)
    __pyx_v_d_S = PyInt_AsSsize_t(values[8]); if (unlikely((__pyx_v_d_S == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3062, __pyx_L3_error)
    __pyx_v_strideS = __Pyx_PyInt_As_PY_LONG_LONG(values[9]); if (unlikely((__pyx_v_strideS == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3062, __pyx_L3_error)
    __pyx_v_d_U = PyInt_AsSsize_t(values[10]); if (unlikely((__pyx_v_d_U == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3063, __pyx_L3_error)
    __pyx_v_ldu = __Pyx_PyInt_As_int(values[11]); if (unlikely((__pyx_v_ldu == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3063, __pyx_L3_error)
    __pyx_v_strideU = __Pyx_PyInt_As_PY_LONG_LONG(values[12]); if (unlikely((__pyx_v_strideU == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3063, __pyx_L3_error)
    __pyx_v_d_V = PyInt_AsSsize_t(values[13]); if (unlikely((__pyx_v_d_V == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3063, __pyx_L3_error)
    __pyx_v_ldv = __Pyx_PyInt_As_int(values[14]); if (unlikely((__pyx_v_ldv == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3063, __pyx_L3_error)
    __pyx_v_strideV = __Pyx_PyInt_As_PY_LONG_LONG(values[15]); if (unlikely((__pyx_v_strideV == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3064, __pyx_L3_error)
    __pyx_v_d_work = PyInt_AsSsize_t(values[16]); if (unlikely((__pyx_v_d_work == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3064, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[17]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3064, __pyx_L3_error)
    __pyx_v_d_info = PyInt_AsSsize_t(values[18]); if (unlikely((__pyx_v_d_info == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3064, __pyx_L3_error)
    __pyx_v_h_R_nrmF = PyInt_AsSsize_t(values[19]); if (unlikely((__pyx_v_h_R_nrmF == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3065, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[20]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3065, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zgesvdaStridedBatched", 1, 21, 21, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3060, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgesvdaStridedBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_358zgesvdaStridedBatched(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_rank, __pyx_v_m, __pyx_v_n, __pyx_v_d_A, __pyx_v_lda, __pyx_v_strideA, __pyx_v_d_S, __pyx_v_strideS, __pyx_v_d_U, __pyx_v_ldu, __pyx_v_strideU, __pyx_v_d_V, __pyx_v_ldv, __pyx_v_strideV, __pyx_v_d_work, __pyx_v_lwork, __pyx_v_d_info, __pyx_v_h_R_nrmF, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_358zgesvdaStridedBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_rank, int __pyx_v_m, int __pyx_v_n, intptr_t __pyx_v_d_A, int __pyx_v_lda, PY_LONG_LONG __pyx_v_strideA, intptr_t __pyx_v_d_S, PY_LONG_LONG __pyx_v_strideS, intptr_t __pyx_v_d_U, int __pyx_v_ldu, PY_LONG_LONG __pyx_v_strideU, intptr_t __pyx_v_d_V, int __pyx_v_ldv, PY_LONG_LONG __pyx_v_strideV, intptr_t __pyx_v_d_work, int __pyx_v_lwork, intptr_t __pyx_v_d_info, intptr_t __pyx_v_h_R_nrmF, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zgesvdaStridedBatched", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvdaStridedBatched(__pyx_v_handle, __pyx_v_jobz, __pyx_v_rank, __pyx_v_m, __pyx_v_n, __pyx_v_d_A, __pyx_v_lda, __pyx_v_strideA, __pyx_v_d_S, __pyx_v_strideS, __pyx_v_d_U, __pyx_v_ldu, __pyx_v_strideU, __pyx_v_d_V, __pyx_v_ldv, __pyx_v_strideV, __pyx_v_d_work, __pyx_v_lwork, __pyx_v_d_info, __pyx_v_h_R_nrmF, __pyx_v_batchSize, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3060, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zgesvdaStridedBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3077
 * 
 * # Standard symmetric eigenvalue solver
 * cpdef int ssyevd_bufferSize(intptr_t handle, int jobz, int uplo, int n,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda, size_t W) except? -1:
 *     cdef int lwork, status
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_361ssyevd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssyevd_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ssyevd_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3080
 *                             size_t A, int lda, size_t W) except? -1:
 *     cdef int lwork, status
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSsyevd_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3080, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3081
 *     cdef int lwork, status
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSsyevd_bufferSize(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3082
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSsyevd_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 *             <const float*>A,
 */
        __pyx_v_status = cusolverDnSsyevd_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((float const *)__pyx_v_A), __pyx_v_lda, ((float const *)__pyx_v_W), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3081
 *     cdef int lwork, status
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSsyevd_bufferSize(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3086
 *             <const float*>A,
 *             lda, <const float*>W, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3087
 *             lda, <const float*>W, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int dsyevd_bufferSize(intptr_t handle, int jobz, int uplo, int n,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3077
 * 
 * # Standard symmetric eigenvalue solver
 * cpdef int ssyevd_bufferSize(intptr_t handle, int jobz, int uplo, int n,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda, size_t W) except? -1:
 *     cdef int lwork, status
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssyevd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_361ssyevd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_360ssyevd_bufferSize[] = "ssyevd_bufferSize(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda, size_t W) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_361ssyevd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_W;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ssyevd_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_W,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevd_bufferSize", 1, 7, 7, 1); __PYX_ERR(0, 3077, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevd_bufferSize", 1, 7, 7, 2); __PYX_ERR(0, 3077, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevd_bufferSize", 1, 7, 7, 3); __PYX_ERR(0, 3077, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevd_bufferSize", 1, 7, 7, 4); __PYX_ERR(0, 3077, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevd_bufferSize", 1, 7, 7, 5); __PYX_ERR(0, 3077, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevd_bufferSize", 1, 7, 7, 6); __PYX_ERR(0, 3077, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ssyevd_bufferSize") < 0)) __PYX_ERR(0, 3077, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3077, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3077, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3077, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3077, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3078, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3078, __pyx_L3_error)
    __pyx_v_W = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_W == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3078, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ssyevd_bufferSize", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3077, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssyevd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_360ssyevd_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_360ssyevd_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ssyevd_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssyevd_bufferSize(__pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3077, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3077, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssyevd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3089
 *     return lwork
 * 
 * cpdef int dsyevd_bufferSize(intptr_t handle, int jobz, int uplo, int n,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda, size_t W) except? -1:
 *     cdef int lwork, status
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_363dsyevd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsyevd_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dsyevd_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3092
 *                             size_t A, int lda, size_t W) except? -1:
 *     cdef int lwork, status
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDsyevd_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3092, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3093
 *     cdef int lwork, status
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDsyevd_bufferSize(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3094
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDsyevd_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 *             <const double*>A,
 */
        __pyx_v_status = cusolverDnDsyevd_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((double const *)__pyx_v_A), __pyx_v_lda, ((double const *)__pyx_v_W), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3093
 *     cdef int lwork, status
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDsyevd_bufferSize(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3098
 *             <const double*>A,
 *             lda, <const double*>W, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3098, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3099
 *             lda, <const double*>W, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int cheevd_bufferSize(intptr_t handle, int jobz, int uplo, int n,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3089
 *     return lwork
 * 
 * cpdef int dsyevd_bufferSize(intptr_t handle, int jobz, int uplo, int n,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda, size_t W) except? -1:
 *     cdef int lwork, status
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsyevd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_363dsyevd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_362dsyevd_bufferSize[] = "dsyevd_bufferSize(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda, size_t W) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_363dsyevd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_W;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dsyevd_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_W,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevd_bufferSize", 1, 7, 7, 1); __PYX_ERR(0, 3089, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevd_bufferSize", 1, 7, 7, 2); __PYX_ERR(0, 3089, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevd_bufferSize", 1, 7, 7, 3); __PYX_ERR(0, 3089, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevd_bufferSize", 1, 7, 7, 4); __PYX_ERR(0, 3089, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevd_bufferSize", 1, 7, 7, 5); __PYX_ERR(0, 3089, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevd_bufferSize", 1, 7, 7, 6); __PYX_ERR(0, 3089, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dsyevd_bufferSize") < 0)) __PYX_ERR(0, 3089, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3089, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3089, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3089, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3089, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3090, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3090, __pyx_L3_error)
    __pyx_v_W = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_W == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3090, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dsyevd_bufferSize", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3089, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsyevd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_362dsyevd_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_362dsyevd_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dsyevd_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsyevd_bufferSize(__pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3089, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3089, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsyevd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3101
 *     return lwork
 * 
 * cpdef int cheevd_bufferSize(intptr_t handle, int jobz, int uplo, int n,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda, size_t W) except? -1:
 *     cdef int lwork, status
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_365cheevd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cheevd_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cheevd_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3104
 *                             size_t A, int lda, size_t W) except? -1:
 *     cdef int lwork, status
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCheevd_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3105
 *     cdef int lwork, status
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCheevd_bufferSize(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3106
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCheevd_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 *             <const cuComplex*>A,
 */
        __pyx_v_status = cusolverDnCheevd_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((cuComplex const *)__pyx_v_A), __pyx_v_lda, ((float const *)__pyx_v_W), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3105
 *     cdef int lwork, status
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCheevd_bufferSize(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3110
 *             <const cuComplex*>A,
 *             lda, <const float*>W, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3111
 *             lda, <const float*>W, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int zheevd_bufferSize(intptr_t handle, int jobz, int uplo, int n,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3101
 *     return lwork
 * 
 * cpdef int cheevd_bufferSize(intptr_t handle, int jobz, int uplo, int n,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda, size_t W) except? -1:
 *     cdef int lwork, status
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cheevd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_365cheevd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_364cheevd_bufferSize[] = "cheevd_bufferSize(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda, size_t W) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_365cheevd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_W;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cheevd_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_W,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevd_bufferSize", 1, 7, 7, 1); __PYX_ERR(0, 3101, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevd_bufferSize", 1, 7, 7, 2); __PYX_ERR(0, 3101, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevd_bufferSize", 1, 7, 7, 3); __PYX_ERR(0, 3101, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevd_bufferSize", 1, 7, 7, 4); __PYX_ERR(0, 3101, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevd_bufferSize", 1, 7, 7, 5); __PYX_ERR(0, 3101, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevd_bufferSize", 1, 7, 7, 6); __PYX_ERR(0, 3101, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cheevd_bufferSize") < 0)) __PYX_ERR(0, 3101, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3101, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3101, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3101, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3101, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3102, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3102, __pyx_L3_error)
    __pyx_v_W = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_W == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3102, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cheevd_bufferSize", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3101, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cheevd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_364cheevd_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_364cheevd_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cheevd_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cheevd_bufferSize(__pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3101, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cheevd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3113
 *     return lwork
 * 
 * cpdef int zheevd_bufferSize(intptr_t handle, int jobz, int uplo, int n,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda, size_t W) except? -1:
 *     cdef int lwork, status
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_367zheevd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zheevd_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zheevd_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3116
 *                             size_t A, int lda, size_t W) except? -1:
 *     cdef int lwork, status
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZheevd_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3116, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3117
 *     cdef int lwork, status
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZheevd_bufferSize(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3118
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZheevd_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 *             <const cuDoubleComplex*>A,
 */
        __pyx_v_status = cusolverDnZheevd_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((cuDoubleComplex const *)__pyx_v_A), __pyx_v_lda, ((double const *)__pyx_v_W), (&__pyx_v_lwork));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3117
 *     cdef int lwork, status
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZheevd_bufferSize(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3122
 *             <const cuDoubleComplex*>A,
 *             lda, <const double*>W, &lwork)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3123
 *             lda, <const double*>W, &lwork)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef ssyevd(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3113
 *     return lwork
 * 
 * cpdef int zheevd_bufferSize(intptr_t handle, int jobz, int uplo, int n,             # <<<<<<<<<<<<<<
 *                             size_t A, int lda, size_t W) except? -1:
 *     cdef int lwork, status
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zheevd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_367zheevd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_366zheevd_bufferSize[] = "zheevd_bufferSize(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda, size_t W) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_367zheevd_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_W;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zheevd_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_W,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevd_bufferSize", 1, 7, 7, 1); __PYX_ERR(0, 3113, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevd_bufferSize", 1, 7, 7, 2); __PYX_ERR(0, 3113, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevd_bufferSize", 1, 7, 7, 3); __PYX_ERR(0, 3113, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevd_bufferSize", 1, 7, 7, 4); __PYX_ERR(0, 3113, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevd_bufferSize", 1, 7, 7, 5); __PYX_ERR(0, 3113, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevd_bufferSize", 1, 7, 7, 6); __PYX_ERR(0, 3113, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zheevd_bufferSize") < 0)) __PYX_ERR(0, 3113, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3113, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3113, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3113, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3113, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3114, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3114, __pyx_L3_error)
    __pyx_v_W = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_W == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3114, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zheevd_bufferSize", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3113, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zheevd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_366zheevd_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_366zheevd_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zheevd_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zheevd_bufferSize(__pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3113, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zheevd_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3125
 *     return lwork
 * 
 * cpdef ssyevd(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t W, size_t work, int lwork, size_t info):
 *     cdef int status
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_369ssyevd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssyevd(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ssyevd", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3128
 *              size_t W, size_t work, int lwork, size_t info):
 *     cdef int status
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSsyevd(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3129
 *     cdef int status
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSsyevd(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3130
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnSsyevd(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 *             <float*>A, lda, <float*>W,
 */
        __pyx_v_status = cusolverDnSsyevd(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((float *)__pyx_v_A), __pyx_v_lda, ((float *)__pyx_v_W), ((float *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_info));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3129
 *     cdef int status
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSsyevd(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3134
 *             <float*>A, lda, <float*>W,
 *             <float*>work, lwork, <int*>info)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef dsyevd(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3125
 *     return lwork
 * 
 * cpdef ssyevd(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t W, size_t work, int lwork, size_t info):
 *     cdef int status
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssyevd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_369ssyevd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_368ssyevd[] = "ssyevd(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda, size_t W, size_t work, int lwork, size_t info)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_369ssyevd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_W;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_info;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ssyevd (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_W,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_info,0};
    PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevd", 1, 10, 10, 1); __PYX_ERR(0, 3125, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevd", 1, 10, 10, 2); __PYX_ERR(0, 3125, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevd", 1, 10, 10, 3); __PYX_ERR(0, 3125, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevd", 1, 10, 10, 4); __PYX_ERR(0, 3125, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevd", 1, 10, 10, 5); __PYX_ERR(0, 3125, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevd", 1, 10, 10, 6); __PYX_ERR(0, 3125, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevd", 1, 10, 10, 7); __PYX_ERR(0, 3125, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevd", 1, 10, 10, 8); __PYX_ERR(0, 3125, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevd", 1, 10, 10, 9); __PYX_ERR(0, 3125, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ssyevd") < 0)) __PYX_ERR(0, 3125, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 10) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3125, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3125, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3125, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3125, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3125, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3125, __pyx_L3_error)
    __pyx_v_W = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_W == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3126, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3126, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3126, __pyx_L3_error)
    __pyx_v_info = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_info == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3126, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ssyevd", 1, 10, 10, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3125, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssyevd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_368ssyevd(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_work, __pyx_v_lwork, __pyx_v_info);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_368ssyevd(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ssyevd", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssyevd(__pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssyevd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3136
 *     check_status(status)
 * 
 * cpdef dsyevd(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t W, size_t work, int lwork, size_t info):
 *     cdef int status
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_371dsyevd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsyevd(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dsyevd", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3139
 *              size_t W, size_t work, int lwork, size_t info):
 *     cdef int status
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDsyevd(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3140
 *     cdef int status
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDsyevd(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3141
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnDsyevd(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 *             <double*>A, lda, <double*>W,
 */
        __pyx_v_status = cusolverDnDsyevd(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((double *)__pyx_v_A), __pyx_v_lda, ((double *)__pyx_v_W), ((double *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_info));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3140
 *     cdef int status
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDsyevd(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3145
 *             <double*>A, lda, <double*>W,
 *             <double*>work, lwork, <int*>info)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef cheevd(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3136
 *     check_status(status)
 * 
 * cpdef dsyevd(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t W, size_t work, int lwork, size_t info):
 *     cdef int status
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsyevd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_371dsyevd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_370dsyevd[] = "dsyevd(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda, size_t W, size_t work, int lwork, size_t info)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_371dsyevd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_W;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_info;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dsyevd (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_W,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_info,0};
    PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevd", 1, 10, 10, 1); __PYX_ERR(0, 3136, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevd", 1, 10, 10, 2); __PYX_ERR(0, 3136, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevd", 1, 10, 10, 3); __PYX_ERR(0, 3136, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevd", 1, 10, 10, 4); __PYX_ERR(0, 3136, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevd", 1, 10, 10, 5); __PYX_ERR(0, 3136, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevd", 1, 10, 10, 6); __PYX_ERR(0, 3136, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevd", 1, 10, 10, 7); __PYX_ERR(0, 3136, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevd", 1, 10, 10, 8); __PYX_ERR(0, 3136, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevd", 1, 10, 10, 9); __PYX_ERR(0, 3136, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dsyevd") < 0)) __PYX_ERR(0, 3136, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 10) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3136, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3136, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3136, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3136, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3136, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3136, __pyx_L3_error)
    __pyx_v_W = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_W == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3137, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3137, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3137, __pyx_L3_error)
    __pyx_v_info = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_info == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3137, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dsyevd", 1, 10, 10, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3136, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsyevd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_370dsyevd(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_work, __pyx_v_lwork, __pyx_v_info);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_370dsyevd(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dsyevd", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsyevd(__pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsyevd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3147
 *     check_status(status)
 * 
 * cpdef cheevd(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t W, size_t work, int lwork, size_t info):
 *     cdef int status
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_373cheevd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cheevd(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cheevd", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3150
 *              size_t W, size_t work, int lwork, size_t info):
 *     cdef int status
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCheevd(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3151
 *     cdef int status
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCheevd(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3152
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnCheevd(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 *             <cuComplex*>A, lda, <float*>W,
 */
        __pyx_v_status = cusolverDnCheevd(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((cuComplex *)__pyx_v_A), __pyx_v_lda, ((float *)__pyx_v_W), ((cuComplex *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_info));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3151
 *     cdef int status
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCheevd(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3156
 *             <cuComplex*>A, lda, <float*>W,
 *             <cuComplex*>work, lwork, <int*>info)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef zheevd(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3147
 *     check_status(status)
 * 
 * cpdef cheevd(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t W, size_t work, int lwork, size_t info):
 *     cdef int status
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cheevd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_373cheevd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_372cheevd[] = "cheevd(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda, size_t W, size_t work, int lwork, size_t info)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_373cheevd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_W;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_info;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cheevd (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_W,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_info,0};
    PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevd", 1, 10, 10, 1); __PYX_ERR(0, 3147, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevd", 1, 10, 10, 2); __PYX_ERR(0, 3147, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevd", 1, 10, 10, 3); __PYX_ERR(0, 3147, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevd", 1, 10, 10, 4); __PYX_ERR(0, 3147, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevd", 1, 10, 10, 5); __PYX_ERR(0, 3147, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevd", 1, 10, 10, 6); __PYX_ERR(0, 3147, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevd", 1, 10, 10, 7); __PYX_ERR(0, 3147, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevd", 1, 10, 10, 8); __PYX_ERR(0, 3147, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevd", 1, 10, 10, 9); __PYX_ERR(0, 3147, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cheevd") < 0)) __PYX_ERR(0, 3147, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 10) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3147, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3147, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3147, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3147, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3147, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3147, __pyx_L3_error)
    __pyx_v_W = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_W == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3148, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3148, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3148, __pyx_L3_error)
    __pyx_v_info = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_info == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3148, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cheevd", 1, 10, 10, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3147, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cheevd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_372cheevd(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_work, __pyx_v_lwork, __pyx_v_info);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_372cheevd(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cheevd", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cheevd(__pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cheevd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3158
 *     check_status(status)
 * 
 * cpdef zheevd(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t W, size_t work, int lwork, size_t info):
 *     cdef int status
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_375zheevd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zheevd(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zheevd", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3161
 *              size_t W, size_t work, int lwork, size_t info):
 *     cdef int status
 *     _setStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZheevd(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__setStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3162
 *     cdef int status
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZheevd(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3163
 *     _setStream(handle)
 *     with nogil:
 *         status = cusolverDnZheevd(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 *             <cuDoubleComplex*>A, lda, <double*>W,
 */
        __pyx_v_status = cusolverDnZheevd(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((cuDoubleComplex *)__pyx_v_A), __pyx_v_lda, ((double *)__pyx_v_W), ((cuDoubleComplex *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_info));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3162
 *     cdef int status
 *     _setStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZheevd(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3167
 *             <cuDoubleComplex*>A, lda, <double*>W,
 *             <cuDoubleComplex*>work, lwork, <int*>info)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * # Symmetric eigenvalue solver via Jacobi method
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3158
 *     check_status(status)
 * 
 * cpdef zheevd(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t W, size_t work, int lwork, size_t info):
 *     cdef int status
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zheevd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_375zheevd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_374zheevd[] = "zheevd(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda, size_t W, size_t work, int lwork, size_t info)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_375zheevd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_W;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_info;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zheevd (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_W,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_info,0};
    PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevd", 1, 10, 10, 1); __PYX_ERR(0, 3158, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevd", 1, 10, 10, 2); __PYX_ERR(0, 3158, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevd", 1, 10, 10, 3); __PYX_ERR(0, 3158, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevd", 1, 10, 10, 4); __PYX_ERR(0, 3158, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevd", 1, 10, 10, 5); __PYX_ERR(0, 3158, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevd", 1, 10, 10, 6); __PYX_ERR(0, 3158, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevd", 1, 10, 10, 7); __PYX_ERR(0, 3158, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevd", 1, 10, 10, 8); __PYX_ERR(0, 3158, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevd", 1, 10, 10, 9); __PYX_ERR(0, 3158, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zheevd") < 0)) __PYX_ERR(0, 3158, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 10) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3158, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3158, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3158, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3158, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3158, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3158, __pyx_L3_error)
    __pyx_v_W = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_W == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3159, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3159, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3159, __pyx_L3_error)
    __pyx_v_info = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_info == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3159, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zheevd", 1, 10, 10, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3158, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zheevd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_374zheevd(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_work, __pyx_v_lwork, __pyx_v_info);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_374zheevd(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zheevd", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zheevd(__pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zheevd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3170
 * 
 * # Symmetric eigenvalue solver via Jacobi method
 * cpdef intptr_t createSyevjInfo() except? 0:             # <<<<<<<<<<<<<<
 *     cdef SyevjInfo info
 *     status = cusolverDnCreateSyevjInfo(&info)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_377createSyevjInfo(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static intptr_t __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_createSyevjInfo(CYTHON_UNUSED int __pyx_skip_dispatch) {
  syevjInfo_t __pyx_v_info;
  int __pyx_v_status;
  intptr_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("createSyevjInfo", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3172
 * cpdef intptr_t createSyevjInfo() except? 0:
 *     cdef SyevjInfo info
 *     status = cusolverDnCreateSyevjInfo(&info)             # <<<<<<<<<<<<<<
 *     check_status(status)
 *     return <intptr_t>info
 */
  __pyx_v_status = cusolverDnCreateSyevjInfo((&__pyx_v_info));

  /* "cupy_backends/cuda/libs/cusolver.pyx":3173
 *     cdef SyevjInfo info
 *     status = cusolverDnCreateSyevjInfo(&info)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return <intptr_t>info
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3174
 *     status = cusolverDnCreateSyevjInfo(&info)
 *     check_status(status)
 *     return <intptr_t>info             # <<<<<<<<<<<<<<
 * 
 * cpdef destroySyevjInfo(intptr_t info):
 */
  __pyx_r = ((intptr_t)__pyx_v_info);
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3170
 * 
 * # Symmetric eigenvalue solver via Jacobi method
 * cpdef intptr_t createSyevjInfo() except? 0:             # <<<<<<<<<<<<<<
 *     cdef SyevjInfo info
 *     status = cusolverDnCreateSyevjInfo(&info)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.createSyevjInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_377createSyevjInfo(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_376createSyevjInfo[] = "createSyevjInfo() -> intptr_t";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_377createSyevjInfo(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("createSyevjInfo (wrapper)", 0);
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_376createSyevjInfo(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_376createSyevjInfo(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  intptr_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("createSyevjInfo", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_createSyevjInfo(0); if (unlikely(__pyx_t_1 == ((intptr_t)0) && PyErr_Occurred())) __PYX_ERR(0, 3170, __pyx_L1_error)
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.createSyevjInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3176
 *     return <intptr_t>info
 * 
 * cpdef destroySyevjInfo(intptr_t info):             # <<<<<<<<<<<<<<
 *     status = cusolverDnDestroySyevjInfo(<SyevjInfo>info)
 *     check_status(status)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_379destroySyevjInfo(PyObject *__pyx_self, PyObject *__pyx_arg_info); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_destroySyevjInfo(intptr_t __pyx_v_info, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("destroySyevjInfo", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3177
 * 
 * cpdef destroySyevjInfo(intptr_t info):
 *     status = cusolverDnDestroySyevjInfo(<SyevjInfo>info)             # <<<<<<<<<<<<<<
 *     check_status(status)
 * 
 */
  __pyx_v_status = cusolverDnDestroySyevjInfo(((syevjInfo_t)__pyx_v_info));

  /* "cupy_backends/cuda/libs/cusolver.pyx":3178
 * cpdef destroySyevjInfo(intptr_t info):
 *     status = cusolverDnDestroySyevjInfo(<SyevjInfo>info)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef xsyevjSetTolerance(intptr_t info, double tolerance):
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3176
 *     return <intptr_t>info
 * 
 * cpdef destroySyevjInfo(intptr_t info):             # <<<<<<<<<<<<<<
 *     status = cusolverDnDestroySyevjInfo(<SyevjInfo>info)
 *     check_status(status)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.destroySyevjInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_379destroySyevjInfo(PyObject *__pyx_self, PyObject *__pyx_arg_info); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_378destroySyevjInfo[] = "destroySyevjInfo(intptr_t info)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_379destroySyevjInfo(PyObject *__pyx_self, PyObject *__pyx_arg_info) {
  intptr_t __pyx_v_info;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("destroySyevjInfo (wrapper)", 0);
  assert(__pyx_arg_info); {
    __pyx_v_info = PyInt_AsSsize_t(__pyx_arg_info); if (unlikely((__pyx_v_info == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3176, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.destroySyevjInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_378destroySyevjInfo(__pyx_self, ((intptr_t)__pyx_v_info));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_378destroySyevjInfo(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_info) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("destroySyevjInfo", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_destroySyevjInfo(__pyx_v_info, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.destroySyevjInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3180
 *     check_status(status)
 * 
 * cpdef xsyevjSetTolerance(intptr_t info, double tolerance):             # <<<<<<<<<<<<<<
 *     status = cusolverDnXsyevjSetTolerance(<SyevjInfo>info, tolerance)
 *     check_status(status)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_381xsyevjSetTolerance(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xsyevjSetTolerance(intptr_t __pyx_v_info, double __pyx_v_tolerance, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xsyevjSetTolerance", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3181
 * 
 * cpdef xsyevjSetTolerance(intptr_t info, double tolerance):
 *     status = cusolverDnXsyevjSetTolerance(<SyevjInfo>info, tolerance)             # <<<<<<<<<<<<<<
 *     check_status(status)
 * 
 */
  __pyx_v_status = cusolverDnXsyevjSetTolerance(((syevjInfo_t)__pyx_v_info), __pyx_v_tolerance);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3182
 * cpdef xsyevjSetTolerance(intptr_t info, double tolerance):
 *     status = cusolverDnXsyevjSetTolerance(<SyevjInfo>info, tolerance)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef xsyevjSetMaxSweeps(intptr_t info, int max_sweeps):
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3180
 *     check_status(status)
 * 
 * cpdef xsyevjSetTolerance(intptr_t info, double tolerance):             # <<<<<<<<<<<<<<
 *     status = cusolverDnXsyevjSetTolerance(<SyevjInfo>info, tolerance)
 *     check_status(status)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.xsyevjSetTolerance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_381xsyevjSetTolerance(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_380xsyevjSetTolerance[] = "xsyevjSetTolerance(intptr_t info, double tolerance)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_381xsyevjSetTolerance(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_info;
  double __pyx_v_tolerance;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xsyevjSetTolerance (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_info,&__pyx_n_s_tolerance,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tolerance)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("xsyevjSetTolerance", 1, 2, 2, 1); __PYX_ERR(0, 3180, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "xsyevjSetTolerance") < 0)) __PYX_ERR(0, 3180, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_info = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_info == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3180, __pyx_L3_error)
    __pyx_v_tolerance = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_tolerance == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3180, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xsyevjSetTolerance", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3180, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.xsyevjSetTolerance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_380xsyevjSetTolerance(__pyx_self, __pyx_v_info, __pyx_v_tolerance);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_380xsyevjSetTolerance(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_info, double __pyx_v_tolerance) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xsyevjSetTolerance", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xsyevjSetTolerance(__pyx_v_info, __pyx_v_tolerance, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.xsyevjSetTolerance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3184
 *     check_status(status)
 * 
 * cpdef xsyevjSetMaxSweeps(intptr_t info, int max_sweeps):             # <<<<<<<<<<<<<<
 *     status = cusolverDnXsyevjSetMaxSweeps(<SyevjInfo>info, max_sweeps)
 *     check_status(status)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_383xsyevjSetMaxSweeps(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xsyevjSetMaxSweeps(intptr_t __pyx_v_info, int __pyx_v_max_sweeps, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xsyevjSetMaxSweeps", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3185
 * 
 * cpdef xsyevjSetMaxSweeps(intptr_t info, int max_sweeps):
 *     status = cusolverDnXsyevjSetMaxSweeps(<SyevjInfo>info, max_sweeps)             # <<<<<<<<<<<<<<
 *     check_status(status)
 * 
 */
  __pyx_v_status = cusolverDnXsyevjSetMaxSweeps(((syevjInfo_t)__pyx_v_info), __pyx_v_max_sweeps);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3186
 * cpdef xsyevjSetMaxSweeps(intptr_t info, int max_sweeps):
 *     status = cusolverDnXsyevjSetMaxSweeps(<SyevjInfo>info, max_sweeps)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef xsyevjSetSortEig(intptr_t info, int sort_eig):
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3184
 *     check_status(status)
 * 
 * cpdef xsyevjSetMaxSweeps(intptr_t info, int max_sweeps):             # <<<<<<<<<<<<<<
 *     status = cusolverDnXsyevjSetMaxSweeps(<SyevjInfo>info, max_sweeps)
 *     check_status(status)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.xsyevjSetMaxSweeps", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_383xsyevjSetMaxSweeps(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_382xsyevjSetMaxSweeps[] = "xsyevjSetMaxSweeps(intptr_t info, int max_sweeps)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_383xsyevjSetMaxSweeps(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_info;
  int __pyx_v_max_sweeps;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xsyevjSetMaxSweeps (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_info,&__pyx_n_s_max_sweeps,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_sweeps)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("xsyevjSetMaxSweeps", 1, 2, 2, 1); __PYX_ERR(0, 3184, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "xsyevjSetMaxSweeps") < 0)) __PYX_ERR(0, 3184, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_info = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_info == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3184, __pyx_L3_error)
    __pyx_v_max_sweeps = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_max_sweeps == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3184, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xsyevjSetMaxSweeps", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3184, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.xsyevjSetMaxSweeps", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_382xsyevjSetMaxSweeps(__pyx_self, __pyx_v_info, __pyx_v_max_sweeps);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_382xsyevjSetMaxSweeps(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_info, int __pyx_v_max_sweeps) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xsyevjSetMaxSweeps", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xsyevjSetMaxSweeps(__pyx_v_info, __pyx_v_max_sweeps, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.xsyevjSetMaxSweeps", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3188
 *     check_status(status)
 * 
 * cpdef xsyevjSetSortEig(intptr_t info, int sort_eig):             # <<<<<<<<<<<<<<
 *     status = cusolverDnXsyevjSetSortEig(<SyevjInfo>info, sort_eig)
 *     check_status(status)
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_385xsyevjSetSortEig(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xsyevjSetSortEig(intptr_t __pyx_v_info, int __pyx_v_sort_eig, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xsyevjSetSortEig", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3189
 * 
 * cpdef xsyevjSetSortEig(intptr_t info, int sort_eig):
 *     status = cusolverDnXsyevjSetSortEig(<SyevjInfo>info, sort_eig)             # <<<<<<<<<<<<<<
 *     check_status(status)
 * 
 */
  __pyx_v_status = cusolverDnXsyevjSetSortEig(((syevjInfo_t)__pyx_v_info), __pyx_v_sort_eig);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3190
 * cpdef xsyevjSetSortEig(intptr_t info, int sort_eig):
 *     status = cusolverDnXsyevjSetSortEig(<SyevjInfo>info, sort_eig)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef double xsyevjGetResidual(intptr_t handle, intptr_t info):
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3188
 *     check_status(status)
 * 
 * cpdef xsyevjSetSortEig(intptr_t info, int sort_eig):             # <<<<<<<<<<<<<<
 *     status = cusolverDnXsyevjSetSortEig(<SyevjInfo>info, sort_eig)
 *     check_status(status)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.xsyevjSetSortEig", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_385xsyevjSetSortEig(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_384xsyevjSetSortEig[] = "xsyevjSetSortEig(intptr_t info, int sort_eig)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_385xsyevjSetSortEig(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_info;
  int __pyx_v_sort_eig;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xsyevjSetSortEig (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_info,&__pyx_n_s_sort_eig,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sort_eig)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("xsyevjSetSortEig", 1, 2, 2, 1); __PYX_ERR(0, 3188, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "xsyevjSetSortEig") < 0)) __PYX_ERR(0, 3188, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_info = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_info == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3188, __pyx_L3_error)
    __pyx_v_sort_eig = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_sort_eig == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3188, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xsyevjSetSortEig", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3188, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.xsyevjSetSortEig", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_384xsyevjSetSortEig(__pyx_self, __pyx_v_info, __pyx_v_sort_eig);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_384xsyevjSetSortEig(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_info, int __pyx_v_sort_eig) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xsyevjSetSortEig", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xsyevjSetSortEig(__pyx_v_info, __pyx_v_sort_eig, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.xsyevjSetSortEig", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3192
 *     check_status(status)
 * 
 * cpdef double xsyevjGetResidual(intptr_t handle, intptr_t info):             # <<<<<<<<<<<<<<
 *     cdef double residual
 *     status = cusolverDnXsyevjGetResidual(
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_387xsyevjGetResidual(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static double __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xsyevjGetResidual(intptr_t __pyx_v_handle, intptr_t __pyx_v_info, CYTHON_UNUSED int __pyx_skip_dispatch) {
  double __pyx_v_residual;
  int __pyx_v_status;
  double __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xsyevjGetResidual", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3194
 * cpdef double xsyevjGetResidual(intptr_t handle, intptr_t info):
 *     cdef double residual
 *     status = cusolverDnXsyevjGetResidual(             # <<<<<<<<<<<<<<
 *         <Handle>handle, <SyevjInfo>info, &residual)
 *     check_status(status)
 */
  __pyx_v_status = cusolverDnXsyevjGetResidual(((cusolverDnHandle_t)__pyx_v_handle), ((syevjInfo_t)__pyx_v_info), (&__pyx_v_residual));

  /* "cupy_backends/cuda/libs/cusolver.pyx":3196
 *     status = cusolverDnXsyevjGetResidual(
 *         <Handle>handle, <SyevjInfo>info, &residual)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return residual
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3197
 *         <Handle>handle, <SyevjInfo>info, &residual)
 *     check_status(status)
 *     return residual             # <<<<<<<<<<<<<<
 * 
 * cpdef int xsyevjGetSweeps(intptr_t handle, intptr_t info):
 */
  __pyx_r = __pyx_v_residual;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3192
 *     check_status(status)
 * 
 * cpdef double xsyevjGetResidual(intptr_t handle, intptr_t info):             # <<<<<<<<<<<<<<
 *     cdef double residual
 *     status = cusolverDnXsyevjGetResidual(
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.xsyevjGetResidual", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_387xsyevjGetResidual(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_386xsyevjGetResidual[] = "xsyevjGetResidual(intptr_t handle, intptr_t info) -> double";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_387xsyevjGetResidual(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  intptr_t __pyx_v_info;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xsyevjGetResidual (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_info,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("xsyevjGetResidual", 1, 2, 2, 1); __PYX_ERR(0, 3192, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "xsyevjGetResidual") < 0)) __PYX_ERR(0, 3192, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3192, __pyx_L3_error)
    __pyx_v_info = PyInt_AsSsize_t(values[1]); if (unlikely((__pyx_v_info == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3192, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xsyevjGetResidual", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3192, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.xsyevjGetResidual", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_386xsyevjGetResidual(__pyx_self, __pyx_v_handle, __pyx_v_info);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_386xsyevjGetResidual(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, intptr_t __pyx_v_info) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xsyevjGetResidual", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xsyevjGetResidual(__pyx_v_handle, __pyx_v_info, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.xsyevjGetResidual", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3199
 *     return residual
 * 
 * cpdef int xsyevjGetSweeps(intptr_t handle, intptr_t info):             # <<<<<<<<<<<<<<
 *     cdef int executed_sweeps
 *     status = cusolverDnXsyevjGetSweeps(
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_389xsyevjGetSweeps(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xsyevjGetSweeps(intptr_t __pyx_v_handle, intptr_t __pyx_v_info, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_executed_sweeps;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xsyevjGetSweeps", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3201
 * cpdef int xsyevjGetSweeps(intptr_t handle, intptr_t info):
 *     cdef int executed_sweeps
 *     status = cusolverDnXsyevjGetSweeps(             # <<<<<<<<<<<<<<
 *         <Handle>handle, <SyevjInfo>info, &executed_sweeps)
 *     check_status(status)
 */
  __pyx_v_status = cusolverDnXsyevjGetSweeps(((cusolverDnHandle_t)__pyx_v_handle), ((syevjInfo_t)__pyx_v_info), (&__pyx_v_executed_sweeps));

  /* "cupy_backends/cuda/libs/cusolver.pyx":3203
 *     status = cusolverDnXsyevjGetSweeps(
 *         <Handle>handle, <SyevjInfo>info, &executed_sweeps)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return executed_sweeps
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3204
 *         <Handle>handle, <SyevjInfo>info, &executed_sweeps)
 *     check_status(status)
 *     return executed_sweeps             # <<<<<<<<<<<<<<
 * 
 * cpdef int ssyevj_bufferSize(intptr_t handle, int jobz, int uplo,
 */
  __pyx_r = __pyx_v_executed_sweeps;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3199
 *     return residual
 * 
 * cpdef int xsyevjGetSweeps(intptr_t handle, intptr_t info):             # <<<<<<<<<<<<<<
 *     cdef int executed_sweeps
 *     status = cusolverDnXsyevjGetSweeps(
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("cupy_backends.cuda.libs.cusolver.xsyevjGetSweeps", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_389xsyevjGetSweeps(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_388xsyevjGetSweeps[] = "xsyevjGetSweeps(intptr_t handle, intptr_t info) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_389xsyevjGetSweeps(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  intptr_t __pyx_v_info;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xsyevjGetSweeps (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_info,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("xsyevjGetSweeps", 1, 2, 2, 1); __PYX_ERR(0, 3199, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "xsyevjGetSweeps") < 0)) __PYX_ERR(0, 3199, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3199, __pyx_L3_error)
    __pyx_v_info = PyInt_AsSsize_t(values[1]); if (unlikely((__pyx_v_info == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3199, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xsyevjGetSweeps", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3199, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.xsyevjGetSweeps", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_388xsyevjGetSweeps(__pyx_self, __pyx_v_handle, __pyx_v_info);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_388xsyevjGetSweeps(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, intptr_t __pyx_v_info) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xsyevjGetSweeps", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xsyevjGetSweeps(__pyx_v_handle, __pyx_v_info, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.xsyevjGetSweeps", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3206
 *     return executed_sweeps
 * 
 * cpdef int ssyevj_bufferSize(intptr_t handle, int jobz, int uplo,             # <<<<<<<<<<<<<<
 *                             int n, size_t A, int lda, size_t W,
 *                             intptr_t params) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_391ssyevj_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssyevj_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, intptr_t __pyx_v_params, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ssyevj_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3210
 *                             intptr_t params) except? -1:
 *     cdef int lwork, status
 *     setStream(handle, stream_module.get_current_stream_ptr())             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSsyevj_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(__pyx_v_handle, __pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr(), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3211
 *     cdef int lwork, status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSsyevj_bufferSize(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3212
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:
 *         status = cusolverDnSsyevj_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 *             <const float*>A,
 */
        __pyx_v_status = cusolverDnSsyevj_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((float const *)__pyx_v_A), __pyx_v_lda, ((float const *)__pyx_v_W), (&__pyx_v_lwork), ((syevjInfo_t)__pyx_v_params));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3211
 *     cdef int lwork, status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSsyevj_bufferSize(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3216
 *             <const float*>A,
 *             lda, <const float*>W, &lwork, <SyevjInfo>params)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3217
 *             lda, <const float*>W, &lwork, <SyevjInfo>params)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int dsyevj_bufferSize(intptr_t handle, int jobz, int uplo,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3206
 *     return executed_sweeps
 * 
 * cpdef int ssyevj_bufferSize(intptr_t handle, int jobz, int uplo,             # <<<<<<<<<<<<<<
 *                             int n, size_t A, int lda, size_t W,
 *                             intptr_t params) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssyevj_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_391ssyevj_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_390ssyevj_bufferSize[] = "ssyevj_bufferSize(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda, size_t W, intptr_t params) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_391ssyevj_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_W;
  intptr_t __pyx_v_params;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ssyevj_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_W,&__pyx_n_s_params,0};
    PyObject* values[8] = {0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevj_bufferSize", 1, 8, 8, 1); __PYX_ERR(0, 3206, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevj_bufferSize", 1, 8, 8, 2); __PYX_ERR(0, 3206, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevj_bufferSize", 1, 8, 8, 3); __PYX_ERR(0, 3206, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevj_bufferSize", 1, 8, 8, 4); __PYX_ERR(0, 3206, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevj_bufferSize", 1, 8, 8, 5); __PYX_ERR(0, 3206, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevj_bufferSize", 1, 8, 8, 6); __PYX_ERR(0, 3206, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevj_bufferSize", 1, 8, 8, 7); __PYX_ERR(0, 3206, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ssyevj_bufferSize") < 0)) __PYX_ERR(0, 3206, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 8) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3206, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3206, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3206, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3207, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3207, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3207, __pyx_L3_error)
    __pyx_v_W = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_W == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3207, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[7]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3208, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ssyevj_bufferSize", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3206, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssyevj_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_390ssyevj_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_params);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_390ssyevj_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, intptr_t __pyx_v_params) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ssyevj_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssyevj_bufferSize(__pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_params, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3206, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssyevj_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3219
 *     return lwork
 * 
 * cpdef int dsyevj_bufferSize(intptr_t handle, int jobz, int uplo,             # <<<<<<<<<<<<<<
 *                             int n, size_t A, int lda, size_t W,
 *                             intptr_t params) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_393dsyevj_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsyevj_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, intptr_t __pyx_v_params, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dsyevj_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3223
 *                             intptr_t params) except? -1:
 *     cdef int lwork, status
 *     setStream(handle, stream_module.get_current_stream_ptr())             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDsyevj_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(__pyx_v_handle, __pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr(), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3223, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3224
 *     cdef int lwork, status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDsyevj_bufferSize(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3225
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:
 *         status = cusolverDnDsyevj_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 *             <const double*>A,
 */
        __pyx_v_status = cusolverDnDsyevj_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((double const *)__pyx_v_A), __pyx_v_lda, ((double const *)__pyx_v_W), (&__pyx_v_lwork), ((syevjInfo_t)__pyx_v_params));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3224
 *     cdef int lwork, status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDsyevj_bufferSize(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3229
 *             <const double*>A,
 *             lda, <const double*>W, &lwork, <SyevjInfo>params)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3230
 *             lda, <const double*>W, &lwork, <SyevjInfo>params)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int cheevj_bufferSize(intptr_t handle, int jobz, int uplo,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3219
 *     return lwork
 * 
 * cpdef int dsyevj_bufferSize(intptr_t handle, int jobz, int uplo,             # <<<<<<<<<<<<<<
 *                             int n, size_t A, int lda, size_t W,
 *                             intptr_t params) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsyevj_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_393dsyevj_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_392dsyevj_bufferSize[] = "dsyevj_bufferSize(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda, size_t W, intptr_t params) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_393dsyevj_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_W;
  intptr_t __pyx_v_params;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dsyevj_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_W,&__pyx_n_s_params,0};
    PyObject* values[8] = {0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevj_bufferSize", 1, 8, 8, 1); __PYX_ERR(0, 3219, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevj_bufferSize", 1, 8, 8, 2); __PYX_ERR(0, 3219, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevj_bufferSize", 1, 8, 8, 3); __PYX_ERR(0, 3219, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevj_bufferSize", 1, 8, 8, 4); __PYX_ERR(0, 3219, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevj_bufferSize", 1, 8, 8, 5); __PYX_ERR(0, 3219, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevj_bufferSize", 1, 8, 8, 6); __PYX_ERR(0, 3219, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevj_bufferSize", 1, 8, 8, 7); __PYX_ERR(0, 3219, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dsyevj_bufferSize") < 0)) __PYX_ERR(0, 3219, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 8) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3219, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3219, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3219, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3220, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3220, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3220, __pyx_L3_error)
    __pyx_v_W = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_W == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3220, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[7]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3221, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dsyevj_bufferSize", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3219, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsyevj_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_392dsyevj_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_params);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_392dsyevj_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, intptr_t __pyx_v_params) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dsyevj_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsyevj_bufferSize(__pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_params, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3219, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsyevj_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3232
 *     return lwork
 * 
 * cpdef int cheevj_bufferSize(intptr_t handle, int jobz, int uplo,             # <<<<<<<<<<<<<<
 *                             int n, size_t A, int lda, size_t W,
 *                             intptr_t params) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_395cheevj_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cheevj_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, intptr_t __pyx_v_params, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cheevj_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3236
 *                             intptr_t params) except? -1:
 *     cdef int lwork, status
 *     setStream(handle, stream_module.get_current_stream_ptr())             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCheevj_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(__pyx_v_handle, __pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr(), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3236, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3237
 *     cdef int lwork, status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCheevj_bufferSize(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3238
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:
 *         status = cusolverDnCheevj_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 *             <const cuComplex*>A,
 */
        __pyx_v_status = cusolverDnCheevj_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((cuComplex const *)__pyx_v_A), __pyx_v_lda, ((float const *)__pyx_v_W), (&__pyx_v_lwork), ((syevjInfo_t)__pyx_v_params));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3237
 *     cdef int lwork, status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCheevj_bufferSize(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3242
 *             <const cuComplex*>A,
 *             lda, <const float*>W, &lwork, <SyevjInfo>params)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3242, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3243
 *             lda, <const float*>W, &lwork, <SyevjInfo>params)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int zheevj_bufferSize(intptr_t handle, int jobz, int uplo,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3232
 *     return lwork
 * 
 * cpdef int cheevj_bufferSize(intptr_t handle, int jobz, int uplo,             # <<<<<<<<<<<<<<
 *                             int n, size_t A, int lda, size_t W,
 *                             intptr_t params) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cheevj_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_395cheevj_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_394cheevj_bufferSize[] = "cheevj_bufferSize(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda, size_t W, intptr_t params) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_395cheevj_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_W;
  intptr_t __pyx_v_params;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cheevj_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_W,&__pyx_n_s_params,0};
    PyObject* values[8] = {0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevj_bufferSize", 1, 8, 8, 1); __PYX_ERR(0, 3232, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevj_bufferSize", 1, 8, 8, 2); __PYX_ERR(0, 3232, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevj_bufferSize", 1, 8, 8, 3); __PYX_ERR(0, 3232, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevj_bufferSize", 1, 8, 8, 4); __PYX_ERR(0, 3232, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevj_bufferSize", 1, 8, 8, 5); __PYX_ERR(0, 3232, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevj_bufferSize", 1, 8, 8, 6); __PYX_ERR(0, 3232, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevj_bufferSize", 1, 8, 8, 7); __PYX_ERR(0, 3232, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cheevj_bufferSize") < 0)) __PYX_ERR(0, 3232, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 8) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3232, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3232, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3232, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3233, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3233, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3233, __pyx_L3_error)
    __pyx_v_W = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_W == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3233, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[7]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3234, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cheevj_bufferSize", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3232, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cheevj_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_394cheevj_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_params);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_394cheevj_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, intptr_t __pyx_v_params) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cheevj_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cheevj_bufferSize(__pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_params, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3232, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cheevj_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3245
 *     return lwork
 * 
 * cpdef int zheevj_bufferSize(intptr_t handle, int jobz, int uplo,             # <<<<<<<<<<<<<<
 *                             int n, size_t A, int lda, size_t W,
 *                             intptr_t params) except? -1:
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_397zheevj_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zheevj_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, intptr_t __pyx_v_params, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zheevj_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3249
 *                             intptr_t params) except? -1:
 *     cdef int lwork, status
 *     setStream(handle, stream_module.get_current_stream_ptr())             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZheevj_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(__pyx_v_handle, __pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr(), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3250
 *     cdef int lwork, status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZheevj_bufferSize(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3251
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:
 *         status = cusolverDnZheevj_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 *             <const cuDoubleComplex*>A,
 */
        __pyx_v_status = cusolverDnZheevj_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((cuDoubleComplex const *)__pyx_v_A), __pyx_v_lda, ((double const *)__pyx_v_W), (&__pyx_v_lwork), ((syevjInfo_t)__pyx_v_params));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3250
 *     cdef int lwork, status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZheevj_bufferSize(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3255
 *             <const cuDoubleComplex*>A,
 *             lda, <const double*>W, &lwork, <SyevjInfo>params)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3256
 *             lda, <const double*>W, &lwork, <SyevjInfo>params)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef ssyevj(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3245
 *     return lwork
 * 
 * cpdef int zheevj_bufferSize(intptr_t handle, int jobz, int uplo,             # <<<<<<<<<<<<<<
 *                             int n, size_t A, int lda, size_t W,
 *                             intptr_t params) except? -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zheevj_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_397zheevj_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_396zheevj_bufferSize[] = "zheevj_bufferSize(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda, size_t W, intptr_t params) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_397zheevj_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_W;
  intptr_t __pyx_v_params;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zheevj_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_W,&__pyx_n_s_params,0};
    PyObject* values[8] = {0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevj_bufferSize", 1, 8, 8, 1); __PYX_ERR(0, 3245, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevj_bufferSize", 1, 8, 8, 2); __PYX_ERR(0, 3245, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevj_bufferSize", 1, 8, 8, 3); __PYX_ERR(0, 3245, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevj_bufferSize", 1, 8, 8, 4); __PYX_ERR(0, 3245, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevj_bufferSize", 1, 8, 8, 5); __PYX_ERR(0, 3245, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevj_bufferSize", 1, 8, 8, 6); __PYX_ERR(0, 3245, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevj_bufferSize", 1, 8, 8, 7); __PYX_ERR(0, 3245, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zheevj_bufferSize") < 0)) __PYX_ERR(0, 3245, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 8) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3245, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3245, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3245, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3246, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3246, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3246, __pyx_L3_error)
    __pyx_v_W = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_W == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3246, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[7]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3247, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zheevj_bufferSize", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3245, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zheevj_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_396zheevj_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_params);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_396zheevj_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, intptr_t __pyx_v_params) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zheevj_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zheevj_bufferSize(__pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_params, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3245, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zheevj_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3258
 *     return lwork
 * 
 * cpdef ssyevj(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t W, size_t work, int lwork, size_t info, intptr_t params):
 *     cdef int status
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_399ssyevj(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssyevj(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, intptr_t __pyx_v_params, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ssyevj", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3261
 *              size_t W, size_t work, int lwork, size_t info, intptr_t params):
 *     cdef int status
 *     setStream(handle, stream_module.get_current_stream_ptr())             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSsyevj(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(__pyx_v_handle, __pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr(), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3262
 *     cdef int status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSsyevj(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3263
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:
 *         status = cusolverDnSsyevj(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 *             <float*>A, lda, <float*>W,
 */
        __pyx_v_status = cusolverDnSsyevj(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((float *)__pyx_v_A), __pyx_v_lda, ((float *)__pyx_v_W), ((float *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_info), ((syevjInfo_t)__pyx_v_params));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3262
 *     cdef int status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSsyevj(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3267
 *             <float*>A, lda, <float*>W,
 *             <float*>work, lwork, <int*>info, <SyevjInfo>params)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef dsyevj(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3258
 *     return lwork
 * 
 * cpdef ssyevj(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t W, size_t work, int lwork, size_t info, intptr_t params):
 *     cdef int status
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssyevj", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_399ssyevj(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_398ssyevj[] = "ssyevj(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda, size_t W, size_t work, int lwork, size_t info, intptr_t params)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_399ssyevj(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_W;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_info;
  intptr_t __pyx_v_params;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ssyevj (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_W,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_info,&__pyx_n_s_params,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevj", 1, 11, 11, 1); __PYX_ERR(0, 3258, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevj", 1, 11, 11, 2); __PYX_ERR(0, 3258, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevj", 1, 11, 11, 3); __PYX_ERR(0, 3258, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevj", 1, 11, 11, 4); __PYX_ERR(0, 3258, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevj", 1, 11, 11, 5); __PYX_ERR(0, 3258, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevj", 1, 11, 11, 6); __PYX_ERR(0, 3258, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevj", 1, 11, 11, 7); __PYX_ERR(0, 3258, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevj", 1, 11, 11, 8); __PYX_ERR(0, 3258, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevj", 1, 11, 11, 9); __PYX_ERR(0, 3258, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevj", 1, 11, 11, 10); __PYX_ERR(0, 3258, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ssyevj") < 0)) __PYX_ERR(0, 3258, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3258, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3258, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3258, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3258, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3258, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3258, __pyx_L3_error)
    __pyx_v_W = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_W == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3259, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3259, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3259, __pyx_L3_error)
    __pyx_v_info = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_info == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3259, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[10]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3259, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ssyevj", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3258, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssyevj", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_398ssyevj(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_398ssyevj(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, intptr_t __pyx_v_params) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ssyevj", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssyevj(__pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssyevj", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3269
 *     check_status(status)
 * 
 * cpdef dsyevj(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t W, size_t work, int lwork, size_t info, intptr_t params):
 *     cdef int status
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_401dsyevj(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsyevj(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, intptr_t __pyx_v_params, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dsyevj", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3272
 *              size_t W, size_t work, int lwork, size_t info, intptr_t params):
 *     cdef int status
 *     setStream(handle, stream_module.get_current_stream_ptr())             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDsyevj(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(__pyx_v_handle, __pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr(), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3273
 *     cdef int status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDsyevj(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3274
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:
 *         status = cusolverDnDsyevj(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 *             <double*>A, lda, <double*>W,
 */
        __pyx_v_status = cusolverDnDsyevj(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((double *)__pyx_v_A), __pyx_v_lda, ((double *)__pyx_v_W), ((double *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_info), ((syevjInfo_t)__pyx_v_params));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3273
 *     cdef int status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDsyevj(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3278
 *             <double*>A, lda, <double*>W,
 *             <double*>work, lwork, <int*>info, <SyevjInfo>params)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef cheevj(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3269
 *     check_status(status)
 * 
 * cpdef dsyevj(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t W, size_t work, int lwork, size_t info, intptr_t params):
 *     cdef int status
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsyevj", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_401dsyevj(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_400dsyevj[] = "dsyevj(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda, size_t W, size_t work, int lwork, size_t info, intptr_t params)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_401dsyevj(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_W;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_info;
  intptr_t __pyx_v_params;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dsyevj (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_W,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_info,&__pyx_n_s_params,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevj", 1, 11, 11, 1); __PYX_ERR(0, 3269, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevj", 1, 11, 11, 2); __PYX_ERR(0, 3269, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevj", 1, 11, 11, 3); __PYX_ERR(0, 3269, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevj", 1, 11, 11, 4); __PYX_ERR(0, 3269, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevj", 1, 11, 11, 5); __PYX_ERR(0, 3269, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevj", 1, 11, 11, 6); __PYX_ERR(0, 3269, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevj", 1, 11, 11, 7); __PYX_ERR(0, 3269, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevj", 1, 11, 11, 8); __PYX_ERR(0, 3269, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevj", 1, 11, 11, 9); __PYX_ERR(0, 3269, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevj", 1, 11, 11, 10); __PYX_ERR(0, 3269, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dsyevj") < 0)) __PYX_ERR(0, 3269, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3269, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3269, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3269, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3269, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3269, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3269, __pyx_L3_error)
    __pyx_v_W = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_W == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3270, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3270, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3270, __pyx_L3_error)
    __pyx_v_info = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_info == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3270, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[10]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3270, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dsyevj", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3269, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsyevj", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_400dsyevj(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_400dsyevj(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, intptr_t __pyx_v_params) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dsyevj", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsyevj(__pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsyevj", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3280
 *     check_status(status)
 * 
 * cpdef cheevj(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t W, size_t work, int lwork, size_t info, intptr_t params):
 *     cdef int status
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_403cheevj(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cheevj(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, intptr_t __pyx_v_params, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cheevj", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3283
 *              size_t W, size_t work, int lwork, size_t info, intptr_t params):
 *     cdef int status
 *     setStream(handle, stream_module.get_current_stream_ptr())             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCheevj(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(__pyx_v_handle, __pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr(), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3284
 *     cdef int status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCheevj(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3285
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:
 *         status = cusolverDnCheevj(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 *             <cuComplex*>A, lda, <float*>W,
 */
        __pyx_v_status = cusolverDnCheevj(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((cuComplex *)__pyx_v_A), __pyx_v_lda, ((float *)__pyx_v_W), ((cuComplex *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_info), ((syevjInfo_t)__pyx_v_params));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3284
 *     cdef int status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCheevj(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3289
 *             <cuComplex*>A, lda, <float*>W,
 *             <cuComplex*>work, lwork, <int*>info, <SyevjInfo>params)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef zheevj(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3280
 *     check_status(status)
 * 
 * cpdef cheevj(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t W, size_t work, int lwork, size_t info, intptr_t params):
 *     cdef int status
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cheevj", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_403cheevj(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_402cheevj[] = "cheevj(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda, size_t W, size_t work, int lwork, size_t info, intptr_t params)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_403cheevj(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_W;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_info;
  intptr_t __pyx_v_params;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cheevj (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_W,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_info,&__pyx_n_s_params,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevj", 1, 11, 11, 1); __PYX_ERR(0, 3280, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevj", 1, 11, 11, 2); __PYX_ERR(0, 3280, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevj", 1, 11, 11, 3); __PYX_ERR(0, 3280, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevj", 1, 11, 11, 4); __PYX_ERR(0, 3280, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevj", 1, 11, 11, 5); __PYX_ERR(0, 3280, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevj", 1, 11, 11, 6); __PYX_ERR(0, 3280, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevj", 1, 11, 11, 7); __PYX_ERR(0, 3280, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevj", 1, 11, 11, 8); __PYX_ERR(0, 3280, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevj", 1, 11, 11, 9); __PYX_ERR(0, 3280, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevj", 1, 11, 11, 10); __PYX_ERR(0, 3280, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cheevj") < 0)) __PYX_ERR(0, 3280, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3280, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3280, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3280, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3280, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3280, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3280, __pyx_L3_error)
    __pyx_v_W = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_W == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3281, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3281, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3281, __pyx_L3_error)
    __pyx_v_info = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_info == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3281, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[10]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3281, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cheevj", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3280, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cheevj", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_402cheevj(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_402cheevj(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, intptr_t __pyx_v_params) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cheevj", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cheevj(__pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cheevj", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3291
 *     check_status(status)
 * 
 * cpdef zheevj(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t W, size_t work, int lwork, size_t info, intptr_t params):
 *     cdef int status
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_405zheevj(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zheevj(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, intptr_t __pyx_v_params, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zheevj", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3294
 *              size_t W, size_t work, int lwork, size_t info, intptr_t params):
 *     cdef int status
 *     setStream(handle, stream_module.get_current_stream_ptr())             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZheevj(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(__pyx_v_handle, __pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr(), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3295
 *     cdef int status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZheevj(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3296
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:
 *         status = cusolverDnZheevj(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 *             <cuDoubleComplex*>A, lda, <double*>W,
 */
        __pyx_v_status = cusolverDnZheevj(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((cuDoubleComplex *)__pyx_v_A), __pyx_v_lda, ((double *)__pyx_v_W), ((cuDoubleComplex *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_info), ((syevjInfo_t)__pyx_v_params));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3295
 *     cdef int status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZheevj(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3300
 *             <cuDoubleComplex*>A, lda, <double*>W,
 *             <cuDoubleComplex*>work, lwork, <int*>info, <SyevjInfo>params)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * # Batched symmetric eigenvalue solver via Jacobi method
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3291
 *     check_status(status)
 * 
 * cpdef zheevj(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda,             # <<<<<<<<<<<<<<
 *              size_t W, size_t work, int lwork, size_t info, intptr_t params):
 *     cdef int status
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zheevj", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_405zheevj(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_404zheevj[] = "zheevj(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda, size_t W, size_t work, int lwork, size_t info, intptr_t params)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_405zheevj(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_W;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_info;
  intptr_t __pyx_v_params;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zheevj (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_W,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_info,&__pyx_n_s_params,0};
    PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevj", 1, 11, 11, 1); __PYX_ERR(0, 3291, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevj", 1, 11, 11, 2); __PYX_ERR(0, 3291, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevj", 1, 11, 11, 3); __PYX_ERR(0, 3291, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevj", 1, 11, 11, 4); __PYX_ERR(0, 3291, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevj", 1, 11, 11, 5); __PYX_ERR(0, 3291, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevj", 1, 11, 11, 6); __PYX_ERR(0, 3291, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevj", 1, 11, 11, 7); __PYX_ERR(0, 3291, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevj", 1, 11, 11, 8); __PYX_ERR(0, 3291, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevj", 1, 11, 11, 9); __PYX_ERR(0, 3291, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevj", 1, 11, 11, 10); __PYX_ERR(0, 3291, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zheevj") < 0)) __PYX_ERR(0, 3291, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3291, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3291, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3291, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3291, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3291, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3291, __pyx_L3_error)
    __pyx_v_W = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_W == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3292, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3292, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3292, __pyx_L3_error)
    __pyx_v_info = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_info == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3292, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[10]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3292, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zheevj", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3291, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zheevj", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_404zheevj(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_404zheevj(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, intptr_t __pyx_v_params) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zheevj", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zheevj(__pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zheevj", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3304
 * # Batched symmetric eigenvalue solver via Jacobi method
 * 
 * cpdef int ssyevjBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int uplo, int n,
 *         size_t A, int lda, size_t W, intptr_t params,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_407ssyevjBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssyevjBatched_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, intptr_t __pyx_v_params, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ssyevjBatched_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3309
 *         int batchSize) except? -1:
 *     cdef int lwork, status
 *     setStream(handle, stream_module.get_current_stream_ptr())             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSsyevjBatched_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(__pyx_v_handle, __pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr(), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3310
 *     cdef int lwork, status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSsyevjBatched_bufferSize(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3311
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:
 *         status = cusolverDnSsyevjBatched_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 *             <const float *>A, lda, <const float *>W, &lwork,
 */
        __pyx_v_status = cusolverDnSsyevjBatched_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((float const *)__pyx_v_A), __pyx_v_lda, ((float const *)__pyx_v_W), (&__pyx_v_lwork), ((syevjInfo_t)__pyx_v_params), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3310
 *     cdef int lwork, status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSsyevjBatched_bufferSize(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3315
 *             <const float *>A, lda, <const float *>W, &lwork,
 *             <SyevjInfo>params, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3316
 *             <SyevjInfo>params, batchSize)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int dsyevjBatched_bufferSize(
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3304
 * # Batched symmetric eigenvalue solver via Jacobi method
 * 
 * cpdef int ssyevjBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int uplo, int n,
 *         size_t A, int lda, size_t W, intptr_t params,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssyevjBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_407ssyevjBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_406ssyevjBatched_bufferSize[] = "ssyevjBatched_bufferSize(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda, size_t W, intptr_t params, int batchSize) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_407ssyevjBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_W;
  intptr_t __pyx_v_params;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ssyevjBatched_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_W,&__pyx_n_s_params,&__pyx_n_s_batchSize,0};
    PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevjBatched_bufferSize", 1, 9, 9, 1); __PYX_ERR(0, 3304, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevjBatched_bufferSize", 1, 9, 9, 2); __PYX_ERR(0, 3304, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevjBatched_bufferSize", 1, 9, 9, 3); __PYX_ERR(0, 3304, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevjBatched_bufferSize", 1, 9, 9, 4); __PYX_ERR(0, 3304, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevjBatched_bufferSize", 1, 9, 9, 5); __PYX_ERR(0, 3304, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevjBatched_bufferSize", 1, 9, 9, 6); __PYX_ERR(0, 3304, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevjBatched_bufferSize", 1, 9, 9, 7); __PYX_ERR(0, 3304, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevjBatched_bufferSize", 1, 9, 9, 8); __PYX_ERR(0, 3304, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ssyevjBatched_bufferSize") < 0)) __PYX_ERR(0, 3304, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3305, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3305, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3305, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3305, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3306, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3306, __pyx_L3_error)
    __pyx_v_W = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_W == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3306, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[7]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3306, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3307, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ssyevjBatched_bufferSize", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3304, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssyevjBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_406ssyevjBatched_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_params, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_406ssyevjBatched_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, intptr_t __pyx_v_params, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ssyevjBatched_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssyevjBatched_bufferSize(__pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_params, __pyx_v_batchSize, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3304, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssyevjBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3318
 *     return lwork
 * 
 * cpdef int dsyevjBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int uplo, int n,
 *         size_t A, int lda, size_t W, intptr_t params,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_409dsyevjBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsyevjBatched_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, intptr_t __pyx_v_params, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dsyevjBatched_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3323
 *         int batchSize) except? -1:
 *     cdef int lwork, status
 *     setStream(handle, stream_module.get_current_stream_ptr())             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDsyevjBatched_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(__pyx_v_handle, __pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr(), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3323, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3324
 *     cdef int lwork, status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDsyevjBatched_bufferSize(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3325
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:
 *         status = cusolverDnDsyevjBatched_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 *             <const double *>A, lda, <const double *>W, &lwork,
 */
        __pyx_v_status = cusolverDnDsyevjBatched_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((double const *)__pyx_v_A), __pyx_v_lda, ((double const *)__pyx_v_W), (&__pyx_v_lwork), ((syevjInfo_t)__pyx_v_params), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3324
 *     cdef int lwork, status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDsyevjBatched_bufferSize(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3329
 *             <const double *>A, lda, <const double *>W, &lwork,
 *             <SyevjInfo>params, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3330
 *             <SyevjInfo>params, batchSize)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int cheevjBatched_bufferSize(
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3318
 *     return lwork
 * 
 * cpdef int dsyevjBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int uplo, int n,
 *         size_t A, int lda, size_t W, intptr_t params,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsyevjBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_409dsyevjBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_408dsyevjBatched_bufferSize[] = "dsyevjBatched_bufferSize(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda, size_t W, intptr_t params, int batchSize) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_409dsyevjBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_W;
  intptr_t __pyx_v_params;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dsyevjBatched_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_W,&__pyx_n_s_params,&__pyx_n_s_batchSize,0};
    PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevjBatched_bufferSize", 1, 9, 9, 1); __PYX_ERR(0, 3318, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevjBatched_bufferSize", 1, 9, 9, 2); __PYX_ERR(0, 3318, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevjBatched_bufferSize", 1, 9, 9, 3); __PYX_ERR(0, 3318, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevjBatched_bufferSize", 1, 9, 9, 4); __PYX_ERR(0, 3318, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevjBatched_bufferSize", 1, 9, 9, 5); __PYX_ERR(0, 3318, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevjBatched_bufferSize", 1, 9, 9, 6); __PYX_ERR(0, 3318, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevjBatched_bufferSize", 1, 9, 9, 7); __PYX_ERR(0, 3318, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevjBatched_bufferSize", 1, 9, 9, 8); __PYX_ERR(0, 3318, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dsyevjBatched_bufferSize") < 0)) __PYX_ERR(0, 3318, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3319, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3319, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3319, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3319, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3320, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3320, __pyx_L3_error)
    __pyx_v_W = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_W == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3320, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[7]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3320, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3321, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dsyevjBatched_bufferSize", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3318, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsyevjBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_408dsyevjBatched_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_params, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_408dsyevjBatched_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, intptr_t __pyx_v_params, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dsyevjBatched_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsyevjBatched_bufferSize(__pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_params, __pyx_v_batchSize, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3318, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsyevjBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3332
 *     return lwork
 * 
 * cpdef int cheevjBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int uplo, int n,
 *         size_t A, int lda, size_t W, intptr_t params,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_411cheevjBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cheevjBatched_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, intptr_t __pyx_v_params, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cheevjBatched_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3337
 *         int batchSize) except? -1:
 *     cdef int lwork, status
 *     setStream(handle, stream_module.get_current_stream_ptr())             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCheevjBatched_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(__pyx_v_handle, __pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr(), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3338
 *     cdef int lwork, status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCheevjBatched_bufferSize(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3339
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:
 *         status = cusolverDnCheevjBatched_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 *             <const cuComplex *>A, lda, <const float *>W, &lwork,
 */
        __pyx_v_status = cusolverDnCheevjBatched_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((cuComplex const *)__pyx_v_A), __pyx_v_lda, ((float const *)__pyx_v_W), (&__pyx_v_lwork), ((syevjInfo_t)__pyx_v_params), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3338
 *     cdef int lwork, status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCheevjBatched_bufferSize(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3343
 *             <const cuComplex *>A, lda, <const float *>W, &lwork,
 *             <SyevjInfo>params, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3343, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3344
 *             <SyevjInfo>params, batchSize)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef int zheevjBatched_bufferSize(
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3332
 *     return lwork
 * 
 * cpdef int cheevjBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int uplo, int n,
 *         size_t A, int lda, size_t W, intptr_t params,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cheevjBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_411cheevjBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_410cheevjBatched_bufferSize[] = "cheevjBatched_bufferSize(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda, size_t W, intptr_t params, int batchSize) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_411cheevjBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_W;
  intptr_t __pyx_v_params;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cheevjBatched_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_W,&__pyx_n_s_params,&__pyx_n_s_batchSize,0};
    PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevjBatched_bufferSize", 1, 9, 9, 1); __PYX_ERR(0, 3332, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevjBatched_bufferSize", 1, 9, 9, 2); __PYX_ERR(0, 3332, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevjBatched_bufferSize", 1, 9, 9, 3); __PYX_ERR(0, 3332, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevjBatched_bufferSize", 1, 9, 9, 4); __PYX_ERR(0, 3332, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevjBatched_bufferSize", 1, 9, 9, 5); __PYX_ERR(0, 3332, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevjBatched_bufferSize", 1, 9, 9, 6); __PYX_ERR(0, 3332, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevjBatched_bufferSize", 1, 9, 9, 7); __PYX_ERR(0, 3332, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevjBatched_bufferSize", 1, 9, 9, 8); __PYX_ERR(0, 3332, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cheevjBatched_bufferSize") < 0)) __PYX_ERR(0, 3332, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3333, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3333, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3333, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3333, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3334, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3334, __pyx_L3_error)
    __pyx_v_W = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_W == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3334, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[7]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3334, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3335, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cheevjBatched_bufferSize", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3332, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cheevjBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_410cheevjBatched_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_params, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_410cheevjBatched_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, intptr_t __pyx_v_params, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cheevjBatched_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cheevjBatched_bufferSize(__pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_params, __pyx_v_batchSize, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3332, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3332, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cheevjBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3346
 *     return lwork
 * 
 * cpdef int zheevjBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int uplo, int n,
 *         size_t A, int lda, size_t W, intptr_t params,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_413zheevjBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zheevjBatched_bufferSize(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, intptr_t __pyx_v_params, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_lwork;
  int __pyx_v_status;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zheevjBatched_bufferSize", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3351
 *         int batchSize) except? -1:
 *     cdef int lwork, status
 *     setStream(handle, stream_module.get_current_stream_ptr())             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZheevjBatched_bufferSize(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(__pyx_v_handle, __pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr(), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3352
 *     cdef int lwork, status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZheevjBatched_bufferSize(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3353
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:
 *         status = cusolverDnZheevjBatched_bufferSize(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 *             <const cuDoubleComplex *>A, lda, <const double *>W, &lwork,
 */
        __pyx_v_status = cusolverDnZheevjBatched_bufferSize(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((cuDoubleComplex const *)__pyx_v_A), __pyx_v_lda, ((double const *)__pyx_v_W), (&__pyx_v_lwork), ((syevjInfo_t)__pyx_v_params), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3352
 *     cdef int lwork, status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZheevjBatched_bufferSize(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3357
 *             <const cuDoubleComplex *>A, lda, <const double *>W, &lwork,
 *             <SyevjInfo>params, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 *     return lwork
 * 
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3358
 *             <SyevjInfo>params, batchSize)
 *     check_status(status)
 *     return lwork             # <<<<<<<<<<<<<<
 * 
 * cpdef ssyevjBatched(intptr_t handle, int jobz, int uplo, int n,
 */
  __pyx_r = __pyx_v_lwork;
  goto __pyx_L0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3346
 *     return lwork
 * 
 * cpdef int zheevjBatched_bufferSize(             # <<<<<<<<<<<<<<
 *         intptr_t handle, int jobz, int uplo, int n,
 *         size_t A, int lda, size_t W, intptr_t params,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zheevjBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_413zheevjBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_412zheevjBatched_bufferSize[] = "zheevjBatched_bufferSize(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda, size_t W, intptr_t params, int batchSize) -> int";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_413zheevjBatched_bufferSize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_W;
  intptr_t __pyx_v_params;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zheevjBatched_bufferSize (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_W,&__pyx_n_s_params,&__pyx_n_s_batchSize,0};
    PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevjBatched_bufferSize", 1, 9, 9, 1); __PYX_ERR(0, 3346, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevjBatched_bufferSize", 1, 9, 9, 2); __PYX_ERR(0, 3346, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevjBatched_bufferSize", 1, 9, 9, 3); __PYX_ERR(0, 3346, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevjBatched_bufferSize", 1, 9, 9, 4); __PYX_ERR(0, 3346, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevjBatched_bufferSize", 1, 9, 9, 5); __PYX_ERR(0, 3346, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevjBatched_bufferSize", 1, 9, 9, 6); __PYX_ERR(0, 3346, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevjBatched_bufferSize", 1, 9, 9, 7); __PYX_ERR(0, 3346, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevjBatched_bufferSize", 1, 9, 9, 8); __PYX_ERR(0, 3346, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zheevjBatched_bufferSize") < 0)) __PYX_ERR(0, 3346, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3347, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3347, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3347, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3347, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3348, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3348, __pyx_L3_error)
    __pyx_v_W = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_W == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3348, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[7]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3348, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3349, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zheevjBatched_bufferSize", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3346, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zheevjBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_412zheevjBatched_bufferSize(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_params, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_412zheevjBatched_bufferSize(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, intptr_t __pyx_v_params, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zheevjBatched_bufferSize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zheevjBatched_bufferSize(__pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_params, __pyx_v_batchSize, 0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3346, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zheevjBatched_bufferSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3360
 *     return lwork
 * 
 * cpdef ssyevjBatched(intptr_t handle, int jobz, int uplo, int n,             # <<<<<<<<<<<<<<
 *                     size_t A, int lda, size_t W, size_t work, int lwork,
 *                     size_t info, intptr_t params, int batchSize):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_415ssyevjBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssyevjBatched(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, intptr_t __pyx_v_params, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ssyevjBatched", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3364
 *                     size_t info, intptr_t params, int batchSize):
 *     cdef int status
 *     setStream(handle, stream_module.get_current_stream_ptr())             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnSsyevjBatched(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(__pyx_v_handle, __pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr(), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3365
 *     cdef int status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSsyevjBatched(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3366
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:
 *         status = cusolverDnSsyevjBatched(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 *             <float*>A, lda, <float*>W,
 */
        __pyx_v_status = cusolverDnSsyevjBatched(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((float *)__pyx_v_A), __pyx_v_lda, ((float *)__pyx_v_W), ((float *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_info), ((syevjInfo_t)__pyx_v_params), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3365
 *     cdef int status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnSsyevjBatched(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3370
 *             <float*>A, lda, <float*>W,
 *             <float*>work, lwork, <int*>info, <SyevjInfo>params, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef dsyevjBatched(intptr_t handle, int jobz, int uplo, int n,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3370, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3360
 *     return lwork
 * 
 * cpdef ssyevjBatched(intptr_t handle, int jobz, int uplo, int n,             # <<<<<<<<<<<<<<
 *                     size_t A, int lda, size_t W, size_t work, int lwork,
 *                     size_t info, intptr_t params, int batchSize):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssyevjBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_415ssyevjBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_414ssyevjBatched[] = "ssyevjBatched(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda, size_t W, size_t work, int lwork, size_t info, intptr_t params, int batchSize)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_415ssyevjBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_W;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_info;
  intptr_t __pyx_v_params;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ssyevjBatched (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_W,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_info,&__pyx_n_s_params,&__pyx_n_s_batchSize,0};
    PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevjBatched", 1, 12, 12, 1); __PYX_ERR(0, 3360, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevjBatched", 1, 12, 12, 2); __PYX_ERR(0, 3360, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevjBatched", 1, 12, 12, 3); __PYX_ERR(0, 3360, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevjBatched", 1, 12, 12, 4); __PYX_ERR(0, 3360, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevjBatched", 1, 12, 12, 5); __PYX_ERR(0, 3360, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevjBatched", 1, 12, 12, 6); __PYX_ERR(0, 3360, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevjBatched", 1, 12, 12, 7); __PYX_ERR(0, 3360, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevjBatched", 1, 12, 12, 8); __PYX_ERR(0, 3360, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevjBatched", 1, 12, 12, 9); __PYX_ERR(0, 3360, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevjBatched", 1, 12, 12, 10); __PYX_ERR(0, 3360, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ssyevjBatched", 1, 12, 12, 11); __PYX_ERR(0, 3360, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ssyevjBatched") < 0)) __PYX_ERR(0, 3360, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 12) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3360, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3360, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3360, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3360, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3361, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3361, __pyx_L3_error)
    __pyx_v_W = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_W == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3361, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3361, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3361, __pyx_L3_error)
    __pyx_v_info = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_info == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3362, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[10]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3362, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[11]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3362, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ssyevjBatched", 1, 12, 12, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3360, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssyevjBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_414ssyevjBatched(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_414ssyevjBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, intptr_t __pyx_v_params, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ssyevjBatched", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssyevjBatched(__pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params, __pyx_v_batchSize, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ssyevjBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3372
 *     check_status(status)
 * 
 * cpdef dsyevjBatched(intptr_t handle, int jobz, int uplo, int n,             # <<<<<<<<<<<<<<
 *                     size_t A, int lda, size_t W, size_t work, int lwork,
 *                     size_t info, intptr_t params, int batchSize):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_417dsyevjBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsyevjBatched(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, intptr_t __pyx_v_params, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dsyevjBatched", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3376
 *                     size_t info, intptr_t params, int batchSize):
 *     cdef int status
 *     setStream(handle, stream_module.get_current_stream_ptr())             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnDsyevjBatched(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(__pyx_v_handle, __pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr(), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3376, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3377
 *     cdef int status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDsyevjBatched(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3378
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:
 *         status = cusolverDnDsyevjBatched(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 *             <double*>A, lda, <double*>W,
 */
        __pyx_v_status = cusolverDnDsyevjBatched(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((double *)__pyx_v_A), __pyx_v_lda, ((double *)__pyx_v_W), ((double *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_info), ((syevjInfo_t)__pyx_v_params), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3377
 *     cdef int status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnDsyevjBatched(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3382
 *             <double*>A, lda, <double*>W,
 *             <double*>work, lwork, <int*>info, <SyevjInfo>params, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef cheevjBatched(intptr_t handle, int jobz, int uplo, int n,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3382, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3372
 *     check_status(status)
 * 
 * cpdef dsyevjBatched(intptr_t handle, int jobz, int uplo, int n,             # <<<<<<<<<<<<<<
 *                     size_t A, int lda, size_t W, size_t work, int lwork,
 *                     size_t info, intptr_t params, int batchSize):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsyevjBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_417dsyevjBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_416dsyevjBatched[] = "dsyevjBatched(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda, size_t W, size_t work, int lwork, size_t info, intptr_t params, int batchSize)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_417dsyevjBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_W;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_info;
  intptr_t __pyx_v_params;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dsyevjBatched (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_W,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_info,&__pyx_n_s_params,&__pyx_n_s_batchSize,0};
    PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevjBatched", 1, 12, 12, 1); __PYX_ERR(0, 3372, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevjBatched", 1, 12, 12, 2); __PYX_ERR(0, 3372, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevjBatched", 1, 12, 12, 3); __PYX_ERR(0, 3372, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevjBatched", 1, 12, 12, 4); __PYX_ERR(0, 3372, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevjBatched", 1, 12, 12, 5); __PYX_ERR(0, 3372, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevjBatched", 1, 12, 12, 6); __PYX_ERR(0, 3372, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevjBatched", 1, 12, 12, 7); __PYX_ERR(0, 3372, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevjBatched", 1, 12, 12, 8); __PYX_ERR(0, 3372, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevjBatched", 1, 12, 12, 9); __PYX_ERR(0, 3372, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevjBatched", 1, 12, 12, 10); __PYX_ERR(0, 3372, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dsyevjBatched", 1, 12, 12, 11); __PYX_ERR(0, 3372, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dsyevjBatched") < 0)) __PYX_ERR(0, 3372, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 12) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3372, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3372, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3372, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3372, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3373, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3373, __pyx_L3_error)
    __pyx_v_W = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_W == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3373, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3373, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3373, __pyx_L3_error)
    __pyx_v_info = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_info == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3374, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[10]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3374, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[11]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3374, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dsyevjBatched", 1, 12, 12, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3372, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsyevjBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_416dsyevjBatched(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_416dsyevjBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, intptr_t __pyx_v_params, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dsyevjBatched", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsyevjBatched(__pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params, __pyx_v_batchSize, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3372, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dsyevjBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3384
 *     check_status(status)
 * 
 * cpdef cheevjBatched(intptr_t handle, int jobz, int uplo, int n,             # <<<<<<<<<<<<<<
 *                     size_t A, int lda, size_t W, size_t work, int lwork,
 *                     size_t info, intptr_t params, int batchSize):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_419cheevjBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cheevjBatched(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, intptr_t __pyx_v_params, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cheevjBatched", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3388
 *                     size_t info, intptr_t params, int batchSize):
 *     cdef int status
 *     setStream(handle, stream_module.get_current_stream_ptr())             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnCheevjBatched(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(__pyx_v_handle, __pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr(), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3388, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3389
 *     cdef int status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCheevjBatched(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3390
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:
 *         status = cusolverDnCheevjBatched(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 *             <cuComplex*>A, lda, <float*>W,
 */
        __pyx_v_status = cusolverDnCheevjBatched(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((cuComplex *)__pyx_v_A), __pyx_v_lda, ((float *)__pyx_v_W), ((cuComplex *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_info), ((syevjInfo_t)__pyx_v_params), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3389
 *     cdef int status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnCheevjBatched(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3394
 *             <cuComplex*>A, lda, <float*>W,
 *             <cuComplex*>work, lwork, <int*>info, <SyevjInfo>params, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef zheevjBatched(intptr_t handle, int jobz, int uplo, int n,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3394, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3384
 *     check_status(status)
 * 
 * cpdef cheevjBatched(intptr_t handle, int jobz, int uplo, int n,             # <<<<<<<<<<<<<<
 *                     size_t A, int lda, size_t W, size_t work, int lwork,
 *                     size_t info, intptr_t params, int batchSize):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cheevjBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_419cheevjBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_418cheevjBatched[] = "cheevjBatched(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda, size_t W, size_t work, int lwork, size_t info, intptr_t params, int batchSize)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_419cheevjBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_W;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_info;
  intptr_t __pyx_v_params;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cheevjBatched (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_W,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_info,&__pyx_n_s_params,&__pyx_n_s_batchSize,0};
    PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevjBatched", 1, 12, 12, 1); __PYX_ERR(0, 3384, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevjBatched", 1, 12, 12, 2); __PYX_ERR(0, 3384, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevjBatched", 1, 12, 12, 3); __PYX_ERR(0, 3384, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevjBatched", 1, 12, 12, 4); __PYX_ERR(0, 3384, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevjBatched", 1, 12, 12, 5); __PYX_ERR(0, 3384, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevjBatched", 1, 12, 12, 6); __PYX_ERR(0, 3384, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevjBatched", 1, 12, 12, 7); __PYX_ERR(0, 3384, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevjBatched", 1, 12, 12, 8); __PYX_ERR(0, 3384, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevjBatched", 1, 12, 12, 9); __PYX_ERR(0, 3384, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevjBatched", 1, 12, 12, 10); __PYX_ERR(0, 3384, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cheevjBatched", 1, 12, 12, 11); __PYX_ERR(0, 3384, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cheevjBatched") < 0)) __PYX_ERR(0, 3384, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 12) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3384, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3384, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3384, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3384, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3385, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3385, __pyx_L3_error)
    __pyx_v_W = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_W == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3385, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3385, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3385, __pyx_L3_error)
    __pyx_v_info = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_info == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3386, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[10]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3386, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[11]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3386, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cheevjBatched", 1, 12, 12, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3384, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cheevjBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_418cheevjBatched(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_418cheevjBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, intptr_t __pyx_v_params, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cheevjBatched", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cheevjBatched(__pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params, __pyx_v_batchSize, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3384, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.cheevjBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3396
 *     check_status(status)
 * 
 * cpdef zheevjBatched(intptr_t handle, int jobz, int uplo, int n,             # <<<<<<<<<<<<<<
 *                     size_t A, int lda, size_t W, size_t work, int lwork,
 *                     size_t info, intptr_t params, int batchSize):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_421zheevjBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zheevjBatched(intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, intptr_t __pyx_v_params, int __pyx_v_batchSize, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zheevjBatched", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3400
 *                     size_t info, intptr_t params, int batchSize):
 *     cdef int status
 *     setStream(handle, stream_module.get_current_stream_ptr())             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverDnZheevjBatched(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream(__pyx_v_handle, __pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr(), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3401
 *     cdef int status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZheevjBatched(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3402
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:
 *         status = cusolverDnZheevjBatched(             # <<<<<<<<<<<<<<
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 *             <cuDoubleComplex*>A, lda, <double*>W,
 */
        __pyx_v_status = cusolverDnZheevjBatched(((cusolverDnHandle_t)__pyx_v_handle), ((cusolverEigMode_t)__pyx_v_jobz), ((cublasFillMode_t)__pyx_v_uplo), __pyx_v_n, ((cuDoubleComplex *)__pyx_v_A), __pyx_v_lda, ((double *)__pyx_v_W), ((cuDoubleComplex *)__pyx_v_work), __pyx_v_lwork, ((int *)__pyx_v_info), ((syevjInfo_t)__pyx_v_params), __pyx_v_batchSize);
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3401
 *     cdef int status
 *     setStream(handle, stream_module.get_current_stream_ptr())
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverDnZheevjBatched(
 *             <Handle>handle, <EigMode>jobz, <FillMode>uplo, n,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3407
 *             <cuDoubleComplex*>work, lwork, <int*>info,
 *             <SyevjInfo>params, batchSize)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * ###############################################################################
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3407, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3396
 *     check_status(status)
 * 
 * cpdef zheevjBatched(intptr_t handle, int jobz, int uplo, int n,             # <<<<<<<<<<<<<<
 *                     size_t A, int lda, size_t W, size_t work, int lwork,
 *                     size_t info, intptr_t params, int batchSize):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zheevjBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_421zheevjBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_420zheevjBatched[] = "zheevjBatched(intptr_t handle, int jobz, int uplo, int n, size_t A, int lda, size_t W, size_t work, int lwork, size_t info, intptr_t params, int batchSize)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_421zheevjBatched(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_jobz;
  int __pyx_v_uplo;
  int __pyx_v_n;
  size_t __pyx_v_A;
  int __pyx_v_lda;
  size_t __pyx_v_W;
  size_t __pyx_v_work;
  int __pyx_v_lwork;
  size_t __pyx_v_info;
  intptr_t __pyx_v_params;
  int __pyx_v_batchSize;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zheevjBatched (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_jobz,&__pyx_n_s_uplo,&__pyx_n_s_n,&__pyx_n_s_A,&__pyx_n_s_lda,&__pyx_n_s_W,&__pyx_n_s_work,&__pyx_n_s_lwork,&__pyx_n_s_info,&__pyx_n_s_params,&__pyx_n_s_batchSize,0};
    PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_jobz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevjBatched", 1, 12, 12, 1); __PYX_ERR(0, 3396, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uplo)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevjBatched", 1, 12, 12, 2); __PYX_ERR(0, 3396, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevjBatched", 1, 12, 12, 3); __PYX_ERR(0, 3396, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevjBatched", 1, 12, 12, 4); __PYX_ERR(0, 3396, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lda)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevjBatched", 1, 12, 12, 5); __PYX_ERR(0, 3396, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevjBatched", 1, 12, 12, 6); __PYX_ERR(0, 3396, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_work)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevjBatched", 1, 12, 12, 7); __PYX_ERR(0, 3396, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lwork)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevjBatched", 1, 12, 12, 8); __PYX_ERR(0, 3396, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_info)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevjBatched", 1, 12, 12, 9); __PYX_ERR(0, 3396, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevjBatched", 1, 12, 12, 10); __PYX_ERR(0, 3396, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batchSize)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zheevjBatched", 1, 12, 12, 11); __PYX_ERR(0, 3396, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zheevjBatched") < 0)) __PYX_ERR(0, 3396, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 12) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3396, __pyx_L3_error)
    __pyx_v_jobz = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_jobz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3396, __pyx_L3_error)
    __pyx_v_uplo = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_uplo == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3396, __pyx_L3_error)
    __pyx_v_n = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3396, __pyx_L3_error)
    __pyx_v_A = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_A == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3397, __pyx_L3_error)
    __pyx_v_lda = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_lda == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3397, __pyx_L3_error)
    __pyx_v_W = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_W == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3397, __pyx_L3_error)
    __pyx_v_work = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_work == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3397, __pyx_L3_error)
    __pyx_v_lwork = __Pyx_PyInt_As_int(values[8]); if (unlikely((__pyx_v_lwork == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3397, __pyx_L3_error)
    __pyx_v_info = __Pyx_PyInt_As_size_t(values[9]); if (unlikely((__pyx_v_info == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3398, __pyx_L3_error)
    __pyx_v_params = PyInt_AsSsize_t(values[10]); if (unlikely((__pyx_v_params == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3398, __pyx_L3_error)
    __pyx_v_batchSize = __Pyx_PyInt_As_int(values[11]); if (unlikely((__pyx_v_batchSize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3398, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zheevjBatched", 1, 12, 12, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3396, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zheevjBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_420zheevjBatched(__pyx_self, __pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params, __pyx_v_batchSize);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_420zheevjBatched(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_jobz, int __pyx_v_uplo, int __pyx_v_n, size_t __pyx_v_A, int __pyx_v_lda, size_t __pyx_v_W, size_t __pyx_v_work, int __pyx_v_lwork, size_t __pyx_v_info, intptr_t __pyx_v_params, int __pyx_v_batchSize) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zheevjBatched", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zheevjBatched(__pyx_v_handle, __pyx_v_jobz, __pyx_v_uplo, __pyx_v_n, __pyx_v_A, __pyx_v_lda, __pyx_v_W, __pyx_v_work, __pyx_v_lwork, __pyx_v_info, __pyx_v_params, __pyx_v_batchSize, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zheevjBatched", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3412
 * # Sparse LAPACK Functions
 * ###############################################################################
 * cpdef scsrlsvchol(intptr_t handle, int m, int nnz, size_t descrA,             # <<<<<<<<<<<<<<
 *                   size_t csrValA, size_t csrRowPtrA, size_t csrColIndA,
 *                   size_t b, float tol, int reorder, size_t x,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_423scsrlsvchol(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_scsrlsvchol(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrValA, size_t __pyx_v_csrRowPtrA, size_t __pyx_v_csrColIndA, size_t __pyx_v_b, float __pyx_v_tol, int __pyx_v_reorder, size_t __pyx_v_x, size_t __pyx_v_singularity, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scsrlsvchol", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3417
 *                   size_t singularity):
 *     cdef int status
 *     _spSetStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverSpScsrlsvchol(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__spSetStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3417, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3418
 *     cdef int status
 *     _spSetStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpScsrlsvchol(
 *             <SpHandle>handle, m, nnz, <const MatDescr> descrA,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3419
 *     _spSetStream(handle)
 *     with nogil:
 *         status = cusolverSpScsrlsvchol(             # <<<<<<<<<<<<<<
 *             <SpHandle>handle, m, nnz, <const MatDescr> descrA,
 *             <const float*> csrValA, <const int*> csrRowPtrA,
 */
        __pyx_v_status = cusolverSpScsrlsvchol(((cusolverSpHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_nnz, ((cusparseMatDescr_t const )__pyx_v_descrA), ((float const *)__pyx_v_csrValA), ((int const *)__pyx_v_csrRowPtrA), ((int const *)__pyx_v_csrColIndA), ((float const *)__pyx_v_b), __pyx_v_tol, __pyx_v_reorder, ((float *)__pyx_v_x), ((int *)__pyx_v_singularity));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3418
 *     cdef int status
 *     _spSetStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpScsrlsvchol(
 *             <SpHandle>handle, m, nnz, <const MatDescr> descrA,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3424
 *             <const int*> csrColIndA, <const float*> b,
 *             tol, reorder, <float*> x, <int*> singularity)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef dcsrlsvchol(intptr_t handle, int m, int nnz, size_t descrA,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3412
 * # Sparse LAPACK Functions
 * ###############################################################################
 * cpdef scsrlsvchol(intptr_t handle, int m, int nnz, size_t descrA,             # <<<<<<<<<<<<<<
 *                   size_t csrValA, size_t csrRowPtrA, size_t csrColIndA,
 *                   size_t b, float tol, int reorder, size_t x,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.scsrlsvchol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_423scsrlsvchol(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_422scsrlsvchol[] = "scsrlsvchol(intptr_t handle, int m, int nnz, size_t descrA, size_t csrValA, size_t csrRowPtrA, size_t csrColIndA, size_t b, float tol, int reorder, size_t x, size_t singularity)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_423scsrlsvchol(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_nnz;
  size_t __pyx_v_descrA;
  size_t __pyx_v_csrValA;
  size_t __pyx_v_csrRowPtrA;
  size_t __pyx_v_csrColIndA;
  size_t __pyx_v_b;
  float __pyx_v_tol;
  int __pyx_v_reorder;
  size_t __pyx_v_x;
  size_t __pyx_v_singularity;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scsrlsvchol (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_nnz,&__pyx_n_s_descrA,&__pyx_n_s_csrValA,&__pyx_n_s_csrRowPtrA,&__pyx_n_s_csrColIndA,&__pyx_n_s_b,&__pyx_n_s_tol,&__pyx_n_s_reorder,&__pyx_n_s_x,&__pyx_n_s_singularity,0};
    PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsrlsvchol", 1, 12, 12, 1); __PYX_ERR(0, 3412, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nnz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsrlsvchol", 1, 12, 12, 2); __PYX_ERR(0, 3412, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_descrA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsrlsvchol", 1, 12, 12, 3); __PYX_ERR(0, 3412, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrValA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsrlsvchol", 1, 12, 12, 4); __PYX_ERR(0, 3412, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrRowPtrA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsrlsvchol", 1, 12, 12, 5); __PYX_ERR(0, 3412, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrColIndA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsrlsvchol", 1, 12, 12, 6); __PYX_ERR(0, 3412, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_b)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsrlsvchol", 1, 12, 12, 7); __PYX_ERR(0, 3412, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tol)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsrlsvchol", 1, 12, 12, 8); __PYX_ERR(0, 3412, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_reorder)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsrlsvchol", 1, 12, 12, 9); __PYX_ERR(0, 3412, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsrlsvchol", 1, 12, 12, 10); __PYX_ERR(0, 3412, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_singularity)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsrlsvchol", 1, 12, 12, 11); __PYX_ERR(0, 3412, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "scsrlsvchol") < 0)) __PYX_ERR(0, 3412, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 12) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3412, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3412, __pyx_L3_error)
    __pyx_v_nnz = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nnz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3412, __pyx_L3_error)
    __pyx_v_descrA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_descrA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3412, __pyx_L3_error)
    __pyx_v_csrValA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_csrValA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3413, __pyx_L3_error)
    __pyx_v_csrRowPtrA = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_csrRowPtrA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3413, __pyx_L3_error)
    __pyx_v_csrColIndA = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_csrColIndA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3413, __pyx_L3_error)
    __pyx_v_b = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_b == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3414, __pyx_L3_error)
    __pyx_v_tol = __pyx_PyFloat_AsFloat(values[8]); if (unlikely((__pyx_v_tol == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 3414, __pyx_L3_error)
    __pyx_v_reorder = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_reorder == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3414, __pyx_L3_error)
    __pyx_v_x = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_x == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3414, __pyx_L3_error)
    __pyx_v_singularity = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_singularity == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3415, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scsrlsvchol", 1, 12, 12, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3412, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.scsrlsvchol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_422scsrlsvchol(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_nnz, __pyx_v_descrA, __pyx_v_csrValA, __pyx_v_csrRowPtrA, __pyx_v_csrColIndA, __pyx_v_b, __pyx_v_tol, __pyx_v_reorder, __pyx_v_x, __pyx_v_singularity);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_422scsrlsvchol(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrValA, size_t __pyx_v_csrRowPtrA, size_t __pyx_v_csrColIndA, size_t __pyx_v_b, float __pyx_v_tol, int __pyx_v_reorder, size_t __pyx_v_x, size_t __pyx_v_singularity) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scsrlsvchol", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_scsrlsvchol(__pyx_v_handle, __pyx_v_m, __pyx_v_nnz, __pyx_v_descrA, __pyx_v_csrValA, __pyx_v_csrRowPtrA, __pyx_v_csrColIndA, __pyx_v_b, __pyx_v_tol, __pyx_v_reorder, __pyx_v_x, __pyx_v_singularity, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3412, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.scsrlsvchol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3426
 *     check_status(status)
 * 
 * cpdef dcsrlsvchol(intptr_t handle, int m, int nnz, size_t descrA,             # <<<<<<<<<<<<<<
 *                   size_t csrValA, size_t csrRowPtrA, size_t csrColIndA,
 *                   size_t b, double tol, int reorder, size_t x,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_425dcsrlsvchol(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dcsrlsvchol(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrValA, size_t __pyx_v_csrRowPtrA, size_t __pyx_v_csrColIndA, size_t __pyx_v_b, double __pyx_v_tol, int __pyx_v_reorder, size_t __pyx_v_x, size_t __pyx_v_singularity, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dcsrlsvchol", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3431
 *                   size_t singularity):
 *     cdef int status
 *     _spSetStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverSpDcsrlsvchol(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__spSetStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3432
 *     cdef int status
 *     _spSetStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpDcsrlsvchol(
 *             <SpHandle>handle, m, nnz, <const MatDescr> descrA,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3433
 *     _spSetStream(handle)
 *     with nogil:
 *         status = cusolverSpDcsrlsvchol(             # <<<<<<<<<<<<<<
 *             <SpHandle>handle, m, nnz, <const MatDescr> descrA,
 *             <const double*> csrValA, <const int*> csrRowPtrA,
 */
        __pyx_v_status = cusolverSpDcsrlsvchol(((cusolverSpHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_nnz, ((cusparseMatDescr_t const )__pyx_v_descrA), ((double const *)__pyx_v_csrValA), ((int const *)__pyx_v_csrRowPtrA), ((int const *)__pyx_v_csrColIndA), ((double const *)__pyx_v_b), __pyx_v_tol, __pyx_v_reorder, ((double *)__pyx_v_x), ((int *)__pyx_v_singularity));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3432
 *     cdef int status
 *     _spSetStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpDcsrlsvchol(
 *             <SpHandle>handle, m, nnz, <const MatDescr> descrA,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3438
 *             <const int*> csrColIndA, <const double*> b,
 *             tol, reorder, <double*> x, <int*> singularity)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef ccsrlsvchol(intptr_t handle, int m, int nnz, size_t descrA,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3438, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3426
 *     check_status(status)
 * 
 * cpdef dcsrlsvchol(intptr_t handle, int m, int nnz, size_t descrA,             # <<<<<<<<<<<<<<
 *                   size_t csrValA, size_t csrRowPtrA, size_t csrColIndA,
 *                   size_t b, double tol, int reorder, size_t x,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dcsrlsvchol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_425dcsrlsvchol(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_424dcsrlsvchol[] = "dcsrlsvchol(intptr_t handle, int m, int nnz, size_t descrA, size_t csrValA, size_t csrRowPtrA, size_t csrColIndA, size_t b, double tol, int reorder, size_t x, size_t singularity)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_425dcsrlsvchol(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_nnz;
  size_t __pyx_v_descrA;
  size_t __pyx_v_csrValA;
  size_t __pyx_v_csrRowPtrA;
  size_t __pyx_v_csrColIndA;
  size_t __pyx_v_b;
  double __pyx_v_tol;
  int __pyx_v_reorder;
  size_t __pyx_v_x;
  size_t __pyx_v_singularity;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dcsrlsvchol (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_nnz,&__pyx_n_s_descrA,&__pyx_n_s_csrValA,&__pyx_n_s_csrRowPtrA,&__pyx_n_s_csrColIndA,&__pyx_n_s_b,&__pyx_n_s_tol,&__pyx_n_s_reorder,&__pyx_n_s_x,&__pyx_n_s_singularity,0};
    PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsrlsvchol", 1, 12, 12, 1); __PYX_ERR(0, 3426, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nnz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsrlsvchol", 1, 12, 12, 2); __PYX_ERR(0, 3426, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_descrA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsrlsvchol", 1, 12, 12, 3); __PYX_ERR(0, 3426, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrValA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsrlsvchol", 1, 12, 12, 4); __PYX_ERR(0, 3426, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrRowPtrA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsrlsvchol", 1, 12, 12, 5); __PYX_ERR(0, 3426, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrColIndA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsrlsvchol", 1, 12, 12, 6); __PYX_ERR(0, 3426, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_b)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsrlsvchol", 1, 12, 12, 7); __PYX_ERR(0, 3426, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tol)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsrlsvchol", 1, 12, 12, 8); __PYX_ERR(0, 3426, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_reorder)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsrlsvchol", 1, 12, 12, 9); __PYX_ERR(0, 3426, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsrlsvchol", 1, 12, 12, 10); __PYX_ERR(0, 3426, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_singularity)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsrlsvchol", 1, 12, 12, 11); __PYX_ERR(0, 3426, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dcsrlsvchol") < 0)) __PYX_ERR(0, 3426, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 12) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3426, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3426, __pyx_L3_error)
    __pyx_v_nnz = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nnz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3426, __pyx_L3_error)
    __pyx_v_descrA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_descrA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3426, __pyx_L3_error)
    __pyx_v_csrValA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_csrValA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3427, __pyx_L3_error)
    __pyx_v_csrRowPtrA = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_csrRowPtrA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3427, __pyx_L3_error)
    __pyx_v_csrColIndA = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_csrColIndA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3427, __pyx_L3_error)
    __pyx_v_b = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_b == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3428, __pyx_L3_error)
    __pyx_v_tol = __pyx_PyFloat_AsDouble(values[8]); if (unlikely((__pyx_v_tol == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3428, __pyx_L3_error)
    __pyx_v_reorder = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_reorder == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3428, __pyx_L3_error)
    __pyx_v_x = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_x == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3428, __pyx_L3_error)
    __pyx_v_singularity = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_singularity == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3429, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dcsrlsvchol", 1, 12, 12, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3426, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dcsrlsvchol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_424dcsrlsvchol(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_nnz, __pyx_v_descrA, __pyx_v_csrValA, __pyx_v_csrRowPtrA, __pyx_v_csrColIndA, __pyx_v_b, __pyx_v_tol, __pyx_v_reorder, __pyx_v_x, __pyx_v_singularity);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_424dcsrlsvchol(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrValA, size_t __pyx_v_csrRowPtrA, size_t __pyx_v_csrColIndA, size_t __pyx_v_b, double __pyx_v_tol, int __pyx_v_reorder, size_t __pyx_v_x, size_t __pyx_v_singularity) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dcsrlsvchol", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dcsrlsvchol(__pyx_v_handle, __pyx_v_m, __pyx_v_nnz, __pyx_v_descrA, __pyx_v_csrValA, __pyx_v_csrRowPtrA, __pyx_v_csrColIndA, __pyx_v_b, __pyx_v_tol, __pyx_v_reorder, __pyx_v_x, __pyx_v_singularity, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dcsrlsvchol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3440
 *     check_status(status)
 * 
 * cpdef ccsrlsvchol(intptr_t handle, int m, int nnz, size_t descrA,             # <<<<<<<<<<<<<<
 *                   size_t csrVal, size_t csrRowPtr, size_t csrColInd, size_t b,
 *                   float tol, int reorder, size_t x, size_t singularity):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_427ccsrlsvchol(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccsrlsvchol(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrVal, size_t __pyx_v_csrRowPtr, size_t __pyx_v_csrColInd, size_t __pyx_v_b, float __pyx_v_tol, int __pyx_v_reorder, size_t __pyx_v_x, size_t __pyx_v_singularity, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ccsrlsvchol", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3444
 *                   float tol, int reorder, size_t x, size_t singularity):
 *     cdef int status
 *     _spSetStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverSpCcsrlsvchol(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__spSetStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3444, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3445
 *     cdef int status
 *     _spSetStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpCcsrlsvchol(
 *             <SpHandle>handle, m, nnz, <const MatDescr>descrA,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3446
 *     _spSetStream(handle)
 *     with nogil:
 *         status = cusolverSpCcsrlsvchol(             # <<<<<<<<<<<<<<
 *             <SpHandle>handle, m, nnz, <const MatDescr>descrA,
 *             <const cuComplex*>csrVal, <const int*>csrRowPtr,
 */
        __pyx_v_status = cusolverSpCcsrlsvchol(((cusolverSpHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_nnz, ((cusparseMatDescr_t const )__pyx_v_descrA), ((cuComplex const *)__pyx_v_csrVal), ((int const *)__pyx_v_csrRowPtr), ((int const *)__pyx_v_csrColInd), ((cuComplex const *)__pyx_v_b), __pyx_v_tol, __pyx_v_reorder, ((cuComplex *)__pyx_v_x), ((int *)__pyx_v_singularity));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3445
 *     cdef int status
 *     _spSetStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpCcsrlsvchol(
 *             <SpHandle>handle, m, nnz, <const MatDescr>descrA,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3451
 *             <const int*>csrColInd, <const cuComplex*>b, tol, reorder,
 *             <cuComplex*>x, <int*>singularity)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef zcsrlsvchol(intptr_t handle, int m, int nnz, size_t descrA,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3451, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3440
 *     check_status(status)
 * 
 * cpdef ccsrlsvchol(intptr_t handle, int m, int nnz, size_t descrA,             # <<<<<<<<<<<<<<
 *                   size_t csrVal, size_t csrRowPtr, size_t csrColInd, size_t b,
 *                   float tol, int reorder, size_t x, size_t singularity):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ccsrlsvchol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_427ccsrlsvchol(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_426ccsrlsvchol[] = "ccsrlsvchol(intptr_t handle, int m, int nnz, size_t descrA, size_t csrVal, size_t csrRowPtr, size_t csrColInd, size_t b, float tol, int reorder, size_t x, size_t singularity)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_427ccsrlsvchol(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_nnz;
  size_t __pyx_v_descrA;
  size_t __pyx_v_csrVal;
  size_t __pyx_v_csrRowPtr;
  size_t __pyx_v_csrColInd;
  size_t __pyx_v_b;
  float __pyx_v_tol;
  int __pyx_v_reorder;
  size_t __pyx_v_x;
  size_t __pyx_v_singularity;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ccsrlsvchol (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_nnz,&__pyx_n_s_descrA,&__pyx_n_s_csrVal,&__pyx_n_s_csrRowPtr,&__pyx_n_s_csrColInd,&__pyx_n_s_b,&__pyx_n_s_tol,&__pyx_n_s_reorder,&__pyx_n_s_x,&__pyx_n_s_singularity,0};
    PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsrlsvchol", 1, 12, 12, 1); __PYX_ERR(0, 3440, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nnz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsrlsvchol", 1, 12, 12, 2); __PYX_ERR(0, 3440, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_descrA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsrlsvchol", 1, 12, 12, 3); __PYX_ERR(0, 3440, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrVal)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsrlsvchol", 1, 12, 12, 4); __PYX_ERR(0, 3440, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrRowPtr)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsrlsvchol", 1, 12, 12, 5); __PYX_ERR(0, 3440, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrColInd)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsrlsvchol", 1, 12, 12, 6); __PYX_ERR(0, 3440, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_b)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsrlsvchol", 1, 12, 12, 7); __PYX_ERR(0, 3440, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tol)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsrlsvchol", 1, 12, 12, 8); __PYX_ERR(0, 3440, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_reorder)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsrlsvchol", 1, 12, 12, 9); __PYX_ERR(0, 3440, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsrlsvchol", 1, 12, 12, 10); __PYX_ERR(0, 3440, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_singularity)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsrlsvchol", 1, 12, 12, 11); __PYX_ERR(0, 3440, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ccsrlsvchol") < 0)) __PYX_ERR(0, 3440, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 12) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3440, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3440, __pyx_L3_error)
    __pyx_v_nnz = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nnz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3440, __pyx_L3_error)
    __pyx_v_descrA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_descrA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3440, __pyx_L3_error)
    __pyx_v_csrVal = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_csrVal == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3441, __pyx_L3_error)
    __pyx_v_csrRowPtr = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_csrRowPtr == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3441, __pyx_L3_error)
    __pyx_v_csrColInd = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_csrColInd == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3441, __pyx_L3_error)
    __pyx_v_b = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_b == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3441, __pyx_L3_error)
    __pyx_v_tol = __pyx_PyFloat_AsFloat(values[8]); if (unlikely((__pyx_v_tol == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 3442, __pyx_L3_error)
    __pyx_v_reorder = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_reorder == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3442, __pyx_L3_error)
    __pyx_v_x = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_x == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3442, __pyx_L3_error)
    __pyx_v_singularity = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_singularity == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3442, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ccsrlsvchol", 1, 12, 12, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3440, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ccsrlsvchol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_426ccsrlsvchol(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_nnz, __pyx_v_descrA, __pyx_v_csrVal, __pyx_v_csrRowPtr, __pyx_v_csrColInd, __pyx_v_b, __pyx_v_tol, __pyx_v_reorder, __pyx_v_x, __pyx_v_singularity);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_426ccsrlsvchol(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrVal, size_t __pyx_v_csrRowPtr, size_t __pyx_v_csrColInd, size_t __pyx_v_b, float __pyx_v_tol, int __pyx_v_reorder, size_t __pyx_v_x, size_t __pyx_v_singularity) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ccsrlsvchol", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccsrlsvchol(__pyx_v_handle, __pyx_v_m, __pyx_v_nnz, __pyx_v_descrA, __pyx_v_csrVal, __pyx_v_csrRowPtr, __pyx_v_csrColInd, __pyx_v_b, __pyx_v_tol, __pyx_v_reorder, __pyx_v_x, __pyx_v_singularity, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3440, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ccsrlsvchol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3453
 *     check_status(status)
 * 
 * cpdef zcsrlsvchol(intptr_t handle, int m, int nnz, size_t descrA,             # <<<<<<<<<<<<<<
 *                   size_t csrVal, size_t csrRowPtr, size_t csrColInd, size_t b,
 *                   double tol, int reorder, size_t x, size_t singularity):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_429zcsrlsvchol(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcsrlsvchol(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrVal, size_t __pyx_v_csrRowPtr, size_t __pyx_v_csrColInd, size_t __pyx_v_b, double __pyx_v_tol, int __pyx_v_reorder, size_t __pyx_v_x, size_t __pyx_v_singularity, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zcsrlsvchol", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3457
 *                   double tol, int reorder, size_t x, size_t singularity):
 *     cdef int status
 *     _spSetStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverSpZcsrlsvchol(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__spSetStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3457, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3458
 *     cdef int status
 *     _spSetStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpZcsrlsvchol(
 *             <SpHandle>handle, m, nnz, <const MatDescr>descrA,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3459
 *     _spSetStream(handle)
 *     with nogil:
 *         status = cusolverSpZcsrlsvchol(             # <<<<<<<<<<<<<<
 *             <SpHandle>handle, m, nnz, <const MatDescr>descrA,
 *             <const cuDoubleComplex*>csrVal, <const int*>csrRowPtr,
 */
        __pyx_v_status = cusolverSpZcsrlsvchol(((cusolverSpHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_nnz, ((cusparseMatDescr_t const )__pyx_v_descrA), ((cuDoubleComplex const *)__pyx_v_csrVal), ((int const *)__pyx_v_csrRowPtr), ((int const *)__pyx_v_csrColInd), ((cuDoubleComplex const *)__pyx_v_b), __pyx_v_tol, __pyx_v_reorder, ((cuDoubleComplex *)__pyx_v_x), ((int *)__pyx_v_singularity));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3458
 *     cdef int status
 *     _spSetStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpZcsrlsvchol(
 *             <SpHandle>handle, m, nnz, <const MatDescr>descrA,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3464
 *             <const int*>csrColInd, <const cuDoubleComplex*>b, tol, reorder,
 *             <cuDoubleComplex*>x, <int*>singularity)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef scsrlsvqr(intptr_t handle, int m, int nnz, size_t descrA, size_t csrValA,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3464, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3453
 *     check_status(status)
 * 
 * cpdef zcsrlsvchol(intptr_t handle, int m, int nnz, size_t descrA,             # <<<<<<<<<<<<<<
 *                   size_t csrVal, size_t csrRowPtr, size_t csrColInd, size_t b,
 *                   double tol, int reorder, size_t x, size_t singularity):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zcsrlsvchol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_429zcsrlsvchol(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_428zcsrlsvchol[] = "zcsrlsvchol(intptr_t handle, int m, int nnz, size_t descrA, size_t csrVal, size_t csrRowPtr, size_t csrColInd, size_t b, double tol, int reorder, size_t x, size_t singularity)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_429zcsrlsvchol(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_nnz;
  size_t __pyx_v_descrA;
  size_t __pyx_v_csrVal;
  size_t __pyx_v_csrRowPtr;
  size_t __pyx_v_csrColInd;
  size_t __pyx_v_b;
  double __pyx_v_tol;
  int __pyx_v_reorder;
  size_t __pyx_v_x;
  size_t __pyx_v_singularity;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zcsrlsvchol (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_nnz,&__pyx_n_s_descrA,&__pyx_n_s_csrVal,&__pyx_n_s_csrRowPtr,&__pyx_n_s_csrColInd,&__pyx_n_s_b,&__pyx_n_s_tol,&__pyx_n_s_reorder,&__pyx_n_s_x,&__pyx_n_s_singularity,0};
    PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsrlsvchol", 1, 12, 12, 1); __PYX_ERR(0, 3453, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nnz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsrlsvchol", 1, 12, 12, 2); __PYX_ERR(0, 3453, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_descrA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsrlsvchol", 1, 12, 12, 3); __PYX_ERR(0, 3453, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrVal)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsrlsvchol", 1, 12, 12, 4); __PYX_ERR(0, 3453, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrRowPtr)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsrlsvchol", 1, 12, 12, 5); __PYX_ERR(0, 3453, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrColInd)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsrlsvchol", 1, 12, 12, 6); __PYX_ERR(0, 3453, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_b)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsrlsvchol", 1, 12, 12, 7); __PYX_ERR(0, 3453, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tol)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsrlsvchol", 1, 12, 12, 8); __PYX_ERR(0, 3453, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_reorder)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsrlsvchol", 1, 12, 12, 9); __PYX_ERR(0, 3453, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsrlsvchol", 1, 12, 12, 10); __PYX_ERR(0, 3453, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_singularity)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsrlsvchol", 1, 12, 12, 11); __PYX_ERR(0, 3453, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zcsrlsvchol") < 0)) __PYX_ERR(0, 3453, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 12) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3453, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3453, __pyx_L3_error)
    __pyx_v_nnz = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nnz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3453, __pyx_L3_error)
    __pyx_v_descrA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_descrA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3453, __pyx_L3_error)
    __pyx_v_csrVal = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_csrVal == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3454, __pyx_L3_error)
    __pyx_v_csrRowPtr = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_csrRowPtr == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3454, __pyx_L3_error)
    __pyx_v_csrColInd = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_csrColInd == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3454, __pyx_L3_error)
    __pyx_v_b = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_b == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3454, __pyx_L3_error)
    __pyx_v_tol = __pyx_PyFloat_AsDouble(values[8]); if (unlikely((__pyx_v_tol == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3455, __pyx_L3_error)
    __pyx_v_reorder = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_reorder == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3455, __pyx_L3_error)
    __pyx_v_x = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_x == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3455, __pyx_L3_error)
    __pyx_v_singularity = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_singularity == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3455, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zcsrlsvchol", 1, 12, 12, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3453, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zcsrlsvchol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_428zcsrlsvchol(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_nnz, __pyx_v_descrA, __pyx_v_csrVal, __pyx_v_csrRowPtr, __pyx_v_csrColInd, __pyx_v_b, __pyx_v_tol, __pyx_v_reorder, __pyx_v_x, __pyx_v_singularity);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_428zcsrlsvchol(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrVal, size_t __pyx_v_csrRowPtr, size_t __pyx_v_csrColInd, size_t __pyx_v_b, double __pyx_v_tol, int __pyx_v_reorder, size_t __pyx_v_x, size_t __pyx_v_singularity) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zcsrlsvchol", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcsrlsvchol(__pyx_v_handle, __pyx_v_m, __pyx_v_nnz, __pyx_v_descrA, __pyx_v_csrVal, __pyx_v_csrRowPtr, __pyx_v_csrColInd, __pyx_v_b, __pyx_v_tol, __pyx_v_reorder, __pyx_v_x, __pyx_v_singularity, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zcsrlsvchol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3466
 *     check_status(status)
 * 
 * cpdef scsrlsvqr(intptr_t handle, int m, int nnz, size_t descrA, size_t csrValA,             # <<<<<<<<<<<<<<
 *                 size_t csrRowPtrA, size_t csrColIndA, size_t b, float tol,
 *                 int reorder, size_t x, size_t singularity):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_431scsrlsvqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_scsrlsvqr(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrValA, size_t __pyx_v_csrRowPtrA, size_t __pyx_v_csrColIndA, size_t __pyx_v_b, float __pyx_v_tol, int __pyx_v_reorder, size_t __pyx_v_x, size_t __pyx_v_singularity, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scsrlsvqr", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3470
 *                 int reorder, size_t x, size_t singularity):
 *     cdef int status
 *     _spSetStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverSpScsrlsvqr(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__spSetStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3470, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3471
 *     cdef int status
 *     _spSetStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpScsrlsvqr(
 *             <SpHandle>handle, m, nnz, <const MatDescr> descrA,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3472
 *     _spSetStream(handle)
 *     with nogil:
 *         status = cusolverSpScsrlsvqr(             # <<<<<<<<<<<<<<
 *             <SpHandle>handle, m, nnz, <const MatDescr> descrA,
 *             <const float*> csrValA, <const int*> csrRowPtrA,
 */
        __pyx_v_status = cusolverSpScsrlsvqr(((cusolverSpHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_nnz, ((cusparseMatDescr_t const )__pyx_v_descrA), ((float const *)__pyx_v_csrValA), ((int const *)__pyx_v_csrRowPtrA), ((int const *)__pyx_v_csrColIndA), ((float const *)__pyx_v_b), __pyx_v_tol, __pyx_v_reorder, ((float *)__pyx_v_x), ((int *)__pyx_v_singularity));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3471
 *     cdef int status
 *     _spSetStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpScsrlsvqr(
 *             <SpHandle>handle, m, nnz, <const MatDescr> descrA,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3477
 *             <const int*> csrColIndA, <const float*> b,
 *             tol, reorder, <float*> x, <int*> singularity)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef dcsrlsvqr(intptr_t handle, int m, int nnz, size_t descrA, size_t csrValA,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3477, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3466
 *     check_status(status)
 * 
 * cpdef scsrlsvqr(intptr_t handle, int m, int nnz, size_t descrA, size_t csrValA,             # <<<<<<<<<<<<<<
 *                 size_t csrRowPtrA, size_t csrColIndA, size_t b, float tol,
 *                 int reorder, size_t x, size_t singularity):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.scsrlsvqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_431scsrlsvqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_430scsrlsvqr[] = "scsrlsvqr(intptr_t handle, int m, int nnz, size_t descrA, size_t csrValA, size_t csrRowPtrA, size_t csrColIndA, size_t b, float tol, int reorder, size_t x, size_t singularity)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_431scsrlsvqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_nnz;
  size_t __pyx_v_descrA;
  size_t __pyx_v_csrValA;
  size_t __pyx_v_csrRowPtrA;
  size_t __pyx_v_csrColIndA;
  size_t __pyx_v_b;
  float __pyx_v_tol;
  int __pyx_v_reorder;
  size_t __pyx_v_x;
  size_t __pyx_v_singularity;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scsrlsvqr (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_nnz,&__pyx_n_s_descrA,&__pyx_n_s_csrValA,&__pyx_n_s_csrRowPtrA,&__pyx_n_s_csrColIndA,&__pyx_n_s_b,&__pyx_n_s_tol,&__pyx_n_s_reorder,&__pyx_n_s_x,&__pyx_n_s_singularity,0};
    PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsrlsvqr", 1, 12, 12, 1); __PYX_ERR(0, 3466, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nnz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsrlsvqr", 1, 12, 12, 2); __PYX_ERR(0, 3466, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_descrA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsrlsvqr", 1, 12, 12, 3); __PYX_ERR(0, 3466, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrValA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsrlsvqr", 1, 12, 12, 4); __PYX_ERR(0, 3466, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrRowPtrA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsrlsvqr", 1, 12, 12, 5); __PYX_ERR(0, 3466, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrColIndA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsrlsvqr", 1, 12, 12, 6); __PYX_ERR(0, 3466, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_b)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsrlsvqr", 1, 12, 12, 7); __PYX_ERR(0, 3466, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tol)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsrlsvqr", 1, 12, 12, 8); __PYX_ERR(0, 3466, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_reorder)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsrlsvqr", 1, 12, 12, 9); __PYX_ERR(0, 3466, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsrlsvqr", 1, 12, 12, 10); __PYX_ERR(0, 3466, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_singularity)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsrlsvqr", 1, 12, 12, 11); __PYX_ERR(0, 3466, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "scsrlsvqr") < 0)) __PYX_ERR(0, 3466, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 12) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3466, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3466, __pyx_L3_error)
    __pyx_v_nnz = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nnz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3466, __pyx_L3_error)
    __pyx_v_descrA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_descrA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3466, __pyx_L3_error)
    __pyx_v_csrValA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_csrValA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3466, __pyx_L3_error)
    __pyx_v_csrRowPtrA = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_csrRowPtrA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3467, __pyx_L3_error)
    __pyx_v_csrColIndA = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_csrColIndA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3467, __pyx_L3_error)
    __pyx_v_b = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_b == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3467, __pyx_L3_error)
    __pyx_v_tol = __pyx_PyFloat_AsFloat(values[8]); if (unlikely((__pyx_v_tol == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 3467, __pyx_L3_error)
    __pyx_v_reorder = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_reorder == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3468, __pyx_L3_error)
    __pyx_v_x = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_x == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3468, __pyx_L3_error)
    __pyx_v_singularity = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_singularity == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3468, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scsrlsvqr", 1, 12, 12, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3466, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.scsrlsvqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_430scsrlsvqr(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_nnz, __pyx_v_descrA, __pyx_v_csrValA, __pyx_v_csrRowPtrA, __pyx_v_csrColIndA, __pyx_v_b, __pyx_v_tol, __pyx_v_reorder, __pyx_v_x, __pyx_v_singularity);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_430scsrlsvqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrValA, size_t __pyx_v_csrRowPtrA, size_t __pyx_v_csrColIndA, size_t __pyx_v_b, float __pyx_v_tol, int __pyx_v_reorder, size_t __pyx_v_x, size_t __pyx_v_singularity) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scsrlsvqr", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_scsrlsvqr(__pyx_v_handle, __pyx_v_m, __pyx_v_nnz, __pyx_v_descrA, __pyx_v_csrValA, __pyx_v_csrRowPtrA, __pyx_v_csrColIndA, __pyx_v_b, __pyx_v_tol, __pyx_v_reorder, __pyx_v_x, __pyx_v_singularity, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3466, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.scsrlsvqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3479
 *     check_status(status)
 * 
 * cpdef dcsrlsvqr(intptr_t handle, int m, int nnz, size_t descrA, size_t csrValA,             # <<<<<<<<<<<<<<
 *                 size_t csrRowPtrA, size_t csrColIndA, size_t b, double tol,
 *                 int reorder, size_t x, size_t singularity):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_433dcsrlsvqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dcsrlsvqr(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrValA, size_t __pyx_v_csrRowPtrA, size_t __pyx_v_csrColIndA, size_t __pyx_v_b, double __pyx_v_tol, int __pyx_v_reorder, size_t __pyx_v_x, size_t __pyx_v_singularity, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dcsrlsvqr", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3483
 *                 int reorder, size_t x, size_t singularity):
 *     cdef int status
 *     _spSetStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverSpDcsrlsvqr(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__spSetStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3483, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3484
 *     cdef int status
 *     _spSetStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpDcsrlsvqr(
 *             <SpHandle>handle, m, nnz, <const MatDescr> descrA,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3485
 *     _spSetStream(handle)
 *     with nogil:
 *         status = cusolverSpDcsrlsvqr(             # <<<<<<<<<<<<<<
 *             <SpHandle>handle, m, nnz, <const MatDescr> descrA,
 *             <const double*> csrValA, <const int*> csrRowPtrA,
 */
        __pyx_v_status = cusolverSpDcsrlsvqr(((cusolverSpHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_nnz, ((cusparseMatDescr_t const )__pyx_v_descrA), ((double const *)__pyx_v_csrValA), ((int const *)__pyx_v_csrRowPtrA), ((int const *)__pyx_v_csrColIndA), ((double const *)__pyx_v_b), __pyx_v_tol, __pyx_v_reorder, ((double *)__pyx_v_x), ((int *)__pyx_v_singularity));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3484
 *     cdef int status
 *     _spSetStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpDcsrlsvqr(
 *             <SpHandle>handle, m, nnz, <const MatDescr> descrA,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3490
 *             <const int*> csrColIndA, <const double*> b,
 *             tol, reorder, <double*> x, <int*> singularity)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef ccsrlsvqr(intptr_t handle, int m, int nnz, size_t descrA, size_t csrVal,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3490, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3479
 *     check_status(status)
 * 
 * cpdef dcsrlsvqr(intptr_t handle, int m, int nnz, size_t descrA, size_t csrValA,             # <<<<<<<<<<<<<<
 *                 size_t csrRowPtrA, size_t csrColIndA, size_t b, double tol,
 *                 int reorder, size_t x, size_t singularity):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dcsrlsvqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_433dcsrlsvqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_432dcsrlsvqr[] = "dcsrlsvqr(intptr_t handle, int m, int nnz, size_t descrA, size_t csrValA, size_t csrRowPtrA, size_t csrColIndA, size_t b, double tol, int reorder, size_t x, size_t singularity)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_433dcsrlsvqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_nnz;
  size_t __pyx_v_descrA;
  size_t __pyx_v_csrValA;
  size_t __pyx_v_csrRowPtrA;
  size_t __pyx_v_csrColIndA;
  size_t __pyx_v_b;
  double __pyx_v_tol;
  int __pyx_v_reorder;
  size_t __pyx_v_x;
  size_t __pyx_v_singularity;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dcsrlsvqr (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_nnz,&__pyx_n_s_descrA,&__pyx_n_s_csrValA,&__pyx_n_s_csrRowPtrA,&__pyx_n_s_csrColIndA,&__pyx_n_s_b,&__pyx_n_s_tol,&__pyx_n_s_reorder,&__pyx_n_s_x,&__pyx_n_s_singularity,0};
    PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsrlsvqr", 1, 12, 12, 1); __PYX_ERR(0, 3479, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nnz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsrlsvqr", 1, 12, 12, 2); __PYX_ERR(0, 3479, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_descrA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsrlsvqr", 1, 12, 12, 3); __PYX_ERR(0, 3479, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrValA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsrlsvqr", 1, 12, 12, 4); __PYX_ERR(0, 3479, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrRowPtrA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsrlsvqr", 1, 12, 12, 5); __PYX_ERR(0, 3479, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrColIndA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsrlsvqr", 1, 12, 12, 6); __PYX_ERR(0, 3479, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_b)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsrlsvqr", 1, 12, 12, 7); __PYX_ERR(0, 3479, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tol)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsrlsvqr", 1, 12, 12, 8); __PYX_ERR(0, 3479, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_reorder)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsrlsvqr", 1, 12, 12, 9); __PYX_ERR(0, 3479, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsrlsvqr", 1, 12, 12, 10); __PYX_ERR(0, 3479, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_singularity)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsrlsvqr", 1, 12, 12, 11); __PYX_ERR(0, 3479, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dcsrlsvqr") < 0)) __PYX_ERR(0, 3479, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 12) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3479, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3479, __pyx_L3_error)
    __pyx_v_nnz = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nnz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3479, __pyx_L3_error)
    __pyx_v_descrA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_descrA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3479, __pyx_L3_error)
    __pyx_v_csrValA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_csrValA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3479, __pyx_L3_error)
    __pyx_v_csrRowPtrA = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_csrRowPtrA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3480, __pyx_L3_error)
    __pyx_v_csrColIndA = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_csrColIndA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3480, __pyx_L3_error)
    __pyx_v_b = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_b == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3480, __pyx_L3_error)
    __pyx_v_tol = __pyx_PyFloat_AsDouble(values[8]); if (unlikely((__pyx_v_tol == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3480, __pyx_L3_error)
    __pyx_v_reorder = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_reorder == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3481, __pyx_L3_error)
    __pyx_v_x = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_x == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3481, __pyx_L3_error)
    __pyx_v_singularity = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_singularity == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3481, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dcsrlsvqr", 1, 12, 12, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3479, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dcsrlsvqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_432dcsrlsvqr(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_nnz, __pyx_v_descrA, __pyx_v_csrValA, __pyx_v_csrRowPtrA, __pyx_v_csrColIndA, __pyx_v_b, __pyx_v_tol, __pyx_v_reorder, __pyx_v_x, __pyx_v_singularity);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_432dcsrlsvqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrValA, size_t __pyx_v_csrRowPtrA, size_t __pyx_v_csrColIndA, size_t __pyx_v_b, double __pyx_v_tol, int __pyx_v_reorder, size_t __pyx_v_x, size_t __pyx_v_singularity) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dcsrlsvqr", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dcsrlsvqr(__pyx_v_handle, __pyx_v_m, __pyx_v_nnz, __pyx_v_descrA, __pyx_v_csrValA, __pyx_v_csrRowPtrA, __pyx_v_csrColIndA, __pyx_v_b, __pyx_v_tol, __pyx_v_reorder, __pyx_v_x, __pyx_v_singularity, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dcsrlsvqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3492
 *     check_status(status)
 * 
 * cpdef ccsrlsvqr(intptr_t handle, int m, int nnz, size_t descrA, size_t csrVal,             # <<<<<<<<<<<<<<
 *                 size_t csrRowPtr, size_t csrColInd, size_t b, float tol,
 *                 int reorder, size_t x, size_t singularity):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_435ccsrlsvqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccsrlsvqr(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrVal, size_t __pyx_v_csrRowPtr, size_t __pyx_v_csrColInd, size_t __pyx_v_b, float __pyx_v_tol, int __pyx_v_reorder, size_t __pyx_v_x, size_t __pyx_v_singularity, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ccsrlsvqr", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3496
 *                 int reorder, size_t x, size_t singularity):
 *     cdef int status
 *     _spSetStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverSpCcsrlsvqr(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__spSetStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3496, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3497
 *     cdef int status
 *     _spSetStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpCcsrlsvqr(
 *             <SpHandle>handle, m, nnz, <const MatDescr>descrA,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3498
 *     _spSetStream(handle)
 *     with nogil:
 *         status = cusolverSpCcsrlsvqr(             # <<<<<<<<<<<<<<
 *             <SpHandle>handle, m, nnz, <const MatDescr>descrA,
 *             <const cuComplex*>csrVal, <const int*>csrRowPtr,
 */
        __pyx_v_status = cusolverSpCcsrlsvqr(((cusolverSpHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_nnz, ((cusparseMatDescr_t const )__pyx_v_descrA), ((cuComplex const *)__pyx_v_csrVal), ((int const *)__pyx_v_csrRowPtr), ((int const *)__pyx_v_csrColInd), ((cuComplex const *)__pyx_v_b), __pyx_v_tol, __pyx_v_reorder, ((cuComplex *)__pyx_v_x), ((int *)__pyx_v_singularity));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3497
 *     cdef int status
 *     _spSetStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpCcsrlsvqr(
 *             <SpHandle>handle, m, nnz, <const MatDescr>descrA,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3503
 *             <const int*>csrColInd, <const cuComplex*>b, tol, reorder,
 *             <cuComplex*>x, <int*>singularity)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef zcsrlsvqr(intptr_t handle, int m, int nnz, size_t descrA, size_t csrVal,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3503, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3492
 *     check_status(status)
 * 
 * cpdef ccsrlsvqr(intptr_t handle, int m, int nnz, size_t descrA, size_t csrVal,             # <<<<<<<<<<<<<<
 *                 size_t csrRowPtr, size_t csrColInd, size_t b, float tol,
 *                 int reorder, size_t x, size_t singularity):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ccsrlsvqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_435ccsrlsvqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_434ccsrlsvqr[] = "ccsrlsvqr(intptr_t handle, int m, int nnz, size_t descrA, size_t csrVal, size_t csrRowPtr, size_t csrColInd, size_t b, float tol, int reorder, size_t x, size_t singularity)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_435ccsrlsvqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_nnz;
  size_t __pyx_v_descrA;
  size_t __pyx_v_csrVal;
  size_t __pyx_v_csrRowPtr;
  size_t __pyx_v_csrColInd;
  size_t __pyx_v_b;
  float __pyx_v_tol;
  int __pyx_v_reorder;
  size_t __pyx_v_x;
  size_t __pyx_v_singularity;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ccsrlsvqr (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_nnz,&__pyx_n_s_descrA,&__pyx_n_s_csrVal,&__pyx_n_s_csrRowPtr,&__pyx_n_s_csrColInd,&__pyx_n_s_b,&__pyx_n_s_tol,&__pyx_n_s_reorder,&__pyx_n_s_x,&__pyx_n_s_singularity,0};
    PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsrlsvqr", 1, 12, 12, 1); __PYX_ERR(0, 3492, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nnz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsrlsvqr", 1, 12, 12, 2); __PYX_ERR(0, 3492, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_descrA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsrlsvqr", 1, 12, 12, 3); __PYX_ERR(0, 3492, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrVal)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsrlsvqr", 1, 12, 12, 4); __PYX_ERR(0, 3492, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrRowPtr)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsrlsvqr", 1, 12, 12, 5); __PYX_ERR(0, 3492, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrColInd)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsrlsvqr", 1, 12, 12, 6); __PYX_ERR(0, 3492, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_b)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsrlsvqr", 1, 12, 12, 7); __PYX_ERR(0, 3492, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tol)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsrlsvqr", 1, 12, 12, 8); __PYX_ERR(0, 3492, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_reorder)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsrlsvqr", 1, 12, 12, 9); __PYX_ERR(0, 3492, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsrlsvqr", 1, 12, 12, 10); __PYX_ERR(0, 3492, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_singularity)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsrlsvqr", 1, 12, 12, 11); __PYX_ERR(0, 3492, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ccsrlsvqr") < 0)) __PYX_ERR(0, 3492, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 12) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3492, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3492, __pyx_L3_error)
    __pyx_v_nnz = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nnz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3492, __pyx_L3_error)
    __pyx_v_descrA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_descrA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3492, __pyx_L3_error)
    __pyx_v_csrVal = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_csrVal == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3492, __pyx_L3_error)
    __pyx_v_csrRowPtr = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_csrRowPtr == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3493, __pyx_L3_error)
    __pyx_v_csrColInd = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_csrColInd == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3493, __pyx_L3_error)
    __pyx_v_b = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_b == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3493, __pyx_L3_error)
    __pyx_v_tol = __pyx_PyFloat_AsFloat(values[8]); if (unlikely((__pyx_v_tol == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 3493, __pyx_L3_error)
    __pyx_v_reorder = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_reorder == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3494, __pyx_L3_error)
    __pyx_v_x = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_x == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3494, __pyx_L3_error)
    __pyx_v_singularity = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_singularity == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3494, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ccsrlsvqr", 1, 12, 12, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3492, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ccsrlsvqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_434ccsrlsvqr(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_nnz, __pyx_v_descrA, __pyx_v_csrVal, __pyx_v_csrRowPtr, __pyx_v_csrColInd, __pyx_v_b, __pyx_v_tol, __pyx_v_reorder, __pyx_v_x, __pyx_v_singularity);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_434ccsrlsvqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrVal, size_t __pyx_v_csrRowPtr, size_t __pyx_v_csrColInd, size_t __pyx_v_b, float __pyx_v_tol, int __pyx_v_reorder, size_t __pyx_v_x, size_t __pyx_v_singularity) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ccsrlsvqr", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccsrlsvqr(__pyx_v_handle, __pyx_v_m, __pyx_v_nnz, __pyx_v_descrA, __pyx_v_csrVal, __pyx_v_csrRowPtr, __pyx_v_csrColInd, __pyx_v_b, __pyx_v_tol, __pyx_v_reorder, __pyx_v_x, __pyx_v_singularity, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ccsrlsvqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3505
 *     check_status(status)
 * 
 * cpdef zcsrlsvqr(intptr_t handle, int m, int nnz, size_t descrA, size_t csrVal,             # <<<<<<<<<<<<<<
 *                 size_t csrRowPtr, size_t csrColInd, size_t b, double tol,
 *                 int reorder, size_t x, size_t singularity):
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_437zcsrlsvqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcsrlsvqr(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrVal, size_t __pyx_v_csrRowPtr, size_t __pyx_v_csrColInd, size_t __pyx_v_b, double __pyx_v_tol, int __pyx_v_reorder, size_t __pyx_v_x, size_t __pyx_v_singularity, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zcsrlsvqr", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3509
 *                 int reorder, size_t x, size_t singularity):
 *     cdef int status
 *     _spSetStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverSpZcsrlsvqr(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__spSetStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3510
 *     cdef int status
 *     _spSetStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpZcsrlsvqr(
 *             <SpHandle>handle, m, nnz, <const MatDescr>descrA,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3511
 *     _spSetStream(handle)
 *     with nogil:
 *         status = cusolverSpZcsrlsvqr(             # <<<<<<<<<<<<<<
 *             <SpHandle>handle, m, nnz, <const MatDescr>descrA,
 *             <const cuDoubleComplex*>csrVal, <const int*>csrRowPtr,
 */
        __pyx_v_status = cusolverSpZcsrlsvqr(((cusolverSpHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_nnz, ((cusparseMatDescr_t const )__pyx_v_descrA), ((cuDoubleComplex const *)__pyx_v_csrVal), ((int const *)__pyx_v_csrRowPtr), ((int const *)__pyx_v_csrColInd), ((cuDoubleComplex const *)__pyx_v_b), __pyx_v_tol, __pyx_v_reorder, ((cuDoubleComplex *)__pyx_v_x), ((int *)__pyx_v_singularity));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3510
 *     cdef int status
 *     _spSetStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpZcsrlsvqr(
 *             <SpHandle>handle, m, nnz, <const MatDescr>descrA,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3516
 *             <const int*>csrColInd, <const cuDoubleComplex*>b, tol, reorder,
 *             <cuDoubleComplex*>x, <int*>singularity)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef scsreigvsi(intptr_t handle, int m, int nnz, size_t descrA,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3505
 *     check_status(status)
 * 
 * cpdef zcsrlsvqr(intptr_t handle, int m, int nnz, size_t descrA, size_t csrVal,             # <<<<<<<<<<<<<<
 *                 size_t csrRowPtr, size_t csrColInd, size_t b, double tol,
 *                 int reorder, size_t x, size_t singularity):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zcsrlsvqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_437zcsrlsvqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_436zcsrlsvqr[] = "zcsrlsvqr(intptr_t handle, int m, int nnz, size_t descrA, size_t csrVal, size_t csrRowPtr, size_t csrColInd, size_t b, double tol, int reorder, size_t x, size_t singularity)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_437zcsrlsvqr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_nnz;
  size_t __pyx_v_descrA;
  size_t __pyx_v_csrVal;
  size_t __pyx_v_csrRowPtr;
  size_t __pyx_v_csrColInd;
  size_t __pyx_v_b;
  double __pyx_v_tol;
  int __pyx_v_reorder;
  size_t __pyx_v_x;
  size_t __pyx_v_singularity;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zcsrlsvqr (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_nnz,&__pyx_n_s_descrA,&__pyx_n_s_csrVal,&__pyx_n_s_csrRowPtr,&__pyx_n_s_csrColInd,&__pyx_n_s_b,&__pyx_n_s_tol,&__pyx_n_s_reorder,&__pyx_n_s_x,&__pyx_n_s_singularity,0};
    PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsrlsvqr", 1, 12, 12, 1); __PYX_ERR(0, 3505, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nnz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsrlsvqr", 1, 12, 12, 2); __PYX_ERR(0, 3505, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_descrA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsrlsvqr", 1, 12, 12, 3); __PYX_ERR(0, 3505, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrVal)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsrlsvqr", 1, 12, 12, 4); __PYX_ERR(0, 3505, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrRowPtr)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsrlsvqr", 1, 12, 12, 5); __PYX_ERR(0, 3505, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrColInd)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsrlsvqr", 1, 12, 12, 6); __PYX_ERR(0, 3505, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_b)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsrlsvqr", 1, 12, 12, 7); __PYX_ERR(0, 3505, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tol)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsrlsvqr", 1, 12, 12, 8); __PYX_ERR(0, 3505, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_reorder)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsrlsvqr", 1, 12, 12, 9); __PYX_ERR(0, 3505, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsrlsvqr", 1, 12, 12, 10); __PYX_ERR(0, 3505, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_singularity)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsrlsvqr", 1, 12, 12, 11); __PYX_ERR(0, 3505, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zcsrlsvqr") < 0)) __PYX_ERR(0, 3505, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 12) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3505, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3505, __pyx_L3_error)
    __pyx_v_nnz = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nnz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3505, __pyx_L3_error)
    __pyx_v_descrA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_descrA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3505, __pyx_L3_error)
    __pyx_v_csrVal = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_csrVal == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3505, __pyx_L3_error)
    __pyx_v_csrRowPtr = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_csrRowPtr == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3506, __pyx_L3_error)
    __pyx_v_csrColInd = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_csrColInd == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3506, __pyx_L3_error)
    __pyx_v_b = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_b == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3506, __pyx_L3_error)
    __pyx_v_tol = __pyx_PyFloat_AsDouble(values[8]); if (unlikely((__pyx_v_tol == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3506, __pyx_L3_error)
    __pyx_v_reorder = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_reorder == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3507, __pyx_L3_error)
    __pyx_v_x = __Pyx_PyInt_As_size_t(values[10]); if (unlikely((__pyx_v_x == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3507, __pyx_L3_error)
    __pyx_v_singularity = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_singularity == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3507, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zcsrlsvqr", 1, 12, 12, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3505, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zcsrlsvqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_436zcsrlsvqr(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_nnz, __pyx_v_descrA, __pyx_v_csrVal, __pyx_v_csrRowPtr, __pyx_v_csrColInd, __pyx_v_b, __pyx_v_tol, __pyx_v_reorder, __pyx_v_x, __pyx_v_singularity);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_436zcsrlsvqr(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrVal, size_t __pyx_v_csrRowPtr, size_t __pyx_v_csrColInd, size_t __pyx_v_b, double __pyx_v_tol, int __pyx_v_reorder, size_t __pyx_v_x, size_t __pyx_v_singularity) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zcsrlsvqr", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcsrlsvqr(__pyx_v_handle, __pyx_v_m, __pyx_v_nnz, __pyx_v_descrA, __pyx_v_csrVal, __pyx_v_csrRowPtr, __pyx_v_csrColInd, __pyx_v_b, __pyx_v_tol, __pyx_v_reorder, __pyx_v_x, __pyx_v_singularity, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3505, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zcsrlsvqr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3518
 *     check_status(status)
 * 
 * cpdef scsreigvsi(intptr_t handle, int m, int nnz, size_t descrA,             # <<<<<<<<<<<<<<
 *                  size_t csrValA, size_t csrRowPtrA, size_t csrColIndA,
 *                  float mu0, size_t x0, int maxite, float eps, size_t mu,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_439scsreigvsi(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_scsreigvsi(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrValA, size_t __pyx_v_csrRowPtrA, size_t __pyx_v_csrColIndA, float __pyx_v_mu0, size_t __pyx_v_x0, int __pyx_v_maxite, float __pyx_v_eps, size_t __pyx_v_mu, size_t __pyx_v_x, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scsreigvsi", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3523
 *                  size_t x):
 *     cdef int status
 *     _spSetStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverSpScsreigvsi(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__spSetStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3524
 *     cdef int status
 *     _spSetStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpScsreigvsi(
 *             <SpHandle>handle, m, nnz, <const MatDescr>descrA,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3525
 *     _spSetStream(handle)
 *     with nogil:
 *         status = cusolverSpScsreigvsi(             # <<<<<<<<<<<<<<
 *             <SpHandle>handle, m, nnz, <const MatDescr>descrA,
 *             <const float*>csrValA, <const int*>csrRowPtrA,
 */
        __pyx_v_status = cusolverSpScsreigvsi(((cusolverSpHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_nnz, ((cusparseMatDescr_t const )__pyx_v_descrA), ((float const *)__pyx_v_csrValA), ((int const *)__pyx_v_csrRowPtrA), ((int const *)__pyx_v_csrColIndA), __pyx_v_mu0, ((float const *)__pyx_v_x0), __pyx_v_maxite, __pyx_v_eps, ((float *)__pyx_v_mu), ((float *)__pyx_v_x));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3524
 *     cdef int status
 *     _spSetStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpScsreigvsi(
 *             <SpHandle>handle, m, nnz, <const MatDescr>descrA,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3530
 *             <const int*>csrColIndA, mu0, <const float*>x0, maxite, eps,
 *             <float*>mu, <float*>x)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef dcsreigvsi(intptr_t handle, int m, int nnz, size_t descrA,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3518
 *     check_status(status)
 * 
 * cpdef scsreigvsi(intptr_t handle, int m, int nnz, size_t descrA,             # <<<<<<<<<<<<<<
 *                  size_t csrValA, size_t csrRowPtrA, size_t csrColIndA,
 *                  float mu0, size_t x0, int maxite, float eps, size_t mu,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.scsreigvsi", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_439scsreigvsi(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_438scsreigvsi[] = "scsreigvsi(intptr_t handle, int m, int nnz, size_t descrA, size_t csrValA, size_t csrRowPtrA, size_t csrColIndA, float mu0, size_t x0, int maxite, float eps, size_t mu, size_t x)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_439scsreigvsi(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_nnz;
  size_t __pyx_v_descrA;
  size_t __pyx_v_csrValA;
  size_t __pyx_v_csrRowPtrA;
  size_t __pyx_v_csrColIndA;
  float __pyx_v_mu0;
  size_t __pyx_v_x0;
  int __pyx_v_maxite;
  float __pyx_v_eps;
  size_t __pyx_v_mu;
  size_t __pyx_v_x;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scsreigvsi (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_nnz,&__pyx_n_s_descrA,&__pyx_n_s_csrValA,&__pyx_n_s_csrRowPtrA,&__pyx_n_s_csrColIndA,&__pyx_n_s_mu0,&__pyx_n_s_x0,&__pyx_n_s_maxite,&__pyx_n_s_eps,&__pyx_n_s_mu,&__pyx_n_s_x,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsreigvsi", 1, 13, 13, 1); __PYX_ERR(0, 3518, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nnz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsreigvsi", 1, 13, 13, 2); __PYX_ERR(0, 3518, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_descrA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsreigvsi", 1, 13, 13, 3); __PYX_ERR(0, 3518, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrValA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsreigvsi", 1, 13, 13, 4); __PYX_ERR(0, 3518, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrRowPtrA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsreigvsi", 1, 13, 13, 5); __PYX_ERR(0, 3518, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrColIndA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsreigvsi", 1, 13, 13, 6); __PYX_ERR(0, 3518, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mu0)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsreigvsi", 1, 13, 13, 7); __PYX_ERR(0, 3518, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsreigvsi", 1, 13, 13, 8); __PYX_ERR(0, 3518, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maxite)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsreigvsi", 1, 13, 13, 9); __PYX_ERR(0, 3518, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_eps)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsreigvsi", 1, 13, 13, 10); __PYX_ERR(0, 3518, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsreigvsi", 1, 13, 13, 11); __PYX_ERR(0, 3518, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("scsreigvsi", 1, 13, 13, 12); __PYX_ERR(0, 3518, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "scsreigvsi") < 0)) __PYX_ERR(0, 3518, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3518, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3518, __pyx_L3_error)
    __pyx_v_nnz = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nnz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3518, __pyx_L3_error)
    __pyx_v_descrA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_descrA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3518, __pyx_L3_error)
    __pyx_v_csrValA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_csrValA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3519, __pyx_L3_error)
    __pyx_v_csrRowPtrA = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_csrRowPtrA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3519, __pyx_L3_error)
    __pyx_v_csrColIndA = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_csrColIndA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3519, __pyx_L3_error)
    __pyx_v_mu0 = __pyx_PyFloat_AsFloat(values[7]); if (unlikely((__pyx_v_mu0 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 3520, __pyx_L3_error)
    __pyx_v_x0 = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_x0 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3520, __pyx_L3_error)
    __pyx_v_maxite = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_maxite == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3520, __pyx_L3_error)
    __pyx_v_eps = __pyx_PyFloat_AsFloat(values[10]); if (unlikely((__pyx_v_eps == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 3520, __pyx_L3_error)
    __pyx_v_mu = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_mu == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3520, __pyx_L3_error)
    __pyx_v_x = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_x == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3521, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scsreigvsi", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3518, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.scsreigvsi", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_438scsreigvsi(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_nnz, __pyx_v_descrA, __pyx_v_csrValA, __pyx_v_csrRowPtrA, __pyx_v_csrColIndA, __pyx_v_mu0, __pyx_v_x0, __pyx_v_maxite, __pyx_v_eps, __pyx_v_mu, __pyx_v_x);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_438scsreigvsi(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrValA, size_t __pyx_v_csrRowPtrA, size_t __pyx_v_csrColIndA, float __pyx_v_mu0, size_t __pyx_v_x0, int __pyx_v_maxite, float __pyx_v_eps, size_t __pyx_v_mu, size_t __pyx_v_x) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scsreigvsi", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_scsreigvsi(__pyx_v_handle, __pyx_v_m, __pyx_v_nnz, __pyx_v_descrA, __pyx_v_csrValA, __pyx_v_csrRowPtrA, __pyx_v_csrColIndA, __pyx_v_mu0, __pyx_v_x0, __pyx_v_maxite, __pyx_v_eps, __pyx_v_mu, __pyx_v_x, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.scsreigvsi", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3532
 *     check_status(status)
 * 
 * cpdef dcsreigvsi(intptr_t handle, int m, int nnz, size_t descrA,             # <<<<<<<<<<<<<<
 *                  size_t csrValA, size_t csrRowPtrA, size_t csrColIndA,
 *                  double mu0, size_t x0, int maxite, double eps, size_t mu,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_441dcsreigvsi(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dcsreigvsi(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrValA, size_t __pyx_v_csrRowPtrA, size_t __pyx_v_csrColIndA, double __pyx_v_mu0, size_t __pyx_v_x0, int __pyx_v_maxite, double __pyx_v_eps, size_t __pyx_v_mu, size_t __pyx_v_x, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dcsreigvsi", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3537
 *                  size_t x):
 *     cdef int status
 *     _spSetStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverSpDcsreigvsi(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__spSetStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3537, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3538
 *     cdef int status
 *     _spSetStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpDcsreigvsi(
 *             <SpHandle>handle, m, nnz, <const MatDescr>descrA,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3539
 *     _spSetStream(handle)
 *     with nogil:
 *         status = cusolverSpDcsreigvsi(             # <<<<<<<<<<<<<<
 *             <SpHandle>handle, m, nnz, <const MatDescr>descrA,
 *             <const double*>csrValA, <const int*>csrRowPtrA,
 */
        __pyx_v_status = cusolverSpDcsreigvsi(((cusolverSpHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_nnz, ((cusparseMatDescr_t const )__pyx_v_descrA), ((double const *)__pyx_v_csrValA), ((int const *)__pyx_v_csrRowPtrA), ((int const *)__pyx_v_csrColIndA), __pyx_v_mu0, ((double const *)__pyx_v_x0), __pyx_v_maxite, __pyx_v_eps, ((double *)__pyx_v_mu), ((double *)__pyx_v_x));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3538
 *     cdef int status
 *     _spSetStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpDcsreigvsi(
 *             <SpHandle>handle, m, nnz, <const MatDescr>descrA,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3544
 *             <const int*>csrColIndA, mu0, <const double*>x0, maxite, eps,
 *             <double*>mu, <double*>x)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef ccsreigvsi(intptr_t handle, int m, int nnz, size_t descrA,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3544, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3532
 *     check_status(status)
 * 
 * cpdef dcsreigvsi(intptr_t handle, int m, int nnz, size_t descrA,             # <<<<<<<<<<<<<<
 *                  size_t csrValA, size_t csrRowPtrA, size_t csrColIndA,
 *                  double mu0, size_t x0, int maxite, double eps, size_t mu,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dcsreigvsi", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_441dcsreigvsi(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_440dcsreigvsi[] = "dcsreigvsi(intptr_t handle, int m, int nnz, size_t descrA, size_t csrValA, size_t csrRowPtrA, size_t csrColIndA, double mu0, size_t x0, int maxite, double eps, size_t mu, size_t x)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_441dcsreigvsi(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_nnz;
  size_t __pyx_v_descrA;
  size_t __pyx_v_csrValA;
  size_t __pyx_v_csrRowPtrA;
  size_t __pyx_v_csrColIndA;
  double __pyx_v_mu0;
  size_t __pyx_v_x0;
  int __pyx_v_maxite;
  double __pyx_v_eps;
  size_t __pyx_v_mu;
  size_t __pyx_v_x;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dcsreigvsi (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_nnz,&__pyx_n_s_descrA,&__pyx_n_s_csrValA,&__pyx_n_s_csrRowPtrA,&__pyx_n_s_csrColIndA,&__pyx_n_s_mu0,&__pyx_n_s_x0,&__pyx_n_s_maxite,&__pyx_n_s_eps,&__pyx_n_s_mu,&__pyx_n_s_x,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsreigvsi", 1, 13, 13, 1); __PYX_ERR(0, 3532, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nnz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsreigvsi", 1, 13, 13, 2); __PYX_ERR(0, 3532, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_descrA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsreigvsi", 1, 13, 13, 3); __PYX_ERR(0, 3532, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrValA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsreigvsi", 1, 13, 13, 4); __PYX_ERR(0, 3532, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrRowPtrA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsreigvsi", 1, 13, 13, 5); __PYX_ERR(0, 3532, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrColIndA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsreigvsi", 1, 13, 13, 6); __PYX_ERR(0, 3532, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mu0)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsreigvsi", 1, 13, 13, 7); __PYX_ERR(0, 3532, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsreigvsi", 1, 13, 13, 8); __PYX_ERR(0, 3532, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maxite)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsreigvsi", 1, 13, 13, 9); __PYX_ERR(0, 3532, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_eps)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsreigvsi", 1, 13, 13, 10); __PYX_ERR(0, 3532, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsreigvsi", 1, 13, 13, 11); __PYX_ERR(0, 3532, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dcsreigvsi", 1, 13, 13, 12); __PYX_ERR(0, 3532, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dcsreigvsi") < 0)) __PYX_ERR(0, 3532, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3532, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3532, __pyx_L3_error)
    __pyx_v_nnz = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nnz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3532, __pyx_L3_error)
    __pyx_v_descrA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_descrA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3532, __pyx_L3_error)
    __pyx_v_csrValA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_csrValA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3533, __pyx_L3_error)
    __pyx_v_csrRowPtrA = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_csrRowPtrA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3533, __pyx_L3_error)
    __pyx_v_csrColIndA = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_csrColIndA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3533, __pyx_L3_error)
    __pyx_v_mu0 = __pyx_PyFloat_AsDouble(values[7]); if (unlikely((__pyx_v_mu0 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3534, __pyx_L3_error)
    __pyx_v_x0 = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_x0 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3534, __pyx_L3_error)
    __pyx_v_maxite = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_maxite == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3534, __pyx_L3_error)
    __pyx_v_eps = __pyx_PyFloat_AsDouble(values[10]); if (unlikely((__pyx_v_eps == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3534, __pyx_L3_error)
    __pyx_v_mu = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_mu == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3534, __pyx_L3_error)
    __pyx_v_x = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_x == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3535, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dcsreigvsi", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3532, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dcsreigvsi", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_440dcsreigvsi(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_nnz, __pyx_v_descrA, __pyx_v_csrValA, __pyx_v_csrRowPtrA, __pyx_v_csrColIndA, __pyx_v_mu0, __pyx_v_x0, __pyx_v_maxite, __pyx_v_eps, __pyx_v_mu, __pyx_v_x);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_440dcsreigvsi(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrValA, size_t __pyx_v_csrRowPtrA, size_t __pyx_v_csrColIndA, double __pyx_v_mu0, size_t __pyx_v_x0, int __pyx_v_maxite, double __pyx_v_eps, size_t __pyx_v_mu, size_t __pyx_v_x) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dcsreigvsi", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dcsreigvsi(__pyx_v_handle, __pyx_v_m, __pyx_v_nnz, __pyx_v_descrA, __pyx_v_csrValA, __pyx_v_csrRowPtrA, __pyx_v_csrColIndA, __pyx_v_mu0, __pyx_v_x0, __pyx_v_maxite, __pyx_v_eps, __pyx_v_mu, __pyx_v_x, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.dcsreigvsi", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3546
 *     check_status(status)
 * 
 * cpdef ccsreigvsi(intptr_t handle, int m, int nnz, size_t descrA,             # <<<<<<<<<<<<<<
 *                  size_t csrValA, size_t csrRowPtrA, size_t csrColIndA,
 *                  size_t mu0, size_t x0, int maxite, float eps, size_t mu,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_443ccsreigvsi(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccsreigvsi(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrValA, size_t __pyx_v_csrRowPtrA, size_t __pyx_v_csrColIndA, size_t __pyx_v_mu0, size_t __pyx_v_x0, int __pyx_v_maxite, float __pyx_v_eps, size_t __pyx_v_mu, size_t __pyx_v_x, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ccsreigvsi", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3551
 *                  size_t x):
 *     cdef int status
 *     _spSetStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverSpCcsreigvsi(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__spSetStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3552
 *     cdef int status
 *     _spSetStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpCcsreigvsi(
 *             <SpHandle>handle, m, nnz, <const MatDescr>descrA,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3553
 *     _spSetStream(handle)
 *     with nogil:
 *         status = cusolverSpCcsreigvsi(             # <<<<<<<<<<<<<<
 *             <SpHandle>handle, m, nnz, <const MatDescr>descrA,
 *             <const cuComplex*>csrValA, <const int*>csrRowPtrA,
 */
        __pyx_v_status = cusolverSpCcsreigvsi(((cusolverSpHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_nnz, ((cusparseMatDescr_t const )__pyx_v_descrA), ((cuComplex const *)__pyx_v_csrValA), ((int const *)__pyx_v_csrRowPtrA), ((int const *)__pyx_v_csrColIndA), (((cuComplex *)__pyx_v_mu0)[0]), ((cuComplex const *)__pyx_v_x0), __pyx_v_maxite, __pyx_v_eps, ((cuComplex *)__pyx_v_mu), ((cuComplex *)__pyx_v_x));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3552
 *     cdef int status
 *     _spSetStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpCcsreigvsi(
 *             <SpHandle>handle, m, nnz, <const MatDescr>descrA,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3558
 *             <const int*>csrColIndA, (<cuComplex*>mu0)[0], <const cuComplex*>x0,
 *             maxite, eps, <cuComplex*>mu, <cuComplex*>x)
 *     check_status(status)             # <<<<<<<<<<<<<<
 * 
 * cpdef zcsreigvsi(intptr_t handle, int m, int nnz, size_t descrA,
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3558, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3546
 *     check_status(status)
 * 
 * cpdef ccsreigvsi(intptr_t handle, int m, int nnz, size_t descrA,             # <<<<<<<<<<<<<<
 *                  size_t csrValA, size_t csrRowPtrA, size_t csrColIndA,
 *                  size_t mu0, size_t x0, int maxite, float eps, size_t mu,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ccsreigvsi", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_443ccsreigvsi(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_442ccsreigvsi[] = "ccsreigvsi(intptr_t handle, int m, int nnz, size_t descrA, size_t csrValA, size_t csrRowPtrA, size_t csrColIndA, size_t mu0, size_t x0, int maxite, float eps, size_t mu, size_t x)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_443ccsreigvsi(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_nnz;
  size_t __pyx_v_descrA;
  size_t __pyx_v_csrValA;
  size_t __pyx_v_csrRowPtrA;
  size_t __pyx_v_csrColIndA;
  size_t __pyx_v_mu0;
  size_t __pyx_v_x0;
  int __pyx_v_maxite;
  float __pyx_v_eps;
  size_t __pyx_v_mu;
  size_t __pyx_v_x;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ccsreigvsi (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_nnz,&__pyx_n_s_descrA,&__pyx_n_s_csrValA,&__pyx_n_s_csrRowPtrA,&__pyx_n_s_csrColIndA,&__pyx_n_s_mu0,&__pyx_n_s_x0,&__pyx_n_s_maxite,&__pyx_n_s_eps,&__pyx_n_s_mu,&__pyx_n_s_x,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsreigvsi", 1, 13, 13, 1); __PYX_ERR(0, 3546, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nnz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsreigvsi", 1, 13, 13, 2); __PYX_ERR(0, 3546, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_descrA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsreigvsi", 1, 13, 13, 3); __PYX_ERR(0, 3546, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrValA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsreigvsi", 1, 13, 13, 4); __PYX_ERR(0, 3546, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrRowPtrA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsreigvsi", 1, 13, 13, 5); __PYX_ERR(0, 3546, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrColIndA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsreigvsi", 1, 13, 13, 6); __PYX_ERR(0, 3546, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mu0)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsreigvsi", 1, 13, 13, 7); __PYX_ERR(0, 3546, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsreigvsi", 1, 13, 13, 8); __PYX_ERR(0, 3546, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maxite)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsreigvsi", 1, 13, 13, 9); __PYX_ERR(0, 3546, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_eps)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsreigvsi", 1, 13, 13, 10); __PYX_ERR(0, 3546, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsreigvsi", 1, 13, 13, 11); __PYX_ERR(0, 3546, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ccsreigvsi", 1, 13, 13, 12); __PYX_ERR(0, 3546, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ccsreigvsi") < 0)) __PYX_ERR(0, 3546, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3546, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3546, __pyx_L3_error)
    __pyx_v_nnz = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nnz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3546, __pyx_L3_error)
    __pyx_v_descrA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_descrA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3546, __pyx_L3_error)
    __pyx_v_csrValA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_csrValA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3547, __pyx_L3_error)
    __pyx_v_csrRowPtrA = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_csrRowPtrA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3547, __pyx_L3_error)
    __pyx_v_csrColIndA = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_csrColIndA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3547, __pyx_L3_error)
    __pyx_v_mu0 = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_mu0 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3548, __pyx_L3_error)
    __pyx_v_x0 = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_x0 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3548, __pyx_L3_error)
    __pyx_v_maxite = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_maxite == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3548, __pyx_L3_error)
    __pyx_v_eps = __pyx_PyFloat_AsFloat(values[10]); if (unlikely((__pyx_v_eps == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 3548, __pyx_L3_error)
    __pyx_v_mu = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_mu == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3548, __pyx_L3_error)
    __pyx_v_x = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_x == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3549, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ccsreigvsi", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3546, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ccsreigvsi", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_442ccsreigvsi(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_nnz, __pyx_v_descrA, __pyx_v_csrValA, __pyx_v_csrRowPtrA, __pyx_v_csrColIndA, __pyx_v_mu0, __pyx_v_x0, __pyx_v_maxite, __pyx_v_eps, __pyx_v_mu, __pyx_v_x);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_442ccsreigvsi(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrValA, size_t __pyx_v_csrRowPtrA, size_t __pyx_v_csrColIndA, size_t __pyx_v_mu0, size_t __pyx_v_x0, int __pyx_v_maxite, float __pyx_v_eps, size_t __pyx_v_mu, size_t __pyx_v_x) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ccsreigvsi", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccsreigvsi(__pyx_v_handle, __pyx_v_m, __pyx_v_nnz, __pyx_v_descrA, __pyx_v_csrValA, __pyx_v_csrRowPtrA, __pyx_v_csrColIndA, __pyx_v_mu0, __pyx_v_x0, __pyx_v_maxite, __pyx_v_eps, __pyx_v_mu, __pyx_v_x, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.ccsreigvsi", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cupy_backends/cuda/libs/cusolver.pyx":3560
 *     check_status(status)
 * 
 * cpdef zcsreigvsi(intptr_t handle, int m, int nnz, size_t descrA,             # <<<<<<<<<<<<<<
 *                  size_t csrValA, size_t csrRowPtrA, size_t csrColIndA,
 *                  size_t mu0, size_t x0, int maxite, double eps, size_t mu,
 */

static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_445zcsreigvsi(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcsreigvsi(intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrValA, size_t __pyx_v_csrRowPtrA, size_t __pyx_v_csrColIndA, size_t __pyx_v_mu0, size_t __pyx_v_x0, int __pyx_v_maxite, double __pyx_v_eps, size_t __pyx_v_mu, size_t __pyx_v_x, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_v_status;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zcsreigvsi", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":3565
 *                  size_t x):
 *     cdef int status
 *     _spSetStream(handle)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         status = cusolverSpZcsreigvsi(
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver__spSetStream(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3565, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3566
 *     cdef int status
 *     _spSetStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpZcsreigvsi(
 *             <SpHandle>handle, m, nnz, <const MatDescr>descrA,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "cupy_backends/cuda/libs/cusolver.pyx":3567
 *     _spSetStream(handle)
 *     with nogil:
 *         status = cusolverSpZcsreigvsi(             # <<<<<<<<<<<<<<
 *             <SpHandle>handle, m, nnz, <const MatDescr>descrA,
 *             <const cuDoubleComplex*>csrValA, <const int*>csrRowPtrA,
 */
        __pyx_v_status = cusolverSpZcsreigvsi(((cusolverSpHandle_t)__pyx_v_handle), __pyx_v_m, __pyx_v_nnz, ((cusparseMatDescr_t const )__pyx_v_descrA), ((cuDoubleComplex const *)__pyx_v_csrValA), ((int const *)__pyx_v_csrRowPtrA), ((int const *)__pyx_v_csrColIndA), (((cuDoubleComplex *)__pyx_v_mu0)[0]), ((cuDoubleComplex const *)__pyx_v_x0), __pyx_v_maxite, __pyx_v_eps, ((cuDoubleComplex *)__pyx_v_mu), ((cuDoubleComplex *)__pyx_v_x));
      }

      /* "cupy_backends/cuda/libs/cusolver.pyx":3566
 *     cdef int status
 *     _spSetStream(handle)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         status = cusolverSpZcsreigvsi(
 *             <SpHandle>handle, m, nnz, <const MatDescr>descrA,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "cupy_backends/cuda/libs/cusolver.pyx":3573
 *             <const cuDoubleComplex*>x0, maxite,
 *             eps, <cuDoubleComplex*>mu, <cuDoubleComplex*>x)
 *     check_status(status)             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_check_status(__pyx_v_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3573, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":3560
 *     check_status(status)
 * 
 * cpdef zcsreigvsi(intptr_t handle, int m, int nnz, size_t descrA,             # <<<<<<<<<<<<<<
 *                  size_t csrValA, size_t csrRowPtrA, size_t csrColIndA,
 *                  size_t mu0, size_t x0, int maxite, double eps, size_t mu,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zcsreigvsi", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_445zcsreigvsi(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_444zcsreigvsi[] = "zcsreigvsi(intptr_t handle, int m, int nnz, size_t descrA, size_t csrValA, size_t csrRowPtrA, size_t csrColIndA, size_t mu0, size_t x0, int maxite, double eps, size_t mu, size_t x)";
static PyObject *__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_445zcsreigvsi(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  intptr_t __pyx_v_handle;
  int __pyx_v_m;
  int __pyx_v_nnz;
  size_t __pyx_v_descrA;
  size_t __pyx_v_csrValA;
  size_t __pyx_v_csrRowPtrA;
  size_t __pyx_v_csrColIndA;
  size_t __pyx_v_mu0;
  size_t __pyx_v_x0;
  int __pyx_v_maxite;
  double __pyx_v_eps;
  size_t __pyx_v_mu;
  size_t __pyx_v_x;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zcsreigvsi (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,&__pyx_n_s_m,&__pyx_n_s_nnz,&__pyx_n_s_descrA,&__pyx_n_s_csrValA,&__pyx_n_s_csrRowPtrA,&__pyx_n_s_csrColIndA,&__pyx_n_s_mu0,&__pyx_n_s_x0,&__pyx_n_s_maxite,&__pyx_n_s_eps,&__pyx_n_s_mu,&__pyx_n_s_x,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handle)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsreigvsi", 1, 13, 13, 1); __PYX_ERR(0, 3560, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nnz)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsreigvsi", 1, 13, 13, 2); __PYX_ERR(0, 3560, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_descrA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsreigvsi", 1, 13, 13, 3); __PYX_ERR(0, 3560, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrValA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsreigvsi", 1, 13, 13, 4); __PYX_ERR(0, 3560, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrRowPtrA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsreigvsi", 1, 13, 13, 5); __PYX_ERR(0, 3560, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csrColIndA)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsreigvsi", 1, 13, 13, 6); __PYX_ERR(0, 3560, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mu0)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsreigvsi", 1, 13, 13, 7); __PYX_ERR(0, 3560, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsreigvsi", 1, 13, 13, 8); __PYX_ERR(0, 3560, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maxite)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsreigvsi", 1, 13, 13, 9); __PYX_ERR(0, 3560, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_eps)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsreigvsi", 1, 13, 13, 10); __PYX_ERR(0, 3560, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mu)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsreigvsi", 1, 13, 13, 11); __PYX_ERR(0, 3560, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("zcsreigvsi", 1, 13, 13, 12); __PYX_ERR(0, 3560, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zcsreigvsi") < 0)) __PYX_ERR(0, 3560, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
    }
    __pyx_v_handle = PyInt_AsSsize_t(values[0]); if (unlikely((__pyx_v_handle == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3560, __pyx_L3_error)
    __pyx_v_m = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_m == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3560, __pyx_L3_error)
    __pyx_v_nnz = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nnz == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3560, __pyx_L3_error)
    __pyx_v_descrA = __Pyx_PyInt_As_size_t(values[3]); if (unlikely((__pyx_v_descrA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3560, __pyx_L3_error)
    __pyx_v_csrValA = __Pyx_PyInt_As_size_t(values[4]); if (unlikely((__pyx_v_csrValA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3561, __pyx_L3_error)
    __pyx_v_csrRowPtrA = __Pyx_PyInt_As_size_t(values[5]); if (unlikely((__pyx_v_csrRowPtrA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3561, __pyx_L3_error)
    __pyx_v_csrColIndA = __Pyx_PyInt_As_size_t(values[6]); if (unlikely((__pyx_v_csrColIndA == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3561, __pyx_L3_error)
    __pyx_v_mu0 = __Pyx_PyInt_As_size_t(values[7]); if (unlikely((__pyx_v_mu0 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3562, __pyx_L3_error)
    __pyx_v_x0 = __Pyx_PyInt_As_size_t(values[8]); if (unlikely((__pyx_v_x0 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3562, __pyx_L3_error)
    __pyx_v_maxite = __Pyx_PyInt_As_int(values[9]); if (unlikely((__pyx_v_maxite == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3562, __pyx_L3_error)
    __pyx_v_eps = __pyx_PyFloat_AsDouble(values[10]); if (unlikely((__pyx_v_eps == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3562, __pyx_L3_error)
    __pyx_v_mu = __Pyx_PyInt_As_size_t(values[11]); if (unlikely((__pyx_v_mu == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3562, __pyx_L3_error)
    __pyx_v_x = __Pyx_PyInt_As_size_t(values[12]); if (unlikely((__pyx_v_x == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3563, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zcsreigvsi", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3560, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zcsreigvsi", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_444zcsreigvsi(__pyx_self, __pyx_v_handle, __pyx_v_m, __pyx_v_nnz, __pyx_v_descrA, __pyx_v_csrValA, __pyx_v_csrRowPtrA, __pyx_v_csrColIndA, __pyx_v_mu0, __pyx_v_x0, __pyx_v_maxite, __pyx_v_eps, __pyx_v_mu, __pyx_v_x);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_13cupy_backends_4cuda_4libs_8cusolver_444zcsreigvsi(CYTHON_UNUSED PyObject *__pyx_self, intptr_t __pyx_v_handle, int __pyx_v_m, int __pyx_v_nnz, size_t __pyx_v_descrA, size_t __pyx_v_csrValA, size_t __pyx_v_csrRowPtrA, size_t __pyx_v_csrColIndA, size_t __pyx_v_mu0, size_t __pyx_v_x0, int __pyx_v_maxite, double __pyx_v_eps, size_t __pyx_v_mu, size_t __pyx_v_x) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zcsreigvsi", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcsreigvsi(__pyx_v_handle, __pyx_v_m, __pyx_v_nnz, __pyx_v_descrA, __pyx_v_csrValA, __pyx_v_csrRowPtrA, __pyx_v_csrColIndA, __pyx_v_mu0, __pyx_v_x0, __pyx_v_maxite, __pyx_v_eps, __pyx_v_mu, __pyx_v_x, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("cupy_backends.cuda.libs.cusolver.zcsreigvsi", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyMethodDef __pyx_methods[] = {
  {"check_status", (PyCFunction)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_1check_status, METH_O, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_check_status},
  {"getProperty", (PyCFunction)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_3getProperty, METH_O, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_2getProperty},
  {"_getVersion", (PyCFunction)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_5_getVersion, METH_NOARGS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_4_getVersion},
  {"create", (PyCFunction)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_7create, METH_NOARGS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_6create},
  {"spCreate", (PyCFunction)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_9spCreate, METH_NOARGS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_8spCreate},
  {"destroy", (PyCFunction)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_11destroy, METH_O, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_10destroy},
  {"spDestroy", (PyCFunction)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_13spDestroy, METH_O, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_12spDestroy},
  {"setStream", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_15setStream, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_14setStream},
  {"getStream", (PyCFunction)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_17getStream, METH_O, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_16getStream},
  {"spSetStream", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_19spSetStream, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_18spSetStream},
  {"spGetStream", (PyCFunction)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_21spGetStream, METH_O, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_20spGetStream},
  {"spotrf_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_23spotrf_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_22spotrf_bufferSize},
  {"dpotrf_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_25dpotrf_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_24dpotrf_bufferSize},
  {"cpotrf_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_27cpotrf_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_26cpotrf_bufferSize},
  {"zpotrf_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_29zpotrf_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_28zpotrf_bufferSize},
  {"spotrf", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_31spotrf, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_30spotrf},
  {"dpotrf", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_33dpotrf, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_32dpotrf},
  {"cpotrf", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_35cpotrf, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_34cpotrf},
  {"zpotrf", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_37zpotrf, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_36zpotrf},
  {"spotrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_39spotrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_38spotrs},
  {"dpotrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_41dpotrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_40dpotrs},
  {"cpotrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_43cpotrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_42cpotrs},
  {"zpotrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_45zpotrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_44zpotrs},
  {"spotrfBatched", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_47spotrfBatched, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_46spotrfBatched},
  {"dpotrfBatched", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_49dpotrfBatched, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_48dpotrfBatched},
  {"cpotrfBatched", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_51cpotrfBatched, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_50cpotrfBatched},
  {"zpotrfBatched", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_53zpotrfBatched, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_52zpotrfBatched},
  {"spotrsBatched", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_55spotrsBatched, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_54spotrsBatched},
  {"dpotrsBatched", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_57dpotrsBatched, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_56dpotrsBatched},
  {"cpotrsBatched", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_59cpotrsBatched, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_58cpotrsBatched},
  {"zpotrsBatched", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_61zpotrsBatched, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_60zpotrsBatched},
  {"sgetrf_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_63sgetrf_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_62sgetrf_bufferSize},
  {"dgetrf_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_65dgetrf_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_64dgetrf_bufferSize},
  {"cgetrf_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_67cgetrf_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_66cgetrf_bufferSize},
  {"zgetrf_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_69zgetrf_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_68zgetrf_bufferSize},
  {"sgetrf", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_71sgetrf, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_70sgetrf},
  {"dgetrf", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_73dgetrf, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_72dgetrf},
  {"cgetrf", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_75cgetrf, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_74cgetrf},
  {"zgetrf", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_77zgetrf, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_76zgetrf},
  {"sgetrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_79sgetrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_78sgetrs},
  {"dgetrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_81dgetrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_80dgetrs},
  {"cgetrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_83cgetrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_82cgetrs},
  {"zgetrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_85zgetrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_84zgetrs},
  {"sgeqrf_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_87sgeqrf_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_86sgeqrf_bufferSize},
  {"dgeqrf_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_89dgeqrf_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_88dgeqrf_bufferSize},
  {"cgeqrf_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_91cgeqrf_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_90cgeqrf_bufferSize},
  {"zgeqrf_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_93zgeqrf_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_92zgeqrf_bufferSize},
  {"sgeqrf", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_95sgeqrf, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_94sgeqrf},
  {"dgeqrf", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_97dgeqrf, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_96dgeqrf},
  {"cgeqrf", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_99cgeqrf, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_98cgeqrf},
  {"zgeqrf", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_101zgeqrf, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_100zgeqrf},
  {"sorgqr_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_103sorgqr_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_102sorgqr_bufferSize},
  {"dorgqr_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_105dorgqr_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_104dorgqr_bufferSize},
  {"cungqr_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_107cungqr_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_106cungqr_bufferSize},
  {"zungqr_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_109zungqr_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_108zungqr_bufferSize},
  {"sorgqr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_111sorgqr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_110sorgqr},
  {"dorgqr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_113dorgqr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_112dorgqr},
  {"cungqr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_115cungqr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_114cungqr},
  {"zungqr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_117zungqr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_116zungqr},
  {"sormqr_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_119sormqr_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_118sormqr_bufferSize},
  {"dormqr_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_121dormqr_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_120dormqr_bufferSize},
  {"cunmqr_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_123cunmqr_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_122cunmqr_bufferSize},
  {"zunmqr_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_125zunmqr_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_124zunmqr_bufferSize},
  {"sormqr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_127sormqr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_126sormqr},
  {"dormqr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_129dormqr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_128dormqr},
  {"cunmqr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_131cunmqr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_130cunmqr},
  {"zunmqr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_133zunmqr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_132zunmqr},
  {"cormqr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_135cormqr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_134cormqr},
  {"zormqr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_137zormqr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_136zormqr},
  {"ssytrf_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_139ssytrf_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_138ssytrf_bufferSize},
  {"dsytrf_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_141dsytrf_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_140dsytrf_bufferSize},
  {"csytrf_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_143csytrf_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_142csytrf_bufferSize},
  {"zsytrf_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_145zsytrf_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_144zsytrf_bufferSize},
  {"ssytrf", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_147ssytrf, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_146ssytrf},
  {"dsytrf", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_149dsytrf, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_148dsytrf},
  {"csytrf", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_151csytrf, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_150csytrf},
  {"zsytrf", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_153zsytrf, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_152zsytrf},
  {"zzgesv_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_155zzgesv_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_154zzgesv_bufferSize},
  {"zcgesv_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_157zcgesv_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_156zcgesv_bufferSize},
  {"zygesv_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_159zygesv_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_158zygesv_bufferSize},
  {"zkgesv_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_161zkgesv_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_160zkgesv_bufferSize},
  {"ccgesv_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_163ccgesv_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_162ccgesv_bufferSize},
  {"cygesv_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_165cygesv_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_164cygesv_bufferSize},
  {"ckgesv_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_167ckgesv_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_166ckgesv_bufferSize},
  {"ddgesv_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_169ddgesv_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_168ddgesv_bufferSize},
  {"dsgesv_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_171dsgesv_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_170dsgesv_bufferSize},
  {"dxgesv_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_173dxgesv_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_172dxgesv_bufferSize},
  {"dhgesv_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_175dhgesv_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_174dhgesv_bufferSize},
  {"ssgesv_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_177ssgesv_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_176ssgesv_bufferSize},
  {"sxgesv_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_179sxgesv_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_178sxgesv_bufferSize},
  {"shgesv_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_181shgesv_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_180shgesv_bufferSize},
  {"zzgesv", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_183zzgesv, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_182zzgesv},
  {"zcgesv", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_185zcgesv, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_184zcgesv},
  {"zygesv", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_187zygesv, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_186zygesv},
  {"zkgesv", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_189zkgesv, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_188zkgesv},
  {"ccgesv", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_191ccgesv, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_190ccgesv},
  {"cygesv", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_193cygesv, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_192cygesv},
  {"ckgesv", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_195ckgesv, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_194ckgesv},
  {"ddgesv", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_197ddgesv, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_196ddgesv},
  {"dsgesv", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_199dsgesv, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_198dsgesv},
  {"dxgesv", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_201dxgesv, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_200dxgesv},
  {"dhgesv", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_203dhgesv, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_202dhgesv},
  {"ssgesv", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_205ssgesv, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_204ssgesv},
  {"sxgesv", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_207sxgesv, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_206sxgesv},
  {"shgesv", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_209shgesv, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_208shgesv},
  {"zzgels_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_211zzgels_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_210zzgels_bufferSize},
  {"zcgels_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_213zcgels_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_212zcgels_bufferSize},
  {"zygels_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_215zygels_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_214zygels_bufferSize},
  {"zkgels_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_217zkgels_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_216zkgels_bufferSize},
  {"ccgels_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_219ccgels_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_218ccgels_bufferSize},
  {"cygels_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_221cygels_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_220cygels_bufferSize},
  {"ckgels_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_223ckgels_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_222ckgels_bufferSize},
  {"ddgels_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_225ddgels_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_224ddgels_bufferSize},
  {"dsgels_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_227dsgels_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_226dsgels_bufferSize},
  {"dxgels_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_229dxgels_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_228dxgels_bufferSize},
  {"dhgels_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_231dhgels_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_230dhgels_bufferSize},
  {"ssgels_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_233ssgels_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_232ssgels_bufferSize},
  {"sxgels_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_235sxgels_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_234sxgels_bufferSize},
  {"shgels_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_237shgels_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_236shgels_bufferSize},
  {"zzgels", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_239zzgels, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_238zzgels},
  {"zcgels", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_241zcgels, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_240zcgels},
  {"zygels", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_243zygels, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_242zygels},
  {"zkgels", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_245zkgels, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_244zkgels},
  {"ccgels", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_247ccgels, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_246ccgels},
  {"cygels", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_249cygels, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_248cygels},
  {"ckgels", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_251ckgels, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_250ckgels},
  {"ddgels", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_253ddgels, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_252ddgels},
  {"dsgels", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_255dsgels, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_254dsgels},
  {"dxgels", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_257dxgels, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_256dxgels},
  {"dhgels", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_259dhgels, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_258dhgels},
  {"ssgels", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_261ssgels, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_260ssgels},
  {"sxgels", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_263sxgels, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_262sxgels},
  {"shgels", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_265shgels, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_264shgels},
  {"sgebrd_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_267sgebrd_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_266sgebrd_bufferSize},
  {"dgebrd_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_269dgebrd_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_268dgebrd_bufferSize},
  {"cgebrd_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_271cgebrd_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_270cgebrd_bufferSize},
  {"zgebrd_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_273zgebrd_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_272zgebrd_bufferSize},
  {"sgebrd", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_275sgebrd, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_274sgebrd},
  {"dgebrd", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_277dgebrd, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_276dgebrd},
  {"cgebrd", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_279cgebrd, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_278cgebrd},
  {"zgebrd", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_281zgebrd, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_280zgebrd},
  {"sgesvd_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_283sgesvd_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_282sgesvd_bufferSize},
  {"dgesvd_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_285dgesvd_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_284dgesvd_bufferSize},
  {"cgesvd_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_287cgesvd_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_286cgesvd_bufferSize},
  {"zgesvd_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_289zgesvd_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_288zgesvd_bufferSize},
  {"sgesvd", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_291sgesvd, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_290sgesvd},
  {"dgesvd", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_293dgesvd, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_292dgesvd},
  {"cgesvd", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_295cgesvd, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_294cgesvd},
  {"zgesvd", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_297zgesvd, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_296zgesvd},
  {"createGesvdjInfo", (PyCFunction)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_299createGesvdjInfo, METH_NOARGS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_298createGesvdjInfo},
  {"destroyGesvdjInfo", (PyCFunction)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_301destroyGesvdjInfo, METH_O, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_300destroyGesvdjInfo},
  {"xgesvdjSetTolerance", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_303xgesvdjSetTolerance, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_302xgesvdjSetTolerance},
  {"xgesvdjSetMaxSweeps", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_305xgesvdjSetMaxSweeps, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_304xgesvdjSetMaxSweeps},
  {"xgesvdjSetSortEig", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_307xgesvdjSetSortEig, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_306xgesvdjSetSortEig},
  {"xgesvdjGetResidual", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_309xgesvdjGetResidual, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_308xgesvdjGetResidual},
  {"xgesvdjGetSweeps", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_311xgesvdjGetSweeps, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_310xgesvdjGetSweeps},
  {"sgesvdj_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_313sgesvdj_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_312sgesvdj_bufferSize},
  {"dgesvdj_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_315dgesvdj_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_314dgesvdj_bufferSize},
  {"cgesvdj_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_317cgesvdj_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_316cgesvdj_bufferSize},
  {"zgesvdj_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_319zgesvdj_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_318zgesvdj_bufferSize},
  {"sgesvdj", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_321sgesvdj, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_320sgesvdj},
  {"dgesvdj", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_323dgesvdj, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_322dgesvdj},
  {"cgesvdj", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_325cgesvdj, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_324cgesvdj},
  {"zgesvdj", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_327zgesvdj, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_326zgesvdj},
  {"sgesvdjBatched_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_329sgesvdjBatched_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_328sgesvdjBatched_bufferSize},
  {"dgesvdjBatched_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_331dgesvdjBatched_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_330dgesvdjBatched_bufferSize},
  {"cgesvdjBatched_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_333cgesvdjBatched_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_332cgesvdjBatched_bufferSize},
  {"zgesvdjBatched_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_335zgesvdjBatched_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_334zgesvdjBatched_bufferSize},
  {"sgesvdjBatched", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_337sgesvdjBatched, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_336sgesvdjBatched},
  {"dgesvdjBatched", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_339dgesvdjBatched, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_338dgesvdjBatched},
  {"cgesvdjBatched", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_341cgesvdjBatched, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_340cgesvdjBatched},
  {"zgesvdjBatched", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_343zgesvdjBatched, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_342zgesvdjBatched},
  {"sgesvdaStridedBatched_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_345sgesvdaStridedBatched_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_344sgesvdaStridedBatched_bufferSize},
  {"dgesvdaStridedBatched_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_347dgesvdaStridedBatched_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_346dgesvdaStridedBatched_bufferSize},
  {"cgesvdaStridedBatched_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_349cgesvdaStridedBatched_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_348cgesvdaStridedBatched_bufferSize},
  {"zgesvdaStridedBatched_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_351zgesvdaStridedBatched_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_350zgesvdaStridedBatched_bufferSize},
  {"sgesvdaStridedBatched", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_353sgesvdaStridedBatched, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_352sgesvdaStridedBatched},
  {"dgesvdaStridedBatched", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_355dgesvdaStridedBatched, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_354dgesvdaStridedBatched},
  {"cgesvdaStridedBatched", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_357cgesvdaStridedBatched, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_356cgesvdaStridedBatched},
  {"zgesvdaStridedBatched", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_359zgesvdaStridedBatched, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_358zgesvdaStridedBatched},
  {"ssyevd_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_361ssyevd_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_360ssyevd_bufferSize},
  {"dsyevd_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_363dsyevd_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_362dsyevd_bufferSize},
  {"cheevd_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_365cheevd_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_364cheevd_bufferSize},
  {"zheevd_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_367zheevd_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_366zheevd_bufferSize},
  {"ssyevd", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_369ssyevd, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_368ssyevd},
  {"dsyevd", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_371dsyevd, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_370dsyevd},
  {"cheevd", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_373cheevd, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_372cheevd},
  {"zheevd", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_375zheevd, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_374zheevd},
  {"createSyevjInfo", (PyCFunction)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_377createSyevjInfo, METH_NOARGS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_376createSyevjInfo},
  {"destroySyevjInfo", (PyCFunction)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_379destroySyevjInfo, METH_O, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_378destroySyevjInfo},
  {"xsyevjSetTolerance", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_381xsyevjSetTolerance, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_380xsyevjSetTolerance},
  {"xsyevjSetMaxSweeps", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_383xsyevjSetMaxSweeps, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_382xsyevjSetMaxSweeps},
  {"xsyevjSetSortEig", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_385xsyevjSetSortEig, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_384xsyevjSetSortEig},
  {"xsyevjGetResidual", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_387xsyevjGetResidual, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_386xsyevjGetResidual},
  {"xsyevjGetSweeps", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_389xsyevjGetSweeps, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_388xsyevjGetSweeps},
  {"ssyevj_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_391ssyevj_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_390ssyevj_bufferSize},
  {"dsyevj_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_393dsyevj_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_392dsyevj_bufferSize},
  {"cheevj_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_395cheevj_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_394cheevj_bufferSize},
  {"zheevj_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_397zheevj_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_396zheevj_bufferSize},
  {"ssyevj", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_399ssyevj, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_398ssyevj},
  {"dsyevj", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_401dsyevj, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_400dsyevj},
  {"cheevj", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_403cheevj, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_402cheevj},
  {"zheevj", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_405zheevj, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_404zheevj},
  {"ssyevjBatched_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_407ssyevjBatched_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_406ssyevjBatched_bufferSize},
  {"dsyevjBatched_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_409dsyevjBatched_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_408dsyevjBatched_bufferSize},
  {"cheevjBatched_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_411cheevjBatched_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_410cheevjBatched_bufferSize},
  {"zheevjBatched_bufferSize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_413zheevjBatched_bufferSize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_412zheevjBatched_bufferSize},
  {"ssyevjBatched", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_415ssyevjBatched, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_414ssyevjBatched},
  {"dsyevjBatched", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_417dsyevjBatched, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_416dsyevjBatched},
  {"cheevjBatched", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_419cheevjBatched, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_418cheevjBatched},
  {"zheevjBatched", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_421zheevjBatched, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_420zheevjBatched},
  {"scsrlsvchol", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_423scsrlsvchol, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_422scsrlsvchol},
  {"dcsrlsvchol", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_425dcsrlsvchol, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_424dcsrlsvchol},
  {"ccsrlsvchol", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_427ccsrlsvchol, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_426ccsrlsvchol},
  {"zcsrlsvchol", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_429zcsrlsvchol, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_428zcsrlsvchol},
  {"scsrlsvqr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_431scsrlsvqr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_430scsrlsvqr},
  {"dcsrlsvqr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_433dcsrlsvqr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_432dcsrlsvqr},
  {"ccsrlsvqr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_435ccsrlsvqr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_434ccsrlsvqr},
  {"zcsrlsvqr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_437zcsrlsvqr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_436zcsrlsvqr},
  {"scsreigvsi", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_439scsreigvsi, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_438scsreigvsi},
  {"dcsreigvsi", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_441dcsreigvsi, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_440dcsreigvsi},
  {"ccsreigvsi", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_443ccsreigvsi, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_442ccsreigvsi},
  {"zcsreigvsi", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_13cupy_backends_4cuda_4libs_8cusolver_445zcsreigvsi, METH_VARARGS|METH_KEYWORDS, __pyx_doc_13cupy_backends_4cuda_4libs_8cusolver_444zcsreigvsi},
  {0, 0, 0, 0}
};

#if PY_MAJOR_VERSION >= 3
#if CYTHON_PEP489_MULTI_PHASE_INIT
static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/
static int __pyx_pymod_exec_cusolver(PyObject* module); /*proto*/
static PyModuleDef_Slot __pyx_moduledef_slots[] = {
  {Py_mod_create, (void*)__pyx_pymod_create},
  {Py_mod_exec, (void*)__pyx_pymod_exec_cusolver},
  {0, NULL}
};
#endif

static struct PyModuleDef __pyx_moduledef = {
    PyModuleDef_HEAD_INIT,
    "cusolver",
    __pyx_k_Thin_wrapper_of_CUSOLVER, /* m_doc */
  #if CYTHON_PEP489_MULTI_PHASE_INIT
    0, /* m_size */
  #else
    -1, /* m_size */
  #endif
    __pyx_methods /* m_methods */,
  #if CYTHON_PEP489_MULTI_PHASE_INIT
    __pyx_moduledef_slots, /* m_slots */
  #else
    NULL, /* m_reload */
  #endif
    NULL, /* m_traverse */
    NULL, /* m_clear */
    NULL /* m_free */
};
#endif
#ifndef CYTHON_SMALL_CODE
#if defined(__clang__)
    #define CYTHON_SMALL_CODE
#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
    #define CYTHON_SMALL_CODE __attribute__((cold))
#else
    #define CYTHON_SMALL_CODE
#endif
#endif

static __Pyx_StringTabEntry __pyx_string_tab[] = {
  {&__pyx_n_s_A, __pyx_k_A, sizeof(__pyx_k_A), 0, 0, 1, 1},
  {&__pyx_n_s_Aarray, __pyx_k_Aarray, sizeof(__pyx_k_Aarray), 0, 0, 1, 1},
  {&__pyx_n_s_B, __pyx_k_B, sizeof(__pyx_k_B), 0, 0, 1, 1},
  {&__pyx_n_s_Barray, __pyx_k_Barray, sizeof(__pyx_k_Barray), 0, 0, 1, 1},
  {&__pyx_n_s_C, __pyx_k_C, sizeof(__pyx_k_C), 0, 0, 1, 1},
  {&__pyx_n_s_CUSOLVERError, __pyx_k_CUSOLVERError, sizeof(__pyx_k_CUSOLVERError), 0, 0, 1, 1},
  {&__pyx_n_s_CUSOLVERError___init, __pyx_k_CUSOLVERError___init, sizeof(__pyx_k_CUSOLVERError___init), 0, 0, 1, 1},
  {&__pyx_n_s_CUSOLVERError___reduce, __pyx_k_CUSOLVERError___reduce, sizeof(__pyx_k_CUSOLVERError___reduce), 0, 0, 1, 1},
  {&__pyx_n_u_CUSOLVER_STATUS_ALLOC_FAILED, __pyx_k_CUSOLVER_STATUS_ALLOC_FAILED, sizeof(__pyx_k_CUSOLVER_STATUS_ALLOC_FAILED), 0, 1, 0, 1},
  {&__pyx_n_u_CUSOLVER_STATUS_ARCH_MISMATCH, __pyx_k_CUSOLVER_STATUS_ARCH_MISMATCH, sizeof(__pyx_k_CUSOLVER_STATUS_ARCH_MISMATCH), 0, 1, 0, 1},
  {&__pyx_n_u_CUSOLVER_STATUS_EXECUTION_FAILED, __pyx_k_CUSOLVER_STATUS_EXECUTION_FAILED, sizeof(__pyx_k_CUSOLVER_STATUS_EXECUTION_FAILED), 0, 1, 0, 1},
  {&__pyx_n_u_CUSOLVER_STATUS_INTERNAL_ERROR, __pyx_k_CUSOLVER_STATUS_INTERNAL_ERROR, sizeof(__pyx_k_CUSOLVER_STATUS_INTERNAL_ERROR), 0, 1, 0, 1},
  {&__pyx_n_u_CUSOLVER_STATUS_INVALID_LICENSE, __pyx_k_CUSOLVER_STATUS_INVALID_LICENSE, sizeof(__pyx_k_CUSOLVER_STATUS_INVALID_LICENSE), 0, 1, 0, 1},
  {&__pyx_n_u_CUSOLVER_STATUS_INVALID_VALUE, __pyx_k_CUSOLVER_STATUS_INVALID_VALUE, sizeof(__pyx_k_CUSOLVER_STATUS_INVALID_VALUE), 0, 1, 0, 1},
  {&__pyx_n_u_CUSOLVER_STATUS_INVALID_WORKSPAC, __pyx_k_CUSOLVER_STATUS_INVALID_WORKSPAC, sizeof(__pyx_k_CUSOLVER_STATUS_INVALID_WORKSPAC), 0, 1, 0, 1},
  {&__pyx_n_u_CUSOLVER_STATUS_IRS_INFOS_NOT_DE, __pyx_k_CUSOLVER_STATUS_IRS_INFOS_NOT_DE, sizeof(__pyx_k_CUSOLVER_STATUS_IRS_INFOS_NOT_DE), 0, 1, 0, 1},
  {&__pyx_n_u_CUSOLVER_STATUS_IRS_INFOS_NOT_IN, __pyx_k_CUSOLVER_STATUS_IRS_INFOS_NOT_IN, sizeof(__pyx_k_CUSOLVER_STATUS_IRS_INFOS_NOT_IN), 0, 1, 0, 1},
  {&__pyx_n_u_CUSOLVER_STATUS_IRS_INTERNAL_ERR, __pyx_k_CUSOLVER_STATUS_IRS_INTERNAL_ERR, sizeof(__pyx_k_CUSOLVER_STATUS_IRS_INTERNAL_ERR), 0, 1, 0, 1},
  {&__pyx_n_u_CUSOLVER_STATUS_IRS_MATRIX_SINGU, __pyx_k_CUSOLVER_STATUS_IRS_MATRIX_SINGU, sizeof(__pyx_k_CUSOLVER_STATUS_IRS_MATRIX_SINGU), 0, 1, 0, 1},
  {&__pyx_n_u_CUSOLVER_STATUS_IRS_NOT_SUPPORTE, __pyx_k_CUSOLVER_STATUS_IRS_NOT_SUPPORTE, sizeof(__pyx_k_CUSOLVER_STATUS_IRS_NOT_SUPPORTE), 0, 1, 0, 1},
  {&__pyx_n_u_CUSOLVER_STATUS_IRS_NRHS_NOT_SUP, __pyx_k_CUSOLVER_STATUS_IRS_NRHS_NOT_SUP, sizeof(__pyx_k_CUSOLVER_STATUS_IRS_NRHS_NOT_SUP), 0, 1, 0, 1},
  {&__pyx_n_u_CUSOLVER_STATUS_IRS_OUT_OF_RANGE, __pyx_k_CUSOLVER_STATUS_IRS_OUT_OF_RANGE, sizeof(__pyx_k_CUSOLVER_STATUS_IRS_OUT_OF_RANGE), 0, 1, 0, 1},
  {&__pyx_n_u_CUSOLVER_STATUS_IRS_PARAMS_INVAL, __pyx_k_CUSOLVER_STATUS_IRS_PARAMS_INVAL, sizeof(__pyx_k_CUSOLVER_STATUS_IRS_PARAMS_INVAL), 0, 1, 0, 1},
  {&__pyx_n_u_CUSOLVER_STATUS_IRS_PARAMS_INVAL_2, __pyx_k_CUSOLVER_STATUS_IRS_PARAMS_INVAL_2, sizeof(__pyx_k_CUSOLVER_STATUS_IRS_PARAMS_INVAL_2), 0, 1, 0, 1},
  {&__pyx_n_u_CUSOLVER_STATUS_IRS_PARAMS_INVAL_3, __pyx_k_CUSOLVER_STATUS_IRS_PARAMS_INVAL_3, sizeof(__pyx_k_CUSOLVER_STATUS_IRS_PARAMS_INVAL_3), 0, 1, 0, 1},
  {&__pyx_n_u_CUSOLVER_STATUS_IRS_PARAMS_INVAL_4, __pyx_k_CUSOLVER_STATUS_IRS_PARAMS_INVAL_4, sizeof(__pyx_k_CUSOLVER_STATUS_IRS_PARAMS_INVAL_4), 0, 1, 0, 1},
  {&__pyx_n_u_CUSOLVER_STATUS_IRS_PARAMS_NOT_I, __pyx_k_CUSOLVER_STATUS_IRS_PARAMS_NOT_I, sizeof(__pyx_k_CUSOLVER_STATUS_IRS_PARAMS_NOT_I), 0, 1, 0, 1},
  {&__pyx_n_u_CUSOLVER_STATUS_MAPPING_ERROR, __pyx_k_CUSOLVER_STATUS_MAPPING_ERROR, sizeof(__pyx_k_CUSOLVER_STATUS_MAPPING_ERROR), 0, 1, 0, 1},
  {&__pyx_n_u_CUSOLVER_STATUS_MATRIX_TYPE_NOT, __pyx_k_CUSOLVER_STATUS_MATRIX_TYPE_NOT, sizeof(__pyx_k_CUSOLVER_STATUS_MATRIX_TYPE_NOT), 0, 1, 0, 1},
  {&__pyx_n_u_CUSOLVER_STATUS_NOT_INITIALIZED, __pyx_k_CUSOLVER_STATUS_NOT_INITIALIZED, sizeof(__pyx_k_CUSOLVER_STATUS_NOT_INITIALIZED), 0, 1, 0, 1},
  {&__pyx_n_u_CUSOLVER_STATUS_NOT_SUPPORTED, __pyx_k_CUSOLVER_STATUS_NOT_SUPPORTED, sizeof(__pyx_k_CUSOLVER_STATUS_NOT_SUPPORTED), 0, 1, 0, 1},
  {&__pyx_n_u_CUSOLVER_STATUS_SUCCESS, __pyx_k_CUSOLVER_STATUS_SUCCESS, sizeof(__pyx_k_CUSOLVER_STATUS_SUCCESS), 0, 1, 0, 1},
  {&__pyx_n_u_CUSOLVER_STATUS_ZERO_PIVOT, __pyx_k_CUSOLVER_STATUS_ZERO_PIVOT, sizeof(__pyx_k_CUSOLVER_STATUS_ZERO_PIVOT), 0, 1, 0, 1},
  {&__pyx_n_s_D, __pyx_k_D, sizeof(__pyx_k_D), 0, 0, 1, 1},
  {&__pyx_n_s_E, __pyx_k_E, sizeof(__pyx_k_E), 0, 0, 1, 1},
  {&__pyx_n_s_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 0, 0, 1, 1},
  {&__pyx_n_s_S, __pyx_k_S, sizeof(__pyx_k_S), 0, 0, 1, 1},
  {&__pyx_n_s_U, __pyx_k_U, sizeof(__pyx_k_U), 0, 0, 1, 1},
  {&__pyx_n_s_V, __pyx_k_V, sizeof(__pyx_k_V), 0, 0, 1, 1},
  {&__pyx_n_s_VT, __pyx_k_VT, sizeof(__pyx_k_VT), 0, 0, 1, 1},
  {&__pyx_n_s_W, __pyx_k_W, sizeof(__pyx_k_W), 0, 0, 1, 1},
  {&__pyx_n_s_Work, __pyx_k_Work, sizeof(__pyx_k_Work), 0, 0, 1, 1},
  {&__pyx_n_s_b, __pyx_k_b, sizeof(__pyx_k_b), 0, 0, 1, 1},
  {&__pyx_n_s_batchSize, __pyx_k_batchSize, sizeof(__pyx_k_batchSize), 0, 0, 1, 1},
  {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1},
  {&__pyx_n_s_csrColInd, __pyx_k_csrColInd, sizeof(__pyx_k_csrColInd), 0, 0, 1, 1},
  {&__pyx_n_s_csrColIndA, __pyx_k_csrColIndA, sizeof(__pyx_k_csrColIndA), 0, 0, 1, 1},
  {&__pyx_n_s_csrRowPtr, __pyx_k_csrRowPtr, sizeof(__pyx_k_csrRowPtr), 0, 0, 1, 1},
  {&__pyx_n_s_csrRowPtrA, __pyx_k_csrRowPtrA, sizeof(__pyx_k_csrRowPtrA), 0, 0, 1, 1},
  {&__pyx_n_s_csrVal, __pyx_k_csrVal, sizeof(__pyx_k_csrVal), 0, 0, 1, 1},
  {&__pyx_n_s_csrValA, __pyx_k_csrValA, sizeof(__pyx_k_csrValA), 0, 0, 1, 1},
  {&__pyx_n_s_cupy_backends_cuda_libs_cusolver, __pyx_k_cupy_backends_cuda_libs_cusolver, sizeof(__pyx_k_cupy_backends_cuda_libs_cusolver), 0, 0, 1, 1},
  {&__pyx_kp_s_cupy_backends_cuda_libs_cusolver_2, __pyx_k_cupy_backends_cuda_libs_cusolver_2, sizeof(__pyx_k_cupy_backends_cuda_libs_cusolver_2), 0, 0, 1, 0},
  {&__pyx_n_s_dA, __pyx_k_dA, sizeof(__pyx_k_dA), 0, 0, 1, 1},
  {&__pyx_n_s_dB, __pyx_k_dB, sizeof(__pyx_k_dB), 0, 0, 1, 1},
  {&__pyx_n_s_dInfo, __pyx_k_dInfo, sizeof(__pyx_k_dInfo), 0, 0, 1, 1},
  {&__pyx_n_s_dX, __pyx_k_dX, sizeof(__pyx_k_dX), 0, 0, 1, 1},
  {&__pyx_n_s_d_A, __pyx_k_d_A, sizeof(__pyx_k_d_A), 0, 0, 1, 1},
  {&__pyx_n_s_d_S, __pyx_k_d_S, sizeof(__pyx_k_d_S), 0, 0, 1, 1},
  {&__pyx_n_s_d_U, __pyx_k_d_U, sizeof(__pyx_k_d_U), 0, 0, 1, 1},
  {&__pyx_n_s_d_V, __pyx_k_d_V, sizeof(__pyx_k_d_V), 0, 0, 1, 1},
  {&__pyx_n_s_d_info, __pyx_k_d_info, sizeof(__pyx_k_d_info), 0, 0, 1, 1},
  {&__pyx_n_s_d_work, __pyx_k_d_work, sizeof(__pyx_k_d_work), 0, 0, 1, 1},
  {&__pyx_n_s_descrA, __pyx_k_descrA, sizeof(__pyx_k_descrA), 0, 0, 1, 1},
  {&__pyx_n_s_devInfo, __pyx_k_devInfo, sizeof(__pyx_k_devInfo), 0, 0, 1, 1},
  {&__pyx_n_s_devIpiv, __pyx_k_devIpiv, sizeof(__pyx_k_devIpiv), 0, 0, 1, 1},
  {&__pyx_n_s_dipiv, __pyx_k_dipiv, sizeof(__pyx_k_dipiv), 0, 0, 1, 1},
  {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1},
  {&__pyx_n_s_dwork, __pyx_k_dwork, sizeof(__pyx_k_dwork), 0, 0, 1, 1},
  {&__pyx_n_s_econ, __pyx_k_econ, sizeof(__pyx_k_econ), 0, 0, 1, 1},
  {&__pyx_n_s_eps, __pyx_k_eps, sizeof(__pyx_k_eps), 0, 0, 1, 1},
  {&__pyx_n_s_err, __pyx_k_err, sizeof(__pyx_k_err), 0, 0, 1, 1},
  {&__pyx_n_s_h_R_nrmF, __pyx_k_h_R_nrmF, sizeof(__pyx_k_h_R_nrmF), 0, 0, 1, 1},
  {&__pyx_n_s_handle, __pyx_k_handle, sizeof(__pyx_k_handle), 0, 0, 1, 1},
  {&__pyx_n_s_info, __pyx_k_info, sizeof(__pyx_k_info), 0, 0, 1, 1},
  {&__pyx_n_s_infoArray, __pyx_k_infoArray, sizeof(__pyx_k_infoArray), 0, 0, 1, 1},
  {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1},
  {&__pyx_n_s_ipiv, __pyx_k_ipiv, sizeof(__pyx_k_ipiv), 0, 0, 1, 1},
  {&__pyx_n_s_jobu, __pyx_k_jobu, sizeof(__pyx_k_jobu), 0, 0, 1, 1},
  {&__pyx_n_s_jobvt, __pyx_k_jobvt, sizeof(__pyx_k_jobvt), 0, 0, 1, 1},
  {&__pyx_n_s_jobz, __pyx_k_jobz, sizeof(__pyx_k_jobz), 0, 0, 1, 1},
  {&__pyx_n_s_k, __pyx_k_k, sizeof(__pyx_k_k), 0, 0, 1, 1},
  {&__pyx_n_s_lda, __pyx_k_lda, sizeof(__pyx_k_lda), 0, 0, 1, 1},
  {&__pyx_n_s_ldb, __pyx_k_ldb, sizeof(__pyx_k_ldb), 0, 0, 1, 1},
  {&__pyx_n_s_ldc, __pyx_k_ldc, sizeof(__pyx_k_ldc), 0, 0, 1, 1},
  {&__pyx_n_s_ldda, __pyx_k_ldda, sizeof(__pyx_k_ldda), 0, 0, 1, 1},
  {&__pyx_n_s_lddb, __pyx_k_lddb, sizeof(__pyx_k_lddb), 0, 0, 1, 1},
  {&__pyx_n_s_lddx, __pyx_k_lddx, sizeof(__pyx_k_lddx), 0, 0, 1, 1},
  {&__pyx_n_s_ldu, __pyx_k_ldu, sizeof(__pyx_k_ldu), 0, 0, 1, 1},
  {&__pyx_n_s_ldv, __pyx_k_ldv, sizeof(__pyx_k_ldv), 0, 0, 1, 1},
  {&__pyx_n_s_ldvt, __pyx_k_ldvt, sizeof(__pyx_k_ldvt), 0, 0, 1, 1},
  {&__pyx_n_s_lwork, __pyx_k_lwork, sizeof(__pyx_k_lwork), 0, 0, 1, 1},
  {&__pyx_n_s_m, __pyx_k_m, sizeof(__pyx_k_m), 0, 0, 1, 1},
  {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
  {&__pyx_n_s_max_sweeps, __pyx_k_max_sweeps, sizeof(__pyx_k_max_sweeps), 0, 0, 1, 1},
  {&__pyx_n_s_maxite, __pyx_k_maxite, sizeof(__pyx_k_maxite), 0, 0, 1, 1},
  {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1},
  {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1},
  {&__pyx_n_s_mu, __pyx_k_mu, sizeof(__pyx_k_mu), 0, 0, 1, 1},
  {&__pyx_n_s_mu0, __pyx_k_mu0, sizeof(__pyx_k_mu0), 0, 0, 1, 1},
  {&__pyx_n_s_n, __pyx_k_n, sizeof(__pyx_k_n), 0, 0, 1, 1},
  {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
  {&__pyx_n_s_nnz, __pyx_k_nnz, sizeof(__pyx_k_nnz), 0, 0, 1, 1},
  {&__pyx_n_s_nrhs, __pyx_k_nrhs, sizeof(__pyx_k_nrhs), 0, 0, 1, 1},
  {&__pyx_n_s_params, __pyx_k_params, sizeof(__pyx_k_params), 0, 0, 1, 1},
  {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1},
  {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1},
  {&__pyx_n_s_rank, __pyx_k_rank, sizeof(__pyx_k_rank), 0, 0, 1, 1},
  {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1},
  {&__pyx_n_s_reorder, __pyx_k_reorder, sizeof(__pyx_k_reorder), 0, 0, 1, 1},
  {&__pyx_n_u_rocblas_status_continue, __pyx_k_rocblas_status_continue, sizeof(__pyx_k_rocblas_status_continue), 0, 1, 0, 1},
  {&__pyx_n_u_rocblas_status_internal_error, __pyx_k_rocblas_status_internal_error, sizeof(__pyx_k_rocblas_status_internal_error), 0, 1, 0, 1},
  {&__pyx_n_u_rocblas_status_invalid_handle, __pyx_k_rocblas_status_invalid_handle, sizeof(__pyx_k_rocblas_status_invalid_handle), 0, 1, 0, 1},
  {&__pyx_n_u_rocblas_status_invalid_pointer, __pyx_k_rocblas_status_invalid_pointer, sizeof(__pyx_k_rocblas_status_invalid_pointer), 0, 1, 0, 1},
  {&__pyx_n_u_rocblas_status_invalid_size, __pyx_k_rocblas_status_invalid_size, sizeof(__pyx_k_rocblas_status_invalid_size), 0, 1, 0, 1},
  {&__pyx_n_u_rocblas_status_invalid_value, __pyx_k_rocblas_status_invalid_value, sizeof(__pyx_k_rocblas_status_invalid_value), 0, 1, 0, 1},
  {&__pyx_n_u_rocblas_status_memory_error, __pyx_k_rocblas_status_memory_error, sizeof(__pyx_k_rocblas_status_memory_error), 0, 1, 0, 1},
  {&__pyx_n_u_rocblas_status_not_implemented, __pyx_k_rocblas_status_not_implemented, sizeof(__pyx_k_rocblas_status_not_implemented), 0, 1, 0, 1},
  {&__pyx_n_u_rocblas_status_perf_degraded, __pyx_k_rocblas_status_perf_degraded, sizeof(__pyx_k_rocblas_status_perf_degraded), 0, 1, 0, 1},
  {&__pyx_n_u_rocblas_status_size_increased, __pyx_k_rocblas_status_size_increased, sizeof(__pyx_k_rocblas_status_size_increased), 0, 1, 0, 1},
  {&__pyx_n_u_rocblas_status_size_query_mismat, __pyx_k_rocblas_status_size_query_mismat, sizeof(__pyx_k_rocblas_status_size_query_mismat), 0, 1, 0, 1},
  {&__pyx_n_u_rocblas_status_size_unchanged, __pyx_k_rocblas_status_size_unchanged, sizeof(__pyx_k_rocblas_status_size_unchanged), 0, 1, 0, 1},
  {&__pyx_n_u_rocblas_status_success, __pyx_k_rocblas_status_success, sizeof(__pyx_k_rocblas_status_success), 0, 1, 0, 1},
  {&__pyx_n_s_rwork, __pyx_k_rwork, sizeof(__pyx_k_rwork), 0, 0, 1, 1},
  {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1},
  {&__pyx_n_s_side, __pyx_k_side, sizeof(__pyx_k_side), 0, 0, 1, 1},
  {&__pyx_n_s_singularity, __pyx_k_singularity, sizeof(__pyx_k_singularity), 0, 0, 1, 1},
  {&__pyx_n_s_sort_eig, __pyx_k_sort_eig, sizeof(__pyx_k_sort_eig), 0, 0, 1, 1},
  {&__pyx_n_s_sort_svd, __pyx_k_sort_svd, sizeof(__pyx_k_sort_svd), 0, 0, 1, 1},
  {&__pyx_n_s_status, __pyx_k_status, sizeof(__pyx_k_status), 0, 0, 1, 1},
  {&__pyx_n_s_stream, __pyx_k_stream, sizeof(__pyx_k_stream), 0, 0, 1, 1},
  {&__pyx_n_s_strideA, __pyx_k_strideA, sizeof(__pyx_k_strideA), 0, 0, 1, 1},
  {&__pyx_n_s_strideS, __pyx_k_strideS, sizeof(__pyx_k_strideS), 0, 0, 1, 1},
  {&__pyx_n_s_strideU, __pyx_k_strideU, sizeof(__pyx_k_strideU), 0, 0, 1, 1},
  {&__pyx_n_s_strideV, __pyx_k_strideV, sizeof(__pyx_k_strideV), 0, 0, 1, 1},
  {&__pyx_n_s_super, __pyx_k_super, sizeof(__pyx_k_super), 0, 0, 1, 1},
  {&__pyx_n_s_tau, __pyx_k_tau, sizeof(__pyx_k_tau), 0, 0, 1, 1},
  {&__pyx_n_s_tauP, __pyx_k_tauP, sizeof(__pyx_k_tauP), 0, 0, 1, 1},
  {&__pyx_n_s_tauQ, __pyx_k_tauQ, sizeof(__pyx_k_tauQ), 0, 0, 1, 1},
  {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
  {&__pyx_n_s_tol, __pyx_k_tol, sizeof(__pyx_k_tol), 0, 0, 1, 1},
  {&__pyx_n_s_tolerance, __pyx_k_tolerance, sizeof(__pyx_k_tolerance), 0, 0, 1, 1},
  {&__pyx_n_s_trans, __pyx_k_trans, sizeof(__pyx_k_trans), 0, 0, 1, 1},
  {&__pyx_n_s_uplo, __pyx_k_uplo, sizeof(__pyx_k_uplo), 0, 0, 1, 1},
  {&__pyx_n_s_work, __pyx_k_work, sizeof(__pyx_k_work), 0, 0, 1, 1},
  {&__pyx_n_s_x, __pyx_k_x, sizeof(__pyx_k_x), 0, 0, 1, 1},
  {&__pyx_n_s_x0, __pyx_k_x0, sizeof(__pyx_k_x0), 0, 0, 1, 1},
  {0, 0, 0, 0, 0, 0, 0}
};
static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
  __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(0, 1033, __pyx_L1_error)
  __pyx_builtin_super = __Pyx_GetBuiltinName(__pyx_n_s_super); if (!__pyx_builtin_super) __PYX_ERR(0, 1041, __pyx_L1_error)
  return 0;
  __pyx_L1_error:;
  return -1;
}

static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1033
 * 
 * 
 * class CUSOLVERError(RuntimeError):             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, status):
 */
  __pyx_tuple_ = PyTuple_Pack(1, __pyx_builtin_RuntimeError); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 1033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple_);
  __Pyx_GIVEREF(__pyx_tuple_);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1035
 * class CUSOLVERError(RuntimeError):
 * 
 *     def __init__(self, status):             # <<<<<<<<<<<<<<
 *         self.status = status
 *         if runtime._is_hip_environment:
 */
  __pyx_tuple__2 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_status, __pyx_n_s_err); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 1035, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__2);
  __Pyx_GIVEREF(__pyx_tuple__2);
  __pyx_codeobj__3 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__2, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_cupy_backends_cuda_libs_cusolver_2, __pyx_n_s_init, 1035, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__3)) __PYX_ERR(0, 1035, __pyx_L1_error)

  /* "cupy_backends/cuda/libs/cusolver.pyx":1043
 *         super(CUSOLVERError, self).__init__(err[status])
 * 
 *     def __reduce__(self):             # <<<<<<<<<<<<<<
 *         return (type(self), (self.status,))
 * 
 */
  __pyx_tuple__4 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 1043, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__4);
  __Pyx_GIVEREF(__pyx_tuple__4);
  __pyx_codeobj__5 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__4, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_cupy_backends_cuda_libs_cusolver_2, __pyx_n_s_reduce, 1043, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__5)) __PYX_ERR(0, 1043, __pyx_L1_error)
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_RefNannyFinishContext();
  return -1;
}

static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
  if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_4 = PyInt_FromLong(4); if (unlikely(!__pyx_int_4)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_5 = PyInt_FromLong(5); if (unlikely(!__pyx_int_5)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_6 = PyInt_FromLong(6); if (unlikely(!__pyx_int_6)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_7 = PyInt_FromLong(7); if (unlikely(!__pyx_int_7)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_8 = PyInt_FromLong(8); if (unlikely(!__pyx_int_8)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_9 = PyInt_FromLong(9); if (unlikely(!__pyx_int_9)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_10 = PyInt_FromLong(10); if (unlikely(!__pyx_int_10)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_11 = PyInt_FromLong(11); if (unlikely(!__pyx_int_11)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_12 = PyInt_FromLong(12); if (unlikely(!__pyx_int_12)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_13 = PyInt_FromLong(13); if (unlikely(!__pyx_int_13)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_14 = PyInt_FromLong(14); if (unlikely(!__pyx_int_14)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_15 = PyInt_FromLong(15); if (unlikely(!__pyx_int_15)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_16 = PyInt_FromLong(16); if (unlikely(!__pyx_int_16)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_20 = PyInt_FromLong(20); if (unlikely(!__pyx_int_20)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_21 = PyInt_FromLong(21); if (unlikely(!__pyx_int_21)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_22 = PyInt_FromLong(22); if (unlikely(!__pyx_int_22)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_23 = PyInt_FromLong(23); if (unlikely(!__pyx_int_23)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_25 = PyInt_FromLong(25); if (unlikely(!__pyx_int_25)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_26 = PyInt_FromLong(26); if (unlikely(!__pyx_int_26)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_30 = PyInt_FromLong(30); if (unlikely(!__pyx_int_30)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_31 = PyInt_FromLong(31); if (unlikely(!__pyx_int_31)) __PYX_ERR(0, 1, __pyx_L1_error)
  return 0;
  __pyx_L1_error:;
  return -1;
}

static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/

static int __Pyx_modinit_global_init_code(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0);
  /*--- Global init code ---*/
  __pyx_v_13cupy_backends_4cuda_4libs_8cusolver_STATUS = ((PyObject*)Py_None); Py_INCREF(Py_None);
  __pyx_v_13cupy_backends_4cuda_4libs_8cusolver_ROC_STATUS = ((PyObject*)Py_None); Py_INCREF(Py_None);
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_variable_export_code(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0);
  /*--- Variable export code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_function_export_code(void) {
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0);
  /*--- Function export code ---*/
  if (__Pyx_ExportFunction("getProperty", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_getProperty, "int (int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("_getVersion", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver__getVersion, "PyObject *(int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("create", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_create, "intptr_t (int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("spCreate", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spCreate, "intptr_t (int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("destroy", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_destroy, "PyObject *(intptr_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("spDestroy", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spDestroy, "PyObject *(intptr_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("setStream", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_setStream, "PyObject *(intptr_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("getStream", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_getStream, "size_t (intptr_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("spotrf_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spotrf_bufferSize, "int (intptr_t, int, int, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dpotrf_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dpotrf_bufferSize, "int (intptr_t, int, int, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cpotrf_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cpotrf_bufferSize, "int (intptr_t, int, int, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zpotrf_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zpotrf_bufferSize, "int (intptr_t, int, int, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("spotrf", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spotrf, "PyObject *(intptr_t, int, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dpotrf", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dpotrf, "PyObject *(intptr_t, int, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cpotrf", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cpotrf, "PyObject *(intptr_t, int, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zpotrf", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zpotrf, "PyObject *(intptr_t, int, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("spotrs", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spotrs, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dpotrs", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dpotrs, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cpotrs", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cpotrs, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zpotrs", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zpotrs, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("spotrfBatched", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spotrfBatched, "PyObject *(intptr_t, int, int, size_t, int, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dpotrfBatched", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dpotrfBatched, "PyObject *(intptr_t, int, int, size_t, int, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cpotrfBatched", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cpotrfBatched, "PyObject *(intptr_t, int, int, size_t, int, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zpotrfBatched", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zpotrfBatched, "PyObject *(intptr_t, int, int, size_t, int, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("spotrsBatched", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_spotrsBatched, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dpotrsBatched", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dpotrsBatched, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cpotrsBatched", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cpotrsBatched, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zpotrsBatched", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zpotrsBatched, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("sgetrf_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgetrf_bufferSize, "int (intptr_t, int, int, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dgetrf_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgetrf_bufferSize, "int (intptr_t, int, int, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cgetrf_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgetrf_bufferSize, "int (intptr_t, int, int, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zgetrf_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgetrf_bufferSize, "int (intptr_t, int, int, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("sgetrf", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgetrf, "PyObject *(intptr_t, int, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dgetrf", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgetrf, "PyObject *(intptr_t, int, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cgetrf", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgetrf, "PyObject *(intptr_t, int, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zgetrf", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgetrf, "PyObject *(intptr_t, int, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("sgetrs", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgetrs, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dgetrs", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgetrs, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cgetrs", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgetrs, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zgetrs", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgetrs, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("sgeqrf_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgeqrf_bufferSize, "int (intptr_t, int, int, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dgeqrf_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgeqrf_bufferSize, "int (intptr_t, int, int, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cgeqrf_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgeqrf_bufferSize, "int (intptr_t, int, int, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zgeqrf_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgeqrf_bufferSize, "int (intptr_t, int, int, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("sgeqrf", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgeqrf, "PyObject *(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dgeqrf", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgeqrf, "PyObject *(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cgeqrf", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgeqrf, "PyObject *(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zgeqrf", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgeqrf, "PyObject *(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("sorgqr_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sorgqr_bufferSize, "int (intptr_t, int, int, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dorgqr_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dorgqr_bufferSize, "int (intptr_t, int, int, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cungqr_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cungqr_bufferSize, "int (intptr_t, int, int, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zungqr_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zungqr_bufferSize, "int (intptr_t, int, int, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("sorgqr", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sorgqr, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dorgqr", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dorgqr, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cungqr", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cungqr, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zungqr", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zungqr, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("sormqr_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sormqr_bufferSize, "int (intptr_t, int, int, int, int, int, size_t, int, size_t, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dormqr_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dormqr_bufferSize, "int (intptr_t, int, int, int, int, int, size_t, int, size_t, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cunmqr_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cunmqr_bufferSize, "int (intptr_t, int, int, int, int, int, size_t, int, size_t, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zunmqr_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zunmqr_bufferSize, "int (intptr_t, int, int, int, int, int, size_t, int, size_t, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("sormqr", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sormqr, "PyObject *(intptr_t, int, int, int, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dormqr", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dormqr, "PyObject *(intptr_t, int, int, int, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cunmqr", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cunmqr, "PyObject *(intptr_t, int, int, int, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zunmqr", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zunmqr, "PyObject *(intptr_t, int, int, int, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cormqr", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cormqr, "PyObject *(intptr_t, int, int, int, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zormqr", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zormqr, "PyObject *(intptr_t, int, int, int, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ssytrf_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssytrf_bufferSize, "int (intptr_t, int, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dsytrf_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsytrf_bufferSize, "int (intptr_t, int, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("csytrf_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_csytrf_bufferSize, "int (intptr_t, int, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zsytrf_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zsytrf_bufferSize, "int (intptr_t, int, size_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ssytrf", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssytrf, "PyObject *(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dsytrf", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsytrf, "PyObject *(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("csytrf", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_csytrf, "PyObject *(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zsytrf", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zsytrf, "PyObject *(intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zzgesv_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zzgesv_bufferSize, "size_t (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zcgesv_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcgesv_bufferSize, "size_t (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zygesv_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zygesv_bufferSize, "size_t (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zkgesv_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zkgesv_bufferSize, "size_t (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ccgesv_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccgesv_bufferSize, "size_t (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cygesv_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cygesv_bufferSize, "size_t (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ckgesv_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ckgesv_bufferSize, "size_t (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ddgesv_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ddgesv_bufferSize, "size_t (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dsgesv_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsgesv_bufferSize, "size_t (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dxgesv_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dxgesv_bufferSize, "size_t (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dhgesv_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dhgesv_bufferSize, "size_t (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ssgesv_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssgesv_bufferSize, "size_t (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("sxgesv_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sxgesv_bufferSize, "size_t (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("shgesv_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_shgesv_bufferSize, "size_t (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zzgesv", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zzgesv, "int (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zcgesv", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcgesv, "int (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zygesv", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zygesv, "int (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zkgesv", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zkgesv, "int (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ccgesv", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccgesv, "int (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ckgesv", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ckgesv, "int (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cygesv", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cygesv, "int (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ddgesv", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ddgesv, "int (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dsgesv", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsgesv, "int (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dxgesv", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dxgesv, "int (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dhgesv", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dhgesv, "int (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ssgesv", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssgesv, "int (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("sxgesv", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sxgesv, "int (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("shgesv", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_shgesv, "int (intptr_t, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zzgels_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zzgels_bufferSize, "size_t (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zcgels_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcgels_bufferSize, "size_t (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zygels_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zygels_bufferSize, "size_t (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zkgels_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zkgels_bufferSize, "size_t (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ccgels_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccgels_bufferSize, "size_t (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cygels_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cygels_bufferSize, "size_t (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ckgels_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ckgels_bufferSize, "size_t (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ddgels_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ddgels_bufferSize, "size_t (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dsgels_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsgels_bufferSize, "size_t (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dxgels_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dxgels_bufferSize, "size_t (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dhgels_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dhgels_bufferSize, "size_t (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ssgels_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssgels_bufferSize, "size_t (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("sxgels_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sxgels_bufferSize, "size_t (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("shgels_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_shgels_bufferSize, "size_t (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zzgels", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zzgels, "int (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zcgels", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcgels, "int (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zygels", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zygels, "int (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zkgels", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zkgels, "int (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ccgels", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccgels, "int (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ckgels", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ckgels, "int (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cygels", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cygels, "int (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ddgels", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ddgels, "int (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dsgels", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsgels, "int (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dxgels", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dxgels, "int (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dhgels", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dhgels, "int (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ssgels", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssgels, "int (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("sxgels", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sxgels, "int (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("shgels", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_shgels, "int (intptr_t, int, int, int, size_t, int, size_t, int, size_t, int, size_t, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("sgebrd_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgebrd_bufferSize, "int (intptr_t, int, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dgebrd_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgebrd_bufferSize, "int (intptr_t, int, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cgebrd_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgebrd_bufferSize, "int (intptr_t, int, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zgebrd_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgebrd_bufferSize, "int (intptr_t, int, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("sgebrd", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgebrd, "PyObject *(intptr_t, int, int, size_t, int, size_t, size_t, size_t, size_t, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dgebrd", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgebrd, "PyObject *(intptr_t, int, int, size_t, int, size_t, size_t, size_t, size_t, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cgebrd", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgebrd, "PyObject *(intptr_t, int, int, size_t, int, size_t, size_t, size_t, size_t, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zgebrd", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgebrd, "PyObject *(intptr_t, int, int, size_t, int, size_t, size_t, size_t, size_t, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("sgesvd_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvd_bufferSize, "int (intptr_t, int, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dgesvd_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvd_bufferSize, "int (intptr_t, int, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cgesvd_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvd_bufferSize, "int (intptr_t, int, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zgesvd_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvd_bufferSize, "int (intptr_t, int, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("sgesvd", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvd, "PyObject *(intptr_t, char, char, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dgesvd", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvd, "PyObject *(intptr_t, char, char, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cgesvd", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvd, "PyObject *(intptr_t, char, char, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zgesvd", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvd, "PyObject *(intptr_t, char, char, int, int, size_t, int, size_t, size_t, int, size_t, int, size_t, int, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("createGesvdjInfo", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_createGesvdjInfo, "intptr_t (int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("destroyGesvdjInfo", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_destroyGesvdjInfo, "PyObject *(intptr_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("xgesvdjSetTolerance", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xgesvdjSetTolerance, "PyObject *(intptr_t, double, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("xgesvdjSetMaxSweeps", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xgesvdjSetMaxSweeps, "PyObject *(intptr_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("xgesvdjSetSortEig", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xgesvdjSetSortEig, "PyObject *(intptr_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("xgesvdjGetResidual", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xgesvdjGetResidual, "double (intptr_t, intptr_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("xgesvdjGetSweeps", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xgesvdjGetSweeps, "int (intptr_t, intptr_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("sgesvdj_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvdj_bufferSize, "int (intptr_t, int, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dgesvdj_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvdj_bufferSize, "int (intptr_t, int, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cgesvdj_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvdj_bufferSize, "int (intptr_t, int, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zgesvdj_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvdj_bufferSize, "int (intptr_t, int, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("sgesvdj", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvdj, "PyObject *(intptr_t, int, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int, intptr_t, intptr_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dgesvdj", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvdj, "PyObject *(intptr_t, int, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int, intptr_t, intptr_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cgesvdj", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvdj, "PyObject *(intptr_t, int, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int, intptr_t, intptr_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zgesvdj", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvdj, "PyObject *(intptr_t, int, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int, intptr_t, intptr_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("sgesvdjBatched_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvdjBatched_bufferSize, "int (intptr_t, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dgesvdjBatched_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvdjBatched_bufferSize, "int (intptr_t, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cgesvdjBatched_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvdjBatched_bufferSize, "int (intptr_t, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zgesvdjBatched_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvdjBatched_bufferSize, "int (intptr_t, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("sgesvdjBatched", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvdjBatched, "PyObject *(intptr_t, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int, intptr_t, intptr_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dgesvdjBatched", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvdjBatched, "PyObject *(intptr_t, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int, intptr_t, intptr_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cgesvdjBatched", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvdjBatched, "PyObject *(intptr_t, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int, intptr_t, intptr_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zgesvdjBatched", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvdjBatched, "PyObject *(intptr_t, int, int, int, intptr_t, int, intptr_t, intptr_t, int, intptr_t, int, intptr_t, int, intptr_t, intptr_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("sgesvdaStridedBatched_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvdaStridedBatched_bufferSize, "int (intptr_t, int, int, int, int, intptr_t, int, PY_LONG_LONG, intptr_t, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dgesvdaStridedBatched_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvdaStridedBatched_bufferSize, "int (intptr_t, int, int, int, int, intptr_t, int, PY_LONG_LONG, intptr_t, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cgesvdaStridedBatched_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvdaStridedBatched_bufferSize, "int (intptr_t, int, int, int, int, intptr_t, int, PY_LONG_LONG, intptr_t, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zgesvdaStridedBatched_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvdaStridedBatched_bufferSize, "int (intptr_t, int, int, int, int, intptr_t, int, PY_LONG_LONG, intptr_t, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("sgesvdaStridedBatched", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_sgesvdaStridedBatched, "PyObject *(intptr_t, int, int, int, int, intptr_t, int, PY_LONG_LONG, intptr_t, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, intptr_t, int, intptr_t, intptr_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dgesvdaStridedBatched", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dgesvdaStridedBatched, "PyObject *(intptr_t, int, int, int, int, intptr_t, int, PY_LONG_LONG, intptr_t, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, intptr_t, int, intptr_t, intptr_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cgesvdaStridedBatched", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cgesvdaStridedBatched, "PyObject *(intptr_t, int, int, int, int, intptr_t, int, PY_LONG_LONG, intptr_t, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, intptr_t, int, intptr_t, intptr_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zgesvdaStridedBatched", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zgesvdaStridedBatched, "PyObject *(intptr_t, int, int, int, int, intptr_t, int, PY_LONG_LONG, intptr_t, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, intptr_t, int, PY_LONG_LONG, intptr_t, int, intptr_t, intptr_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ssyevd_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssyevd_bufferSize, "int (intptr_t, int, int, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dsyevd_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsyevd_bufferSize, "int (intptr_t, int, int, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cheevd_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cheevd_bufferSize, "int (intptr_t, int, int, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zheevd_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zheevd_bufferSize, "int (intptr_t, int, int, int, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ssyevd", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssyevd, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dsyevd", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsyevd, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cheevd", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cheevd, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zheevd", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zheevd, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("createSyevjInfo", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_createSyevjInfo, "intptr_t (int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("destroySyevjInfo", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_destroySyevjInfo, "PyObject *(intptr_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("xsyevjSetTolerance", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xsyevjSetTolerance, "PyObject *(intptr_t, double, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("xsyevjSetMaxSweeps", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xsyevjSetMaxSweeps, "PyObject *(intptr_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("xsyevjSetSortEig", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xsyevjSetSortEig, "PyObject *(intptr_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("xsyevjGetResidual", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xsyevjGetResidual, "double (intptr_t, intptr_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("xsyevjGetSweeps", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_xsyevjGetSweeps, "int (intptr_t, intptr_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ssyevj_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssyevj_bufferSize, "int (intptr_t, int, int, int, size_t, int, size_t, intptr_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dsyevj_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsyevj_bufferSize, "int (intptr_t, int, int, int, size_t, int, size_t, intptr_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cheevj_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cheevj_bufferSize, "int (intptr_t, int, int, int, size_t, int, size_t, intptr_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zheevj_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zheevj_bufferSize, "int (intptr_t, int, int, int, size_t, int, size_t, intptr_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ssyevj", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssyevj, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, intptr_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dsyevj", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsyevj, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, intptr_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cheevj", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cheevj, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, intptr_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zheevj", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zheevj, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, intptr_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ssyevjBatched_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssyevjBatched_bufferSize, "int (intptr_t, int, int, int, size_t, int, size_t, intptr_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dsyevjBatched_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsyevjBatched_bufferSize, "int (intptr_t, int, int, int, size_t, int, size_t, intptr_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cheevjBatched_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cheevjBatched_bufferSize, "int (intptr_t, int, int, int, size_t, int, size_t, intptr_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zheevjBatched_bufferSize", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zheevjBatched_bufferSize, "int (intptr_t, int, int, int, size_t, int, size_t, intptr_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ssyevjBatched", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ssyevjBatched, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, intptr_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dsyevjBatched", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dsyevjBatched, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, intptr_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("cheevjBatched", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_cheevjBatched, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, intptr_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zheevjBatched", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zheevjBatched, "PyObject *(intptr_t, int, int, int, size_t, int, size_t, size_t, int, size_t, intptr_t, int, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("scsrlsvchol", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_scsrlsvchol, "PyObject *(intptr_t, int, int, size_t, size_t, size_t, size_t, size_t, float, int, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dcsrlsvchol", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dcsrlsvchol, "PyObject *(intptr_t, int, int, size_t, size_t, size_t, size_t, size_t, double, int, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ccsrlsvchol", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccsrlsvchol, "PyObject *(intptr_t, int, int, size_t, size_t, size_t, size_t, size_t, float, int, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zcsrlsvchol", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcsrlsvchol, "PyObject *(intptr_t, int, int, size_t, size_t, size_t, size_t, size_t, double, int, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("scsrlsvqr", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_scsrlsvqr, "PyObject *(intptr_t, int, int, size_t, size_t, size_t, size_t, size_t, float, int, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dcsrlsvqr", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dcsrlsvqr, "PyObject *(intptr_t, int, int, size_t, size_t, size_t, size_t, size_t, double, int, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ccsrlsvqr", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccsrlsvqr, "PyObject *(intptr_t, int, int, size_t, size_t, size_t, size_t, size_t, float, int, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zcsrlsvqr", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcsrlsvqr, "PyObject *(intptr_t, int, int, size_t, size_t, size_t, size_t, size_t, double, int, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("scsreigvsi", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_scsreigvsi, "PyObject *(intptr_t, int, int, size_t, size_t, size_t, size_t, float, size_t, int, float, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("dcsreigvsi", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_dcsreigvsi, "PyObject *(intptr_t, int, int, size_t, size_t, size_t, size_t, double, size_t, int, double, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ccsreigvsi", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_ccsreigvsi, "PyObject *(intptr_t, int, int, size_t, size_t, size_t, size_t, size_t, size_t, int, float, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("zcsreigvsi", (void (*)(void))__pyx_f_13cupy_backends_4cuda_4libs_8cusolver_zcsreigvsi, "PyObject *(intptr_t, int, int, size_t, size_t, size_t, size_t, size_t, size_t, int, double, size_t, size_t, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_RefNannyFinishContext();
  return -1;
}

static int __Pyx_modinit_type_init_code(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0);
  /*--- Type init code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_type_import_code(void) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
  /*--- Type import code ---*/
  __pyx_t_1 = PyImport_ImportModule("cupy_backends.cuda.api.runtime"); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_ptype_13cupy_backends_4cuda_3api_7runtime_PointerAttributes = __Pyx_ImportType(__pyx_t_1, "cupy_backends.cuda.api.runtime", "PointerAttributes", sizeof(struct __pyx_obj_13cupy_backends_4cuda_3api_7runtime_PointerAttributes), __Pyx_ImportType_CheckSize_Warn);
   if (!__pyx_ptype_13cupy_backends_4cuda_3api_7runtime_PointerAttributes) __PYX_ERR(1, 8, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_RefNannyFinishContext();
  return -1;
}

static int __Pyx_modinit_variable_import_code(void) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0);
  /*--- Variable import code ---*/
  __pyx_t_1 = PyImport_ImportModule("cupy_backends.cuda.api.runtime"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_ImportVoidPtr(__pyx_t_1, "errorMemoryAllocation", (void **)&__pyx_vp_13cupy_backends_4cuda_3api_7runtime_errorMemoryAllocation, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ImportVoidPtr(__pyx_t_1, "errorInvalidValue", (void **)&__pyx_vp_13cupy_backends_4cuda_3api_7runtime_errorInvalidValue, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ImportVoidPtr(__pyx_t_1, "errorPeerAccessAlreadyEnabled", (void **)&__pyx_vp_13cupy_backends_4cuda_3api_7runtime_errorPeerAccessAlreadyEnabled, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ImportVoidPtr(__pyx_t_1, "_is_hip_environment", (void **)&__pyx_vp_13cupy_backends_4cuda_3api_7runtime__is_hip_environment, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ImportVoidPtr(__pyx_t_1, "deviceAttributeComputeCapabilityMajor", (void **)&__pyx_vp_13cupy_backends_4cuda_3api_7runtime_deviceAttributeComputeCapabilityMajor, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ImportVoidPtr(__pyx_t_1, "deviceAttributeComputeCapabilityMinor", (void **)&__pyx_vp_13cupy_backends_4cuda_3api_7runtime_deviceAttributeComputeCapabilityMinor, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyImport_ImportModule("cupy_backends.cuda.stream"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_ImportVoidPtr(__pyx_t_1, "enable_current_stream", (void **)&__pyx_vp_13cupy_backends_4cuda_6stream_enable_current_stream, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_RefNannyFinishContext();
  return -1;
}

static int __Pyx_modinit_function_import_code(void) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0);
  /*--- Function import code ---*/
  __pyx_t_1 = PyImport_ImportModule("cupy_backends.cuda.stream"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_ImportFunction(__pyx_t_1, "get_current_stream_ptr", (void (**)(void))&__pyx_f_13cupy_backends_4cuda_6stream_get_current_stream_ptr, "intptr_t (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_RefNannyFinishContext();
  return -1;
}


#ifndef CYTHON_NO_PYINIT_EXPORT
#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
#elif PY_MAJOR_VERSION < 3
#ifdef __cplusplus
#define __Pyx_PyMODINIT_FUNC extern "C" void
#else
#define __Pyx_PyMODINIT_FUNC void
#endif
#else
#ifdef __cplusplus
#define __Pyx_PyMODINIT_FUNC extern "C" PyObject *
#else
#define __Pyx_PyMODINIT_FUNC PyObject *
#endif
#endif


#if PY_MAJOR_VERSION < 3
__Pyx_PyMODINIT_FUNC initcusolver(void) CYTHON_SMALL_CODE; /*proto*/
__Pyx_PyMODINIT_FUNC initcusolver(void)
#else
__Pyx_PyMODINIT_FUNC PyInit_cusolver(void) CYTHON_SMALL_CODE; /*proto*/
__Pyx_PyMODINIT_FUNC PyInit_cusolver(void)
#if CYTHON_PEP489_MULTI_PHASE_INIT
{
  return PyModuleDef_Init(&__pyx_moduledef);
}
static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
    #if PY_VERSION_HEX >= 0x030700A1
    static PY_INT64_T main_interpreter_id = -1;
    PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
    if (main_interpreter_id == -1) {
        main_interpreter_id = current_id;
        return (unlikely(current_id == -1)) ? -1 : 0;
    } else if (unlikely(main_interpreter_id != current_id))
    #else
    static PyInterpreterState *main_interpreter = NULL;
    PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
    if (!main_interpreter) {
        main_interpreter = current_interpreter;
    } else if (unlikely(main_interpreter != current_interpreter))
    #endif
    {
        PyErr_SetString(
            PyExc_ImportError,
            "Interpreter change detected - this module can only be loaded into one interpreter per process.");
        return -1;
    }
    return 0;
}
static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) {
    PyObject *value = PyObject_GetAttrString(spec, from_name);
    int result = 0;
    if (likely(value)) {
        if (allow_none || value != Py_None) {
            result = PyDict_SetItemString(moddict, to_name, value);
        }
        Py_DECREF(value);
    } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
        PyErr_Clear();
    } else {
        result = -1;
    }
    return result;
}
static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
    PyObject *module = NULL, *moddict, *modname;
    if (__Pyx_check_single_interpreter())
        return NULL;
    if (__pyx_m)
        return __Pyx_NewRef(__pyx_m);
    modname = PyObject_GetAttrString(spec, "name");
    if (unlikely(!modname)) goto bad;
    module = PyModule_NewObject(modname);
    Py_DECREF(modname);
    if (unlikely(!module)) goto bad;
    moddict = PyModule_GetDict(module);
    if (unlikely(!moddict)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad;
    return module;
bad:
    Py_XDECREF(module);
    return NULL;
}


static CYTHON_SMALL_CODE int __pyx_pymod_exec_cusolver(PyObject *__pyx_pyinit_module)
#endif
#endif
{
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  if (__pyx_m) {
    if (__pyx_m == __pyx_pyinit_module) return 0;
    PyErr_SetString(PyExc_RuntimeError, "Module 'cusolver' has already been imported. Re-initialisation is not supported.");
    return -1;
  }
  #elif PY_MAJOR_VERSION >= 3
  if (__pyx_m) return __Pyx_NewRef(__pyx_m);
  #endif
  #if CYTHON_REFNANNY
__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
if (!__Pyx_RefNanny) {
  PyErr_Clear();
  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
  if (!__Pyx_RefNanny)
      Py_FatalError("failed to import 'refnanny' module");
}
#endif
  __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_cusolver(void)", 0);
  if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #ifdef __Pxy_PyFrame_Initialize_Offsets
  __Pxy_PyFrame_Initialize_Offsets();
  #endif
  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
  #ifdef __Pyx_CyFunction_USED
  if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_FusedFunction_USED
  if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_Coroutine_USED
  if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_Generator_USED
  if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_AsyncGen_USED
  if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_StopAsyncIteration_USED
  if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  /*--- Library function declarations ---*/
  /*--- Threads initialization code ---*/
  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
  #ifdef WITH_THREAD /* Python build with threading support? */
  PyEval_InitThreads();
  #endif
  #endif
  /*--- Module creation code ---*/
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  __pyx_m = __pyx_pyinit_module;
  Py_INCREF(__pyx_m);
  #else
  #if PY_MAJOR_VERSION < 3
  __pyx_m = Py_InitModule4("cusolver", __pyx_methods, __pyx_k_Thin_wrapper_of_CUSOLVER, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
  #else
  __pyx_m = PyModule_Create(&__pyx_moduledef);
  #endif
  if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error)
  Py_INCREF(__pyx_d);
  __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error)
  Py_INCREF(__pyx_b);
  __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error)
  Py_INCREF(__pyx_cython_runtime);
  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
  /*--- Initialize various global constants etc. ---*/
  if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
  if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  if (__pyx_module_is_main_cupy_backends__cuda__libs__cusolver) {
    if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  }
  #if PY_MAJOR_VERSION >= 3
  {
    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error)
    if (!PyDict_GetItemString(modules, "cupy_backends.cuda.libs.cusolver")) {
      if (unlikely(PyDict_SetItemString(modules, "cupy_backends.cuda.libs.cusolver", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
    }
  }
  #endif
  /*--- Builtin init code ---*/
  if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  /*--- Constants init code ---*/
  if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  /*--- Global type/function init code ---*/
  (void)__Pyx_modinit_global_init_code();
  (void)__Pyx_modinit_variable_export_code();
  if (unlikely(__Pyx_modinit_function_export_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
  (void)__Pyx_modinit_type_init_code();
  if (unlikely(__Pyx_modinit_type_import_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
  if (unlikely(__Pyx_modinit_variable_import_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
  if (unlikely(__Pyx_modinit_function_import_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
  /*--- Execution code ---*/
  #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
  if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif

  /* "cupy_backends/cuda/libs/cusolver.pyx":988
 * 
 * cdef dict STATUS = {
 *     0: 'CUSOLVER_STATUS_SUCCESS',             # <<<<<<<<<<<<<<
 *     1: 'CUSOLVER_STATUS_NOT_INITIALIZED',
 *     2: 'CUSOLVER_STATUS_ALLOC_FAILED',
 */
  __pyx_t_1 = __Pyx_PyDict_NewPresized(25); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 988, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_0, __pyx_n_u_CUSOLVER_STATUS_SUCCESS) < 0) __PYX_ERR(0, 988, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_1, __pyx_n_u_CUSOLVER_STATUS_NOT_INITIALIZED) < 0) __PYX_ERR(0, 988, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_2, __pyx_n_u_CUSOLVER_STATUS_ALLOC_FAILED) < 0) __PYX_ERR(0, 988, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_3, __pyx_n_u_CUSOLVER_STATUS_INVALID_VALUE) < 0) __PYX_ERR(0, 988, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_4, __pyx_n_u_CUSOLVER_STATUS_ARCH_MISMATCH) < 0) __PYX_ERR(0, 988, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_5, __pyx_n_u_CUSOLVER_STATUS_MAPPING_ERROR) < 0) __PYX_ERR(0, 988, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_6, __pyx_n_u_CUSOLVER_STATUS_EXECUTION_FAILED) < 0) __PYX_ERR(0, 988, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_7, __pyx_n_u_CUSOLVER_STATUS_INTERNAL_ERROR) < 0) __PYX_ERR(0, 988, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_8, __pyx_n_u_CUSOLVER_STATUS_MATRIX_TYPE_NOT) < 0) __PYX_ERR(0, 988, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_9, __pyx_n_u_CUSOLVER_STATUS_NOT_SUPPORTED) < 0) __PYX_ERR(0, 988, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_10, __pyx_n_u_CUSOLVER_STATUS_ZERO_PIVOT) < 0) __PYX_ERR(0, 988, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_11, __pyx_n_u_CUSOLVER_STATUS_INVALID_LICENSE) < 0) __PYX_ERR(0, 988, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_12, __pyx_n_u_CUSOLVER_STATUS_IRS_PARAMS_NOT_I) < 0) __PYX_ERR(0, 988, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_13, __pyx_n_u_CUSOLVER_STATUS_IRS_PARAMS_INVAL) < 0) __PYX_ERR(0, 988, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_14, __pyx_n_u_CUSOLVER_STATUS_IRS_PARAMS_INVAL_2) < 0) __PYX_ERR(0, 988, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_15, __pyx_n_u_CUSOLVER_STATUS_IRS_PARAMS_INVAL_3) < 0) __PYX_ERR(0, 988, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_16, __pyx_n_u_CUSOLVER_STATUS_IRS_PARAMS_INVAL_4) < 0) __PYX_ERR(0, 988, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_20, __pyx_n_u_CUSOLVER_STATUS_IRS_INTERNAL_ERR) < 0) __PYX_ERR(0, 988, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_21, __pyx_n_u_CUSOLVER_STATUS_IRS_NOT_SUPPORTE) < 0) __PYX_ERR(0, 988, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_22, __pyx_n_u_CUSOLVER_STATUS_IRS_OUT_OF_RANGE) < 0) __PYX_ERR(0, 988, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_23, __pyx_n_u_CUSOLVER_STATUS_IRS_NRHS_NOT_SUP) < 0) __PYX_ERR(0, 988, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_25, __pyx_n_u_CUSOLVER_STATUS_IRS_INFOS_NOT_IN) < 0) __PYX_ERR(0, 988, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_26, __pyx_n_u_CUSOLVER_STATUS_IRS_INFOS_NOT_DE) < 0) __PYX_ERR(0, 988, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_30, __pyx_n_u_CUSOLVER_STATUS_IRS_MATRIX_SINGU) < 0) __PYX_ERR(0, 988, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_31, __pyx_n_u_CUSOLVER_STATUS_INVALID_WORKSPAC) < 0) __PYX_ERR(0, 988, __pyx_L1_error)
  __Pyx_XGOTREF(__pyx_v_13cupy_backends_4cuda_4libs_8cusolver_STATUS);
  __Pyx_DECREF_SET(__pyx_v_13cupy_backends_4cuda_4libs_8cusolver_STATUS, ((PyObject*)__pyx_t_1));
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1017
 * # for rocBLAS and rocSOLVER
 * cdef dict ROC_STATUS = {
 *     0: 'rocblas_status_success',             # <<<<<<<<<<<<<<
 *     1: 'rocblas_status_invalid_handle',
 *     2: 'rocblas_status_not_implemented',
 */
  __pyx_t_1 = __Pyx_PyDict_NewPresized(13); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1017, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_0, __pyx_n_u_rocblas_status_success) < 0) __PYX_ERR(0, 1017, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_1, __pyx_n_u_rocblas_status_invalid_handle) < 0) __PYX_ERR(0, 1017, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_2, __pyx_n_u_rocblas_status_not_implemented) < 0) __PYX_ERR(0, 1017, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_3, __pyx_n_u_rocblas_status_invalid_pointer) < 0) __PYX_ERR(0, 1017, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_4, __pyx_n_u_rocblas_status_invalid_size) < 0) __PYX_ERR(0, 1017, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_5, __pyx_n_u_rocblas_status_memory_error) < 0) __PYX_ERR(0, 1017, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_6, __pyx_n_u_rocblas_status_internal_error) < 0) __PYX_ERR(0, 1017, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_7, __pyx_n_u_rocblas_status_perf_degraded) < 0) __PYX_ERR(0, 1017, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_8, __pyx_n_u_rocblas_status_size_query_mismat) < 0) __PYX_ERR(0, 1017, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_9, __pyx_n_u_rocblas_status_size_increased) < 0) __PYX_ERR(0, 1017, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_10, __pyx_n_u_rocblas_status_size_unchanged) < 0) __PYX_ERR(0, 1017, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_11, __pyx_n_u_rocblas_status_invalid_value) < 0) __PYX_ERR(0, 1017, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_int_12, __pyx_n_u_rocblas_status_continue) < 0) __PYX_ERR(0, 1017, __pyx_L1_error)
  __Pyx_XGOTREF(__pyx_v_13cupy_backends_4cuda_4libs_8cusolver_ROC_STATUS);
  __Pyx_DECREF_SET(__pyx_v_13cupy_backends_4cuda_4libs_8cusolver_ROC_STATUS, ((PyObject*)__pyx_t_1));
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1033
 * 
 * 
 * class CUSOLVERError(RuntimeError):             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, status):
 */
  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_tuple_, __pyx_n_s_CUSOLVERError, __pyx_n_s_CUSOLVERError, (PyObject *) NULL, __pyx_n_s_cupy_backends_cuda_libs_cusolver, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "cupy_backends/cuda/libs/cusolver.pyx":1035
 * class CUSOLVERError(RuntimeError):
 * 
 *     def __init__(self, status):             # <<<<<<<<<<<<<<
 *         self.status = status
 *         if runtime._is_hip_environment:
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_13cupy_backends_4cuda_4libs_8cusolver_13CUSOLVERError_1__init__, 0, __pyx_n_s_CUSOLVERError___init, NULL, __pyx_n_s_cupy_backends_cuda_libs_cusolver, __pyx_d, ((PyObject *)__pyx_codeobj__3)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1035, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_init, __pyx_t_3) < 0) __PYX_ERR(0, 1035, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1043
 *         super(CUSOLVERError, self).__init__(err[status])
 * 
 *     def __reduce__(self):             # <<<<<<<<<<<<<<
 *         return (type(self), (self.status,))
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_13cupy_backends_4cuda_4libs_8cusolver_13CUSOLVERError_3__reduce__, 0, __pyx_n_s_CUSOLVERError___reduce, NULL, __pyx_n_s_cupy_backends_cuda_libs_cusolver, __pyx_d, ((PyObject *)__pyx_codeobj__5)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1043, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_reduce, __pyx_t_3) < 0) __PYX_ERR(0, 1043, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1033
 * 
 * 
 * class CUSOLVERError(RuntimeError):             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, status):
 */
  __pyx_t_3 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_CUSOLVERError, __pyx_tuple_, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CUSOLVERError, __pyx_t_3) < 0) __PYX_ERR(0, 1033, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "cupy_backends/cuda/libs/cusolver.pyx":1
 * """Thin wrapper of CUSOLVER."""             # <<<<<<<<<<<<<<
 * 
 * cimport cython  # NOQA
 */
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /*--- Wrapped vars code ---*/
  {
    PyObject* wrapped = __Pyx_PyInt_From_int(__pyx_e_13cupy_backends_4cuda_4libs_8cusolver_CUSOLVER_EIG_MODE_NOVECTOR);
    if (unlikely(!wrapped)) __PYX_ERR(2, 38, __pyx_L1_error)
    if (PyObject_SetAttrString(__pyx_m, "CUSOLVER_EIG_MODE_NOVECTOR", wrapped) < 0) __PYX_ERR(2, 38, __pyx_L1_error);
  }
  {
    PyObject* wrapped = __Pyx_PyInt_From_int(__pyx_e_13cupy_backends_4cuda_4libs_8cusolver_CUSOLVER_EIG_MODE_VECTOR);
    if (unlikely(!wrapped)) __PYX_ERR(2, 39, __pyx_L1_error)
    if (PyObject_SetAttrString(__pyx_m, "CUSOLVER_EIG_MODE_VECTOR", wrapped) < 0) __PYX_ERR(2, 39, __pyx_L1_error);
  }
  {
    PyObject* wrapped = __Pyx_PyInt_From_int(__pyx_e_13cupy_backends_4cuda_4libs_8cusolver_CUSOLVER_EIG_TYPE_1);
    if (unlikely(!wrapped)) __PYX_ERR(2, 34, __pyx_L1_error)
    if (PyObject_SetAttrString(__pyx_m, "CUSOLVER_EIG_TYPE_1", wrapped) < 0) __PYX_ERR(2, 34, __pyx_L1_error);
  }
  {
    PyObject* wrapped = __Pyx_PyInt_From_int(__pyx_e_13cupy_backends_4cuda_4libs_8cusolver_CUSOLVER_EIG_TYPE_2);
    if (unlikely(!wrapped)) __PYX_ERR(2, 35, __pyx_L1_error)
    if (PyObject_SetAttrString(__pyx_m, "CUSOLVER_EIG_TYPE_2", wrapped) < 0) __PYX_ERR(2, 35, __pyx_L1_error);
  }
  {
    PyObject* wrapped = __Pyx_PyInt_From_int(__pyx_e_13cupy_backends_4cuda_4libs_8cusolver_CUSOLVER_EIG_TYPE_3);
    if (unlikely(!wrapped)) __PYX_ERR(2, 36, __pyx_L1_error)
    if (PyObject_SetAttrString(__pyx_m, "CUSOLVER_EIG_TYPE_3", wrapped) < 0) __PYX_ERR(2, 36, __pyx_L1_error);
  }

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  if (__pyx_m) {
    if (__pyx_d) {
      __Pyx_AddTraceback("init cupy_backends.cuda.libs.cusolver", __pyx_clineno, __pyx_lineno, __pyx_filename);
    }
    Py_CLEAR(__pyx_m);
  } else if (!PyErr_Occurred()) {
    PyErr_SetString(PyExc_ImportError, "init cupy_backends.cuda.libs.cusolver");
  }
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  return (__pyx_m != NULL) ? 0 : -1;
  #elif PY_MAJOR_VERSION >= 3
  return __pyx_m;
  #else
  return;
  #endif
}

/* --- Runtime support code --- */
/* Refnanny */
#if CYTHON_REFNANNY
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
    PyObject *m = NULL, *p = NULL;
    void *r = NULL;
    m = PyImport_ImportModule(modname);
    if (!m) goto end;
    p = PyObject_GetAttrString(m, "RefNannyAPI");
    if (!p) goto end;
    r = PyLong_AsVoidPtr(p);
end:
    Py_XDECREF(p);
    Py_XDECREF(m);
    return (__Pyx_RefNannyAPIStruct *)r;
}
#endif

/* PyObjectGetAttrStr */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
    PyTypeObject* tp = Py_TYPE(obj);
    if (likely(tp->tp_getattro))
        return tp->tp_getattro(obj, attr_name);
#if PY_MAJOR_VERSION < 3
    if (likely(tp->tp_getattr))
        return tp->tp_getattr(obj, PyString_AS_STRING(attr_name));
#endif
    return PyObject_GetAttr(obj, attr_name);
}
#endif

/* GetBuiltinName */
static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
    PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name);
    if (unlikely(!result)) {
        PyErr_Format(PyExc_NameError,
#if PY_MAJOR_VERSION >= 3
            "name '%U' is not defined", name);
#else
            "name '%.200s' is not defined", PyString_AS_STRING(name));
#endif
    }
    return result;
}

/* RaiseArgTupleInvalid */
static void __Pyx_RaiseArgtupleInvalid(
    const char* func_name,
    int exact,
    Py_ssize_t num_min,
    Py_ssize_t num_max,
    Py_ssize_t num_found)
{
    Py_ssize_t num_expected;
    const char *more_or_less;
    if (num_found < num_min) {
        num_expected = num_min;
        more_or_less = "at least";
    } else {
        num_expected = num_max;
        more_or_less = "at most";
    }
    if (exact) {
        more_or_less = "exactly";
    }
    PyErr_Format(PyExc_TypeError,
                 "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)",
                 func_name, more_or_less, num_expected,
                 (num_expected == 1) ? "" : "s", num_found);
}

/* RaiseDoubleKeywords */
static void __Pyx_RaiseDoubleKeywordsError(
    const char* func_name,
    PyObject* kw_name)
{
    PyErr_Format(PyExc_TypeError,
        #if PY_MAJOR_VERSION >= 3
        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
        #else
        "%s() got multiple values for keyword argument '%s'", func_name,
        PyString_AsString(kw_name));
        #endif
}

/* ParseKeywords */
static int __Pyx_ParseOptionalKeywords(
    PyObject *kwds,
    PyObject **argnames[],
    PyObject *kwds2,
    PyObject *values[],
    Py_ssize_t num_pos_args,
    const char* function_name)
{
    PyObject *key = 0, *value = 0;
    Py_ssize_t pos = 0;
    PyObject*** name;
    PyObject*** first_kw_arg = argnames + num_pos_args;
    while (PyDict_Next(kwds, &pos, &key, &value)) {
        name = first_kw_arg;
        while (*name && (**name != key)) name++;
        if (*name) {
            values[name-argnames] = value;
            continue;
        }
        name = first_kw_arg;
        #if PY_MAJOR_VERSION < 3
        if (likely(PyString_Check(key))) {
            while (*name) {
                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
                        && _PyString_Eq(**name, key)) {
                    values[name-argnames] = value;
                    break;
                }
                name++;
            }
            if (*name) continue;
            else {
                PyObject*** argname = argnames;
                while (argname != first_kw_arg) {
                    if ((**argname == key) || (
                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
                             && _PyString_Eq(**argname, key))) {
                        goto arg_passed_twice;
                    }
                    argname++;
                }
            }
        } else
        #endif
        if (likely(PyUnicode_Check(key))) {
            while (*name) {
                int cmp = (**name == key) ? 0 :
                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
                    (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
                #endif
                    PyUnicode_Compare(**name, key);
                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
                if (cmp == 0) {
                    values[name-argnames] = value;
                    break;
                }
                name++;
            }
            if (*name) continue;
            else {
                PyObject*** argname = argnames;
                while (argname != first_kw_arg) {
                    int cmp = (**argname == key) ? 0 :
                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
                        (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
                    #endif
                        PyUnicode_Compare(**argname, key);
                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
                    if (cmp == 0) goto arg_passed_twice;
                    argname++;
                }
            }
        } else
            goto invalid_keyword_type;
        if (kwds2) {
            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
        } else {
            goto invalid_keyword;
        }
    }
    return 0;
arg_passed_twice:
    __Pyx_RaiseDoubleKeywordsError(function_name, key);
    goto bad;
invalid_keyword_type:
    PyErr_Format(PyExc_TypeError,
        "%.200s() keywords must be strings", function_name);
    goto bad;
invalid_keyword:
    PyErr_Format(PyExc_TypeError,
    #if PY_MAJOR_VERSION < 3
        "%.200s() got an unexpected keyword argument '%.200s'",
        function_name, PyString_AsString(key));
    #else
        "%s() got an unexpected keyword argument '%U'",
        function_name, key);
    #endif
bad:
    return -1;
}

/* PyObjectSetAttrStr */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) {
    PyTypeObject* tp = Py_TYPE(obj);
    if (likely(tp->tp_setattro))
        return tp->tp_setattro(obj, attr_name, value);
#if PY_MAJOR_VERSION < 3
    if (likely(tp->tp_setattr))
        return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value);
#endif
    return PyObject_SetAttr(obj, attr_name, value);
}
#endif

/* PyDictVersioning */
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) {
    PyObject *dict = Py_TYPE(obj)->tp_dict;
    return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
}
static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {
    PyObject **dictptr = NULL;
    Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset;
    if (offset) {
#if CYTHON_COMPILING_IN_CPYTHON
        dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
#else
        dictptr = _PyObject_GetDictPtr(obj);
#endif
    }
    return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
}
static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {
    PyObject *dict = Py_TYPE(obj)->tp_dict;
    if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
        return 0;
    return obj_dict_version == __Pyx_get_object_dict_version(obj);
}
#endif

/* GetModuleGlobalName */
#if CYTHON_USE_DICT_VERSIONS
static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
#else
static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
#endif
{
    PyObject *result;
#if !CYTHON_AVOID_BORROWED_REFS
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
    result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash);
    __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
    if (likely(result)) {
        return __Pyx_NewRef(result);
    } else if (unlikely(PyErr_Occurred())) {
        return NULL;
    }
#else
    result = PyDict_GetItem(__pyx_d, name);
    __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
    if (likely(result)) {
        return __Pyx_NewRef(result);
    }
#endif
#else
    result = PyObject_GetItem(__pyx_d, name);
    __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
    if (likely(result)) {
        return __Pyx_NewRef(result);
    }
    PyErr_Clear();
#endif
    return __Pyx_GetBuiltinName(name);
}

/* PyObjectCall */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
    PyObject *result;
    ternaryfunc call = func->ob_type->tp_call;
    if (unlikely(!call))
        return PyObject_Call(func, arg, kw);
    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
        return NULL;
    result = (*call)(func, arg, kw);
    Py_LeaveRecursiveCall();
    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
        PyErr_SetString(
            PyExc_SystemError,
            "NULL result without error in PyObject_Call");
    }
    return result;
}
#endif

/* DictGetItem */
#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
    PyObject *value;
    value = PyDict_GetItemWithError(d, key);
    if (unlikely(!value)) {
        if (!PyErr_Occurred()) {
            if (unlikely(PyTuple_Check(key))) {
                PyObject* args = PyTuple_Pack(1, key);
                if (likely(args)) {
                    PyErr_SetObject(PyExc_KeyError, args);
                    Py_DECREF(args);
                }
            } else {
                PyErr_SetObject(PyExc_KeyError, key);
            }
        }
        return NULL;
    }
    Py_INCREF(value);
    return value;
}
#endif

/* PyCFunctionFastCall */
#if CYTHON_FAST_PYCCALL
static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) {
    PyCFunctionObject *func = (PyCFunctionObject*)func_obj;
    PyCFunction meth = PyCFunction_GET_FUNCTION(func);
    PyObject *self = PyCFunction_GET_SELF(func);
    int flags = PyCFunction_GET_FLAGS(func);
    assert(PyCFunction_Check(func));
    assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)));
    assert(nargs >= 0);
    assert(nargs == 0 || args != NULL);
    /* _PyCFunction_FastCallDict() must not be called with an exception set,
       because it may clear it (directly or indirectly) and so the
       caller loses its exception */
    assert(!PyErr_Occurred());
    if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {
        return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL);
    } else {
        return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs);
    }
}
#endif

/* PyFunctionFastCall */
#if CYTHON_FAST_PYCALL
static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
                                               PyObject *globals) {
    PyFrameObject *f;
    PyThreadState *tstate = __Pyx_PyThreadState_Current;
    PyObject **fastlocals;
    Py_ssize_t i;
    PyObject *result;
    assert(globals != NULL);
    /* XXX Perhaps we should create a specialized
       PyFrame_New() that doesn't take locals, but does
       take builtins without sanity checking them.
       */
    assert(tstate != NULL);
    f = PyFrame_New(tstate, co, globals, NULL);
    if (f == NULL) {
        return NULL;
    }
    fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
    for (i = 0; i < na; i++) {
        Py_INCREF(*args);
        fastlocals[i] = *args++;
    }
    result = PyEval_EvalFrameEx(f,0);
    ++tstate->recursion_depth;
    Py_DECREF(f);
    --tstate->recursion_depth;
    return result;
}
#if 1 || PY_VERSION_HEX < 0x030600B1
static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) {
    PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func);
    PyObject *globals = PyFunction_GET_GLOBALS(func);
    PyObject *argdefs = PyFunction_GET_DEFAULTS(func);
    PyObject *closure;
#if PY_MAJOR_VERSION >= 3
    PyObject *kwdefs;
#endif
    PyObject *kwtuple, **k;
    PyObject **d;
    Py_ssize_t nd;
    Py_ssize_t nk;
    PyObject *result;
    assert(kwargs == NULL || PyDict_Check(kwargs));
    nk = kwargs ? PyDict_Size(kwargs) : 0;
    if (Py_EnterRecursiveCall((char*)" while calling a Python object")) {
        return NULL;
    }
    if (
#if PY_MAJOR_VERSION >= 3
            co->co_kwonlyargcount == 0 &&
#endif
            likely(kwargs == NULL || nk == 0) &&
            co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) {
        if (argdefs == NULL && co->co_argcount == nargs) {
            result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals);
            goto done;
        }
        else if (nargs == 0 && argdefs != NULL
                 && co->co_argcount == Py_SIZE(argdefs)) {
            /* function called with no arguments, but all parameters have
               a default value: use default values as arguments .*/
            args = &PyTuple_GET_ITEM(argdefs, 0);
            result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals);
            goto done;
        }
    }
    if (kwargs != NULL) {
        Py_ssize_t pos, i;
        kwtuple = PyTuple_New(2 * nk);
        if (kwtuple == NULL) {
            result = NULL;
            goto done;
        }
        k = &PyTuple_GET_ITEM(kwtuple, 0);
        pos = i = 0;
        while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) {
            Py_INCREF(k[i]);
            Py_INCREF(k[i+1]);
            i += 2;
        }
        nk = i / 2;
    }
    else {
        kwtuple = NULL;
        k = NULL;
    }
    closure = PyFunction_GET_CLOSURE(func);
#if PY_MAJOR_VERSION >= 3
    kwdefs = PyFunction_GET_KW_DEFAULTS(func);
#endif
    if (argdefs != NULL) {
        d = &PyTuple_GET_ITEM(argdefs, 0);
        nd = Py_SIZE(argdefs);
    }
    else {
        d = NULL;
        nd = 0;
    }
#if PY_MAJOR_VERSION >= 3
    result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL,
                               args, (int)nargs,
                               k, (int)nk,
                               d, (int)nd, kwdefs, closure);
#else
    result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL,
                               args, (int)nargs,
                               k, (int)nk,
                               d, (int)nd, closure);
#endif
    Py_XDECREF(kwtuple);
done:
    Py_LeaveRecursiveCall();
    return result;
}
#endif
#endif

/* PyObjectCall2Args */
static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
    PyObject *args, *result = NULL;
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(function)) {
        PyObject *args[2] = {arg1, arg2};
        return __Pyx_PyFunction_FastCall(function, args, 2);
    }
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(function)) {
        PyObject *args[2] = {arg1, arg2};
        return __Pyx_PyCFunction_FastCall(function, args, 2);
    }
    #endif
    args = PyTuple_New(2);
    if (unlikely(!args)) goto done;
    Py_INCREF(arg1);
    PyTuple_SET_ITEM(args, 0, arg1);
    Py_INCREF(arg2);
    PyTuple_SET_ITEM(args, 1, arg2);
    Py_INCREF(function);
    result = __Pyx_PyObject_Call(function, args, NULL);
    Py_DECREF(args);
    Py_DECREF(function);
done:
    return result;
}

/* PyObjectCallMethO */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
    PyObject *self, *result;
    PyCFunction cfunc;
    cfunc = PyCFunction_GET_FUNCTION(func);
    self = PyCFunction_GET_SELF(func);
    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
        return NULL;
    result = cfunc(self, arg);
    Py_LeaveRecursiveCall();
    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
        PyErr_SetString(
            PyExc_SystemError,
            "NULL result without error in PyObject_Call");
    }
    return result;
}
#endif

/* PyObjectCallOneArg */
#if CYTHON_COMPILING_IN_CPYTHON
static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
    PyObject *result;
    PyObject *args = PyTuple_New(1);
    if (unlikely(!args)) return NULL;
    Py_INCREF(arg);
    PyTuple_SET_ITEM(args, 0, arg);
    result = __Pyx_PyObject_Call(func, args, NULL);
    Py_DECREF(args);
    return result;
}
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
#if CYTHON_FAST_PYCALL
    if (PyFunction_Check(func)) {
        return __Pyx_PyFunction_FastCall(func, &arg, 1);
    }
#endif
    if (likely(PyCFunction_Check(func))) {
        if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) {
            return __Pyx_PyObject_CallMethO(func, arg);
#if CYTHON_FAST_PYCCALL
        } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) {
            return __Pyx_PyCFunction_FastCall(func, &arg, 1);
#endif
        }
    }
    return __Pyx__PyObject_CallOneArg(func, arg);
}
#else
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
    PyObject *result;
    PyObject *args = PyTuple_Pack(1, arg);
    if (unlikely(!args)) return NULL;
    result = __Pyx_PyObject_Call(func, args, NULL);
    Py_DECREF(args);
    return result;
}
#endif

/* PyErrFetchRestore */
#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    tmp_type = tstate->curexc_type;
    tmp_value = tstate->curexc_value;
    tmp_tb = tstate->curexc_traceback;
    tstate->curexc_type = type;
    tstate->curexc_value = value;
    tstate->curexc_traceback = tb;
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
}
static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
    *type = tstate->curexc_type;
    *value = tstate->curexc_value;
    *tb = tstate->curexc_traceback;
    tstate->curexc_type = 0;
    tstate->curexc_value = 0;
    tstate->curexc_traceback = 0;
}
#endif

/* RaiseException */
#if PY_MAJOR_VERSION < 3
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
                        CYTHON_UNUSED PyObject *cause) {
    __Pyx_PyThreadState_declare
    Py_XINCREF(type);
    if (!value || value == Py_None)
        value = NULL;
    else
        Py_INCREF(value);
    if (!tb || tb == Py_None)
        tb = NULL;
    else {
        Py_INCREF(tb);
        if (!PyTraceBack_Check(tb)) {
            PyErr_SetString(PyExc_TypeError,
                "raise: arg 3 must be a traceback or None");
            goto raise_error;
        }
    }
    if (PyType_Check(type)) {
#if CYTHON_COMPILING_IN_PYPY
        if (!value) {
            Py_INCREF(Py_None);
            value = Py_None;
        }
#endif
        PyErr_NormalizeException(&type, &value, &tb);
    } else {
        if (value) {
            PyErr_SetString(PyExc_TypeError,
                "instance exception may not have a separate value");
            goto raise_error;
        }
        value = type;
        type = (PyObject*) Py_TYPE(type);
        Py_INCREF(type);
        if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
            PyErr_SetString(PyExc_TypeError,
                "raise: exception class must be a subclass of BaseException");
            goto raise_error;
        }
    }
    __Pyx_PyThreadState_assign
    __Pyx_ErrRestore(type, value, tb);
    return;
raise_error:
    Py_XDECREF(value);
    Py_XDECREF(type);
    Py_XDECREF(tb);
    return;
}
#else
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
    PyObject* owned_instance = NULL;
    if (tb == Py_None) {
        tb = 0;
    } else if (tb && !PyTraceBack_Check(tb)) {
        PyErr_SetString(PyExc_TypeError,
            "raise: arg 3 must be a traceback or None");
        goto bad;
    }
    if (value == Py_None)
        value = 0;
    if (PyExceptionInstance_Check(type)) {
        if (value) {
            PyErr_SetString(PyExc_TypeError,
                "instance exception may not have a separate value");
            goto bad;
        }
        value = type;
        type = (PyObject*) Py_TYPE(value);
    } else if (PyExceptionClass_Check(type)) {
        PyObject *instance_class = NULL;
        if (value && PyExceptionInstance_Check(value)) {
            instance_class = (PyObject*) Py_TYPE(value);
            if (instance_class != type) {
                int is_subclass = PyObject_IsSubclass(instance_class, type);
                if (!is_subclass) {
                    instance_class = NULL;
                } else if (unlikely(is_subclass == -1)) {
                    goto bad;
                } else {
                    type = instance_class;
                }
            }
        }
        if (!instance_class) {
            PyObject *args;
            if (!value)
                args = PyTuple_New(0);
            else if (PyTuple_Check(value)) {
                Py_INCREF(value);
                args = value;
            } else
                args = PyTuple_Pack(1, value);
            if (!args)
                goto bad;
            owned_instance = PyObject_Call(type, args, NULL);
            Py_DECREF(args);
            if (!owned_instance)
                goto bad;
            value = owned_instance;
            if (!PyExceptionInstance_Check(value)) {
                PyErr_Format(PyExc_TypeError,
                             "calling %R should have returned an instance of "
                             "BaseException, not %R",
                             type, Py_TYPE(value));
                goto bad;
            }
        }
    } else {
        PyErr_SetString(PyExc_TypeError,
            "raise: exception class must be a subclass of BaseException");
        goto bad;
    }
    if (cause) {
        PyObject *fixed_cause;
        if (cause == Py_None) {
            fixed_cause = NULL;
        } else if (PyExceptionClass_Check(cause)) {
            fixed_cause = PyObject_CallObject(cause, NULL);
            if (fixed_cause == NULL)
                goto bad;
        } else if (PyExceptionInstance_Check(cause)) {
            fixed_cause = cause;
            Py_INCREF(fixed_cause);
        } else {
            PyErr_SetString(PyExc_TypeError,
                            "exception causes must derive from "
                            "BaseException");
            goto bad;
        }
        PyException_SetCause(value, fixed_cause);
    }
    PyErr_SetObject(type, value);
    if (tb) {
#if CYTHON_COMPILING_IN_PYPY
        PyObject *tmp_type, *tmp_value, *tmp_tb;
        PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb);
        Py_INCREF(tb);
        PyErr_Restore(tmp_type, tmp_value, tb);
        Py_XDECREF(tmp_tb);
#else
        PyThreadState *tstate = __Pyx_PyThreadState_Current;
        PyObject* tmp_tb = tstate->curexc_traceback;
        if (tb != tmp_tb) {
            Py_INCREF(tb);
            tstate->curexc_traceback = tb;
            Py_XDECREF(tmp_tb);
        }
#endif
    }
bad:
    Py_XDECREF(owned_instance);
    return;
}
#endif

/* WriteUnraisableException */
static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
                                  CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename,
                                  int full_traceback, CYTHON_UNUSED int nogil) {
    PyObject *old_exc, *old_val, *old_tb;
    PyObject *ctx;
    __Pyx_PyThreadState_declare
#ifdef WITH_THREAD
    PyGILState_STATE state;
    if (nogil)
        state = PyGILState_Ensure();
#ifdef _MSC_VER
    else state = (PyGILState_STATE)-1;
#endif
#endif
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
    if (full_traceback) {
        Py_XINCREF(old_exc);
        Py_XINCREF(old_val);
        Py_XINCREF(old_tb);
        __Pyx_ErrRestore(old_exc, old_val, old_tb);
        PyErr_PrintEx(1);
    }
    #if PY_MAJOR_VERSION < 3
    ctx = PyString_FromString(name);
    #else
    ctx = PyUnicode_FromString(name);
    #endif
    __Pyx_ErrRestore(old_exc, old_val, old_tb);
    if (!ctx) {
        PyErr_WriteUnraisable(Py_None);
    } else {
        PyErr_WriteUnraisable(ctx);
        Py_DECREF(ctx);
    }
#ifdef WITH_THREAD
    if (nogil)
        PyGILState_Release(state);
#endif
}

/* TypeImport */
#ifndef __PYX_HAVE_RT_ImportType
#define __PYX_HAVE_RT_ImportType
static PyTypeObject *__Pyx_ImportType(PyObject *module, const char *module_name, const char *class_name,
    size_t size, enum __Pyx_ImportType_CheckSize check_size)
{
    PyObject *result = 0;
    char warning[200];
    Py_ssize_t basicsize;
#ifdef Py_LIMITED_API
    PyObject *py_basicsize;
#endif
    result = PyObject_GetAttrString(module, class_name);
    if (!result)
        goto bad;
    if (!PyType_Check(result)) {
        PyErr_Format(PyExc_TypeError,
            "%.200s.%.200s is not a type object",
            module_name, class_name);
        goto bad;
    }
#ifndef Py_LIMITED_API
    basicsize = ((PyTypeObject *)result)->tp_basicsize;
#else
    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
    if (!py_basicsize)
        goto bad;
    basicsize = PyLong_AsSsize_t(py_basicsize);
    Py_DECREF(py_basicsize);
    py_basicsize = 0;
    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
        goto bad;
#endif
    if ((size_t)basicsize < size) {
        PyErr_Format(PyExc_ValueError,
            "%.200s.%.200s size changed, may indicate binary incompatibility. "
            "Expected %zd from C header, got %zd from PyObject",
            module_name, class_name, size, basicsize);
        goto bad;
    }
    if (check_size == __Pyx_ImportType_CheckSize_Error && (size_t)basicsize != size) {
        PyErr_Format(PyExc_ValueError,
            "%.200s.%.200s size changed, may indicate binary incompatibility. "
            "Expected %zd from C header, got %zd from PyObject",
            module_name, class_name, size, basicsize);
        goto bad;
    }
    else if (check_size == __Pyx_ImportType_CheckSize_Warn && (size_t)basicsize > size) {
        PyOS_snprintf(warning, sizeof(warning),
            "%s.%s size changed, may indicate binary incompatibility. "
            "Expected %zd from C header, got %zd from PyObject",
            module_name, class_name, size, basicsize);
        if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
    }
    return (PyTypeObject *)result;
bad:
    Py_XDECREF(result);
    return NULL;
}
#endif

/* CalculateMetaclass */
static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) {
    Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases);
    for (i=0; i < nbases; i++) {
        PyTypeObject *tmptype;
        PyObject *tmp = PyTuple_GET_ITEM(bases, i);
        tmptype = Py_TYPE(tmp);
#if PY_MAJOR_VERSION < 3
        if (tmptype == &PyClass_Type)
            continue;
#endif
        if (!metaclass) {
            metaclass = tmptype;
            continue;
        }
        if (PyType_IsSubtype(metaclass, tmptype))
            continue;
        if (PyType_IsSubtype(tmptype, metaclass)) {
            metaclass = tmptype;
            continue;
        }
        PyErr_SetString(PyExc_TypeError,
                        "metaclass conflict: "
                        "the metaclass of a derived class "
                        "must be a (non-strict) subclass "
                        "of the metaclasses of all its bases");
        return NULL;
    }
    if (!metaclass) {
#if PY_MAJOR_VERSION < 3
        metaclass = &PyClass_Type;
#else
        metaclass = &PyType_Type;
#endif
    }
    Py_INCREF((PyObject*) metaclass);
    return (PyObject*) metaclass;
}

/* FetchCommonType */
static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
    PyObject* fake_module;
    PyTypeObject* cached_type = NULL;
    fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI);
    if (!fake_module) return NULL;
    Py_INCREF(fake_module);
    cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name);
    if (cached_type) {
        if (!PyType_Check((PyObject*)cached_type)) {
            PyErr_Format(PyExc_TypeError,
                "Shared Cython type %.200s is not a type object",
                type->tp_name);
            goto bad;
        }
        if (cached_type->tp_basicsize != type->tp_basicsize) {
            PyErr_Format(PyExc_TypeError,
                "Shared Cython type %.200s has the wrong size, try recompiling",
                type->tp_name);
            goto bad;
        }
    } else {
        if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
        PyErr_Clear();
        if (PyType_Ready(type) < 0) goto bad;
        if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0)
            goto bad;
        Py_INCREF(type);
        cached_type = type;
    }
done:
    Py_DECREF(fake_module);
    return cached_type;
bad:
    Py_XDECREF(cached_type);
    cached_type = NULL;
    goto done;
}

/* CythonFunctionShared */
#include <structmember.h>
static PyObject *
__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure)
{
    if (unlikely(op->func_doc == NULL)) {
        if (op->func.m_ml->ml_doc) {
#if PY_MAJOR_VERSION >= 3
            op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc);
#else
            op->func_doc = PyString_FromString(op->func.m_ml->ml_doc);
#endif
            if (unlikely(op->func_doc == NULL))
                return NULL;
        } else {
            Py_INCREF(Py_None);
            return Py_None;
        }
    }
    Py_INCREF(op->func_doc);
    return op->func_doc;
}
static int
__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
    PyObject *tmp = op->func_doc;
    if (value == NULL) {
        value = Py_None;
    }
    Py_INCREF(value);
    op->func_doc = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
    if (unlikely(op->func_name == NULL)) {
#if PY_MAJOR_VERSION >= 3
        op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name);
#else
        op->func_name = PyString_InternFromString(op->func.m_ml->ml_name);
#endif
        if (unlikely(op->func_name == NULL))
            return NULL;
    }
    Py_INCREF(op->func_name);
    return op->func_name;
}
static int
__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
    PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
    if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
    if (unlikely(value == NULL || !PyString_Check(value)))
#endif
    {
        PyErr_SetString(PyExc_TypeError,
                        "__name__ must be set to a string object");
        return -1;
    }
    tmp = op->func_name;
    Py_INCREF(value);
    op->func_name = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
    Py_INCREF(op->func_qualname);
    return op->func_qualname;
}
static int
__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
    PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
    if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
    if (unlikely(value == NULL || !PyString_Check(value)))
#endif
    {
        PyErr_SetString(PyExc_TypeError,
                        "__qualname__ must be set to a string object");
        return -1;
    }
    tmp = op->func_qualname;
    Py_INCREF(value);
    op->func_qualname = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure)
{
    PyObject *self;
    self = m->func_closure;
    if (self == NULL)
        self = Py_None;
    Py_INCREF(self);
    return self;
}
static PyObject *
__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
    if (unlikely(op->func_dict == NULL)) {
        op->func_dict = PyDict_New();
        if (unlikely(op->func_dict == NULL))
            return NULL;
    }
    Py_INCREF(op->func_dict);
    return op->func_dict;
}
static int
__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
    PyObject *tmp;
    if (unlikely(value == NULL)) {
        PyErr_SetString(PyExc_TypeError,
               "function's dictionary may not be deleted");
        return -1;
    }
    if (unlikely(!PyDict_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
               "setting function's dictionary to a non-dict");
        return -1;
    }
    tmp = op->func_dict;
    Py_INCREF(value);
    op->func_dict = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
    Py_INCREF(op->func_globals);
    return op->func_globals;
}
static PyObject *
__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
    Py_INCREF(Py_None);
    return Py_None;
}
static PyObject *
__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
    PyObject* result = (op->func_code) ? op->func_code : Py_None;
    Py_INCREF(result);
    return result;
}
static int
__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) {
    int result = 0;
    PyObject *res = op->defaults_getter((PyObject *) op);
    if (unlikely(!res))
        return -1;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    op->defaults_tuple = PyTuple_GET_ITEM(res, 0);
    Py_INCREF(op->defaults_tuple);
    op->defaults_kwdict = PyTuple_GET_ITEM(res, 1);
    Py_INCREF(op->defaults_kwdict);
    #else
    op->defaults_tuple = PySequence_ITEM(res, 0);
    if (unlikely(!op->defaults_tuple)) result = -1;
    else {
        op->defaults_kwdict = PySequence_ITEM(res, 1);
        if (unlikely(!op->defaults_kwdict)) result = -1;
    }
    #endif
    Py_DECREF(res);
    return result;
}
static int
__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
    PyObject* tmp;
    if (!value) {
        value = Py_None;
    } else if (value != Py_None && !PyTuple_Check(value)) {
        PyErr_SetString(PyExc_TypeError,
                        "__defaults__ must be set to a tuple object");
        return -1;
    }
    Py_INCREF(value);
    tmp = op->defaults_tuple;
    op->defaults_tuple = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) {
    PyObject* result = op->defaults_tuple;
    if (unlikely(!result)) {
        if (op->defaults_getter) {
            if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL;
            result = op->defaults_tuple;
        } else {
            result = Py_None;
        }
    }
    Py_INCREF(result);
    return result;
}
static int
__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
    PyObject* tmp;
    if (!value) {
        value = Py_None;
    } else if (value != Py_None && !PyDict_Check(value)) {
        PyErr_SetString(PyExc_TypeError,
                        "__kwdefaults__ must be set to a dict object");
        return -1;
    }
    Py_INCREF(value);
    tmp = op->defaults_kwdict;
    op->defaults_kwdict = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) {
    PyObject* result = op->defaults_kwdict;
    if (unlikely(!result)) {
        if (op->defaults_getter) {
            if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL;
            result = op->defaults_kwdict;
        } else {
            result = Py_None;
        }
    }
    Py_INCREF(result);
    return result;
}
static int
__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
    PyObject* tmp;
    if (!value || value == Py_None) {
        value = NULL;
    } else if (!PyDict_Check(value)) {
        PyErr_SetString(PyExc_TypeError,
                        "__annotations__ must be set to a dict object");
        return -1;
    }
    Py_XINCREF(value);
    tmp = op->func_annotations;
    op->func_annotations = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) {
    PyObject* result = op->func_annotations;
    if (unlikely(!result)) {
        result = PyDict_New();
        if (unlikely(!result)) return NULL;
        op->func_annotations = result;
    }
    Py_INCREF(result);
    return result;
}
static PyGetSetDef __pyx_CyFunction_getsets[] = {
    {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
    {(char *) "__doc__",  (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
    {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
    {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
    {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0},
    {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0},
    {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
    {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
    {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
    {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
    {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
    {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
    {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
    {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
    {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
    {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
    {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0},
    {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0},
    {0, 0, 0, 0, 0}
};
static PyMemberDef __pyx_CyFunction_members[] = {
    {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), PY_WRITE_RESTRICTED, 0},
    {0, 0, 0,  0, 0}
};
static PyObject *
__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args)
{
#if PY_MAJOR_VERSION >= 3
    return PyUnicode_FromString(m->func.m_ml->ml_name);
#else
    return PyString_FromString(m->func.m_ml->ml_name);
#endif
}
static PyMethodDef __pyx_CyFunction_methods[] = {
    {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0},
    {0, 0, 0, 0}
};
#if PY_VERSION_HEX < 0x030500A0
#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist)
#else
#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist)
#endif
static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname,
                                       PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
    if (unlikely(op == NULL))
        return NULL;
    op->flags = flags;
    __Pyx_CyFunction_weakreflist(op) = NULL;
    op->func.m_ml = ml;
    op->func.m_self = (PyObject *) op;
    Py_XINCREF(closure);
    op->func_closure = closure;
    Py_XINCREF(module);
    op->func.m_module = module;
    op->func_dict = NULL;
    op->func_name = NULL;
    Py_INCREF(qualname);
    op->func_qualname = qualname;
    op->func_doc = NULL;
    op->func_classobj = NULL;
    op->func_globals = globals;
    Py_INCREF(op->func_globals);
    Py_XINCREF(code);
    op->func_code = code;
    op->defaults_pyobjects = 0;
    op->defaults_size = 0;
    op->defaults = NULL;
    op->defaults_tuple = NULL;
    op->defaults_kwdict = NULL;
    op->defaults_getter = NULL;
    op->func_annotations = NULL;
    return (PyObject *) op;
}
static int
__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m)
{
    Py_CLEAR(m->func_closure);
    Py_CLEAR(m->func.m_module);
    Py_CLEAR(m->func_dict);
    Py_CLEAR(m->func_name);
    Py_CLEAR(m->func_qualname);
    Py_CLEAR(m->func_doc);
    Py_CLEAR(m->func_globals);
    Py_CLEAR(m->func_code);
    Py_CLEAR(m->func_classobj);
    Py_CLEAR(m->defaults_tuple);
    Py_CLEAR(m->defaults_kwdict);
    Py_CLEAR(m->func_annotations);
    if (m->defaults) {
        PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
        int i;
        for (i = 0; i < m->defaults_pyobjects; i++)
            Py_XDECREF(pydefaults[i]);
        PyObject_Free(m->defaults);
        m->defaults = NULL;
    }
    return 0;
}
static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m)
{
    if (__Pyx_CyFunction_weakreflist(m) != NULL)
        PyObject_ClearWeakRefs((PyObject *) m);
    __Pyx_CyFunction_clear(m);
    PyObject_GC_Del(m);
}
static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m)
{
    PyObject_GC_UnTrack(m);
    __Pyx__CyFunction_dealloc(m);
}
static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg)
{
    Py_VISIT(m->func_closure);
    Py_VISIT(m->func.m_module);
    Py_VISIT(m->func_dict);
    Py_VISIT(m->func_name);
    Py_VISIT(m->func_qualname);
    Py_VISIT(m->func_doc);
    Py_VISIT(m->func_globals);
    Py_VISIT(m->func_code);
    Py_VISIT(m->func_classobj);
    Py_VISIT(m->defaults_tuple);
    Py_VISIT(m->defaults_kwdict);
    if (m->defaults) {
        PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
        int i;
        for (i = 0; i < m->defaults_pyobjects; i++)
            Py_VISIT(pydefaults[i]);
    }
    return 0;
}
static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type)
{
#if PY_MAJOR_VERSION < 3
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) {
        Py_INCREF(func);
        return func;
    }
    if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) {
        if (type == NULL)
            type = (PyObject *)(Py_TYPE(obj));
        return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type)));
    }
    if (obj == Py_None)
        obj = NULL;
#endif
    return __Pyx_PyMethod_New(func, obj, type);
}
static PyObject*
__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op)
{
#if PY_MAJOR_VERSION >= 3
    return PyUnicode_FromFormat("<cyfunction %U at %p>",
                                op->func_qualname, (void *)op);
#else
    return PyString_FromFormat("<cyfunction %s at %p>",
                               PyString_AsString(op->func_qualname), (void *)op);
#endif
}
static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) {
    PyCFunctionObject* f = (PyCFunctionObject*)func;
    PyCFunction meth = f->m_ml->ml_meth;
    Py_ssize_t size;
    switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) {
    case METH_VARARGS:
        if (likely(kw == NULL || PyDict_Size(kw) == 0))
            return (*meth)(self, arg);
        break;
    case METH_VARARGS | METH_KEYWORDS:
        return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw);
    case METH_NOARGS:
        if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
            size = PyTuple_GET_SIZE(arg);
            if (likely(size == 0))
                return (*meth)(self, NULL);
            PyErr_Format(PyExc_TypeError,
                "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
                f->m_ml->ml_name, size);
            return NULL;
        }
        break;
    case METH_O:
        if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
            size = PyTuple_GET_SIZE(arg);
            if (likely(size == 1)) {
                PyObject *result, *arg0;
                #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                arg0 = PyTuple_GET_ITEM(arg, 0);
                #else
                arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL;
                #endif
                result = (*meth)(self, arg0);
                #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)
                Py_DECREF(arg0);
                #endif
                return result;
            }
            PyErr_Format(PyExc_TypeError,
                "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
                f->m_ml->ml_name, size);
            return NULL;
        }
        break;
    default:
        PyErr_SetString(PyExc_SystemError, "Bad call flags in "
                        "__Pyx_CyFunction_Call. METH_OLDARGS is no "
                        "longer supported!");
        return NULL;
    }
    PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments",
                 f->m_ml->ml_name);
    return NULL;
}
static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) {
    return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw);
}
static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) {
    PyObject *result;
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func;
    if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) {
        Py_ssize_t argc;
        PyObject *new_args;
        PyObject *self;
        argc = PyTuple_GET_SIZE(args);
        new_args = PyTuple_GetSlice(args, 1, argc);
        if (unlikely(!new_args))
            return NULL;
        self = PyTuple_GetItem(args, 0);
        if (unlikely(!self)) {
            Py_DECREF(new_args);
            return NULL;
        }
        result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw);
        Py_DECREF(new_args);
    } else {
        result = __Pyx_CyFunction_Call(func, args, kw);
    }
    return result;
}
static PyTypeObject __pyx_CyFunctionType_type = {
    PyVarObject_HEAD_INIT(0, 0)
    "cython_function_or_method",
    sizeof(__pyx_CyFunctionObject),
    0,
    (destructor) __Pyx_CyFunction_dealloc,
    0,
    0,
    0,
#if PY_MAJOR_VERSION < 3
    0,
#else
    0,
#endif
    (reprfunc) __Pyx_CyFunction_repr,
    0,
    0,
    0,
    0,
    __Pyx_CyFunction_CallAsMethod,
    0,
    0,
    0,
    0,
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
    0,
    (traverseproc) __Pyx_CyFunction_traverse,
    (inquiry) __Pyx_CyFunction_clear,
    0,
#if PY_VERSION_HEX < 0x030500A0
    offsetof(__pyx_CyFunctionObject, func_weakreflist),
#else
    offsetof(PyCFunctionObject, m_weakreflist),
#endif
    0,
    0,
    __pyx_CyFunction_methods,
    __pyx_CyFunction_members,
    __pyx_CyFunction_getsets,
    0,
    0,
    __Pyx_CyFunction_descr_get,
    0,
    offsetof(__pyx_CyFunctionObject, func_dict),
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
#if PY_VERSION_HEX >= 0x030400a1
    0,
#endif
#if PY_VERSION_HEX >= 0x030800b1
    0,
#endif
#if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
    0,
#endif
};
static int __pyx_CyFunction_init(void) {
    __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type);
    if (unlikely(__pyx_CyFunctionType == NULL)) {
        return -1;
    }
    return 0;
}
static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults = PyObject_Malloc(size);
    if (unlikely(!m->defaults))
        return PyErr_NoMemory();
    memset(m->defaults, 0, size);
    m->defaults_pyobjects = pyobjects;
    m->defaults_size = size;
    return m->defaults;
}
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults_tuple = tuple;
    Py_INCREF(tuple);
}
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults_kwdict = dict;
    Py_INCREF(dict);
}
static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->func_annotations = dict;
    Py_INCREF(dict);
}

/* CythonFunction */
static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname,
                                      PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
    PyObject *op = __Pyx_CyFunction_Init(
        PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType),
        ml, flags, qualname, closure, module, globals, code
    );
    if (likely(op)) {
        PyObject_GC_Track(op);
    }
    return op;
}

/* Py3ClassCreate */
static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name,
                                           PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) {
    PyObject *ns;
    if (metaclass) {
        PyObject *prep = __Pyx_PyObject_GetAttrStr(metaclass, __pyx_n_s_prepare);
        if (prep) {
            PyObject *pargs = PyTuple_Pack(2, name, bases);
            if (unlikely(!pargs)) {
                Py_DECREF(prep);
                return NULL;
            }
            ns = PyObject_Call(prep, pargs, mkw);
            Py_DECREF(prep);
            Py_DECREF(pargs);
        } else {
            if (unlikely(!PyErr_ExceptionMatches(PyExc_AttributeError)))
                return NULL;
            PyErr_Clear();
            ns = PyDict_New();
        }
    } else {
        ns = PyDict_New();
    }
    if (unlikely(!ns))
        return NULL;
    if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad;
    if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad;
    if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad;
    return ns;
bad:
    Py_DECREF(ns);
    return NULL;
}
static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases,
                                      PyObject *dict, PyObject *mkw,
                                      int calculate_metaclass, int allow_py2_metaclass) {
    PyObject *result, *margs;
    PyObject *owned_metaclass = NULL;
    if (allow_py2_metaclass) {
        owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass);
        if (owned_metaclass) {
            metaclass = owned_metaclass;
        } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) {
            PyErr_Clear();
        } else {
            return NULL;
        }
    }
    if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) {
        metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases);
        Py_XDECREF(owned_metaclass);
        if (unlikely(!metaclass))
            return NULL;
        owned_metaclass = metaclass;
    }
    margs = PyTuple_Pack(3, name, bases, dict);
    if (unlikely(!margs)) {
        result = NULL;
    } else {
        result = PyObject_Call(metaclass, margs, mkw);
        Py_DECREF(margs);
    }
    Py_XDECREF(owned_metaclass);
    return result;
}

/* CLineInTraceback */
#ifndef CYTHON_CLINE_IN_TRACEBACK
static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int c_line) {
    PyObject *use_cline;
    PyObject *ptype, *pvalue, *ptraceback;
#if CYTHON_COMPILING_IN_CPYTHON
    PyObject **cython_runtime_dict;
#endif
    if (unlikely(!__pyx_cython_runtime)) {
        return c_line;
    }
    __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
#if CYTHON_COMPILING_IN_CPYTHON
    cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
    if (likely(cython_runtime_dict)) {
        __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
            use_cline, *cython_runtime_dict,
            __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback))
    } else
#endif
    {
      PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback);
      if (use_cline_obj) {
        use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True;
        Py_DECREF(use_cline_obj);
      } else {
        PyErr_Clear();
        use_cline = NULL;
      }
    }
    if (!use_cline) {
        c_line = 0;
        PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
    }
    else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
        c_line = 0;
    }
    __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
    return c_line;
}
#endif

/* CodeObjectCache */
static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
    int start = 0, mid = 0, end = count - 1;
    if (end >= 0 && code_line > entries[end].code_line) {
        return count;
    }
    while (start < end) {
        mid = start + (end - start) / 2;
        if (code_line < entries[mid].code_line) {
            end = mid;
        } else if (code_line > entries[mid].code_line) {
             start = mid + 1;
        } else {
            return mid;
        }
    }
    if (code_line <= entries[mid].code_line) {
        return mid;
    } else {
        return mid + 1;
    }
}
static PyCodeObject *__pyx_find_code_object(int code_line) {
    PyCodeObject* code_object;
    int pos;
    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
        return NULL;
    }
    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
        return NULL;
    }
    code_object = __pyx_code_cache.entries[pos].code_object;
    Py_INCREF(code_object);
    return code_object;
}
static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
    int pos, i;
    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
    if (unlikely(!code_line)) {
        return;
    }
    if (unlikely(!entries)) {
        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
        if (likely(entries)) {
            __pyx_code_cache.entries = entries;
            __pyx_code_cache.max_count = 64;
            __pyx_code_cache.count = 1;
            entries[0].code_line = code_line;
            entries[0].code_object = code_object;
            Py_INCREF(code_object);
        }
        return;
    }
    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
        PyCodeObject* tmp = entries[pos].code_object;
        entries[pos].code_object = code_object;
        Py_DECREF(tmp);
        return;
    }
    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
        int new_max = __pyx_code_cache.max_count + 64;
        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
            __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry));
        if (unlikely(!entries)) {
            return;
        }
        __pyx_code_cache.entries = entries;
        __pyx_code_cache.max_count = new_max;
    }
    for (i=__pyx_code_cache.count; i>pos; i--) {
        entries[i] = entries[i-1];
    }
    entries[pos].code_line = code_line;
    entries[pos].code_object = code_object;
    __pyx_code_cache.count++;
    Py_INCREF(code_object);
}

/* AddTraceback */
#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
            const char *funcname, int c_line,
            int py_line, const char *filename) {
    PyCodeObject *py_code = 0;
    PyObject *py_srcfile = 0;
    PyObject *py_funcname = 0;
    #if PY_MAJOR_VERSION < 3
    py_srcfile = PyString_FromString(filename);
    #else
    py_srcfile = PyUnicode_FromString(filename);
    #endif
    if (!py_srcfile) goto bad;
    if (c_line) {
        #if PY_MAJOR_VERSION < 3
        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
        #else
        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
        #endif
    }
    else {
        #if PY_MAJOR_VERSION < 3
        py_funcname = PyString_FromString(funcname);
        #else
        py_funcname = PyUnicode_FromString(funcname);
        #endif
    }
    if (!py_funcname) goto bad;
    py_code = __Pyx_PyCode_New(
        0,
        0,
        0,
        0,
        0,
        __pyx_empty_bytes, /*PyObject *code,*/
        __pyx_empty_tuple, /*PyObject *consts,*/
        __pyx_empty_tuple, /*PyObject *names,*/
        __pyx_empty_tuple, /*PyObject *varnames,*/
        __pyx_empty_tuple, /*PyObject *freevars,*/
        __pyx_empty_tuple, /*PyObject *cellvars,*/
        py_srcfile,   /*PyObject *filename,*/
        py_funcname,  /*PyObject *name,*/
        py_line,
        __pyx_empty_bytes  /*PyObject *lnotab*/
    );
    Py_DECREF(py_srcfile);
    Py_DECREF(py_funcname);
    return py_code;
bad:
    Py_XDECREF(py_srcfile);
    Py_XDECREF(py_funcname);
    return NULL;
}
static void __Pyx_AddTraceback(const char *funcname, int c_line,
                               int py_line, const char *filename) {
    PyCodeObject *py_code = 0;
    PyFrameObject *py_frame = 0;
    PyThreadState *tstate = __Pyx_PyThreadState_Current;
    if (c_line) {
        c_line = __Pyx_CLineForTraceback(tstate, c_line);
    }
    py_code = __pyx_find_code_object(c_line ? -c_line : py_line);
    if (!py_code) {
        py_code = __Pyx_CreateCodeObjectForTraceback(
            funcname, c_line, py_line, filename);
        if (!py_code) goto bad;
        __pyx_insert_code_object(c_line ? -c_line : py_line, py_code);
    }
    py_frame = PyFrame_New(
        tstate,            /*PyThreadState *tstate,*/
        py_code,           /*PyCodeObject *code,*/
        __pyx_d,    /*PyObject *globals,*/
        0                  /*PyObject *locals*/
    );
    if (!py_frame) goto bad;
    __Pyx_PyFrame_SetLineNumber(py_frame, py_line);
    PyTraceBack_Here(py_frame);
bad:
    Py_XDECREF(py_code);
    Py_XDECREF(py_frame);
}

/* CIntFromPyVerify */
#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
    {\
        func_type value = func_value;\
        if (sizeof(target_type) < sizeof(func_type)) {\
            if (unlikely(value != (func_type) (target_type) value)) {\
                func_type zero = 0;\
                if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
                    return (target_type) -1;\
                if (is_unsigned && unlikely(value < zero))\
                    goto raise_neg_overflow;\
                else\
                    goto raise_overflow;\
            }\
        }\
        return (target_type) value;\
    }

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
    const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(int) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(int) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(int) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(int),
                                     little, !is_unsigned);
    }
}

/* CIntFromPy */
static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
    const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(int) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (int) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (int) 0;
                case  1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0])
                case 2:
                    if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) {
                            return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) {
                            return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) {
                            return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (int) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(int) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (int) 0;
                case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(int,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
                            return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
                            return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
                            return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
                            return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
                            return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
                            return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(int) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            int val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (int) -1;
        }
    } else {
        int val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (int) -1;
        val = __Pyx_PyInt_As_int(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to int");
    return (int) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to int");
    return (int) -1;
}

/* CIntFromPy */
static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) {
    const size_t neg_one = (size_t) ((size_t) 0 - (size_t) 1), const_zero = (size_t) 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(size_t) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(size_t, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (size_t) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (size_t) 0;
                case  1: __PYX_VERIFY_RETURN_INT(size_t, digit, digits[0])
                case 2:
                    if (8 * sizeof(size_t) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(size_t) >= 2 * PyLong_SHIFT) {
                            return (size_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(size_t) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(size_t) >= 3 * PyLong_SHIFT) {
                            return (size_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(size_t) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(size_t) >= 4 * PyLong_SHIFT) {
                            return (size_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (size_t) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(size_t) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(size_t) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (size_t) 0;
                case -1: __PYX_VERIFY_RETURN_INT(size_t, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(size_t,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(size_t) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) {
                            return (size_t) (((size_t)-1)*(((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(size_t) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) {
                            return (size_t) ((((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) {
                            return (size_t) (((size_t)-1)*(((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(size_t) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) {
                            return (size_t) ((((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT) {
                            return (size_t) (((size_t)-1)*(((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(size_t) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT) {
                            return (size_t) ((((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(size_t) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(size_t, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(size_t) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(size_t, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            size_t val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (size_t) -1;
        }
    } else {
        size_t val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (size_t) -1;
        val = __Pyx_PyInt_As_size_t(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to size_t");
    return (size_t) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to size_t");
    return (size_t) -1;
}

/* CIntFromPy */
static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
    const char neg_one = (char) ((char) 0 - (char) 1), const_zero = (char) 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(char) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(char, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (char) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (char) 0;
                case  1: __PYX_VERIFY_RETURN_INT(char, digit, digits[0])
                case 2:
                    if (8 * sizeof(char) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(char) >= 2 * PyLong_SHIFT) {
                            return (char) (((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(char) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(char) >= 3 * PyLong_SHIFT) {
                            return (char) (((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(char) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(char) >= 4 * PyLong_SHIFT) {
                            return (char) (((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (char) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(char) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(char, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(char) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(char, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (char) 0;
                case -1: __PYX_VERIFY_RETURN_INT(char, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(char,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(char) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(char) - 1 > 2 * PyLong_SHIFT) {
                            return (char) (((char)-1)*(((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(char) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(char) - 1 > 2 * PyLong_SHIFT) {
                            return (char) ((((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(char) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(char) - 1 > 3 * PyLong_SHIFT) {
                            return (char) (((char)-1)*(((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(char) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(char) - 1 > 3 * PyLong_SHIFT) {
                            return (char) ((((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(char) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(char) - 1 > 4 * PyLong_SHIFT) {
                            return (char) (((char)-1)*(((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(char) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(char) - 1 > 4 * PyLong_SHIFT) {
                            return (char) ((((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(char) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(char, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(char) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(char, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            char val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (char) -1;
        }
    } else {
        char val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (char) -1;
        val = __Pyx_PyInt_As_char(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to char");
    return (char) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to char");
    return (char) -1;
}

/* CIntFromPy */
static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_As_PY_LONG_LONG(PyObject *x) {
    const PY_LONG_LONG neg_one = (PY_LONG_LONG) ((PY_LONG_LONG) 0 - (PY_LONG_LONG) 1), const_zero = (PY_LONG_LONG) 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(PY_LONG_LONG) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(PY_LONG_LONG, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (PY_LONG_LONG) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (PY_LONG_LONG) 0;
                case  1: __PYX_VERIFY_RETURN_INT(PY_LONG_LONG, digit, digits[0])
                case 2:
                    if (8 * sizeof(PY_LONG_LONG) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(PY_LONG_LONG, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(PY_LONG_LONG) >= 2 * PyLong_SHIFT) {
                            return (PY_LONG_LONG) (((((PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (PY_LONG_LONG)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(PY_LONG_LONG) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(PY_LONG_LONG, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(PY_LONG_LONG) >= 3 * PyLong_SHIFT) {
                            return (PY_LONG_LONG) (((((((PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (PY_LONG_LONG)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(PY_LONG_LONG) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(PY_LONG_LONG, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(PY_LONG_LONG) >= 4 * PyLong_SHIFT) {
                            return (PY_LONG_LONG) (((((((((PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (PY_LONG_LONG)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (PY_LONG_LONG) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(PY_LONG_LONG) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(PY_LONG_LONG, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(PY_LONG_LONG) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(PY_LONG_LONG, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (PY_LONG_LONG) 0;
                case -1: __PYX_VERIFY_RETURN_INT(PY_LONG_LONG, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(PY_LONG_LONG,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(PY_LONG_LONG) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(PY_LONG_LONG, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                            return (PY_LONG_LONG) (((PY_LONG_LONG)-1)*(((((PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (PY_LONG_LONG)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(PY_LONG_LONG) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(PY_LONG_LONG, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                            return (PY_LONG_LONG) ((((((PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (PY_LONG_LONG)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(PY_LONG_LONG, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                            return (PY_LONG_LONG) (((PY_LONG_LONG)-1)*(((((((PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (PY_LONG_LONG)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(PY_LONG_LONG) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(PY_LONG_LONG, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                            return (PY_LONG_LONG) ((((((((PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (PY_LONG_LONG)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(PY_LONG_LONG, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                            return (PY_LONG_LONG) (((PY_LONG_LONG)-1)*(((((((((PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (PY_LONG_LONG)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(PY_LONG_LONG) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(PY_LONG_LONG, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                            return (PY_LONG_LONG) ((((((((((PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (PY_LONG_LONG)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(PY_LONG_LONG) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(PY_LONG_LONG, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(PY_LONG_LONG) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(PY_LONG_LONG, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            PY_LONG_LONG val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (PY_LONG_LONG) -1;
        }
    } else {
        PY_LONG_LONG val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (PY_LONG_LONG) -1;
        val = __Pyx_PyInt_As_PY_LONG_LONG(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to PY_LONG_LONG");
    return (PY_LONG_LONG) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to PY_LONG_LONG");
    return (PY_LONG_LONG) -1;
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
    const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(long) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(long) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(long) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(long),
                                     little, !is_unsigned);
    }
}

/* CIntFromPy */
static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
    const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(long) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (long) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (long) 0;
                case  1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0])
                case 2:
                    if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) {
                            return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) {
                            return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) {
                            return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (long) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(long) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (long) 0;
                case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(long,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                            return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                            return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                            return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                            return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                            return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                            return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(long) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            long val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (long) -1;
        }
    } else {
        long val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (long) -1;
        val = __Pyx_PyInt_As_long(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to long");
    return (long) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to long");
    return (long) -1;
}

/* FastTypeChecks */
#if CYTHON_COMPILING_IN_CPYTHON
static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
    while (a) {
        a = a->tp_base;
        if (a == b)
            return 1;
    }
    return b == &PyBaseObject_Type;
}
static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) {
    PyObject *mro;
    if (a == b) return 1;
    mro = a->tp_mro;
    if (likely(mro)) {
        Py_ssize_t i, n;
        n = PyTuple_GET_SIZE(mro);
        for (i = 0; i < n; i++) {
            if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b)
                return 1;
        }
        return 0;
    }
    return __Pyx_InBases(a, b);
}
#if PY_MAJOR_VERSION == 2
static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) {
    PyObject *exception, *value, *tb;
    int res;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&exception, &value, &tb);
    res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0;
    if (unlikely(res == -1)) {
        PyErr_WriteUnraisable(err);
        res = 0;
    }
    if (!res) {
        res = PyObject_IsSubclass(err, exc_type2);
        if (unlikely(res == -1)) {
            PyErr_WriteUnraisable(err);
            res = 0;
        }
    }
    __Pyx_ErrRestore(exception, value, tb);
    return res;
}
#else
static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) {
    int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0;
    if (!res) {
        res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2);
    }
    return res;
}
#endif
static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
    Py_ssize_t i, n;
    assert(PyExceptionClass_Check(exc_type));
    n = PyTuple_GET_SIZE(tuple);
#if PY_MAJOR_VERSION >= 3
    for (i=0; i<n; i++) {
        if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
    }
#endif
    for (i=0; i<n; i++) {
        PyObject *t = PyTuple_GET_ITEM(tuple, i);
        #if PY_MAJOR_VERSION < 3
        if (likely(exc_type == t)) return 1;
        #endif
        if (likely(PyExceptionClass_Check(t))) {
            if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
        } else {
        }
    }
    return 0;
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
    if (likely(err == exc_type)) return 1;
    if (likely(PyExceptionClass_Check(err))) {
        if (likely(PyExceptionClass_Check(exc_type))) {
            return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
        } else if (likely(PyTuple_Check(exc_type))) {
            return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
        } else {
        }
    }
    return PyErr_GivenExceptionMatches(err, exc_type);
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
    assert(PyExceptionClass_Check(exc_type1));
    assert(PyExceptionClass_Check(exc_type2));
    if (likely(err == exc_type1 || err == exc_type2)) return 1;
    if (likely(PyExceptionClass_Check(err))) {
        return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
    }
    return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2));
}
#endif

/* CheckBinaryVersion */
static int __Pyx_check_binary_version(void) {
    char ctversion[4], rtversion[4];
    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
        char message[200];
        PyOS_snprintf(message, sizeof(message),
                      "compiletime version %s of module '%.100s' "
                      "does not match runtime version %s",
                      ctversion, __Pyx_MODULE_NAME, rtversion);
        return PyErr_WarnEx(NULL, message, 1);
    }
    return 0;
}

/* FunctionExport */
static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) {
    PyObject *d = 0;
    PyObject *cobj = 0;
    union {
        void (*fp)(void);
        void *p;
    } tmp;
    d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__");
    if (!d) {
        PyErr_Clear();
        d = PyDict_New();
        if (!d)
            goto bad;
        Py_INCREF(d);
        if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0)
            goto bad;
    }
    tmp.fp = f;
#if PY_VERSION_HEX >= 0x02070000
    cobj = PyCapsule_New(tmp.p, sig, 0);
#else
    cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0);
#endif
    if (!cobj)
        goto bad;
    if (PyDict_SetItemString(d, name, cobj) < 0)
        goto bad;
    Py_DECREF(cobj);
    Py_DECREF(d);
    return 0;
bad:
    Py_XDECREF(cobj);
    Py_XDECREF(d);
    return -1;
}

/* VoidPtrImport */
#ifndef __PYX_HAVE_RT_ImportVoidPtr
#define __PYX_HAVE_RT_ImportVoidPtr
static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig) {
    PyObject *d = 0;
    PyObject *cobj = 0;
    d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
    if (!d)
        goto bad;
    cobj = PyDict_GetItemString(d, name);
    if (!cobj) {
        PyErr_Format(PyExc_ImportError,
            "%.200s does not export expected C variable %.200s",
                PyModule_GetName(module), name);
        goto bad;
    }
#if PY_VERSION_HEX >= 0x02070000
    if (!PyCapsule_IsValid(cobj, sig)) {
        PyErr_Format(PyExc_TypeError,
            "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)",
             PyModule_GetName(module), name, sig, PyCapsule_GetName(cobj));
        goto bad;
    }
    *p = PyCapsule_GetPointer(cobj, sig);
#else
    {const char *desc, *s1, *s2;
    desc = (const char *)PyCObject_GetDesc(cobj);
    if (!desc)
        goto bad;
    s1 = desc; s2 = sig;
    while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
    if (*s1 != *s2) {
        PyErr_Format(PyExc_TypeError,
            "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)",
             PyModule_GetName(module), name, sig, desc);
        goto bad;
    }
    *p = PyCObject_AsVoidPtr(cobj);}
#endif
    if (!(*p))
        goto bad;
    Py_DECREF(d);
    return 0;
bad:
    Py_XDECREF(d);
    return -1;
}
#endif

/* FunctionImport */
#ifndef __PYX_HAVE_RT_ImportFunction
#define __PYX_HAVE_RT_ImportFunction
static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
    PyObject *d = 0;
    PyObject *cobj = 0;
    union {
        void (*fp)(void);
        void *p;
    } tmp;
    d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
    if (!d)
        goto bad;
    cobj = PyDict_GetItemString(d, funcname);
    if (!cobj) {
        PyErr_Format(PyExc_ImportError,
            "%.200s does not export expected C function %.200s",
                PyModule_GetName(module), funcname);
        goto bad;
    }
#if PY_VERSION_HEX >= 0x02070000
    if (!PyCapsule_IsValid(cobj, sig)) {
        PyErr_Format(PyExc_TypeError,
            "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)",
             PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj));
        goto bad;
    }
    tmp.p = PyCapsule_GetPointer(cobj, sig);
#else
    {const char *desc, *s1, *s2;
    desc = (const char *)PyCObject_GetDesc(cobj);
    if (!desc)
        goto bad;
    s1 = desc; s2 = sig;
    while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
    if (*s1 != *s2) {
        PyErr_Format(PyExc_TypeError,
            "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)",
             PyModule_GetName(module), funcname, sig, desc);
        goto bad;
    }
    tmp.p = PyCObject_AsVoidPtr(cobj);}
#endif
    *f = tmp.fp;
    if (!(*f))
        goto bad;
    Py_DECREF(d);
    return 0;
bad:
    Py_XDECREF(d);
    return -1;
}
#endif

/* InitStrings */
static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
    while (t->p) {
        #if PY_MAJOR_VERSION < 3
        if (t->is_unicode) {
            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
        } else if (t->intern) {
            *t->p = PyString_InternFromString(t->s);
        } else {
            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
        }
        #else
        if (t->is_unicode | t->is_str) {
            if (t->intern) {
                *t->p = PyUnicode_InternFromString(t->s);
            } else if (t->encoding) {
                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
            } else {
                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
            }
        } else {
            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
        }
        #endif
        if (!*t->p)
            return -1;
        if (PyObject_Hash(*t->p) == -1)
            return -1;
        ++t;
    }
    return 0;
}

static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
    return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str));
}
static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) {
    Py_ssize_t ignore;
    return __Pyx_PyObject_AsStringAndSize(o, &ignore);
}
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
#if !CYTHON_PEP393_ENABLED
static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
    char* defenc_c;
    PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL);
    if (!defenc) return NULL;
    defenc_c = PyBytes_AS_STRING(defenc);
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
    {
        char* end = defenc_c + PyBytes_GET_SIZE(defenc);
        char* c;
        for (c = defenc_c; c < end; c++) {
            if ((unsigned char) (*c) >= 128) {
                PyUnicode_AsASCIIString(o);
                return NULL;
            }
        }
    }
#endif
    *length = PyBytes_GET_SIZE(defenc);
    return defenc_c;
}
#else
static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
    if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL;
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
    if (likely(PyUnicode_IS_ASCII(o))) {
        *length = PyUnicode_GET_LENGTH(o);
        return PyUnicode_AsUTF8(o);
    } else {
        PyUnicode_AsASCIIString(o);
        return NULL;
    }
#else
    return PyUnicode_AsUTF8AndSize(o, length);
#endif
}
#endif
#endif
static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
    if (
#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
            __Pyx_sys_getdefaultencoding_not_ascii &&
#endif
            PyUnicode_Check(o)) {
        return __Pyx_PyUnicode_AsStringAndSize(o, length);
    } else
#endif
#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
    if (PyByteArray_Check(o)) {
        *length = PyByteArray_GET_SIZE(o);
        return PyByteArray_AS_STRING(o);
    } else
#endif
    {
        char* result;
        int r = PyBytes_AsStringAndSize(o, &result, length);
        if (unlikely(r < 0)) {
            return NULL;
        } else {
            return result;
        }
    }
}
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
   int is_true = x == Py_True;
   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
   else return PyObject_IsTrue(x);
}
static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
    int retval;
    if (unlikely(!x)) return -1;
    retval = __Pyx_PyObject_IsTrue(x);
    Py_DECREF(x);
    return retval;
}
static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
#if PY_MAJOR_VERSION >= 3
    if (PyLong_Check(result)) {
        if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
                "__int__ returned non-int (type %.200s).  "
                "The ability to return an instance of a strict subclass of int "
                "is deprecated, and may be removed in a future version of Python.",
                Py_TYPE(result)->tp_name)) {
            Py_DECREF(result);
            return NULL;
        }
        return result;
    }
#endif
    PyErr_Format(PyExc_TypeError,
                 "__%.4s__ returned non-%.4s (type %.200s)",
                 type_name, type_name, Py_TYPE(result)->tp_name);
    Py_DECREF(result);
    return NULL;
}
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) {
#if CYTHON_USE_TYPE_SLOTS
  PyNumberMethods *m;
#endif
  const char *name = NULL;
  PyObject *res = NULL;
#if PY_MAJOR_VERSION < 3
  if (likely(PyInt_Check(x) || PyLong_Check(x)))
#else
  if (likely(PyLong_Check(x)))
#endif
    return __Pyx_NewRef(x);
#if CYTHON_USE_TYPE_SLOTS
  m = Py_TYPE(x)->tp_as_number;
  #if PY_MAJOR_VERSION < 3
  if (m && m->nb_int) {
    name = "int";
    res = m->nb_int(x);
  }
  else if (m && m->nb_long) {
    name = "long";
    res = m->nb_long(x);
  }
  #else
  if (likely(m && m->nb_int)) {
    name = "int";
    res = m->nb_int(x);
  }
  #endif
#else
  if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) {
    res = PyNumber_Int(x);
  }
#endif
  if (likely(res)) {
#if PY_MAJOR_VERSION < 3
    if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) {
#else
    if (unlikely(!PyLong_CheckExact(res))) {
#endif
        return __Pyx_PyNumber_IntOrLongWrongResultType(res, name);
    }
  }
  else if (!PyErr_Occurred()) {
    PyErr_SetString(PyExc_TypeError,
                    "an integer is required");
  }
  return res;
}
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
  Py_ssize_t ival;
  PyObject *x;
#if PY_MAJOR_VERSION < 3
  if (likely(PyInt_CheckExact(b))) {
    if (sizeof(Py_ssize_t) >= sizeof(long))
        return PyInt_AS_LONG(b);
    else
        return PyInt_AsSsize_t(b);
  }
#endif
  if (likely(PyLong_CheckExact(b))) {
    #if CYTHON_USE_PYLONG_INTERNALS
    const digit* digits = ((PyLongObject*)b)->ob_digit;
    const Py_ssize_t size = Py_SIZE(b);
    if (likely(__Pyx_sst_abs(size) <= 1)) {
        ival = likely(size) ? digits[0] : 0;
        if (size == -1) ival = -ival;
        return ival;
    } else {
      switch (size) {
         case 2:
           if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
             return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case -2:
           if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
             return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case 3:
           if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
             return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case -3:
           if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
             return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case 4:
           if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
             return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case -4:
           if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
             return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
      }
    }
    #endif
    return PyLong_AsSsize_t(b);
  }
  x = PyNumber_Index(b);
  if (!x) return -1;
  ival = PyInt_AsSsize_t(x);
  Py_DECREF(x);
  return ival;
}
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
  return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
}
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
    return PyInt_FromSize_t(ival);
}


#endif /* Py_PYTHON_H */
