diff --git a/Make_flags b/Make_flags index 0abb915f..6a921ac6 100644 --- a/Make_flags +++ b/Make_flags @@ -27,7 +27,8 @@ SOLIBRARY = libprimme.$(SLIB) # POSIX systems (e.g., Linux, MinGW, Cygwin) #--------------------------------------------------------------- CC ?= cc -F77 ?= gfortran +F77 := gfortran +FC := gfortran DEFINES ?= -DF77UNDERSCORE CFLAGS ?= -O -fPIC -DNDEBUG FFLAGS ?= -fno-second-underscore -O diff --git a/Python/Makefile b/Python/Makefile index 78bc4732..b1176d64 100644 --- a/Python/Makefile +++ b/Python/Makefile @@ -1,10 +1,10 @@ include ../Make_flags all: - ./setup.py build_ext -i + $(PYTHON) ./setup.py build_ext -i install: - ./setup.py install + $(PYTHON) ./setup.py install # Test target: run the tests test: examples.py diff --git a/Python/primme.c b/Python/primme.c index 8fcead5f..826ba5d3 100644 --- a/Python/primme.c +++ b/Python/primme.c @@ -1,18 +1,18 @@ -/* Generated by Cython 0.29.10 */ +/* Generated by Cython 0.29.14 */ /* BEGIN: Cython Metadata { "distutils": { "depends": [ - "/home/eloy/POST/src/primme/py3/lib/python3.6/site-packages/numpy/core/include/numpy/arrayobject.h", - "/home/eloy/POST/src/primme/py3/lib/python3.6/site-packages/numpy/core/include/numpy/ufuncobject.h", + "/home/eloy/POST/src/primme/py3.8/lib/python3.8/site-packages/numpy/core/include/numpy/arrayobject.h", + "/home/eloy/POST/src/primme/py3.8/lib/python3.8/site-packages/numpy/core/include/numpy/ufuncobject.h", "primme/include/primme.h" ], "extra_objects": [ "../lib/libprimme.a" ], "include_dirs": [ - "/home/eloy/POST/src/primme/py3/lib/python3.6/site-packages/numpy/core/include", + "/home/eloy/POST/src/primme/py3.8/lib/python3.8/site-packages/numpy/core/include", "primme/include", "primme/src/include" ], @@ -42,8 +42,8 @@ END: Cython Metadata */ #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_10" -#define CYTHON_HEX_VERSION 0x001D0AF0 +#define CYTHON_ABI "0_29_14" +#define CYTHON_HEX_VERSION 0x001D0EF0 #define CYTHON_FUTURE_DIVISION 0 #include #ifndef offsetof @@ -345,12 +345,12 @@ END: Cython Metadata */ #define __Pyx_DefaultClassType PyClass_Type #else #define __Pyx_BUILTIN_MODULE_NAME "builtins" -#if PY_VERSION_HEX < 0x030800A4 +#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, 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, 0, 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 @@ -980,7 +980,7 @@ typedef struct { } __Pyx_BufFmt_Context; -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":776 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":776 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -989,7 +989,7 @@ typedef struct { */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":777 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":777 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -998,7 +998,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":778 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":778 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -1007,7 +1007,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":779 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":779 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -1016,7 +1016,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":783 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":783 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -1025,7 +1025,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":784 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":784 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -1034,7 +1034,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":785 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":785 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -1043,7 +1043,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":786 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":786 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -1052,7 +1052,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":790 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":790 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -1061,7 +1061,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":791 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":791 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -1070,7 +1070,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":800 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":800 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -1079,7 +1079,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":801 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":801 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -1088,7 +1088,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":802 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":802 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -1097,7 +1097,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":804 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":804 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -1106,7 +1106,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":805 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":805 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -1115,7 +1115,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":806 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":806 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -1124,7 +1124,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":808 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":808 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -1133,7 +1133,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":809 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":809 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -1142,7 +1142,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":811 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":811 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -1151,7 +1151,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":812 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":812 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -1160,7 +1160,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":813 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":813 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -1205,7 +1205,7 @@ struct __pyx_MemviewEnum_obj; struct __pyx_memoryview_obj; struct __pyx_memoryviewslice_obj; -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":815 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":815 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -1214,7 +1214,7 @@ struct __pyx_memoryviewslice_obj; */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":816 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":816 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -1223,7 +1223,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":817 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":817 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -1232,7 +1232,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":819 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":819 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -1390,7 +1390,7 @@ struct __pyx_memoryview_obj { }; -/* "View.MemoryView":961 +/* "View.MemoryView":965 * * @cname('__pyx_memoryviewslice') * cdef class _memoryviewslice(memoryview): # <<<<<<<<<<<<<< @@ -1441,7 +1441,7 @@ struct __pyx_vtabstruct_memoryview { static struct __pyx_vtabstruct_memoryview *__pyx_vtabptr_memoryview; -/* "View.MemoryView":961 +/* "View.MemoryView":965 * * @cname('__pyx_memoryviewslice') * cdef class _memoryviewslice(memoryview): # <<<<<<<<<<<<<< @@ -1587,7 +1587,7 @@ static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObje #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, int nargs, PyObject *kwargs); +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 @@ -34290,7 +34290,7 @@ static PyObject *__pyx_pf_6primme_15PrimmeSvdsError___init__(CYTHON_UNUSED PyObj return __pyx_r; } -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":258 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":258 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -34339,7 +34339,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None); __Pyx_GIVEREF(__pyx_v_info->obj); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":265 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":265 * * cdef int i, ndim * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -34348,7 +34348,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_endian_detector = 1; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":266 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":266 * cdef int i, ndim * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -34357,7 +34357,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":268 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":268 * cdef bint little_endian = ((&endian_detector)[0] != 0) * * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -34366,7 +34366,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":270 * ndim = PyArray_NDIM(self) * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -34380,7 +34380,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L4_bool_binop_done; } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":271 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":271 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -34391,7 +34391,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = __pyx_t_2; __pyx_L4_bool_binop_done:; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":270 * ndim = PyArray_NDIM(self) * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -34400,7 +34400,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ if (unlikely(__pyx_t_1)) { - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":272 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":272 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -34413,7 +34413,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(2, 272, __pyx_L1_error) - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":270 * ndim = PyArray_NDIM(self) * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -34422,7 +34422,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":274 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -34436,7 +34436,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L7_bool_binop_done; } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":275 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":275 * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -34447,7 +34447,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = __pyx_t_2; __pyx_L7_bool_binop_done:; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":274 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -34456,7 +34456,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ if (unlikely(__pyx_t_1)) { - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":276 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -34469,7 +34469,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(2, 276, __pyx_L1_error) - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":274 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -34478,7 +34478,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":278 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":278 * raise ValueError(u"ndarray is not Fortran contiguous") * * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< @@ -34487,7 +34487,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":279 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":279 * * info.buf = PyArray_DATA(self) * info.ndim = ndim # <<<<<<<<<<<<<< @@ -34496,7 +34496,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->ndim = __pyx_v_ndim; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":280 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -34506,7 +34506,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":283 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":283 * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. * info.strides = PyObject_Malloc(sizeof(Py_ssize_t) * 2 * ndim) # <<<<<<<<<<<<<< @@ -34515,7 +34515,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)PyObject_Malloc((((sizeof(Py_ssize_t)) * 2) * ((size_t)__pyx_v_ndim)))); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":284 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":284 * # This is allocated as one block, strides first. * info.strides = PyObject_Malloc(sizeof(Py_ssize_t) * 2 * ndim) * info.shape = info.strides + ndim # <<<<<<<<<<<<<< @@ -34524,7 +34524,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":285 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":285 * info.strides = PyObject_Malloc(sizeof(Py_ssize_t) * 2 * ndim) * info.shape = info.strides + ndim * for i in range(ndim): # <<<<<<<<<<<<<< @@ -34536,7 +34536,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":286 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":286 * info.shape = info.strides + ndim * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< @@ -34545,7 +34545,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":287 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":287 * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< @@ -34555,7 +34555,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_info->shape[__pyx_v_i]) = (PyArray_DIMS(__pyx_v_self)[__pyx_v_i]); } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":280 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -34565,7 +34565,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L9; } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":289 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":289 * info.shape[i] = PyArray_DIMS(self)[i] * else: * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -34575,7 +34575,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P /*else*/ { __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":290 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":290 * else: * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -34586,7 +34586,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L9:; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":291 * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -34595,7 +34595,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->suboffsets = NULL; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":292 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":292 * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< @@ -34604,7 +34604,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":293 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":293 * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< @@ -34613,7 +34613,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":296 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":296 * * cdef int t * cdef char* f = NULL # <<<<<<<<<<<<<< @@ -34622,7 +34622,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_f = NULL; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":297 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":297 * cdef int t * cdef char* f = NULL * cdef dtype descr = PyArray_DESCR(self) # <<<<<<<<<<<<<< @@ -34635,7 +34635,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); __pyx_t_3 = 0; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":300 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":300 * cdef int offset * * info.obj = self # <<<<<<<<<<<<<< @@ -34648,7 +34648,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = ((PyObject *)__pyx_v_self); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":302 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":302 * info.obj = self * * if not PyDataType_HASFIELDS(descr): # <<<<<<<<<<<<<< @@ -34658,7 +34658,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = ((!(PyDataType_HASFIELDS(__pyx_v_descr) != 0)) != 0); if (__pyx_t_1) { - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":303 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":303 * * if not PyDataType_HASFIELDS(descr): * t = descr.type_num # <<<<<<<<<<<<<< @@ -34668,7 +34668,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_4 = __pyx_v_descr->type_num; __pyx_v_t = __pyx_t_4; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":304 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":304 * if not PyDataType_HASFIELDS(descr): * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -34688,7 +34688,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L15_next_or:; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":305 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":305 * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -34705,7 +34705,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = __pyx_t_2; __pyx_L14_bool_binop_done:; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":304 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":304 * if not PyDataType_HASFIELDS(descr): * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -34714,7 +34714,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ if (unlikely(__pyx_t_1)) { - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":306 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":306 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -34727,7 +34727,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(2, 306, __pyx_L1_error) - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":304 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":304 * if not PyDataType_HASFIELDS(descr): * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -34736,7 +34736,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":307 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":307 * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< @@ -34749,7 +34749,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_UBYTE: - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":308 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":308 * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< @@ -34760,7 +34760,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_SHORT: - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":309 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":309 * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< @@ -34771,7 +34771,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_USHORT: - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":310 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":310 * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< @@ -34782,7 +34782,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_INT: - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":311 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":311 * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< @@ -34793,7 +34793,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_UINT: - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":312 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":312 * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< @@ -34804,7 +34804,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_LONG: - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":313 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":313 * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< @@ -34815,7 +34815,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_ULONG: - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":314 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":314 * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< @@ -34826,7 +34826,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_LONGLONG: - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":315 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":315 * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< @@ -34837,7 +34837,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_ULONGLONG: - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":316 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":316 * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< @@ -34848,7 +34848,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_FLOAT: - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":317 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":317 * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< @@ -34859,7 +34859,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_DOUBLE: - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":318 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":318 * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< @@ -34870,7 +34870,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_LONGDOUBLE: - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":319 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":319 * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< @@ -34881,7 +34881,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_CFLOAT: - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":320 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":320 * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< @@ -34892,7 +34892,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_CDOUBLE: - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":321 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":321 * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< @@ -34903,7 +34903,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_CLONGDOUBLE: - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":322 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":322 * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< @@ -34914,7 +34914,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_OBJECT: - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":323 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":323 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -34925,7 +34925,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; default: - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":325 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":325 * elif t == NPY_OBJECT: f = "O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -34946,7 +34946,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":326 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":326 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f # <<<<<<<<<<<<<< @@ -34955,7 +34955,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = __pyx_v_f; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":327 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":327 * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f * return # <<<<<<<<<<<<<< @@ -34965,7 +34965,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_r = 0; goto __pyx_L0; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":302 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":302 * info.obj = self * * if not PyDataType_HASFIELDS(descr): # <<<<<<<<<<<<<< @@ -34974,7 +34974,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":329 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":329 * return * else: * info.format = PyObject_Malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< @@ -34984,7 +34984,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P /*else*/ { __pyx_v_info->format = ((char *)PyObject_Malloc(0xFF)); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":330 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":330 * else: * info.format = PyObject_Malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< @@ -34993,7 +34993,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->format[0]) = '^'; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":331 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":331 * info.format = PyObject_Malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 # <<<<<<<<<<<<<< @@ -35002,7 +35002,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_offset = 0; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":332 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":332 * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< @@ -35012,7 +35012,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(2, 332, __pyx_L1_error) __pyx_v_f = __pyx_t_9; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":335 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":335 * info.format + _buffer_format_string_len, * &offset) * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< @@ -35022,7 +35022,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_f[0]) = '\x00'; } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":258 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":258 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -35054,7 +35054,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P return __pyx_r; } -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":337 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":337 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -35078,7 +35078,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s int __pyx_t_1; __Pyx_RefNannySetupContext("__releasebuffer__", 0); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":338 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":338 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -35088,7 +35088,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); if (__pyx_t_1) { - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":339 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":339 * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): * PyObject_Free(info.format) # <<<<<<<<<<<<<< @@ -35097,7 +35097,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ PyObject_Free(__pyx_v_info->format); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":338 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":338 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -35106,7 +35106,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":340 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":340 * if PyArray_HASFIELDS(self): * PyObject_Free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -35116,7 +35116,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":341 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":341 * PyObject_Free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): * PyObject_Free(info.strides) # <<<<<<<<<<<<<< @@ -35125,7 +35125,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ PyObject_Free(__pyx_v_info->strides); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":340 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":340 * if PyArray_HASFIELDS(self): * PyObject_Free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -35134,7 +35134,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":337 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":337 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -35146,7 +35146,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __Pyx_RefNannyFinishContext(); } -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":821 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":821 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -35160,7 +35160,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":822 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -35174,7 +35174,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":821 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":821 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -35193,7 +35193,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":824 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":824 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -35207,7 +35207,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":825 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":825 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -35221,7 +35221,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":824 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":824 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -35240,7 +35240,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":827 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":827 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -35254,7 +35254,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":828 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":828 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -35268,7 +35268,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":827 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":827 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -35287,7 +35287,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":830 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":830 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -35301,7 +35301,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":831 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":831 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -35315,7 +35315,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":830 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":830 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -35334,7 +35334,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":833 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":833 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -35348,7 +35348,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":834 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":834 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -35362,7 +35362,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":833 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":833 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -35381,7 +35381,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":836 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":836 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< @@ -35395,7 +35395,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ int __pyx_t_1; __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":837 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":837 * * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< @@ -35405,7 +35405,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ __pyx_t_1 = (PyDataType_HASSUBARRAY(__pyx_v_d) != 0); if (__pyx_t_1) { - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":838 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":838 * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): * return d.subarray.shape # <<<<<<<<<<<<<< @@ -35417,7 +35417,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ __pyx_r = ((PyObject*)__pyx_v_d->subarray->shape); goto __pyx_L0; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":837 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":837 * * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< @@ -35426,7 +35426,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ */ } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":840 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":840 * return d.subarray.shape * else: * return () # <<<<<<<<<<<<<< @@ -35440,7 +35440,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ goto __pyx_L0; } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":836 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":836 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< @@ -35455,7 +35455,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ return __pyx_r; } -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":842 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":842 * return () * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -35484,7 +35484,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx char *__pyx_t_9; __Pyx_RefNannySetupContext("_util_dtypestring", 0); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":847 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":847 * * cdef dtype child * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -35493,7 +35493,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_endian_detector = 1; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":848 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":848 * cdef dtype child * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -35502,7 +35502,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":851 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":851 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -35525,7 +35525,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); __pyx_t_3 = 0; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":852 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":852 * * for childname in descr.names: * fields = descr.fields[childname] # <<<<<<<<<<<<<< @@ -35542,7 +35542,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":853 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":853 * for childname in descr.names: * fields = descr.fields[childname] * child, new_offset = fields # <<<<<<<<<<<<<< @@ -35577,7 +35577,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); __pyx_t_4 = 0; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":855 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":855 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< @@ -35594,7 +35594,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); if (unlikely(__pyx_t_6)) { - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":856 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":856 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -35607,7 +35607,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(2, 856, __pyx_L1_error) - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":855 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":855 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< @@ -35616,7 +35616,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":858 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":858 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -35636,7 +35636,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L8_next_or:; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":859 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":859 * * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -35653,7 +35653,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = __pyx_t_7; __pyx_L7_bool_binop_done:; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":858 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":858 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -35662,7 +35662,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ if (unlikely(__pyx_t_6)) { - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":860 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":860 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -35675,7 +35675,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(2, 860, __pyx_L1_error) - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":858 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":858 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -35684,7 +35684,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":870 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":870 * * # Output padding bytes * while offset[0] < new_offset: # <<<<<<<<<<<<<< @@ -35700,7 +35700,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_6) break; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":871 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":871 * # Output padding bytes * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< @@ -35709,7 +35709,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ (__pyx_v_f[0]) = 0x78; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":872 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":872 * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte * f += 1 # <<<<<<<<<<<<<< @@ -35718,7 +35718,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":873 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":873 * f[0] = 120 # "x"; pad byte * f += 1 * offset[0] += 1 # <<<<<<<<<<<<<< @@ -35729,7 +35729,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":875 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":875 * offset[0] += 1 * * offset[0] += child.itemsize # <<<<<<<<<<<<<< @@ -35739,7 +35739,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_8 = 0; (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":877 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":877 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -35749,7 +35749,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); if (__pyx_t_6) { - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":878 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":878 * * if not PyDataType_HASFIELDS(child): * t = child.type_num # <<<<<<<<<<<<<< @@ -35761,7 +35761,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); __pyx_t_4 = 0; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":879 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":879 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -35771,7 +35771,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); if (unlikely(__pyx_t_6)) { - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":880 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":880 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -35784,7 +35784,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(2, 880, __pyx_L1_error) - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":879 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":879 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -35793,7 +35793,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":883 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":883 * * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< @@ -35811,7 +35811,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":884 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":884 * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< @@ -35829,7 +35829,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":885 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":885 * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< @@ -35847,7 +35847,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":886 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":886 * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< @@ -35865,7 +35865,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":887 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":887 * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< @@ -35883,7 +35883,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":888 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":888 * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< @@ -35901,7 +35901,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":889 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":889 * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< @@ -35919,7 +35919,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":890 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":890 * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< @@ -35937,7 +35937,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":891 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":891 * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< @@ -35955,7 +35955,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":892 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":892 * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< @@ -35973,7 +35973,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":893 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":893 * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< @@ -35991,7 +35991,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":894 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":894 * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< @@ -36009,7 +36009,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":895 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":895 * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< @@ -36027,7 +36027,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":896 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":896 * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< @@ -36047,7 +36047,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":897 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":897 * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< @@ -36067,7 +36067,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":898 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":898 * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< @@ -36087,7 +36087,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":899 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":899 * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< @@ -36105,7 +36105,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":901 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":901 * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -36124,7 +36124,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L15:; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":902 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":902 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * f += 1 # <<<<<<<<<<<<<< @@ -36133,7 +36133,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":877 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":877 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -36143,7 +36143,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L13; } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":906 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":906 * # Cython ignores struct boundary information ("T{...}"), * # so don't output it * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< @@ -36156,7 +36156,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L13:; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":851 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":851 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -36166,7 +36166,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":907 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":907 * # so don't output it * f = _util_dtypestring(child, f, end, offset) * return f # <<<<<<<<<<<<<< @@ -36176,7 +36176,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_r = __pyx_v_f; goto __pyx_L0; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":842 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":842 * return () * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -36201,7 +36201,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx return __pyx_r; } -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1022 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1022 * int _import_umath() except -1 * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -36213,7 +36213,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_array_base", 0); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1023 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1023 * * cdef inline void set_array_base(ndarray arr, object base): * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<< @@ -36222,7 +36222,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_INCREF(__pyx_v_base); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1024 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1024 * cdef inline void set_array_base(ndarray arr, object base): * Py_INCREF(base) # important to do this before stealing the reference below! * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<< @@ -36231,7 +36231,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ (void)(PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base)); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1022 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1022 * int _import_umath() except -1 * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -36243,7 +36243,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyFinishContext(); } -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1026 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1026 * PyArray_SetBaseObject(arr, base) * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -36258,7 +36258,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1027 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1027 * * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) # <<<<<<<<<<<<<< @@ -36267,7 +36267,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py */ __pyx_v_base = PyArray_BASE(__pyx_v_arr); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1028 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1028 * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) * if base is NULL: # <<<<<<<<<<<<<< @@ -36277,7 +36277,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = ((__pyx_v_base == NULL) != 0); if (__pyx_t_1) { - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1029 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1029 * base = PyArray_BASE(arr) * if base is NULL: * return None # <<<<<<<<<<<<<< @@ -36288,7 +36288,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1028 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1028 * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) * if base is NULL: # <<<<<<<<<<<<<< @@ -36297,7 +36297,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py */ } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1030 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1030 * if base is NULL: * return None * return base # <<<<<<<<<<<<<< @@ -36309,7 +36309,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_r = ((PyObject *)__pyx_v_base); goto __pyx_L0; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1026 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1026 * PyArray_SetBaseObject(arr, base) * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -36324,7 +36324,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py return __pyx_r; } -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1034 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1034 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -36345,7 +36345,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("import_array", 0); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1035 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1035 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -36361,7 +36361,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1036 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1036 * cdef inline int import_array() except -1: * try: * _import_array() # <<<<<<<<<<<<<< @@ -36370,7 +36370,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { */ __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1036, __pyx_L3_error) - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1035 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1035 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -36384,7 +36384,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1037 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1037 * try: * _import_array() * except Exception: # <<<<<<<<<<<<<< @@ -36399,7 +36399,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1038 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1038 * _import_array() * except Exception: * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< @@ -36415,7 +36415,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1035 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1035 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -36430,7 +36430,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __pyx_L8_try_end:; } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1034 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1034 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -36453,7 +36453,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { return __pyx_r; } -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1040 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1040 * raise ImportError("numpy.core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -36474,7 +36474,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("import_umath", 0); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1041 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1041 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -36490,7 +36490,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1042 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1042 * cdef inline int import_umath() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< @@ -36499,7 +36499,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { */ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1042, __pyx_L3_error) - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1041 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1041 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -36513,7 +36513,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1043 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1043 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -36528,7 +36528,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1044 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1044 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< @@ -36544,7 +36544,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1041 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1041 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -36559,7 +36559,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __pyx_L8_try_end:; } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1040 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1040 * raise ImportError("numpy.core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -36582,7 +36582,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { return __pyx_r; } -/* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1046 +/* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1046 * raise ImportError("numpy.core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -36603,7 +36603,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("import_ufunc", 0); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1047 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1047 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -36619,7 +36619,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1048 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1048 * cdef inline int import_ufunc() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< @@ -36628,7 +36628,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { */ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1048, __pyx_L3_error) - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1047 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1047 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -36642,7 +36642,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1049 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1049 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -36656,7 +36656,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1050 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1050 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< @@ -36670,7 +36670,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1047 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1047 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -36685,7 +36685,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __pyx_L8_try_end:; } - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1046 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1046 * raise ImportError("numpy.core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -39465,7 +39465,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal * def __dealloc__(memoryview self): * if self.obj is not None: # <<<<<<<<<<<<<< * __Pyx_ReleaseBuffer(&self.view) - * + * elif (<__pyx_buffer *> &self.view).obj == Py_None: */ __pyx_t_1 = (__pyx_v_self->obj != Py_None); __pyx_t_2 = (__pyx_t_1 != 0); @@ -39475,8 +39475,8 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal * def __dealloc__(memoryview self): * if self.obj is not None: * __Pyx_ReleaseBuffer(&self.view) # <<<<<<<<<<<<<< + * elif (<__pyx_buffer *> &self.view).obj == Py_None: * - * cdef int i */ __Pyx_ReleaseBuffer((&__pyx_v_self->view)); @@ -39485,11 +39485,50 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal * def __dealloc__(memoryview self): * if self.obj is not None: # <<<<<<<<<<<<<< * __Pyx_ReleaseBuffer(&self.view) + * elif (<__pyx_buffer *> &self.view).obj == Py_None: + */ + goto __pyx_L3; + } + + /* "View.MemoryView":375 + * if self.obj is not None: + * __Pyx_ReleaseBuffer(&self.view) + * elif (<__pyx_buffer *> &self.view).obj == Py_None: # <<<<<<<<<<<<<< + * + * (<__pyx_buffer *> &self.view).obj = NULL + */ + __pyx_t_2 = ((((Py_buffer *)(&__pyx_v_self->view))->obj == Py_None) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":377 + * elif (<__pyx_buffer *> &self.view).obj == Py_None: + * + * (<__pyx_buffer *> &self.view).obj = NULL # <<<<<<<<<<<<<< + * Py_DECREF(Py_None) * + */ + ((Py_buffer *)(&__pyx_v_self->view))->obj = NULL; + + /* "View.MemoryView":378 + * + * (<__pyx_buffer *> &self.view).obj = NULL + * Py_DECREF(Py_None) # <<<<<<<<<<<<<< + * + * cdef int i + */ + Py_DECREF(Py_None); + + /* "View.MemoryView":375 + * if self.obj is not None: + * __Pyx_ReleaseBuffer(&self.view) + * elif (<__pyx_buffer *> &self.view).obj == Py_None: # <<<<<<<<<<<<<< + * + * (<__pyx_buffer *> &self.view).obj = NULL */ } + __pyx_L3:; - /* "View.MemoryView":378 + /* "View.MemoryView":382 * cdef int i * global __pyx_memoryview_thread_locks_used * if self.lock != NULL: # <<<<<<<<<<<<<< @@ -39499,7 +39538,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal __pyx_t_2 = ((__pyx_v_self->lock != NULL) != 0); if (__pyx_t_2) { - /* "View.MemoryView":379 + /* "View.MemoryView":383 * global __pyx_memoryview_thread_locks_used * if self.lock != NULL: * for i in range(__pyx_memoryview_thread_locks_used): # <<<<<<<<<<<<<< @@ -39511,7 +39550,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "View.MemoryView":380 + /* "View.MemoryView":384 * if self.lock != NULL: * for i in range(__pyx_memoryview_thread_locks_used): * if __pyx_memoryview_thread_locks[i] is self.lock: # <<<<<<<<<<<<<< @@ -39521,7 +39560,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal __pyx_t_2 = (((__pyx_memoryview_thread_locks[__pyx_v_i]) == __pyx_v_self->lock) != 0); if (__pyx_t_2) { - /* "View.MemoryView":381 + /* "View.MemoryView":385 * for i in range(__pyx_memoryview_thread_locks_used): * if __pyx_memoryview_thread_locks[i] is self.lock: * __pyx_memoryview_thread_locks_used -= 1 # <<<<<<<<<<<<<< @@ -39530,7 +39569,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal */ __pyx_memoryview_thread_locks_used = (__pyx_memoryview_thread_locks_used - 1); - /* "View.MemoryView":382 + /* "View.MemoryView":386 * if __pyx_memoryview_thread_locks[i] is self.lock: * __pyx_memoryview_thread_locks_used -= 1 * if i != __pyx_memoryview_thread_locks_used: # <<<<<<<<<<<<<< @@ -39540,7 +39579,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal __pyx_t_2 = ((__pyx_v_i != __pyx_memoryview_thread_locks_used) != 0); if (__pyx_t_2) { - /* "View.MemoryView":384 + /* "View.MemoryView":388 * if i != __pyx_memoryview_thread_locks_used: * __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = ( * __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i]) # <<<<<<<<<<<<<< @@ -39550,7 +39589,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal __pyx_t_6 = (__pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]); __pyx_t_7 = (__pyx_memoryview_thread_locks[__pyx_v_i]); - /* "View.MemoryView":383 + /* "View.MemoryView":387 * __pyx_memoryview_thread_locks_used -= 1 * if i != __pyx_memoryview_thread_locks_used: * __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = ( # <<<<<<<<<<<<<< @@ -39560,7 +39599,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal (__pyx_memoryview_thread_locks[__pyx_v_i]) = __pyx_t_6; (__pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]) = __pyx_t_7; - /* "View.MemoryView":382 + /* "View.MemoryView":386 * if __pyx_memoryview_thread_locks[i] is self.lock: * __pyx_memoryview_thread_locks_used -= 1 * if i != __pyx_memoryview_thread_locks_used: # <<<<<<<<<<<<<< @@ -39569,7 +39608,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal */ } - /* "View.MemoryView":385 + /* "View.MemoryView":389 * __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = ( * __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i]) * break # <<<<<<<<<<<<<< @@ -39578,7 +39617,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal */ goto __pyx_L6_break; - /* "View.MemoryView":380 + /* "View.MemoryView":384 * if self.lock != NULL: * for i in range(__pyx_memoryview_thread_locks_used): * if __pyx_memoryview_thread_locks[i] is self.lock: # <<<<<<<<<<<<<< @@ -39589,7 +39628,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal } /*else*/ { - /* "View.MemoryView":387 + /* "View.MemoryView":391 * break * else: * PyThread_free_lock(self.lock) # <<<<<<<<<<<<<< @@ -39600,7 +39639,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal } __pyx_L6_break:; - /* "View.MemoryView":378 + /* "View.MemoryView":382 * cdef int i * global __pyx_memoryview_thread_locks_used * if self.lock != NULL: # <<<<<<<<<<<<<< @@ -39621,7 +39660,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal __Pyx_RefNannyFinishContext(); } -/* "View.MemoryView":389 +/* "View.MemoryView":393 * PyThread_free_lock(self.lock) * * cdef char *get_item_pointer(memoryview self, object index) except NULL: # <<<<<<<<<<<<<< @@ -39644,7 +39683,7 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py char *__pyx_t_7; __Pyx_RefNannySetupContext("get_item_pointer", 0); - /* "View.MemoryView":391 + /* "View.MemoryView":395 * cdef char *get_item_pointer(memoryview self, object index) except NULL: * cdef Py_ssize_t dim * cdef char *itemp = self.view.buf # <<<<<<<<<<<<<< @@ -39653,7 +39692,7 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py */ __pyx_v_itemp = ((char *)__pyx_v_self->view.buf); - /* "View.MemoryView":393 + /* "View.MemoryView":397 * cdef char *itemp = self.view.buf * * for dim, idx in enumerate(index): # <<<<<<<<<<<<<< @@ -39665,26 +39704,26 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py __pyx_t_2 = __pyx_v_index; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { - __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 393, __pyx_L1_error) + __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 393, __pyx_L1_error) + __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 397, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 393, __pyx_L1_error) + __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 397, __pyx_L1_error) #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 393, __pyx_L1_error) + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 393, __pyx_L1_error) + __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 397, __pyx_L1_error) #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 393, __pyx_L1_error) + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } @@ -39694,7 +39733,7 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(1, 393, __pyx_L1_error) + else __PYX_ERR(1, 397, __pyx_L1_error) } break; } @@ -39705,18 +39744,18 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py __pyx_v_dim = __pyx_t_1; __pyx_t_1 = (__pyx_t_1 + 1); - /* "View.MemoryView":394 + /* "View.MemoryView":398 * * for dim, idx in enumerate(index): * itemp = pybuffer_index(&self.view, itemp, idx, dim) # <<<<<<<<<<<<<< * * return itemp */ - __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 394, __pyx_L1_error) - __pyx_t_7 = __pyx_pybuffer_index((&__pyx_v_self->view), __pyx_v_itemp, __pyx_t_6, __pyx_v_dim); if (unlikely(__pyx_t_7 == ((char *)NULL))) __PYX_ERR(1, 394, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 398, __pyx_L1_error) + __pyx_t_7 = __pyx_pybuffer_index((&__pyx_v_self->view), __pyx_v_itemp, __pyx_t_6, __pyx_v_dim); if (unlikely(__pyx_t_7 == ((char *)NULL))) __PYX_ERR(1, 398, __pyx_L1_error) __pyx_v_itemp = __pyx_t_7; - /* "View.MemoryView":393 + /* "View.MemoryView":397 * cdef char *itemp = self.view.buf * * for dim, idx in enumerate(index): # <<<<<<<<<<<<<< @@ -39726,7 +39765,7 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":396 + /* "View.MemoryView":400 * itemp = pybuffer_index(&self.view, itemp, idx, dim) * * return itemp # <<<<<<<<<<<<<< @@ -39736,7 +39775,7 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py __pyx_r = __pyx_v_itemp; goto __pyx_L0; - /* "View.MemoryView":389 + /* "View.MemoryView":393 * PyThread_free_lock(self.lock) * * cdef char *get_item_pointer(memoryview self, object index) except NULL: # <<<<<<<<<<<<<< @@ -39756,7 +39795,7 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py return __pyx_r; } -/* "View.MemoryView":399 +/* "View.MemoryView":403 * * * def __getitem__(memoryview self, object index): # <<<<<<<<<<<<<< @@ -39791,7 +39830,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ char *__pyx_t_6; __Pyx_RefNannySetupContext("__getitem__", 0); - /* "View.MemoryView":400 + /* "View.MemoryView":404 * * def __getitem__(memoryview self, object index): * if index is Ellipsis: # <<<<<<<<<<<<<< @@ -39802,7 +39841,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "View.MemoryView":401 + /* "View.MemoryView":405 * def __getitem__(memoryview self, object index): * if index is Ellipsis: * return self # <<<<<<<<<<<<<< @@ -39814,7 +39853,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "View.MemoryView":400 + /* "View.MemoryView":404 * * def __getitem__(memoryview self, object index): * if index is Ellipsis: # <<<<<<<<<<<<<< @@ -39823,14 +39862,14 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ */ } - /* "View.MemoryView":403 + /* "View.MemoryView":407 * return self * * have_slices, indices = _unellipsify(index, self.view.ndim) # <<<<<<<<<<<<<< * * cdef char *itemp */ - __pyx_t_3 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 403, __pyx_L1_error) + __pyx_t_3 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 407, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (likely(__pyx_t_3 != Py_None)) { PyObject* sequence = __pyx_t_3; @@ -39838,7 +39877,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(1, 403, __pyx_L1_error) + __PYX_ERR(1, 407, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); @@ -39846,31 +39885,31 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); #else - __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 403, __pyx_L1_error) + __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 407, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 403, __pyx_L1_error) + __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 407, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 403, __pyx_L1_error) + __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 407, __pyx_L1_error) } __pyx_v_have_slices = __pyx_t_4; __pyx_t_4 = 0; __pyx_v_indices = __pyx_t_5; __pyx_t_5 = 0; - /* "View.MemoryView":406 + /* "View.MemoryView":410 * * cdef char *itemp * if have_slices: # <<<<<<<<<<<<<< * return memview_slice(self, indices) * else: */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 406, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 410, __pyx_L1_error) if (__pyx_t_2) { - /* "View.MemoryView":407 + /* "View.MemoryView":411 * cdef char *itemp * if have_slices: * return memview_slice(self, indices) # <<<<<<<<<<<<<< @@ -39878,13 +39917,13 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ * itemp = self.get_item_pointer(indices) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = ((PyObject *)__pyx_memview_slice(__pyx_v_self, __pyx_v_indices)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 407, __pyx_L1_error) + __pyx_t_3 = ((PyObject *)__pyx_memview_slice(__pyx_v_self, __pyx_v_indices)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "View.MemoryView":406 + /* "View.MemoryView":410 * * cdef char *itemp * if have_slices: # <<<<<<<<<<<<<< @@ -39893,7 +39932,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ */ } - /* "View.MemoryView":409 + /* "View.MemoryView":413 * return memview_slice(self, indices) * else: * itemp = self.get_item_pointer(indices) # <<<<<<<<<<<<<< @@ -39901,10 +39940,10 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ * */ /*else*/ { - __pyx_t_6 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_indices); if (unlikely(__pyx_t_6 == ((char *)NULL))) __PYX_ERR(1, 409, __pyx_L1_error) + __pyx_t_6 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_indices); if (unlikely(__pyx_t_6 == ((char *)NULL))) __PYX_ERR(1, 413, __pyx_L1_error) __pyx_v_itemp = __pyx_t_6; - /* "View.MemoryView":410 + /* "View.MemoryView":414 * else: * itemp = self.get_item_pointer(indices) * return self.convert_item_to_object(itemp) # <<<<<<<<<<<<<< @@ -39912,14 +39951,14 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ * def __setitem__(memoryview self, object index, object value): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->convert_item_to_object(__pyx_v_self, __pyx_v_itemp); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 410, __pyx_L1_error) + __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->convert_item_to_object(__pyx_v_self, __pyx_v_itemp); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; } - /* "View.MemoryView":399 + /* "View.MemoryView":403 * * * def __getitem__(memoryview self, object index): # <<<<<<<<<<<<<< @@ -39942,7 +39981,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ return __pyx_r; } -/* "View.MemoryView":412 +/* "View.MemoryView":416 * return self.convert_item_to_object(itemp) * * def __setitem__(memoryview self, object index, object value): # <<<<<<<<<<<<<< @@ -39975,7 +40014,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit __Pyx_RefNannySetupContext("__setitem__", 0); __Pyx_INCREF(__pyx_v_index); - /* "View.MemoryView":413 + /* "View.MemoryView":417 * * def __setitem__(memoryview self, object index, object value): * if self.view.readonly: # <<<<<<<<<<<<<< @@ -39985,20 +40024,20 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit __pyx_t_1 = (__pyx_v_self->view.readonly != 0); if (unlikely(__pyx_t_1)) { - /* "View.MemoryView":414 + /* "View.MemoryView":418 * def __setitem__(memoryview self, object index, object value): * if self.view.readonly: * raise TypeError("Cannot assign to read-only memoryview") # <<<<<<<<<<<<<< * * have_slices, index = _unellipsify(index, self.view.ndim) */ - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__59, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 414, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__59, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 418, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(1, 414, __pyx_L1_error) + __PYX_ERR(1, 418, __pyx_L1_error) - /* "View.MemoryView":413 + /* "View.MemoryView":417 * * def __setitem__(memoryview self, object index, object value): * if self.view.readonly: # <<<<<<<<<<<<<< @@ -40007,14 +40046,14 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit */ } - /* "View.MemoryView":416 + /* "View.MemoryView":420 * raise TypeError("Cannot assign to read-only memoryview") * * have_slices, index = _unellipsify(index, self.view.ndim) # <<<<<<<<<<<<<< * * if have_slices: */ - __pyx_t_2 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 416, __pyx_L1_error) + __pyx_t_2 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (likely(__pyx_t_2 != Py_None)) { PyObject* sequence = __pyx_t_2; @@ -40022,7 +40061,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(1, 416, __pyx_L1_error) + __PYX_ERR(1, 420, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); @@ -40030,67 +40069,67 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); #else - __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 416, __pyx_L1_error) + __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 416, __pyx_L1_error) + __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { - __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 416, __pyx_L1_error) + __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 420, __pyx_L1_error) } __pyx_v_have_slices = __pyx_t_3; __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_4); __pyx_t_4 = 0; - /* "View.MemoryView":418 + /* "View.MemoryView":422 * have_slices, index = _unellipsify(index, self.view.ndim) * * if have_slices: # <<<<<<<<<<<<<< * obj = self.is_slice(value) * if obj: */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 418, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 422, __pyx_L1_error) if (__pyx_t_1) { - /* "View.MemoryView":419 + /* "View.MemoryView":423 * * if have_slices: * obj = self.is_slice(value) # <<<<<<<<<<<<<< * if obj: * self.setitem_slice_assignment(self[index], obj) */ - __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->is_slice(__pyx_v_self, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 419, __pyx_L1_error) + __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->is_slice(__pyx_v_self, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 423, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_obj = __pyx_t_2; __pyx_t_2 = 0; - /* "View.MemoryView":420 + /* "View.MemoryView":424 * if have_slices: * obj = self.is_slice(value) * if obj: # <<<<<<<<<<<<<< * self.setitem_slice_assignment(self[index], obj) * else: */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_obj); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 420, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_obj); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 424, __pyx_L1_error) if (__pyx_t_1) { - /* "View.MemoryView":421 + /* "View.MemoryView":425 * obj = self.is_slice(value) * if obj: * self.setitem_slice_assignment(self[index], obj) # <<<<<<<<<<<<<< * else: * self.setitem_slice_assign_scalar(self[index], value) */ - __pyx_t_2 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 421, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 425, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assignment(__pyx_v_self, __pyx_t_2, __pyx_v_obj); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 421, __pyx_L1_error) + __pyx_t_4 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assignment(__pyx_v_self, __pyx_t_2, __pyx_v_obj); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 425, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "View.MemoryView":420 + /* "View.MemoryView":424 * if have_slices: * obj = self.is_slice(value) * if obj: # <<<<<<<<<<<<<< @@ -40100,7 +40139,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit goto __pyx_L5; } - /* "View.MemoryView":423 + /* "View.MemoryView":427 * self.setitem_slice_assignment(self[index], obj) * else: * self.setitem_slice_assign_scalar(self[index], value) # <<<<<<<<<<<<<< @@ -40108,17 +40147,17 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit * self.setitem_indexed(index, value) */ /*else*/ { - __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 423, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 427, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_memoryview_type))))) __PYX_ERR(1, 423, __pyx_L1_error) - __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assign_scalar(__pyx_v_self, ((struct __pyx_memoryview_obj *)__pyx_t_4), __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 423, __pyx_L1_error) + if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_memoryview_type))))) __PYX_ERR(1, 427, __pyx_L1_error) + __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assign_scalar(__pyx_v_self, ((struct __pyx_memoryview_obj *)__pyx_t_4), __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 427, __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; } __pyx_L5:; - /* "View.MemoryView":418 + /* "View.MemoryView":422 * have_slices, index = _unellipsify(index, self.view.ndim) * * if have_slices: # <<<<<<<<<<<<<< @@ -40128,7 +40167,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit goto __pyx_L4; } - /* "View.MemoryView":425 + /* "View.MemoryView":429 * self.setitem_slice_assign_scalar(self[index], value) * else: * self.setitem_indexed(index, value) # <<<<<<<<<<<<<< @@ -40136,13 +40175,13 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit * cdef is_slice(self, obj): */ /*else*/ { - __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_indexed(__pyx_v_self, __pyx_v_index, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 425, __pyx_L1_error) + __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_indexed(__pyx_v_self, __pyx_v_index, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 429, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_L4:; - /* "View.MemoryView":412 + /* "View.MemoryView":416 * return self.convert_item_to_object(itemp) * * def __setitem__(memoryview self, object index, object value): # <<<<<<<<<<<<<< @@ -40167,7 +40206,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit return __pyx_r; } -/* "View.MemoryView":427 +/* "View.MemoryView":431 * self.setitem_indexed(index, value) * * cdef is_slice(self, obj): # <<<<<<<<<<<<<< @@ -40190,7 +40229,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ __Pyx_RefNannySetupContext("is_slice", 0); __Pyx_INCREF(__pyx_v_obj); - /* "View.MemoryView":428 + /* "View.MemoryView":432 * * cdef is_slice(self, obj): * if not isinstance(obj, memoryview): # <<<<<<<<<<<<<< @@ -40201,7 +40240,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0); if (__pyx_t_2) { - /* "View.MemoryView":429 + /* "View.MemoryView":433 * cdef is_slice(self, obj): * if not isinstance(obj, memoryview): * try: # <<<<<<<<<<<<<< @@ -40217,34 +40256,34 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ __Pyx_XGOTREF(__pyx_t_5); /*try:*/ { - /* "View.MemoryView":430 + /* "View.MemoryView":434 * if not isinstance(obj, memoryview): * try: * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, # <<<<<<<<<<<<<< * self.dtype_is_object) * except TypeError: */ - __pyx_t_6 = __Pyx_PyInt_From_int(((__pyx_v_self->flags & (~PyBUF_WRITABLE)) | PyBUF_ANY_CONTIGUOUS)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 430, __pyx_L4_error) + __pyx_t_6 = __Pyx_PyInt_From_int(((__pyx_v_self->flags & (~PyBUF_WRITABLE)) | PyBUF_ANY_CONTIGUOUS)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 434, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); - /* "View.MemoryView":431 + /* "View.MemoryView":435 * try: * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, * self.dtype_is_object) # <<<<<<<<<<<<<< * except TypeError: * return None */ - __pyx_t_7 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 431, __pyx_L4_error) + __pyx_t_7 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 435, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_7); - /* "View.MemoryView":430 + /* "View.MemoryView":434 * if not isinstance(obj, memoryview): * try: * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, # <<<<<<<<<<<<<< * self.dtype_is_object) * except TypeError: */ - __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 430, __pyx_L4_error) + __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 434, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_obj); __Pyx_GIVEREF(__pyx_v_obj); @@ -40255,13 +40294,13 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_7); __pyx_t_6 = 0; __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 430, __pyx_L4_error) + __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 434, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_7); __pyx_t_7 = 0; - /* "View.MemoryView":429 + /* "View.MemoryView":433 * cdef is_slice(self, obj): * if not isinstance(obj, memoryview): * try: # <<<<<<<<<<<<<< @@ -40278,7 +40317,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - /* "View.MemoryView":432 + /* "View.MemoryView":436 * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, * self.dtype_is_object) * except TypeError: # <<<<<<<<<<<<<< @@ -40288,12 +40327,12 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError); if (__pyx_t_9) { __Pyx_AddTraceback("View.MemoryView.memoryview.is_slice", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_6) < 0) __PYX_ERR(1, 432, __pyx_L6_except_error) + if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_6) < 0) __PYX_ERR(1, 436, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GOTREF(__pyx_t_8); __Pyx_GOTREF(__pyx_t_6); - /* "View.MemoryView":433 + /* "View.MemoryView":437 * self.dtype_is_object) * except TypeError: * return None # <<<<<<<<<<<<<< @@ -40310,7 +40349,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ goto __pyx_L6_except_error; __pyx_L6_except_error:; - /* "View.MemoryView":429 + /* "View.MemoryView":433 * cdef is_slice(self, obj): * if not isinstance(obj, memoryview): * try: # <<<<<<<<<<<<<< @@ -40331,7 +40370,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ __pyx_L9_try_end:; } - /* "View.MemoryView":428 + /* "View.MemoryView":432 * * cdef is_slice(self, obj): * if not isinstance(obj, memoryview): # <<<<<<<<<<<<<< @@ -40340,7 +40379,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ */ } - /* "View.MemoryView":435 + /* "View.MemoryView":439 * return None * * return obj # <<<<<<<<<<<<<< @@ -40352,7 +40391,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ __pyx_r = __pyx_v_obj; goto __pyx_L0; - /* "View.MemoryView":427 + /* "View.MemoryView":431 * self.setitem_indexed(index, value) * * cdef is_slice(self, obj): # <<<<<<<<<<<<<< @@ -40374,7 +40413,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ return __pyx_r; } -/* "View.MemoryView":437 +/* "View.MemoryView":441 * return obj * * cdef setitem_slice_assignment(self, dst, src): # <<<<<<<<<<<<<< @@ -40387,56 +40426,60 @@ static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryvi __Pyx_memviewslice __pyx_v_src_slice; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_t_3; + __Pyx_memviewslice *__pyx_t_1; + __Pyx_memviewslice *__pyx_t_2; + PyObject *__pyx_t_3 = NULL; int __pyx_t_4; + int __pyx_t_5; + int __pyx_t_6; __Pyx_RefNannySetupContext("setitem_slice_assignment", 0); - /* "View.MemoryView":441 + /* "View.MemoryView":445 * cdef __Pyx_memviewslice src_slice * * memoryview_copy_contents(get_slice_from_memview(src, &src_slice)[0], # <<<<<<<<<<<<<< * get_slice_from_memview(dst, &dst_slice)[0], * src.ndim, dst.ndim, self.dtype_is_object) */ - if (!(likely(((__pyx_v_src) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_src, __pyx_memoryview_type))))) __PYX_ERR(1, 441, __pyx_L1_error) + if (!(likely(((__pyx_v_src) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_src, __pyx_memoryview_type))))) __PYX_ERR(1, 445, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_src), (&__pyx_v_src_slice)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(1, 445, __pyx_L1_error) - /* "View.MemoryView":442 + /* "View.MemoryView":446 * * memoryview_copy_contents(get_slice_from_memview(src, &src_slice)[0], * get_slice_from_memview(dst, &dst_slice)[0], # <<<<<<<<<<<<<< * src.ndim, dst.ndim, self.dtype_is_object) * */ - if (!(likely(((__pyx_v_dst) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_dst, __pyx_memoryview_type))))) __PYX_ERR(1, 442, __pyx_L1_error) + if (!(likely(((__pyx_v_dst) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_dst, __pyx_memoryview_type))))) __PYX_ERR(1, 446, __pyx_L1_error) + __pyx_t_2 = __pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_dst), (&__pyx_v_dst_slice)); if (unlikely(__pyx_t_2 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(1, 446, __pyx_L1_error) - /* "View.MemoryView":443 + /* "View.MemoryView":447 * memoryview_copy_contents(get_slice_from_memview(src, &src_slice)[0], * get_slice_from_memview(dst, &dst_slice)[0], * src.ndim, dst.ndim, self.dtype_is_object) # <<<<<<<<<<<<<< * * cdef setitem_slice_assign_scalar(self, memoryview dst, value): */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_src, __pyx_n_s_ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 443, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 443, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dst, __pyx_n_s_ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 443, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 443, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_src, __pyx_n_s_ndim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 447, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 447, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_dst, __pyx_n_s_ndim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 447, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 447, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "View.MemoryView":441 + /* "View.MemoryView":445 * cdef __Pyx_memviewslice src_slice * * memoryview_copy_contents(get_slice_from_memview(src, &src_slice)[0], # <<<<<<<<<<<<<< * get_slice_from_memview(dst, &dst_slice)[0], * src.ndim, dst.ndim, self.dtype_is_object) */ - __pyx_t_4 = __pyx_memoryview_copy_contents((__pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_src), (&__pyx_v_src_slice))[0]), (__pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_dst), (&__pyx_v_dst_slice))[0]), __pyx_t_2, __pyx_t_3, __pyx_v_self->dtype_is_object); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 441, __pyx_L1_error) + __pyx_t_6 = __pyx_memoryview_copy_contents((__pyx_t_1[0]), (__pyx_t_2[0]), __pyx_t_4, __pyx_t_5, __pyx_v_self->dtype_is_object); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 445, __pyx_L1_error) - /* "View.MemoryView":437 + /* "View.MemoryView":441 * return obj * * cdef setitem_slice_assignment(self, dst, src): # <<<<<<<<<<<<<< @@ -40448,7 +40491,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryvi __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("View.MemoryView.memoryview.setitem_slice_assignment", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; @@ -40457,7 +40500,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryvi return __pyx_r; } -/* "View.MemoryView":445 +/* "View.MemoryView":449 * src.ndim, dst.ndim, self.dtype_is_object) * * cdef setitem_slice_assign_scalar(self, memoryview dst, value): # <<<<<<<<<<<<<< @@ -40473,20 +40516,21 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor __Pyx_memviewslice __pyx_v_tmp_slice; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - int __pyx_t_3; + __Pyx_memviewslice *__pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; int __pyx_t_4; - char const *__pyx_t_5; - PyObject *__pyx_t_6 = NULL; + int __pyx_t_5; + char const *__pyx_t_6; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; __Pyx_RefNannySetupContext("setitem_slice_assign_scalar", 0); - /* "View.MemoryView":447 + /* "View.MemoryView":451 * cdef setitem_slice_assign_scalar(self, memoryview dst, value): * cdef int array[128] * cdef void *tmp = NULL # <<<<<<<<<<<<<< @@ -40495,26 +40539,27 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor */ __pyx_v_tmp = NULL; - /* "View.MemoryView":452 + /* "View.MemoryView":456 * cdef __Pyx_memviewslice *dst_slice * cdef __Pyx_memviewslice tmp_slice * dst_slice = get_slice_from_memview(dst, &tmp_slice) # <<<<<<<<<<<<<< * * if self.view.itemsize > sizeof(array): */ - __pyx_v_dst_slice = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_dst, (&__pyx_v_tmp_slice)); + __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_dst, (&__pyx_v_tmp_slice)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(1, 456, __pyx_L1_error) + __pyx_v_dst_slice = __pyx_t_1; - /* "View.MemoryView":454 + /* "View.MemoryView":458 * dst_slice = get_slice_from_memview(dst, &tmp_slice) * * if self.view.itemsize > sizeof(array): # <<<<<<<<<<<<<< * tmp = PyMem_Malloc(self.view.itemsize) * if tmp == NULL: */ - __pyx_t_1 = ((((size_t)__pyx_v_self->view.itemsize) > (sizeof(__pyx_v_array))) != 0); - if (__pyx_t_1) { + __pyx_t_2 = ((((size_t)__pyx_v_self->view.itemsize) > (sizeof(__pyx_v_array))) != 0); + if (__pyx_t_2) { - /* "View.MemoryView":455 + /* "View.MemoryView":459 * * if self.view.itemsize > sizeof(array): * tmp = PyMem_Malloc(self.view.itemsize) # <<<<<<<<<<<<<< @@ -40523,26 +40568,26 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor */ __pyx_v_tmp = PyMem_Malloc(__pyx_v_self->view.itemsize); - /* "View.MemoryView":456 + /* "View.MemoryView":460 * if self.view.itemsize > sizeof(array): * tmp = PyMem_Malloc(self.view.itemsize) * if tmp == NULL: # <<<<<<<<<<<<<< * raise MemoryError * item = tmp */ - __pyx_t_1 = ((__pyx_v_tmp == NULL) != 0); - if (unlikely(__pyx_t_1)) { + __pyx_t_2 = ((__pyx_v_tmp == NULL) != 0); + if (unlikely(__pyx_t_2)) { - /* "View.MemoryView":457 + /* "View.MemoryView":461 * tmp = PyMem_Malloc(self.view.itemsize) * if tmp == NULL: * raise MemoryError # <<<<<<<<<<<<<< * item = tmp * else: */ - PyErr_NoMemory(); __PYX_ERR(1, 457, __pyx_L1_error) + PyErr_NoMemory(); __PYX_ERR(1, 461, __pyx_L1_error) - /* "View.MemoryView":456 + /* "View.MemoryView":460 * if self.view.itemsize > sizeof(array): * tmp = PyMem_Malloc(self.view.itemsize) * if tmp == NULL: # <<<<<<<<<<<<<< @@ -40551,7 +40596,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor */ } - /* "View.MemoryView":458 + /* "View.MemoryView":462 * if tmp == NULL: * raise MemoryError * item = tmp # <<<<<<<<<<<<<< @@ -40560,7 +40605,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor */ __pyx_v_item = __pyx_v_tmp; - /* "View.MemoryView":454 + /* "View.MemoryView":458 * dst_slice = get_slice_from_memview(dst, &tmp_slice) * * if self.view.itemsize > sizeof(array): # <<<<<<<<<<<<<< @@ -40570,7 +40615,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor goto __pyx_L3; } - /* "View.MemoryView":460 + /* "View.MemoryView":464 * item = tmp * else: * item = array # <<<<<<<<<<<<<< @@ -40582,7 +40627,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor } __pyx_L3:; - /* "View.MemoryView":462 + /* "View.MemoryView":466 * item = array * * try: # <<<<<<<<<<<<<< @@ -40591,17 +40636,17 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor */ /*try:*/ { - /* "View.MemoryView":463 + /* "View.MemoryView":467 * * try: * if self.dtype_is_object: # <<<<<<<<<<<<<< * ( item)[0] = value * else: */ - __pyx_t_1 = (__pyx_v_self->dtype_is_object != 0); - if (__pyx_t_1) { + __pyx_t_2 = (__pyx_v_self->dtype_is_object != 0); + if (__pyx_t_2) { - /* "View.MemoryView":464 + /* "View.MemoryView":468 * try: * if self.dtype_is_object: * ( item)[0] = value # <<<<<<<<<<<<<< @@ -40610,7 +40655,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor */ (((PyObject **)__pyx_v_item)[0]) = ((PyObject *)__pyx_v_value); - /* "View.MemoryView":463 + /* "View.MemoryView":467 * * try: * if self.dtype_is_object: # <<<<<<<<<<<<<< @@ -40620,7 +40665,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor goto __pyx_L8; } - /* "View.MemoryView":466 + /* "View.MemoryView":470 * ( item)[0] = value * else: * self.assign_item_from_object( item, value) # <<<<<<<<<<<<<< @@ -40628,34 +40673,34 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor * */ /*else*/ { - __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, ((char *)__pyx_v_item), __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 466, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, ((char *)__pyx_v_item), __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 470, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_L8:; - /* "View.MemoryView":470 + /* "View.MemoryView":474 * * * if self.view.suboffsets != NULL: # <<<<<<<<<<<<<< * assert_direct_dimensions(self.view.suboffsets, self.view.ndim) * slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize, */ - __pyx_t_1 = ((__pyx_v_self->view.suboffsets != NULL) != 0); - if (__pyx_t_1) { + __pyx_t_2 = ((__pyx_v_self->view.suboffsets != NULL) != 0); + if (__pyx_t_2) { - /* "View.MemoryView":471 + /* "View.MemoryView":475 * * if self.view.suboffsets != NULL: * assert_direct_dimensions(self.view.suboffsets, self.view.ndim) # <<<<<<<<<<<<<< * slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize, * item, self.dtype_is_object) */ - __pyx_t_2 = assert_direct_dimensions(__pyx_v_self->view.suboffsets, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 471, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_3 = assert_direct_dimensions(__pyx_v_self->view.suboffsets, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 475, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "View.MemoryView":470 + /* "View.MemoryView":474 * * * if self.view.suboffsets != NULL: # <<<<<<<<<<<<<< @@ -40664,7 +40709,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor */ } - /* "View.MemoryView":472 + /* "View.MemoryView":476 * if self.view.suboffsets != NULL: * assert_direct_dimensions(self.view.suboffsets, self.view.ndim) * slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize, # <<<<<<<<<<<<<< @@ -40674,7 +40719,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor __pyx_memoryview_slice_assign_scalar(__pyx_v_dst_slice, __pyx_v_dst->view.ndim, __pyx_v_self->view.itemsize, __pyx_v_item, __pyx_v_self->dtype_is_object); } - /* "View.MemoryView":475 + /* "View.MemoryView":479 * item, self.dtype_is_object) * finally: * PyMem_Free(tmp) # <<<<<<<<<<<<<< @@ -40690,38 +40735,38 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign - __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); - if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0)) __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8); - __Pyx_XGOTREF(__pyx_t_6); + __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9); __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_8); __Pyx_XGOTREF(__pyx_t_9); __Pyx_XGOTREF(__pyx_t_10); __Pyx_XGOTREF(__pyx_t_11); - __pyx_t_3 = __pyx_lineno; __pyx_t_4 = __pyx_clineno; __pyx_t_5 = __pyx_filename; + __Pyx_XGOTREF(__pyx_t_12); + __pyx_t_4 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_6 = __pyx_filename; { PyMem_Free(__pyx_v_tmp); } if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_9); __Pyx_XGIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11); + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); } - __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_ErrRestore(__pyx_t_6, __pyx_t_7, __pyx_t_8); - __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; - __pyx_lineno = __pyx_t_3; __pyx_clineno = __pyx_t_4; __pyx_filename = __pyx_t_5; + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_ErrRestore(__pyx_t_7, __pyx_t_8, __pyx_t_9); + __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; + __pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_6; goto __pyx_L1_error; } __pyx_L7:; } - /* "View.MemoryView":445 + /* "View.MemoryView":449 * src.ndim, dst.ndim, self.dtype_is_object) * * cdef setitem_slice_assign_scalar(self, memoryview dst, value): # <<<<<<<<<<<<<< @@ -40733,7 +40778,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor __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_AddTraceback("View.MemoryView.memoryview.setitem_slice_assign_scalar", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; @@ -40742,7 +40787,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor return __pyx_r; } -/* "View.MemoryView":477 +/* "View.MemoryView":481 * PyMem_Free(tmp) * * cdef setitem_indexed(self, index, value): # <<<<<<<<<<<<<< @@ -40758,28 +40803,28 @@ static PyObject *__pyx_memoryview_setitem_indexed(struct __pyx_memoryview_obj *_ PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("setitem_indexed", 0); - /* "View.MemoryView":478 + /* "View.MemoryView":482 * * cdef setitem_indexed(self, index, value): * cdef char *itemp = self.get_item_pointer(index) # <<<<<<<<<<<<<< * self.assign_item_from_object(itemp, value) * */ - __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_index); if (unlikely(__pyx_t_1 == ((char *)NULL))) __PYX_ERR(1, 478, __pyx_L1_error) + __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_index); if (unlikely(__pyx_t_1 == ((char *)NULL))) __PYX_ERR(1, 482, __pyx_L1_error) __pyx_v_itemp = __pyx_t_1; - /* "View.MemoryView":479 + /* "View.MemoryView":483 * cdef setitem_indexed(self, index, value): * cdef char *itemp = self.get_item_pointer(index) * self.assign_item_from_object(itemp, value) # <<<<<<<<<<<<<< * * cdef convert_item_to_object(self, char *itemp): */ - __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 479, __pyx_L1_error) + __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 483, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":477 + /* "View.MemoryView":481 * PyMem_Free(tmp) * * cdef setitem_indexed(self, index, value): # <<<<<<<<<<<<<< @@ -40800,7 +40845,7 @@ static PyObject *__pyx_memoryview_setitem_indexed(struct __pyx_memoryview_obj *_ return __pyx_r; } -/* "View.MemoryView":481 +/* "View.MemoryView":485 * self.assign_item_from_object(itemp, value) * * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< @@ -40827,31 +40872,31 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview int __pyx_t_11; __Pyx_RefNannySetupContext("convert_item_to_object", 0); - /* "View.MemoryView":484 + /* "View.MemoryView":488 * """Only used if instantiated manually by the user, or if Cython doesn't * know how to convert the type""" * import struct # <<<<<<<<<<<<<< * cdef bytes bytesitem * */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_struct, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 484, __pyx_L1_error) + __pyx_t_1 = __Pyx_Import(__pyx_n_s_struct, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_struct = __pyx_t_1; __pyx_t_1 = 0; - /* "View.MemoryView":487 + /* "View.MemoryView":491 * cdef bytes bytesitem * * bytesitem = itemp[:self.view.itemsize] # <<<<<<<<<<<<<< * try: * result = struct.unpack(self.view.format, bytesitem) */ - __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_itemp + 0, __pyx_v_self->view.itemsize - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 487, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_itemp + 0, __pyx_v_self->view.itemsize - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 491, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_bytesitem = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "View.MemoryView":488 + /* "View.MemoryView":492 * * bytesitem = itemp[:self.view.itemsize] * try: # <<<<<<<<<<<<<< @@ -40867,16 +40912,16 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview __Pyx_XGOTREF(__pyx_t_4); /*try:*/ { - /* "View.MemoryView":489 + /* "View.MemoryView":493 * bytesitem = itemp[:self.view.itemsize] * try: * result = struct.unpack(self.view.format, bytesitem) # <<<<<<<<<<<<<< * except struct.error: * raise ValueError("Unable to convert item to object") */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_unpack); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 489, __pyx_L3_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_unpack); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 493, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 489, __pyx_L3_error) + __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 493, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; @@ -40893,7 +40938,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_6, __pyx_v_bytesitem}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 489, __pyx_L3_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 493, __pyx_L3_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; @@ -40902,14 +40947,14 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_6, __pyx_v_bytesitem}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 489, __pyx_L3_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 493, __pyx_L3_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { - __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 489, __pyx_L3_error) + __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 493, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; @@ -40920,7 +40965,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview __Pyx_GIVEREF(__pyx_v_bytesitem); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_v_bytesitem); __pyx_t_6 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 489, __pyx_L3_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 493, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } @@ -40928,7 +40973,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview __pyx_v_result = __pyx_t_1; __pyx_t_1 = 0; - /* "View.MemoryView":488 + /* "View.MemoryView":492 * * bytesitem = itemp[:self.view.itemsize] * try: # <<<<<<<<<<<<<< @@ -40937,7 +40982,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview */ } - /* "View.MemoryView":493 + /* "View.MemoryView":497 * raise ValueError("Unable to convert item to object") * else: * if len(self.view.format) == 1: # <<<<<<<<<<<<<< @@ -40949,7 +40994,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview __pyx_t_11 = ((__pyx_t_10 == 1) != 0); if (__pyx_t_11) { - /* "View.MemoryView":494 + /* "View.MemoryView":498 * else: * if len(self.view.format) == 1: * return result[0] # <<<<<<<<<<<<<< @@ -40957,13 +41002,13 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_result, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 494, __pyx_L5_except_error) + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_result, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 498, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L6_except_return; - /* "View.MemoryView":493 + /* "View.MemoryView":497 * raise ValueError("Unable to convert item to object") * else: * if len(self.view.format) == 1: # <<<<<<<<<<<<<< @@ -40972,7 +41017,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview */ } - /* "View.MemoryView":495 + /* "View.MemoryView":499 * if len(self.view.format) == 1: * return result[0] * return result # <<<<<<<<<<<<<< @@ -40991,7 +41036,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - /* "View.MemoryView":490 + /* "View.MemoryView":494 * try: * result = struct.unpack(self.view.format, bytesitem) * except struct.error: # <<<<<<<<<<<<<< @@ -40999,7 +41044,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview * else: */ __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_5, &__pyx_t_9); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_error); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 490, __pyx_L5_except_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_error); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 494, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; @@ -41007,28 +41052,28 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview __pyx_t_1 = 0; __pyx_t_5 = 0; __pyx_t_9 = 0; if (__pyx_t_8) { __Pyx_AddTraceback("View.MemoryView.memoryview.convert_item_to_object", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_5, &__pyx_t_1) < 0) __PYX_ERR(1, 490, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_5, &__pyx_t_1) < 0) __PYX_ERR(1, 494, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_1); - /* "View.MemoryView":491 + /* "View.MemoryView":495 * result = struct.unpack(self.view.format, bytesitem) * except struct.error: * raise ValueError("Unable to convert item to object") # <<<<<<<<<<<<<< * else: * if len(self.view.format) == 1: */ - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__60, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 491, __pyx_L5_except_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__60, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 495, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __PYX_ERR(1, 491, __pyx_L5_except_error) + __PYX_ERR(1, 495, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "View.MemoryView":488 + /* "View.MemoryView":492 * * bytesitem = itemp[:self.view.itemsize] * try: # <<<<<<<<<<<<<< @@ -41048,7 +41093,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview goto __pyx_L0; } - /* "View.MemoryView":481 + /* "View.MemoryView":485 * self.assign_item_from_object(itemp, value) * * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< @@ -41074,7 +41119,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview return __pyx_r; } -/* "View.MemoryView":497 +/* "View.MemoryView":501 * return result * * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< @@ -41105,19 +41150,19 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie char *__pyx_t_14; __Pyx_RefNannySetupContext("assign_item_from_object", 0); - /* "View.MemoryView":500 + /* "View.MemoryView":504 * """Only used if instantiated manually by the user, or if Cython doesn't * know how to convert the type""" * import struct # <<<<<<<<<<<<<< * cdef char c * cdef bytes bytesvalue */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_struct, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 500, __pyx_L1_error) + __pyx_t_1 = __Pyx_Import(__pyx_n_s_struct, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 504, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_struct = __pyx_t_1; __pyx_t_1 = 0; - /* "View.MemoryView":505 + /* "View.MemoryView":509 * cdef Py_ssize_t i * * if isinstance(value, tuple): # <<<<<<<<<<<<<< @@ -41128,37 +41173,37 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { - /* "View.MemoryView":506 + /* "View.MemoryView":510 * * if isinstance(value, tuple): * bytesvalue = struct.pack(self.view.format, *value) # <<<<<<<<<<<<<< * else: * bytesvalue = struct.pack(self.view.format, value) */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_pack); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 506, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_pack); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 506, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 506, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 506, __pyx_L1_error) + __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 506, __pyx_L1_error) + __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 506, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(1, 506, __pyx_L1_error) + if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(1, 510, __pyx_L1_error) __pyx_v_bytesvalue = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0; - /* "View.MemoryView":505 + /* "View.MemoryView":509 * cdef Py_ssize_t i * * if isinstance(value, tuple): # <<<<<<<<<<<<<< @@ -41168,7 +41213,7 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie goto __pyx_L3; } - /* "View.MemoryView":508 + /* "View.MemoryView":512 * bytesvalue = struct.pack(self.view.format, *value) * else: * bytesvalue = struct.pack(self.view.format, value) # <<<<<<<<<<<<<< @@ -41176,9 +41221,9 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie * for i, c in enumerate(bytesvalue): */ /*else*/ { - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_pack); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 508, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_pack); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 512, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 508, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 512, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = NULL; __pyx_t_7 = 0; @@ -41195,7 +41240,7 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_1, __pyx_v_value}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 508, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 512, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -41204,14 +41249,14 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_1, __pyx_v_value}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 508, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 512, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { - __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 508, __pyx_L1_error) + __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 512, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL; @@ -41222,18 +41267,18 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie __Pyx_GIVEREF(__pyx_v_value); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_value); __pyx_t_1 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 508, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 512, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(1, 508, __pyx_L1_error) + if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(1, 512, __pyx_L1_error) __pyx_v_bytesvalue = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0; } __pyx_L3:; - /* "View.MemoryView":510 + /* "View.MemoryView":514 * bytesvalue = struct.pack(self.view.format, value) * * for i, c in enumerate(bytesvalue): # <<<<<<<<<<<<<< @@ -41243,7 +41288,7 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie __pyx_t_9 = 0; if (unlikely(__pyx_v_bytesvalue == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' is not iterable"); - __PYX_ERR(1, 510, __pyx_L1_error) + __PYX_ERR(1, 514, __pyx_L1_error) } __Pyx_INCREF(__pyx_v_bytesvalue); __pyx_t_10 = __pyx_v_bytesvalue; @@ -41253,7 +41298,7 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie __pyx_t_11 = __pyx_t_14; __pyx_v_c = (__pyx_t_11[0]); - /* "View.MemoryView":511 + /* "View.MemoryView":515 * * for i, c in enumerate(bytesvalue): * itemp[i] = c # <<<<<<<<<<<<<< @@ -41262,7 +41307,7 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie */ __pyx_v_i = __pyx_t_9; - /* "View.MemoryView":510 + /* "View.MemoryView":514 * bytesvalue = struct.pack(self.view.format, value) * * for i, c in enumerate(bytesvalue): # <<<<<<<<<<<<<< @@ -41271,7 +41316,7 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie */ __pyx_t_9 = (__pyx_t_9 + 1); - /* "View.MemoryView":511 + /* "View.MemoryView":515 * * for i, c in enumerate(bytesvalue): * itemp[i] = c # <<<<<<<<<<<<<< @@ -41282,7 +41327,7 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie } __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - /* "View.MemoryView":497 + /* "View.MemoryView":501 * return result * * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< @@ -41310,7 +41355,7 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie return __pyx_r; } -/* "View.MemoryView":514 +/* "View.MemoryView":518 * * @cname('getbuffer') * def __getbuffer__(self, Py_buffer *info, int flags): # <<<<<<<<<<<<<< @@ -41350,7 +41395,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None); __Pyx_GIVEREF(__pyx_v_info->obj); - /* "View.MemoryView":515 + /* "View.MemoryView":519 * @cname('getbuffer') * def __getbuffer__(self, Py_buffer *info, int flags): * if flags & PyBUF_WRITABLE and self.view.readonly: # <<<<<<<<<<<<<< @@ -41368,20 +41413,20 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_L4_bool_binop_done:; if (unlikely(__pyx_t_1)) { - /* "View.MemoryView":516 + /* "View.MemoryView":520 * def __getbuffer__(self, Py_buffer *info, int flags): * if flags & PyBUF_WRITABLE and self.view.readonly: * raise ValueError("Cannot create writable memory view from read-only memoryview") # <<<<<<<<<<<<<< * * if flags & PyBUF_ND: */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__61, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 516, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__61, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 520, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(1, 516, __pyx_L1_error) + __PYX_ERR(1, 520, __pyx_L1_error) - /* "View.MemoryView":515 + /* "View.MemoryView":519 * @cname('getbuffer') * def __getbuffer__(self, Py_buffer *info, int flags): * if flags & PyBUF_WRITABLE and self.view.readonly: # <<<<<<<<<<<<<< @@ -41390,7 +41435,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu */ } - /* "View.MemoryView":518 + /* "View.MemoryView":522 * raise ValueError("Cannot create writable memory view from read-only memoryview") * * if flags & PyBUF_ND: # <<<<<<<<<<<<<< @@ -41400,7 +41445,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_1 = ((__pyx_v_flags & PyBUF_ND) != 0); if (__pyx_t_1) { - /* "View.MemoryView":519 + /* "View.MemoryView":523 * * if flags & PyBUF_ND: * info.shape = self.view.shape # <<<<<<<<<<<<<< @@ -41410,7 +41455,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_4 = __pyx_v_self->view.shape; __pyx_v_info->shape = __pyx_t_4; - /* "View.MemoryView":518 + /* "View.MemoryView":522 * raise ValueError("Cannot create writable memory view from read-only memoryview") * * if flags & PyBUF_ND: # <<<<<<<<<<<<<< @@ -41420,7 +41465,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu goto __pyx_L6; } - /* "View.MemoryView":521 + /* "View.MemoryView":525 * info.shape = self.view.shape * else: * info.shape = NULL # <<<<<<<<<<<<<< @@ -41432,7 +41477,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu } __pyx_L6:; - /* "View.MemoryView":523 + /* "View.MemoryView":527 * info.shape = NULL * * if flags & PyBUF_STRIDES: # <<<<<<<<<<<<<< @@ -41442,7 +41487,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_1 = ((__pyx_v_flags & PyBUF_STRIDES) != 0); if (__pyx_t_1) { - /* "View.MemoryView":524 + /* "View.MemoryView":528 * * if flags & PyBUF_STRIDES: * info.strides = self.view.strides # <<<<<<<<<<<<<< @@ -41452,7 +41497,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_4 = __pyx_v_self->view.strides; __pyx_v_info->strides = __pyx_t_4; - /* "View.MemoryView":523 + /* "View.MemoryView":527 * info.shape = NULL * * if flags & PyBUF_STRIDES: # <<<<<<<<<<<<<< @@ -41462,7 +41507,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu goto __pyx_L7; } - /* "View.MemoryView":526 + /* "View.MemoryView":530 * info.strides = self.view.strides * else: * info.strides = NULL # <<<<<<<<<<<<<< @@ -41474,7 +41519,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu } __pyx_L7:; - /* "View.MemoryView":528 + /* "View.MemoryView":532 * info.strides = NULL * * if flags & PyBUF_INDIRECT: # <<<<<<<<<<<<<< @@ -41484,7 +41529,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_1 = ((__pyx_v_flags & PyBUF_INDIRECT) != 0); if (__pyx_t_1) { - /* "View.MemoryView":529 + /* "View.MemoryView":533 * * if flags & PyBUF_INDIRECT: * info.suboffsets = self.view.suboffsets # <<<<<<<<<<<<<< @@ -41494,7 +41539,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_4 = __pyx_v_self->view.suboffsets; __pyx_v_info->suboffsets = __pyx_t_4; - /* "View.MemoryView":528 + /* "View.MemoryView":532 * info.strides = NULL * * if flags & PyBUF_INDIRECT: # <<<<<<<<<<<<<< @@ -41504,7 +41549,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu goto __pyx_L8; } - /* "View.MemoryView":531 + /* "View.MemoryView":535 * info.suboffsets = self.view.suboffsets * else: * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -41516,7 +41561,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu } __pyx_L8:; - /* "View.MemoryView":533 + /* "View.MemoryView":537 * info.suboffsets = NULL * * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< @@ -41526,7 +41571,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) != 0); if (__pyx_t_1) { - /* "View.MemoryView":534 + /* "View.MemoryView":538 * * if flags & PyBUF_FORMAT: * info.format = self.view.format # <<<<<<<<<<<<<< @@ -41536,7 +41581,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_5 = __pyx_v_self->view.format; __pyx_v_info->format = __pyx_t_5; - /* "View.MemoryView":533 + /* "View.MemoryView":537 * info.suboffsets = NULL * * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< @@ -41546,7 +41591,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu goto __pyx_L9; } - /* "View.MemoryView":536 + /* "View.MemoryView":540 * info.format = self.view.format * else: * info.format = NULL # <<<<<<<<<<<<<< @@ -41558,7 +41603,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu } __pyx_L9:; - /* "View.MemoryView":538 + /* "View.MemoryView":542 * info.format = NULL * * info.buf = self.view.buf # <<<<<<<<<<<<<< @@ -41568,7 +41613,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_6 = __pyx_v_self->view.buf; __pyx_v_info->buf = __pyx_t_6; - /* "View.MemoryView":539 + /* "View.MemoryView":543 * * info.buf = self.view.buf * info.ndim = self.view.ndim # <<<<<<<<<<<<<< @@ -41578,7 +41623,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_7 = __pyx_v_self->view.ndim; __pyx_v_info->ndim = __pyx_t_7; - /* "View.MemoryView":540 + /* "View.MemoryView":544 * info.buf = self.view.buf * info.ndim = self.view.ndim * info.itemsize = self.view.itemsize # <<<<<<<<<<<<<< @@ -41588,7 +41633,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_8 = __pyx_v_self->view.itemsize; __pyx_v_info->itemsize = __pyx_t_8; - /* "View.MemoryView":541 + /* "View.MemoryView":545 * info.ndim = self.view.ndim * info.itemsize = self.view.itemsize * info.len = self.view.len # <<<<<<<<<<<<<< @@ -41598,7 +41643,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_8 = __pyx_v_self->view.len; __pyx_v_info->len = __pyx_t_8; - /* "View.MemoryView":542 + /* "View.MemoryView":546 * info.itemsize = self.view.itemsize * info.len = self.view.len * info.readonly = self.view.readonly # <<<<<<<<<<<<<< @@ -41608,7 +41653,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_1 = __pyx_v_self->view.readonly; __pyx_v_info->readonly = __pyx_t_1; - /* "View.MemoryView":543 + /* "View.MemoryView":547 * info.len = self.view.len * info.readonly = self.view.readonly * info.obj = self # <<<<<<<<<<<<<< @@ -41621,7 +41666,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = ((PyObject *)__pyx_v_self); - /* "View.MemoryView":514 + /* "View.MemoryView":518 * * @cname('getbuffer') * def __getbuffer__(self, Py_buffer *info, int flags): # <<<<<<<<<<<<<< @@ -41651,7 +41696,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu return __pyx_r; } -/* "View.MemoryView":549 +/* "View.MemoryView":553 * * @property * def T(self): # <<<<<<<<<<<<<< @@ -41680,29 +41725,29 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct _ int __pyx_t_2; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":550 + /* "View.MemoryView":554 * @property * def T(self): * cdef _memoryviewslice result = memoryview_copy(self) # <<<<<<<<<<<<<< * transpose_memslice(&result.from_slice) * return result */ - __pyx_t_1 = __pyx_memoryview_copy_object(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 550, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_copy_object(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 554, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_memoryviewslice_type))))) __PYX_ERR(1, 550, __pyx_L1_error) + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_memoryviewslice_type))))) __PYX_ERR(1, 554, __pyx_L1_error) __pyx_v_result = ((struct __pyx_memoryviewslice_obj *)__pyx_t_1); __pyx_t_1 = 0; - /* "View.MemoryView":551 + /* "View.MemoryView":555 * def T(self): * cdef _memoryviewslice result = memoryview_copy(self) * transpose_memslice(&result.from_slice) # <<<<<<<<<<<<<< * return result * */ - __pyx_t_2 = __pyx_memslice_transpose((&__pyx_v_result->from_slice)); if (unlikely(__pyx_t_2 == ((int)0))) __PYX_ERR(1, 551, __pyx_L1_error) + __pyx_t_2 = __pyx_memslice_transpose((&__pyx_v_result->from_slice)); if (unlikely(__pyx_t_2 == ((int)0))) __PYX_ERR(1, 555, __pyx_L1_error) - /* "View.MemoryView":552 + /* "View.MemoryView":556 * cdef _memoryviewslice result = memoryview_copy(self) * transpose_memslice(&result.from_slice) * return result # <<<<<<<<<<<<<< @@ -41714,7 +41759,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct _ __pyx_r = ((PyObject *)__pyx_v_result); goto __pyx_L0; - /* "View.MemoryView":549 + /* "View.MemoryView":553 * * @property * def T(self): # <<<<<<<<<<<<<< @@ -41734,7 +41779,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct _ return __pyx_r; } -/* "View.MemoryView":555 +/* "View.MemoryView":559 * * @property * def base(self): # <<<<<<<<<<<<<< @@ -41760,7 +41805,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(struc __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":556 + /* "View.MemoryView":560 * @property * def base(self): * return self.obj # <<<<<<<<<<<<<< @@ -41772,7 +41817,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(struc __pyx_r = __pyx_v_self->obj; goto __pyx_L0; - /* "View.MemoryView":555 + /* "View.MemoryView":559 * * @property * def base(self): # <<<<<<<<<<<<<< @@ -41787,7 +41832,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(struc return __pyx_r; } -/* "View.MemoryView":559 +/* "View.MemoryView":563 * * @property * def shape(self): # <<<<<<<<<<<<<< @@ -41819,7 +41864,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(stru PyObject *__pyx_t_5 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":560 + /* "View.MemoryView":564 * @property * def shape(self): * return tuple([length for length in self.view.shape[:self.view.ndim]]) # <<<<<<<<<<<<<< @@ -41827,25 +41872,25 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(stru * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 560, __pyx_L1_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = (__pyx_v_self->view.shape + __pyx_v_self->view.ndim); for (__pyx_t_4 = __pyx_v_self->view.shape; __pyx_t_4 < __pyx_t_3; __pyx_t_4++) { __pyx_t_2 = __pyx_t_4; __pyx_v_length = (__pyx_t_2[0]); - __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 560, __pyx_L1_error) + __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(1, 560, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(1, 564, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } - __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 560, __pyx_L1_error) + __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0; - /* "View.MemoryView":559 + /* "View.MemoryView":563 * * @property * def shape(self): # <<<<<<<<<<<<<< @@ -41865,7 +41910,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(stru return __pyx_r; } -/* "View.MemoryView":563 +/* "View.MemoryView":567 * * @property * def strides(self): # <<<<<<<<<<<<<< @@ -41898,7 +41943,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st PyObject *__pyx_t_6 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":564 + /* "View.MemoryView":568 * @property * def strides(self): * if self.view.strides == NULL: # <<<<<<<<<<<<<< @@ -41908,20 +41953,20 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st __pyx_t_1 = ((__pyx_v_self->view.strides == NULL) != 0); if (unlikely(__pyx_t_1)) { - /* "View.MemoryView":566 + /* "View.MemoryView":570 * if self.view.strides == NULL: * * raise ValueError("Buffer view does not expose strides") # <<<<<<<<<<<<<< * * return tuple([stride for stride in self.view.strides[:self.view.ndim]]) */ - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__62, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 566, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__62, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(1, 566, __pyx_L1_error) + __PYX_ERR(1, 570, __pyx_L1_error) - /* "View.MemoryView":564 + /* "View.MemoryView":568 * @property * def strides(self): * if self.view.strides == NULL: # <<<<<<<<<<<<<< @@ -41930,7 +41975,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st */ } - /* "View.MemoryView":568 + /* "View.MemoryView":572 * raise ValueError("Buffer view does not expose strides") * * return tuple([stride for stride in self.view.strides[:self.view.ndim]]) # <<<<<<<<<<<<<< @@ -41938,25 +41983,25 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 568, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 572, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = (__pyx_v_self->view.strides + __pyx_v_self->view.ndim); for (__pyx_t_5 = __pyx_v_self->view.strides; __pyx_t_5 < __pyx_t_4; __pyx_t_5++) { __pyx_t_3 = __pyx_t_5; __pyx_v_stride = (__pyx_t_3[0]); - __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_stride); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 568, __pyx_L1_error) + __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_stride); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 572, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(1, 568, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(1, 572, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } - __pyx_t_6 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 568, __pyx_L1_error) + __pyx_t_6 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 572, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L0; - /* "View.MemoryView":563 + /* "View.MemoryView":567 * * @property * def strides(self): # <<<<<<<<<<<<<< @@ -41976,7 +42021,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st return __pyx_r; } -/* "View.MemoryView":571 +/* "View.MemoryView":575 * * @property * def suboffsets(self): # <<<<<<<<<<<<<< @@ -42009,7 +42054,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_ Py_ssize_t *__pyx_t_6; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":572 + /* "View.MemoryView":576 * @property * def suboffsets(self): * if self.view.suboffsets == NULL: # <<<<<<<<<<<<<< @@ -42019,7 +42064,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_ __pyx_t_1 = ((__pyx_v_self->view.suboffsets == NULL) != 0); if (__pyx_t_1) { - /* "View.MemoryView":573 + /* "View.MemoryView":577 * def suboffsets(self): * if self.view.suboffsets == NULL: * return (-1,) * self.view.ndim # <<<<<<<<<<<<<< @@ -42027,16 +42072,16 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_ * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 573, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 577, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__63, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 573, __pyx_L1_error) + __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__63, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 577, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "View.MemoryView":572 + /* "View.MemoryView":576 * @property * def suboffsets(self): * if self.view.suboffsets == NULL: # <<<<<<<<<<<<<< @@ -42045,7 +42090,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_ */ } - /* "View.MemoryView":575 + /* "View.MemoryView":579 * return (-1,) * self.view.ndim * * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) # <<<<<<<<<<<<<< @@ -42053,25 +42098,25 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_ * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 575, __pyx_L1_error) + __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 579, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = (__pyx_v_self->view.suboffsets + __pyx_v_self->view.ndim); for (__pyx_t_6 = __pyx_v_self->view.suboffsets; __pyx_t_6 < __pyx_t_5; __pyx_t_6++) { __pyx_t_4 = __pyx_t_6; __pyx_v_suboffset = (__pyx_t_4[0]); - __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_suboffset); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 575, __pyx_L1_error) + __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_suboffset); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 579, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_2))) __PYX_ERR(1, 575, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_2))) __PYX_ERR(1, 579, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } - __pyx_t_2 = PyList_AsTuple(((PyObject*)__pyx_t_3)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 575, __pyx_L1_error) + __pyx_t_2 = PyList_AsTuple(((PyObject*)__pyx_t_3)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 579, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":571 + /* "View.MemoryView":575 * * @property * def suboffsets(self): # <<<<<<<<<<<<<< @@ -42091,7 +42136,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_ return __pyx_r; } -/* "View.MemoryView":578 +/* "View.MemoryView":582 * * @property * def ndim(self): # <<<<<<<<<<<<<< @@ -42118,7 +42163,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(struc PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":579 + /* "View.MemoryView":583 * @property * def ndim(self): * return self.view.ndim # <<<<<<<<<<<<<< @@ -42126,13 +42171,13 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(struc * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 579, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "View.MemoryView":578 + /* "View.MemoryView":582 * * @property * def ndim(self): # <<<<<<<<<<<<<< @@ -42151,7 +42196,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(struc return __pyx_r; } -/* "View.MemoryView":582 +/* "View.MemoryView":586 * * @property * def itemsize(self): # <<<<<<<<<<<<<< @@ -42178,7 +42223,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(s PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":583 + /* "View.MemoryView":587 * @property * def itemsize(self): * return self.view.itemsize # <<<<<<<<<<<<<< @@ -42186,13 +42231,13 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(s * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 583, __pyx_L1_error) + __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 587, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "View.MemoryView":582 + /* "View.MemoryView":586 * * @property * def itemsize(self): # <<<<<<<<<<<<<< @@ -42211,7 +42256,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(s return __pyx_r; } -/* "View.MemoryView":586 +/* "View.MemoryView":590 * * @property * def nbytes(self): # <<<<<<<<<<<<<< @@ -42240,7 +42285,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(str PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":587 + /* "View.MemoryView":591 * @property * def nbytes(self): * return self.size * self.view.itemsize # <<<<<<<<<<<<<< @@ -42248,11 +42293,11 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(str * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 587, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 587, __pyx_L1_error) + __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 587, __pyx_L1_error) + __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -42260,7 +42305,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(str __pyx_t_3 = 0; goto __pyx_L0; - /* "View.MemoryView":586 + /* "View.MemoryView":590 * * @property * def nbytes(self): # <<<<<<<<<<<<<< @@ -42281,7 +42326,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(str return __pyx_r; } -/* "View.MemoryView":590 +/* "View.MemoryView":594 * * @property * def size(self): # <<<<<<<<<<<<<< @@ -42315,7 +42360,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc PyObject *__pyx_t_6 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":591 + /* "View.MemoryView":595 * @property * def size(self): * if self._size is None: # <<<<<<<<<<<<<< @@ -42326,7 +42371,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "View.MemoryView":592 + /* "View.MemoryView":596 * def size(self): * if self._size is None: * result = 1 # <<<<<<<<<<<<<< @@ -42336,7 +42381,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc __Pyx_INCREF(__pyx_int_1); __pyx_v_result = __pyx_int_1; - /* "View.MemoryView":594 + /* "View.MemoryView":598 * result = 1 * * for length in self.view.shape[:self.view.ndim]: # <<<<<<<<<<<<<< @@ -42346,25 +42391,25 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc __pyx_t_4 = (__pyx_v_self->view.shape + __pyx_v_self->view.ndim); for (__pyx_t_5 = __pyx_v_self->view.shape; __pyx_t_5 < __pyx_t_4; __pyx_t_5++) { __pyx_t_3 = __pyx_t_5; - __pyx_t_6 = PyInt_FromSsize_t((__pyx_t_3[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 594, __pyx_L1_error) + __pyx_t_6 = PyInt_FromSsize_t((__pyx_t_3[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_XDECREF_SET(__pyx_v_length, __pyx_t_6); __pyx_t_6 = 0; - /* "View.MemoryView":595 + /* "View.MemoryView":599 * * for length in self.view.shape[:self.view.ndim]: * result *= length # <<<<<<<<<<<<<< * * self._size = result */ - __pyx_t_6 = PyNumber_InPlaceMultiply(__pyx_v_result, __pyx_v_length); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 595, __pyx_L1_error) + __pyx_t_6 = PyNumber_InPlaceMultiply(__pyx_v_result, __pyx_v_length); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_6); __pyx_t_6 = 0; } - /* "View.MemoryView":597 + /* "View.MemoryView":601 * result *= length * * self._size = result # <<<<<<<<<<<<<< @@ -42377,7 +42422,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc __Pyx_DECREF(__pyx_v_self->_size); __pyx_v_self->_size = __pyx_v_result; - /* "View.MemoryView":591 + /* "View.MemoryView":595 * @property * def size(self): * if self._size is None: # <<<<<<<<<<<<<< @@ -42386,7 +42431,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc */ } - /* "View.MemoryView":599 + /* "View.MemoryView":603 * self._size = result * * return self._size # <<<<<<<<<<<<<< @@ -42398,7 +42443,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc __pyx_r = __pyx_v_self->_size; goto __pyx_L0; - /* "View.MemoryView":590 + /* "View.MemoryView":594 * * @property * def size(self): # <<<<<<<<<<<<<< @@ -42419,7 +42464,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc return __pyx_r; } -/* "View.MemoryView":601 +/* "View.MemoryView":605 * return self._size * * def __len__(self): # <<<<<<<<<<<<<< @@ -42446,7 +42491,7 @@ static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_1 int __pyx_t_1; __Pyx_RefNannySetupContext("__len__", 0); - /* "View.MemoryView":602 + /* "View.MemoryView":606 * * def __len__(self): * if self.view.ndim >= 1: # <<<<<<<<<<<<<< @@ -42456,7 +42501,7 @@ static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_1 __pyx_t_1 = ((__pyx_v_self->view.ndim >= 1) != 0); if (__pyx_t_1) { - /* "View.MemoryView":603 + /* "View.MemoryView":607 * def __len__(self): * if self.view.ndim >= 1: * return self.view.shape[0] # <<<<<<<<<<<<<< @@ -42466,7 +42511,7 @@ static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_1 __pyx_r = (__pyx_v_self->view.shape[0]); goto __pyx_L0; - /* "View.MemoryView":602 + /* "View.MemoryView":606 * * def __len__(self): * if self.view.ndim >= 1: # <<<<<<<<<<<<<< @@ -42475,7 +42520,7 @@ static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_1 */ } - /* "View.MemoryView":605 + /* "View.MemoryView":609 * return self.view.shape[0] * * return 0 # <<<<<<<<<<<<<< @@ -42485,7 +42530,7 @@ static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_1 __pyx_r = 0; goto __pyx_L0; - /* "View.MemoryView":601 + /* "View.MemoryView":605 * return self._size * * def __len__(self): # <<<<<<<<<<<<<< @@ -42499,7 +42544,7 @@ static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_1 return __pyx_r; } -/* "View.MemoryView":607 +/* "View.MemoryView":611 * return 0 * * def __repr__(self): # <<<<<<<<<<<<<< @@ -42528,7 +42573,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12 PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("__repr__", 0); - /* "View.MemoryView":608 + /* "View.MemoryView":612 * * def __repr__(self): * return "" % (self.base.__class__.__name__, # <<<<<<<<<<<<<< @@ -42536,33 +42581,33 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12 * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 608, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 608, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 608, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":609 + /* "View.MemoryView":613 * def __repr__(self): * return "" % (self.base.__class__.__name__, * id(self)) # <<<<<<<<<<<<<< * * def __str__(self): */ - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 609, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - /* "View.MemoryView":608 + /* "View.MemoryView":612 * * def __repr__(self): * return "" % (self.base.__class__.__name__, # <<<<<<<<<<<<<< * id(self)) * */ - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 608, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); @@ -42570,14 +42615,14 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12 PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_1 = 0; __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_MemoryView_of_r_at_0x_x, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 608, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_MemoryView_of_r_at_0x_x, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":607 + /* "View.MemoryView":611 * return 0 * * def __repr__(self): # <<<<<<<<<<<<<< @@ -42598,7 +42643,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12 return __pyx_r; } -/* "View.MemoryView":611 +/* "View.MemoryView":615 * id(self)) * * def __str__(self): # <<<<<<<<<<<<<< @@ -42626,7 +42671,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14 PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("__str__", 0); - /* "View.MemoryView":612 + /* "View.MemoryView":616 * * def __str__(self): * return "" % (self.base.__class__.__name__,) # <<<<<<<<<<<<<< @@ -42634,27 +42679,27 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14 * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 612, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 612, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 612, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 612, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 616, __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 = __Pyx_PyString_Format(__pyx_kp_s_MemoryView_of_r_object, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 612, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_MemoryView_of_r_object, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "View.MemoryView":611 + /* "View.MemoryView":615 * id(self)) * * def __str__(self): # <<<<<<<<<<<<<< @@ -42674,7 +42719,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14 return __pyx_r; } -/* "View.MemoryView":615 +/* "View.MemoryView":619 * * * def is_c_contig(self): # <<<<<<<<<<<<<< @@ -42700,19 +42745,21 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16 __Pyx_memviewslice __pyx_v_tmp; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; + __Pyx_memviewslice *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("is_c_contig", 0); - /* "View.MemoryView":618 + /* "View.MemoryView":622 * cdef __Pyx_memviewslice *mslice * cdef __Pyx_memviewslice tmp * mslice = get_slice_from_memview(self, &tmp) # <<<<<<<<<<<<<< * return slice_is_contig(mslice[0], 'C', self.view.ndim) * */ - __pyx_v_mslice = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp)); + __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(1, 622, __pyx_L1_error) + __pyx_v_mslice = __pyx_t_1; - /* "View.MemoryView":619 + /* "View.MemoryView":623 * cdef __Pyx_memviewslice tmp * mslice = get_slice_from_memview(self, &tmp) * return slice_is_contig(mslice[0], 'C', self.view.ndim) # <<<<<<<<<<<<<< @@ -42720,13 +42767,13 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16 * def is_f_contig(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'C', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 619, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'C', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 623, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":615 + /* "View.MemoryView":619 * * * def is_c_contig(self): # <<<<<<<<<<<<<< @@ -42736,7 +42783,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16 /* function exit code */ __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("View.MemoryView.memoryview.is_c_contig", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -42745,7 +42792,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16 return __pyx_r; } -/* "View.MemoryView":621 +/* "View.MemoryView":625 * return slice_is_contig(mslice[0], 'C', self.view.ndim) * * def is_f_contig(self): # <<<<<<<<<<<<<< @@ -42771,19 +42818,21 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18 __Pyx_memviewslice __pyx_v_tmp; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; + __Pyx_memviewslice *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("is_f_contig", 0); - /* "View.MemoryView":624 + /* "View.MemoryView":628 * cdef __Pyx_memviewslice *mslice * cdef __Pyx_memviewslice tmp * mslice = get_slice_from_memview(self, &tmp) # <<<<<<<<<<<<<< * return slice_is_contig(mslice[0], 'F', self.view.ndim) * */ - __pyx_v_mslice = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp)); + __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(1, 628, __pyx_L1_error) + __pyx_v_mslice = __pyx_t_1; - /* "View.MemoryView":625 + /* "View.MemoryView":629 * cdef __Pyx_memviewslice tmp * mslice = get_slice_from_memview(self, &tmp) * return slice_is_contig(mslice[0], 'F', self.view.ndim) # <<<<<<<<<<<<<< @@ -42791,13 +42840,13 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18 * def copy(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'F', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 625, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'F', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 629, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":621 + /* "View.MemoryView":625 * return slice_is_contig(mslice[0], 'C', self.view.ndim) * * def is_f_contig(self): # <<<<<<<<<<<<<< @@ -42807,7 +42856,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18 /* function exit code */ __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("View.MemoryView.memoryview.is_f_contig", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -42816,7 +42865,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18 return __pyx_r; } -/* "View.MemoryView":627 +/* "View.MemoryView":631 * return slice_is_contig(mslice[0], 'F', self.view.ndim) * * def copy(self): # <<<<<<<<<<<<<< @@ -42846,7 +42895,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20 PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("copy", 0); - /* "View.MemoryView":629 + /* "View.MemoryView":633 * def copy(self): * cdef __Pyx_memviewslice mslice * cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS # <<<<<<<<<<<<<< @@ -42855,7 +42904,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20 */ __pyx_v_flags = (__pyx_v_self->flags & (~PyBUF_F_CONTIGUOUS)); - /* "View.MemoryView":631 + /* "View.MemoryView":635 * cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS * * slice_copy(self, &mslice) # <<<<<<<<<<<<<< @@ -42864,17 +42913,17 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20 */ __pyx_memoryview_slice_copy(__pyx_v_self, (&__pyx_v_mslice)); - /* "View.MemoryView":632 + /* "View.MemoryView":636 * * slice_copy(self, &mslice) * mslice = slice_copy_contig(&mslice, "c", self.view.ndim, # <<<<<<<<<<<<<< * self.view.itemsize, * flags|PyBUF_C_CONTIGUOUS, */ - __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_mslice), ((char *)"c"), __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_C_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 632, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_mslice), ((char *)"c"), __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_C_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 636, __pyx_L1_error) __pyx_v_mslice = __pyx_t_1; - /* "View.MemoryView":637 + /* "View.MemoryView":641 * self.dtype_is_object) * * return memoryview_copy_from_slice(self, &mslice) # <<<<<<<<<<<<<< @@ -42882,13 +42931,13 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20 * def copy_fortran(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_mslice)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 637, __pyx_L1_error) + __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_mslice)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":627 + /* "View.MemoryView":631 * return slice_is_contig(mslice[0], 'F', self.view.ndim) * * def copy(self): # <<<<<<<<<<<<<< @@ -42907,7 +42956,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20 return __pyx_r; } -/* "View.MemoryView":639 +/* "View.MemoryView":643 * return memoryview_copy_from_slice(self, &mslice) * * def copy_fortran(self): # <<<<<<<<<<<<<< @@ -42938,7 +42987,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22 PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("copy_fortran", 0); - /* "View.MemoryView":641 + /* "View.MemoryView":645 * def copy_fortran(self): * cdef __Pyx_memviewslice src, dst * cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS # <<<<<<<<<<<<<< @@ -42947,7 +42996,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22 */ __pyx_v_flags = (__pyx_v_self->flags & (~PyBUF_C_CONTIGUOUS)); - /* "View.MemoryView":643 + /* "View.MemoryView":647 * cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS * * slice_copy(self, &src) # <<<<<<<<<<<<<< @@ -42956,17 +43005,17 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22 */ __pyx_memoryview_slice_copy(__pyx_v_self, (&__pyx_v_src)); - /* "View.MemoryView":644 + /* "View.MemoryView":648 * * slice_copy(self, &src) * dst = slice_copy_contig(&src, "fortran", self.view.ndim, # <<<<<<<<<<<<<< * self.view.itemsize, * flags|PyBUF_F_CONTIGUOUS, */ - __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_src), ((char *)"fortran"), __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_F_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 644, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_src), ((char *)"fortran"), __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_F_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 648, __pyx_L1_error) __pyx_v_dst = __pyx_t_1; - /* "View.MemoryView":649 + /* "View.MemoryView":653 * self.dtype_is_object) * * return memoryview_copy_from_slice(self, &dst) # <<<<<<<<<<<<<< @@ -42974,13 +43023,13 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22 * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_dst)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 649, __pyx_L1_error) + __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_dst)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 653, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":639 + /* "View.MemoryView":643 * return memoryview_copy_from_slice(self, &mslice) * * def copy_fortran(self): # <<<<<<<<<<<<<< @@ -43106,7 +43155,7 @@ static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED st return __pyx_r; } -/* "View.MemoryView":653 +/* "View.MemoryView":657 * * @cname('__pyx_memoryview_new') * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo): # <<<<<<<<<<<<<< @@ -43123,18 +43172,18 @@ static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, in PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("memoryview_cwrapper", 0); - /* "View.MemoryView":654 + /* "View.MemoryView":658 * @cname('__pyx_memoryview_new') * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo): * cdef memoryview result = memoryview(o, flags, dtype_is_object) # <<<<<<<<<<<<<< * result.typeinfo = typeinfo * return result */ - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 654, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 654, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 654, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_o); __Pyx_GIVEREF(__pyx_v_o); @@ -43145,13 +43194,13 @@ static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, in PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); __pyx_t_1 = 0; __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 654, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_result = ((struct __pyx_memoryview_obj *)__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":655 + /* "View.MemoryView":659 * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo): * cdef memoryview result = memoryview(o, flags, dtype_is_object) * result.typeinfo = typeinfo # <<<<<<<<<<<<<< @@ -43160,7 +43209,7 @@ static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, in */ __pyx_v_result->typeinfo = __pyx_v_typeinfo; - /* "View.MemoryView":656 + /* "View.MemoryView":660 * cdef memoryview result = memoryview(o, flags, dtype_is_object) * result.typeinfo = typeinfo * return result # <<<<<<<<<<<<<< @@ -43172,7 +43221,7 @@ static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, in __pyx_r = ((PyObject *)__pyx_v_result); goto __pyx_L0; - /* "View.MemoryView":653 + /* "View.MemoryView":657 * * @cname('__pyx_memoryview_new') * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo): # <<<<<<<<<<<<<< @@ -43194,7 +43243,7 @@ static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, in return __pyx_r; } -/* "View.MemoryView":659 +/* "View.MemoryView":663 * * @cname('__pyx_memoryview_check') * cdef inline bint memoryview_check(object o): # <<<<<<<<<<<<<< @@ -43208,7 +43257,7 @@ static CYTHON_INLINE int __pyx_memoryview_check(PyObject *__pyx_v_o) { int __pyx_t_1; __Pyx_RefNannySetupContext("memoryview_check", 0); - /* "View.MemoryView":660 + /* "View.MemoryView":664 * @cname('__pyx_memoryview_check') * cdef inline bint memoryview_check(object o): * return isinstance(o, memoryview) # <<<<<<<<<<<<<< @@ -43219,7 +43268,7 @@ static CYTHON_INLINE int __pyx_memoryview_check(PyObject *__pyx_v_o) { __pyx_r = __pyx_t_1; goto __pyx_L0; - /* "View.MemoryView":659 + /* "View.MemoryView":663 * * @cname('__pyx_memoryview_check') * cdef inline bint memoryview_check(object o): # <<<<<<<<<<<<<< @@ -43233,7 +43282,7 @@ static CYTHON_INLINE int __pyx_memoryview_check(PyObject *__pyx_v_o) { return __pyx_r; } -/* "View.MemoryView":662 +/* "View.MemoryView":666 * return isinstance(o, memoryview) * * cdef tuple _unellipsify(object index, int ndim): # <<<<<<<<<<<<<< @@ -43264,7 +43313,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { PyObject *__pyx_t_11 = NULL; __Pyx_RefNannySetupContext("_unellipsify", 0); - /* "View.MemoryView":667 + /* "View.MemoryView":671 * full slices. * """ * if not isinstance(index, tuple): # <<<<<<<<<<<<<< @@ -43275,14 +43324,14 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0); if (__pyx_t_2) { - /* "View.MemoryView":668 + /* "View.MemoryView":672 * """ * if not isinstance(index, tuple): * tup = (index,) # <<<<<<<<<<<<<< * else: * tup = index */ - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 668, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_index); __Pyx_GIVEREF(__pyx_v_index); @@ -43290,7 +43339,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_v_tup = __pyx_t_3; __pyx_t_3 = 0; - /* "View.MemoryView":667 + /* "View.MemoryView":671 * full slices. * """ * if not isinstance(index, tuple): # <<<<<<<<<<<<<< @@ -43300,7 +43349,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { goto __pyx_L3; } - /* "View.MemoryView":670 + /* "View.MemoryView":674 * tup = (index,) * else: * tup = index # <<<<<<<<<<<<<< @@ -43313,19 +43362,19 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { } __pyx_L3:; - /* "View.MemoryView":672 + /* "View.MemoryView":676 * tup = index * * result = [] # <<<<<<<<<<<<<< * have_slices = False * seen_ellipsis = False */ - __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 672, __pyx_L1_error) + __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 676, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_result = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "View.MemoryView":673 + /* "View.MemoryView":677 * * result = [] * have_slices = False # <<<<<<<<<<<<<< @@ -43334,7 +43383,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ __pyx_v_have_slices = 0; - /* "View.MemoryView":674 + /* "View.MemoryView":678 * result = [] * have_slices = False * seen_ellipsis = False # <<<<<<<<<<<<<< @@ -43343,7 +43392,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ __pyx_v_seen_ellipsis = 0; - /* "View.MemoryView":675 + /* "View.MemoryView":679 * have_slices = False * seen_ellipsis = False * for idx, item in enumerate(tup): # <<<<<<<<<<<<<< @@ -43356,26 +43405,26 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_t_4 = __pyx_v_tup; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; __pyx_t_6 = NULL; } else { - __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_tup); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 675, __pyx_L1_error) + __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_tup); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 679, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 675, __pyx_L1_error) + __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 679, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_6)) { if (likely(PyList_CheckExact(__pyx_t_4))) { if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 675, __pyx_L1_error) + __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 679, __pyx_L1_error) #else - __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 675, __pyx_L1_error) + __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 679, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif } else { if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 675, __pyx_L1_error) + __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 679, __pyx_L1_error) #else - __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 675, __pyx_L1_error) + __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 679, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif } @@ -43385,7 +43434,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(1, 675, __pyx_L1_error) + else __PYX_ERR(1, 679, __pyx_L1_error) } break; } @@ -43395,13 +43444,13 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_t_7 = 0; __Pyx_INCREF(__pyx_t_3); __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_3); - __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 675, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 679, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = __pyx_t_7; __pyx_t_7 = 0; - /* "View.MemoryView":676 + /* "View.MemoryView":680 * seen_ellipsis = False * for idx, item in enumerate(tup): * if item is Ellipsis: # <<<<<<<<<<<<<< @@ -43412,7 +43461,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { - /* "View.MemoryView":677 + /* "View.MemoryView":681 * for idx, item in enumerate(tup): * if item is Ellipsis: * if not seen_ellipsis: # <<<<<<<<<<<<<< @@ -43422,15 +43471,15 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_t_1 = ((!(__pyx_v_seen_ellipsis != 0)) != 0); if (__pyx_t_1) { - /* "View.MemoryView":678 + /* "View.MemoryView":682 * if item is Ellipsis: * if not seen_ellipsis: * result.extend([slice(None)] * (ndim - len(tup) + 1)) # <<<<<<<<<<<<<< * seen_ellipsis = True * else: */ - __pyx_t_8 = PyObject_Length(__pyx_v_tup); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(1, 678, __pyx_L1_error) - __pyx_t_7 = PyList_New(1 * ((((__pyx_v_ndim - __pyx_t_8) + 1)<0) ? 0:((__pyx_v_ndim - __pyx_t_8) + 1))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 678, __pyx_L1_error) + __pyx_t_8 = PyObject_Length(__pyx_v_tup); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(1, 682, __pyx_L1_error) + __pyx_t_7 = PyList_New(1 * ((((__pyx_v_ndim - __pyx_t_8) + 1)<0) ? 0:((__pyx_v_ndim - __pyx_t_8) + 1))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < ((__pyx_v_ndim - __pyx_t_8) + 1); __pyx_temp++) { @@ -43439,10 +43488,10 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__3); } } - __pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_7); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 678, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_7); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 682, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "View.MemoryView":679 + /* "View.MemoryView":683 * if not seen_ellipsis: * result.extend([slice(None)] * (ndim - len(tup) + 1)) * seen_ellipsis = True # <<<<<<<<<<<<<< @@ -43451,7 +43500,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ __pyx_v_seen_ellipsis = 1; - /* "View.MemoryView":677 + /* "View.MemoryView":681 * for idx, item in enumerate(tup): * if item is Ellipsis: * if not seen_ellipsis: # <<<<<<<<<<<<<< @@ -43461,7 +43510,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { goto __pyx_L7; } - /* "View.MemoryView":681 + /* "View.MemoryView":685 * seen_ellipsis = True * else: * result.append(slice(None)) # <<<<<<<<<<<<<< @@ -43469,11 +43518,11 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { * else: */ /*else*/ { - __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__3); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 681, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__3); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 685, __pyx_L1_error) } __pyx_L7:; - /* "View.MemoryView":682 + /* "View.MemoryView":686 * else: * result.append(slice(None)) * have_slices = True # <<<<<<<<<<<<<< @@ -43482,7 +43531,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ __pyx_v_have_slices = 1; - /* "View.MemoryView":676 + /* "View.MemoryView":680 * seen_ellipsis = False * for idx, item in enumerate(tup): * if item is Ellipsis: # <<<<<<<<<<<<<< @@ -43492,7 +43541,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { goto __pyx_L6; } - /* "View.MemoryView":684 + /* "View.MemoryView":688 * have_slices = True * else: * if not isinstance(item, slice) and not PyIndex_Check(item): # <<<<<<<<<<<<<< @@ -43512,23 +43561,23 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_L9_bool_binop_done:; if (unlikely(__pyx_t_1)) { - /* "View.MemoryView":685 + /* "View.MemoryView":689 * else: * if not isinstance(item, slice) and not PyIndex_Check(item): * raise TypeError("Cannot index with type '%s'" % type(item)) # <<<<<<<<<<<<<< * * have_slices = have_slices or isinstance(item, slice) */ - __pyx_t_7 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 685, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 685, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_Raise(__pyx_t_11, 0, 0, 0); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __PYX_ERR(1, 685, __pyx_L1_error) + __PYX_ERR(1, 689, __pyx_L1_error) - /* "View.MemoryView":684 + /* "View.MemoryView":688 * have_slices = True * else: * if not isinstance(item, slice) and not PyIndex_Check(item): # <<<<<<<<<<<<<< @@ -43537,7 +43586,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ } - /* "View.MemoryView":687 + /* "View.MemoryView":691 * raise TypeError("Cannot index with type '%s'" % type(item)) * * have_slices = have_slices or isinstance(item, slice) # <<<<<<<<<<<<<< @@ -43556,18 +43605,18 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_L11_bool_binop_done:; __pyx_v_have_slices = __pyx_t_1; - /* "View.MemoryView":688 + /* "View.MemoryView":692 * * have_slices = have_slices or isinstance(item, slice) * result.append(item) # <<<<<<<<<<<<<< * * nslices = ndim - len(result) */ - __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_v_item); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 688, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_v_item); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 692, __pyx_L1_error) } __pyx_L6:; - /* "View.MemoryView":675 + /* "View.MemoryView":679 * have_slices = False * seen_ellipsis = False * for idx, item in enumerate(tup): # <<<<<<<<<<<<<< @@ -43578,17 +43627,17 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "View.MemoryView":690 + /* "View.MemoryView":694 * result.append(item) * * nslices = ndim - len(result) # <<<<<<<<<<<<<< * if nslices: * result.extend([slice(None)] * nslices) */ - __pyx_t_5 = PyList_GET_SIZE(__pyx_v_result); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 690, __pyx_L1_error) + __pyx_t_5 = PyList_GET_SIZE(__pyx_v_result); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 694, __pyx_L1_error) __pyx_v_nslices = (__pyx_v_ndim - __pyx_t_5); - /* "View.MemoryView":691 + /* "View.MemoryView":695 * * nslices = ndim - len(result) * if nslices: # <<<<<<<<<<<<<< @@ -43598,14 +43647,14 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_t_1 = (__pyx_v_nslices != 0); if (__pyx_t_1) { - /* "View.MemoryView":692 + /* "View.MemoryView":696 * nslices = ndim - len(result) * if nslices: * result.extend([slice(None)] * nslices) # <<<<<<<<<<<<<< * * return have_slices or nslices, tuple(result) */ - __pyx_t_3 = PyList_New(1 * ((__pyx_v_nslices<0) ? 0:__pyx_v_nslices)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 692, __pyx_L1_error) + __pyx_t_3 = PyList_New(1 * ((__pyx_v_nslices<0) ? 0:__pyx_v_nslices)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < __pyx_v_nslices; __pyx_temp++) { @@ -43614,10 +43663,10 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__3); } } - __pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_3); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 692, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_3); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 696, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "View.MemoryView":691 + /* "View.MemoryView":695 * * nslices = ndim - len(result) * if nslices: # <<<<<<<<<<<<<< @@ -43626,7 +43675,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ } - /* "View.MemoryView":694 + /* "View.MemoryView":698 * result.extend([slice(None)] * nslices) * * return have_slices or nslices, tuple(result) # <<<<<<<<<<<<<< @@ -43636,20 +43685,20 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __Pyx_XDECREF(__pyx_r); if (!__pyx_v_have_slices) { } else { - __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_have_slices); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 694, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_have_slices); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L14_bool_binop_done; } - __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_nslices); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 694, __pyx_L1_error) + __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_nslices); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __pyx_t_4; __pyx_t_4 = 0; __pyx_L14_bool_binop_done:; - __pyx_t_4 = PyList_AsTuple(__pyx_v_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 694, __pyx_L1_error) + __pyx_t_4 = PyList_AsTuple(__pyx_v_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 694, __pyx_L1_error) + __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_3); @@ -43661,7 +43710,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_t_11 = 0; goto __pyx_L0; - /* "View.MemoryView":662 + /* "View.MemoryView":666 * return isinstance(o, memoryview) * * cdef tuple _unellipsify(object index, int ndim): # <<<<<<<<<<<<<< @@ -43687,7 +43736,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { return __pyx_r; } -/* "View.MemoryView":696 +/* "View.MemoryView":700 * return have_slices or nslices, tuple(result) * * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim): # <<<<<<<<<<<<<< @@ -43706,7 +43755,7 @@ static PyObject *assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __ PyObject *__pyx_t_5 = NULL; __Pyx_RefNannySetupContext("assert_direct_dimensions", 0); - /* "View.MemoryView":697 + /* "View.MemoryView":701 * * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim): * for suboffset in suboffsets[:ndim]: # <<<<<<<<<<<<<< @@ -43718,7 +43767,7 @@ static PyObject *assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __ __pyx_t_1 = __pyx_t_3; __pyx_v_suboffset = (__pyx_t_1[0]); - /* "View.MemoryView":698 + /* "View.MemoryView":702 * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim): * for suboffset in suboffsets[:ndim]: * if suboffset >= 0: # <<<<<<<<<<<<<< @@ -43728,20 +43777,20 @@ static PyObject *assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __ __pyx_t_4 = ((__pyx_v_suboffset >= 0) != 0); if (unlikely(__pyx_t_4)) { - /* "View.MemoryView":699 + /* "View.MemoryView":703 * for suboffset in suboffsets[:ndim]: * if suboffset >= 0: * raise ValueError("Indirect dimensions not supported") # <<<<<<<<<<<<<< * * */ - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__66, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 699, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__66, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_Raise(__pyx_t_5, 0, 0, 0); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __PYX_ERR(1, 699, __pyx_L1_error) + __PYX_ERR(1, 703, __pyx_L1_error) - /* "View.MemoryView":698 + /* "View.MemoryView":702 * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim): * for suboffset in suboffsets[:ndim]: * if suboffset >= 0: # <<<<<<<<<<<<<< @@ -43751,7 +43800,7 @@ static PyObject *assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __ } } - /* "View.MemoryView":696 + /* "View.MemoryView":700 * return have_slices or nslices, tuple(result) * * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim): # <<<<<<<<<<<<<< @@ -43772,7 +43821,7 @@ static PyObject *assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __ return __pyx_r; } -/* "View.MemoryView":706 +/* "View.MemoryView":710 * * @cname('__pyx_memview_slice') * cdef memoryview memview_slice(memoryview memview, object indices): # <<<<<<<<<<<<<< @@ -43813,7 +43862,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ Py_ssize_t __pyx_t_12; __Pyx_RefNannySetupContext("memview_slice", 0); - /* "View.MemoryView":707 + /* "View.MemoryView":711 * @cname('__pyx_memview_slice') * cdef memoryview memview_slice(memoryview memview, object indices): * cdef int new_ndim = 0, suboffset_dim = -1, dim # <<<<<<<<<<<<<< @@ -43823,7 +43872,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_v_new_ndim = 0; __pyx_v_suboffset_dim = -1; - /* "View.MemoryView":714 + /* "View.MemoryView":718 * * * memset(&dst, 0, sizeof(dst)) # <<<<<<<<<<<<<< @@ -43832,7 +43881,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ (void)(memset((&__pyx_v_dst), 0, (sizeof(__pyx_v_dst)))); - /* "View.MemoryView":718 + /* "View.MemoryView":722 * cdef _memoryviewslice memviewsliceobj * * assert memview.view.ndim > 0 # <<<<<<<<<<<<<< @@ -43843,12 +43892,12 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!((__pyx_v_memview->view.ndim > 0) != 0))) { PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(1, 718, __pyx_L1_error) + __PYX_ERR(1, 722, __pyx_L1_error) } } #endif - /* "View.MemoryView":720 + /* "View.MemoryView":724 * assert memview.view.ndim > 0 * * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< @@ -43859,20 +43908,20 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "View.MemoryView":721 + /* "View.MemoryView":725 * * if isinstance(memview, _memoryviewslice): * memviewsliceobj = memview # <<<<<<<<<<<<<< * p_src = &memviewsliceobj.from_slice * else: */ - if (!(likely(((((PyObject *)__pyx_v_memview)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type))))) __PYX_ERR(1, 721, __pyx_L1_error) + if (!(likely(((((PyObject *)__pyx_v_memview)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type))))) __PYX_ERR(1, 725, __pyx_L1_error) __pyx_t_3 = ((PyObject *)__pyx_v_memview); __Pyx_INCREF(__pyx_t_3); __pyx_v_memviewsliceobj = ((struct __pyx_memoryviewslice_obj *)__pyx_t_3); __pyx_t_3 = 0; - /* "View.MemoryView":722 + /* "View.MemoryView":726 * if isinstance(memview, _memoryviewslice): * memviewsliceobj = memview * p_src = &memviewsliceobj.from_slice # <<<<<<<<<<<<<< @@ -43881,7 +43930,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ __pyx_v_p_src = (&__pyx_v_memviewsliceobj->from_slice); - /* "View.MemoryView":720 + /* "View.MemoryView":724 * assert memview.view.ndim > 0 * * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< @@ -43891,7 +43940,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ goto __pyx_L3; } - /* "View.MemoryView":724 + /* "View.MemoryView":728 * p_src = &memviewsliceobj.from_slice * else: * slice_copy(memview, &src) # <<<<<<<<<<<<<< @@ -43901,7 +43950,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ /*else*/ { __pyx_memoryview_slice_copy(__pyx_v_memview, (&__pyx_v_src)); - /* "View.MemoryView":725 + /* "View.MemoryView":729 * else: * slice_copy(memview, &src) * p_src = &src # <<<<<<<<<<<<<< @@ -43912,7 +43961,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ } __pyx_L3:; - /* "View.MemoryView":731 + /* "View.MemoryView":735 * * * dst.memview = p_src.memview # <<<<<<<<<<<<<< @@ -43922,7 +43971,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_t_4 = __pyx_v_p_src->memview; __pyx_v_dst.memview = __pyx_t_4; - /* "View.MemoryView":732 + /* "View.MemoryView":736 * * dst.memview = p_src.memview * dst.data = p_src.data # <<<<<<<<<<<<<< @@ -43932,7 +43981,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_t_5 = __pyx_v_p_src->data; __pyx_v_dst.data = __pyx_t_5; - /* "View.MemoryView":737 + /* "View.MemoryView":741 * * * cdef __Pyx_memviewslice *p_dst = &dst # <<<<<<<<<<<<<< @@ -43941,7 +43990,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ __pyx_v_p_dst = (&__pyx_v_dst); - /* "View.MemoryView":738 + /* "View.MemoryView":742 * * cdef __Pyx_memviewslice *p_dst = &dst * cdef int *p_suboffset_dim = &suboffset_dim # <<<<<<<<<<<<<< @@ -43950,7 +43999,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ __pyx_v_p_suboffset_dim = (&__pyx_v_suboffset_dim); - /* "View.MemoryView":742 + /* "View.MemoryView":746 * cdef bint have_start, have_stop, have_step * * for dim, index in enumerate(indices): # <<<<<<<<<<<<<< @@ -43962,26 +44011,26 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_t_3 = __pyx_v_indices; __Pyx_INCREF(__pyx_t_3); __pyx_t_7 = 0; __pyx_t_8 = NULL; } else { - __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_indices); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 742, __pyx_L1_error) + __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_indices); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_8 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 742, __pyx_L1_error) + __pyx_t_8 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 746, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_8)) { if (likely(PyList_CheckExact(__pyx_t_3))) { if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_9 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_9); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(1, 742, __pyx_L1_error) + __pyx_t_9 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_9); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(1, 746, __pyx_L1_error) #else - __pyx_t_9 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 742, __pyx_L1_error) + __pyx_t_9 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); #endif } else { if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_9 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_9); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(1, 742, __pyx_L1_error) + __pyx_t_9 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_9); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(1, 746, __pyx_L1_error) #else - __pyx_t_9 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 742, __pyx_L1_error) + __pyx_t_9 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); #endif } @@ -43991,7 +44040,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(1, 742, __pyx_L1_error) + else __PYX_ERR(1, 746, __pyx_L1_error) } break; } @@ -44002,7 +44051,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_v_dim = __pyx_t_6; __pyx_t_6 = (__pyx_t_6 + 1); - /* "View.MemoryView":743 + /* "View.MemoryView":747 * * for dim, index in enumerate(indices): * if PyIndex_Check(index): # <<<<<<<<<<<<<< @@ -44012,25 +44061,25 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_t_2 = (PyIndex_Check(__pyx_v_index) != 0); if (__pyx_t_2) { - /* "View.MemoryView":747 + /* "View.MemoryView":751 * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], * dim, new_ndim, p_suboffset_dim, * index, 0, 0, # start, stop, step # <<<<<<<<<<<<<< * 0, 0, 0, # have_{start,stop,step} * False) */ - __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 747, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 751, __pyx_L1_error) - /* "View.MemoryView":744 + /* "View.MemoryView":748 * for dim, index in enumerate(indices): * if PyIndex_Check(index): * slice_memviewslice( # <<<<<<<<<<<<<< * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], * dim, new_ndim, p_suboffset_dim, */ - __pyx_t_11 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_t_10, 0, 0, 0, 0, 0, 0); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(1, 744, __pyx_L1_error) + __pyx_t_11 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_t_10, 0, 0, 0, 0, 0, 0); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(1, 748, __pyx_L1_error) - /* "View.MemoryView":743 + /* "View.MemoryView":747 * * for dim, index in enumerate(indices): * if PyIndex_Check(index): # <<<<<<<<<<<<<< @@ -44040,7 +44089,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ goto __pyx_L6; } - /* "View.MemoryView":750 + /* "View.MemoryView":754 * 0, 0, 0, # have_{start,stop,step} * False) * elif index is None: # <<<<<<<<<<<<<< @@ -44051,7 +44100,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { - /* "View.MemoryView":751 + /* "View.MemoryView":755 * False) * elif index is None: * p_dst.shape[new_ndim] = 1 # <<<<<<<<<<<<<< @@ -44060,7 +44109,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ (__pyx_v_p_dst->shape[__pyx_v_new_ndim]) = 1; - /* "View.MemoryView":752 + /* "View.MemoryView":756 * elif index is None: * p_dst.shape[new_ndim] = 1 * p_dst.strides[new_ndim] = 0 # <<<<<<<<<<<<<< @@ -44069,7 +44118,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ (__pyx_v_p_dst->strides[__pyx_v_new_ndim]) = 0; - /* "View.MemoryView":753 + /* "View.MemoryView":757 * p_dst.shape[new_ndim] = 1 * p_dst.strides[new_ndim] = 0 * p_dst.suboffsets[new_ndim] = -1 # <<<<<<<<<<<<<< @@ -44078,7 +44127,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ (__pyx_v_p_dst->suboffsets[__pyx_v_new_ndim]) = -1L; - /* "View.MemoryView":754 + /* "View.MemoryView":758 * p_dst.strides[new_ndim] = 0 * p_dst.suboffsets[new_ndim] = -1 * new_ndim += 1 # <<<<<<<<<<<<<< @@ -44087,7 +44136,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ __pyx_v_new_ndim = (__pyx_v_new_ndim + 1); - /* "View.MemoryView":750 + /* "View.MemoryView":754 * 0, 0, 0, # have_{start,stop,step} * False) * elif index is None: # <<<<<<<<<<<<<< @@ -44097,7 +44146,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ goto __pyx_L6; } - /* "View.MemoryView":756 + /* "View.MemoryView":760 * new_ndim += 1 * else: * start = index.start or 0 # <<<<<<<<<<<<<< @@ -44105,13 +44154,13 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ * step = index.step or 0 */ /*else*/ { - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_start); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 756, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_start); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 760, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 756, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 760, __pyx_L1_error) if (!__pyx_t_1) { __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else { - __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 756, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 760, __pyx_L1_error) __pyx_t_10 = __pyx_t_12; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L7_bool_binop_done; @@ -44120,20 +44169,20 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_L7_bool_binop_done:; __pyx_v_start = __pyx_t_10; - /* "View.MemoryView":757 + /* "View.MemoryView":761 * else: * start = index.start or 0 * stop = index.stop or 0 # <<<<<<<<<<<<<< * step = index.step or 0 * */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_stop); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 757, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_stop); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 761, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 757, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 761, __pyx_L1_error) if (!__pyx_t_1) { __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else { - __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 757, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 761, __pyx_L1_error) __pyx_t_10 = __pyx_t_12; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L9_bool_binop_done; @@ -44142,20 +44191,20 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_L9_bool_binop_done:; __pyx_v_stop = __pyx_t_10; - /* "View.MemoryView":758 + /* "View.MemoryView":762 * start = index.start or 0 * stop = index.stop or 0 * step = index.step or 0 # <<<<<<<<<<<<<< * * have_start = index.start is not None */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_step); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 758, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_step); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 762, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 758, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 762, __pyx_L1_error) if (!__pyx_t_1) { __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else { - __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 758, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 762, __pyx_L1_error) __pyx_t_10 = __pyx_t_12; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L11_bool_binop_done; @@ -44164,55 +44213,55 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_L11_bool_binop_done:; __pyx_v_step = __pyx_t_10; - /* "View.MemoryView":760 + /* "View.MemoryView":764 * step = index.step or 0 * * have_start = index.start is not None # <<<<<<<<<<<<<< * have_stop = index.stop is not None * have_step = index.step is not None */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_start); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 760, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_start); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 764, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = (__pyx_t_9 != Py_None); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_have_start = __pyx_t_1; - /* "View.MemoryView":761 + /* "View.MemoryView":765 * * have_start = index.start is not None * have_stop = index.stop is not None # <<<<<<<<<<<<<< * have_step = index.step is not None * */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_stop); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 761, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_stop); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 765, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = (__pyx_t_9 != Py_None); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_have_stop = __pyx_t_1; - /* "View.MemoryView":762 + /* "View.MemoryView":766 * have_start = index.start is not None * have_stop = index.stop is not None * have_step = index.step is not None # <<<<<<<<<<<<<< * * slice_memviewslice( */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_step); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 762, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_step); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = (__pyx_t_9 != Py_None); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_have_step = __pyx_t_1; - /* "View.MemoryView":764 + /* "View.MemoryView":768 * have_step = index.step is not None * * slice_memviewslice( # <<<<<<<<<<<<<< * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], * dim, new_ndim, p_suboffset_dim, */ - __pyx_t_11 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_v_start, __pyx_v_stop, __pyx_v_step, __pyx_v_have_start, __pyx_v_have_stop, __pyx_v_have_step, 1); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(1, 764, __pyx_L1_error) + __pyx_t_11 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_v_start, __pyx_v_stop, __pyx_v_step, __pyx_v_have_start, __pyx_v_have_stop, __pyx_v_have_step, 1); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(1, 768, __pyx_L1_error) - /* "View.MemoryView":770 + /* "View.MemoryView":774 * have_start, have_stop, have_step, * True) * new_ndim += 1 # <<<<<<<<<<<<<< @@ -44223,7 +44272,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ } __pyx_L6:; - /* "View.MemoryView":742 + /* "View.MemoryView":746 * cdef bint have_start, have_stop, have_step * * for dim, index in enumerate(indices): # <<<<<<<<<<<<<< @@ -44233,7 +44282,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "View.MemoryView":772 + /* "View.MemoryView":776 * new_ndim += 1 * * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< @@ -44244,7 +44293,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "View.MemoryView":773 + /* "View.MemoryView":777 * * if isinstance(memview, _memoryviewslice): * return memoryview_fromslice(dst, new_ndim, # <<<<<<<<<<<<<< @@ -44253,39 +44302,39 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ __Pyx_XDECREF(((PyObject *)__pyx_r)); - /* "View.MemoryView":774 + /* "View.MemoryView":778 * if isinstance(memview, _memoryviewslice): * return memoryview_fromslice(dst, new_ndim, * memviewsliceobj.to_object_func, # <<<<<<<<<<<<<< * memviewsliceobj.to_dtype_func, * memview.dtype_is_object) */ - if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(1, 774, __pyx_L1_error) } + if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(1, 778, __pyx_L1_error) } - /* "View.MemoryView":775 + /* "View.MemoryView":779 * return memoryview_fromslice(dst, new_ndim, * memviewsliceobj.to_object_func, * memviewsliceobj.to_dtype_func, # <<<<<<<<<<<<<< * memview.dtype_is_object) * else: */ - if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(1, 775, __pyx_L1_error) } + if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(1, 779, __pyx_L1_error) } - /* "View.MemoryView":773 + /* "View.MemoryView":777 * * if isinstance(memview, _memoryviewslice): * return memoryview_fromslice(dst, new_ndim, # <<<<<<<<<<<<<< * memviewsliceobj.to_object_func, * memviewsliceobj.to_dtype_func, */ - __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, __pyx_v_memviewsliceobj->to_object_func, __pyx_v_memviewsliceobj->to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 773, __pyx_L1_error) + __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, __pyx_v_memviewsliceobj->to_object_func, __pyx_v_memviewsliceobj->to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 777, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_memoryview_type))))) __PYX_ERR(1, 773, __pyx_L1_error) + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_memoryview_type))))) __PYX_ERR(1, 777, __pyx_L1_error) __pyx_r = ((struct __pyx_memoryview_obj *)__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L0; - /* "View.MemoryView":772 + /* "View.MemoryView":776 * new_ndim += 1 * * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< @@ -44294,7 +44343,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ } - /* "View.MemoryView":778 + /* "View.MemoryView":782 * memview.dtype_is_object) * else: * return memoryview_fromslice(dst, new_ndim, NULL, NULL, # <<<<<<<<<<<<<< @@ -44304,30 +44353,30 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ /*else*/ { __Pyx_XDECREF(((PyObject *)__pyx_r)); - /* "View.MemoryView":779 + /* "View.MemoryView":783 * else: * return memoryview_fromslice(dst, new_ndim, NULL, NULL, * memview.dtype_is_object) # <<<<<<<<<<<<<< * * */ - __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, NULL, NULL, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 778, __pyx_L1_error) + __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, NULL, NULL, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - /* "View.MemoryView":778 + /* "View.MemoryView":782 * memview.dtype_is_object) * else: * return memoryview_fromslice(dst, new_ndim, NULL, NULL, # <<<<<<<<<<<<<< * memview.dtype_is_object) * */ - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_memoryview_type))))) __PYX_ERR(1, 778, __pyx_L1_error) + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_memoryview_type))))) __PYX_ERR(1, 782, __pyx_L1_error) __pyx_r = ((struct __pyx_memoryview_obj *)__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L0; } - /* "View.MemoryView":706 + /* "View.MemoryView":710 * * @cname('__pyx_memview_slice') * cdef memoryview memview_slice(memoryview memview, object indices): # <<<<<<<<<<<<<< @@ -44349,7 +44398,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ return __pyx_r; } -/* "View.MemoryView":803 +/* "View.MemoryView":807 * * @cname('__pyx_memoryview_slice_memviewslice') * cdef int slice_memviewslice( # <<<<<<<<<<<<<< @@ -44365,7 +44414,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, int __pyx_t_2; int __pyx_t_3; - /* "View.MemoryView":823 + /* "View.MemoryView":827 * cdef bint negative_step * * if not is_slice: # <<<<<<<<<<<<<< @@ -44375,7 +44424,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_1 = ((!(__pyx_v_is_slice != 0)) != 0); if (__pyx_t_1) { - /* "View.MemoryView":825 + /* "View.MemoryView":829 * if not is_slice: * * if start < 0: # <<<<<<<<<<<<<< @@ -44385,7 +44434,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { - /* "View.MemoryView":826 + /* "View.MemoryView":830 * * if start < 0: * start += shape # <<<<<<<<<<<<<< @@ -44394,7 +44443,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_start = (__pyx_v_start + __pyx_v_shape); - /* "View.MemoryView":825 + /* "View.MemoryView":829 * if not is_slice: * * if start < 0: # <<<<<<<<<<<<<< @@ -44403,7 +44452,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ } - /* "View.MemoryView":827 + /* "View.MemoryView":831 * if start < 0: * start += shape * if not 0 <= start < shape: # <<<<<<<<<<<<<< @@ -44417,16 +44466,16 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0); if (__pyx_t_2) { - /* "View.MemoryView":828 + /* "View.MemoryView":832 * start += shape * if not 0 <= start < shape: * _err_dim(IndexError, "Index out of bounds (axis %d)", dim) # <<<<<<<<<<<<<< * else: * */ - __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_IndexError, ((char *)"Index out of bounds (axis %d)"), __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 828, __pyx_L1_error) + __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_IndexError, ((char *)"Index out of bounds (axis %d)"), __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 832, __pyx_L1_error) - /* "View.MemoryView":827 + /* "View.MemoryView":831 * if start < 0: * start += shape * if not 0 <= start < shape: # <<<<<<<<<<<<<< @@ -44435,7 +44484,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ } - /* "View.MemoryView":823 + /* "View.MemoryView":827 * cdef bint negative_step * * if not is_slice: # <<<<<<<<<<<<<< @@ -44445,7 +44494,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L3; } - /* "View.MemoryView":831 + /* "View.MemoryView":835 * else: * * negative_step = have_step != 0 and step < 0 # <<<<<<<<<<<<<< @@ -44464,7 +44513,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_L6_bool_binop_done:; __pyx_v_negative_step = __pyx_t_2; - /* "View.MemoryView":833 + /* "View.MemoryView":837 * negative_step = have_step != 0 and step < 0 * * if have_step and step == 0: # <<<<<<<<<<<<<< @@ -44482,16 +44531,16 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_L9_bool_binop_done:; if (__pyx_t_2) { - /* "View.MemoryView":834 + /* "View.MemoryView":838 * * if have_step and step == 0: * _err_dim(ValueError, "Step may not be zero (axis %d)", dim) # <<<<<<<<<<<<<< * * */ - __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_ValueError, ((char *)"Step may not be zero (axis %d)"), __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 834, __pyx_L1_error) + __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_ValueError, ((char *)"Step may not be zero (axis %d)"), __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 838, __pyx_L1_error) - /* "View.MemoryView":833 + /* "View.MemoryView":837 * negative_step = have_step != 0 and step < 0 * * if have_step and step == 0: # <<<<<<<<<<<<<< @@ -44500,7 +44549,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ } - /* "View.MemoryView":837 + /* "View.MemoryView":841 * * * if have_start: # <<<<<<<<<<<<<< @@ -44510,7 +44559,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_have_start != 0); if (__pyx_t_2) { - /* "View.MemoryView":838 + /* "View.MemoryView":842 * * if have_start: * if start < 0: # <<<<<<<<<<<<<< @@ -44520,7 +44569,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = ((__pyx_v_start < 0) != 0); if (__pyx_t_2) { - /* "View.MemoryView":839 + /* "View.MemoryView":843 * if have_start: * if start < 0: * start += shape # <<<<<<<<<<<<<< @@ -44529,7 +44578,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_start = (__pyx_v_start + __pyx_v_shape); - /* "View.MemoryView":840 + /* "View.MemoryView":844 * if start < 0: * start += shape * if start < 0: # <<<<<<<<<<<<<< @@ -44539,7 +44588,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = ((__pyx_v_start < 0) != 0); if (__pyx_t_2) { - /* "View.MemoryView":841 + /* "View.MemoryView":845 * start += shape * if start < 0: * start = 0 # <<<<<<<<<<<<<< @@ -44548,7 +44597,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_start = 0; - /* "View.MemoryView":840 + /* "View.MemoryView":844 * if start < 0: * start += shape * if start < 0: # <<<<<<<<<<<<<< @@ -44557,7 +44606,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ } - /* "View.MemoryView":838 + /* "View.MemoryView":842 * * if have_start: * if start < 0: # <<<<<<<<<<<<<< @@ -44567,7 +44616,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L12; } - /* "View.MemoryView":842 + /* "View.MemoryView":846 * if start < 0: * start = 0 * elif start >= shape: # <<<<<<<<<<<<<< @@ -44577,7 +44626,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = ((__pyx_v_start >= __pyx_v_shape) != 0); if (__pyx_t_2) { - /* "View.MemoryView":843 + /* "View.MemoryView":847 * start = 0 * elif start >= shape: * if negative_step: # <<<<<<<<<<<<<< @@ -44587,7 +44636,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_negative_step != 0); if (__pyx_t_2) { - /* "View.MemoryView":844 + /* "View.MemoryView":848 * elif start >= shape: * if negative_step: * start = shape - 1 # <<<<<<<<<<<<<< @@ -44596,7 +44645,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_start = (__pyx_v_shape - 1); - /* "View.MemoryView":843 + /* "View.MemoryView":847 * start = 0 * elif start >= shape: * if negative_step: # <<<<<<<<<<<<<< @@ -44606,7 +44655,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L14; } - /* "View.MemoryView":846 + /* "View.MemoryView":850 * start = shape - 1 * else: * start = shape # <<<<<<<<<<<<<< @@ -44618,7 +44667,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, } __pyx_L14:; - /* "View.MemoryView":842 + /* "View.MemoryView":846 * if start < 0: * start = 0 * elif start >= shape: # <<<<<<<<<<<<<< @@ -44628,7 +44677,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, } __pyx_L12:; - /* "View.MemoryView":837 + /* "View.MemoryView":841 * * * if have_start: # <<<<<<<<<<<<<< @@ -44638,7 +44687,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L11; } - /* "View.MemoryView":848 + /* "View.MemoryView":852 * start = shape * else: * if negative_step: # <<<<<<<<<<<<<< @@ -44649,7 +44698,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_negative_step != 0); if (__pyx_t_2) { - /* "View.MemoryView":849 + /* "View.MemoryView":853 * else: * if negative_step: * start = shape - 1 # <<<<<<<<<<<<<< @@ -44658,7 +44707,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_start = (__pyx_v_shape - 1); - /* "View.MemoryView":848 + /* "View.MemoryView":852 * start = shape * else: * if negative_step: # <<<<<<<<<<<<<< @@ -44668,7 +44717,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L15; } - /* "View.MemoryView":851 + /* "View.MemoryView":855 * start = shape - 1 * else: * start = 0 # <<<<<<<<<<<<<< @@ -44682,7 +44731,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, } __pyx_L11:; - /* "View.MemoryView":853 + /* "View.MemoryView":857 * start = 0 * * if have_stop: # <<<<<<<<<<<<<< @@ -44692,7 +44741,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_have_stop != 0); if (__pyx_t_2) { - /* "View.MemoryView":854 + /* "View.MemoryView":858 * * if have_stop: * if stop < 0: # <<<<<<<<<<<<<< @@ -44702,7 +44751,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = ((__pyx_v_stop < 0) != 0); if (__pyx_t_2) { - /* "View.MemoryView":855 + /* "View.MemoryView":859 * if have_stop: * if stop < 0: * stop += shape # <<<<<<<<<<<<<< @@ -44711,7 +44760,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_stop = (__pyx_v_stop + __pyx_v_shape); - /* "View.MemoryView":856 + /* "View.MemoryView":860 * if stop < 0: * stop += shape * if stop < 0: # <<<<<<<<<<<<<< @@ -44721,7 +44770,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = ((__pyx_v_stop < 0) != 0); if (__pyx_t_2) { - /* "View.MemoryView":857 + /* "View.MemoryView":861 * stop += shape * if stop < 0: * stop = 0 # <<<<<<<<<<<<<< @@ -44730,7 +44779,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_stop = 0; - /* "View.MemoryView":856 + /* "View.MemoryView":860 * if stop < 0: * stop += shape * if stop < 0: # <<<<<<<<<<<<<< @@ -44739,7 +44788,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ } - /* "View.MemoryView":854 + /* "View.MemoryView":858 * * if have_stop: * if stop < 0: # <<<<<<<<<<<<<< @@ -44749,7 +44798,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L17; } - /* "View.MemoryView":858 + /* "View.MemoryView":862 * if stop < 0: * stop = 0 * elif stop > shape: # <<<<<<<<<<<<<< @@ -44759,7 +44808,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = ((__pyx_v_stop > __pyx_v_shape) != 0); if (__pyx_t_2) { - /* "View.MemoryView":859 + /* "View.MemoryView":863 * stop = 0 * elif stop > shape: * stop = shape # <<<<<<<<<<<<<< @@ -44768,7 +44817,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_stop = __pyx_v_shape; - /* "View.MemoryView":858 + /* "View.MemoryView":862 * if stop < 0: * stop = 0 * elif stop > shape: # <<<<<<<<<<<<<< @@ -44778,7 +44827,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, } __pyx_L17:; - /* "View.MemoryView":853 + /* "View.MemoryView":857 * start = 0 * * if have_stop: # <<<<<<<<<<<<<< @@ -44788,7 +44837,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L16; } - /* "View.MemoryView":861 + /* "View.MemoryView":865 * stop = shape * else: * if negative_step: # <<<<<<<<<<<<<< @@ -44799,7 +44848,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_negative_step != 0); if (__pyx_t_2) { - /* "View.MemoryView":862 + /* "View.MemoryView":866 * else: * if negative_step: * stop = -1 # <<<<<<<<<<<<<< @@ -44808,7 +44857,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_stop = -1L; - /* "View.MemoryView":861 + /* "View.MemoryView":865 * stop = shape * else: * if negative_step: # <<<<<<<<<<<<<< @@ -44818,7 +44867,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L19; } - /* "View.MemoryView":864 + /* "View.MemoryView":868 * stop = -1 * else: * stop = shape # <<<<<<<<<<<<<< @@ -44832,7 +44881,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, } __pyx_L16:; - /* "View.MemoryView":866 + /* "View.MemoryView":870 * stop = shape * * if not have_step: # <<<<<<<<<<<<<< @@ -44842,7 +44891,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = ((!(__pyx_v_have_step != 0)) != 0); if (__pyx_t_2) { - /* "View.MemoryView":867 + /* "View.MemoryView":871 * * if not have_step: * step = 1 # <<<<<<<<<<<<<< @@ -44851,7 +44900,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_step = 1; - /* "View.MemoryView":866 + /* "View.MemoryView":870 * stop = shape * * if not have_step: # <<<<<<<<<<<<<< @@ -44860,7 +44909,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ } - /* "View.MemoryView":871 + /* "View.MemoryView":875 * * with cython.cdivision(True): * new_shape = (stop - start) // step # <<<<<<<<<<<<<< @@ -44869,7 +44918,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_new_shape = ((__pyx_v_stop - __pyx_v_start) / __pyx_v_step); - /* "View.MemoryView":873 + /* "View.MemoryView":877 * new_shape = (stop - start) // step * * if (stop - start) - step * new_shape: # <<<<<<<<<<<<<< @@ -44879,7 +44928,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (((__pyx_v_stop - __pyx_v_start) - (__pyx_v_step * __pyx_v_new_shape)) != 0); if (__pyx_t_2) { - /* "View.MemoryView":874 + /* "View.MemoryView":878 * * if (stop - start) - step * new_shape: * new_shape += 1 # <<<<<<<<<<<<<< @@ -44888,7 +44937,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_new_shape = (__pyx_v_new_shape + 1); - /* "View.MemoryView":873 + /* "View.MemoryView":877 * new_shape = (stop - start) // step * * if (stop - start) - step * new_shape: # <<<<<<<<<<<<<< @@ -44897,7 +44946,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ } - /* "View.MemoryView":876 + /* "View.MemoryView":880 * new_shape += 1 * * if new_shape < 0: # <<<<<<<<<<<<<< @@ -44907,7 +44956,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = ((__pyx_v_new_shape < 0) != 0); if (__pyx_t_2) { - /* "View.MemoryView":877 + /* "View.MemoryView":881 * * if new_shape < 0: * new_shape = 0 # <<<<<<<<<<<<<< @@ -44916,7 +44965,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_new_shape = 0; - /* "View.MemoryView":876 + /* "View.MemoryView":880 * new_shape += 1 * * if new_shape < 0: # <<<<<<<<<<<<<< @@ -44925,7 +44974,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ } - /* "View.MemoryView":880 + /* "View.MemoryView":884 * * * dst.strides[new_ndim] = stride * step # <<<<<<<<<<<<<< @@ -44934,7 +44983,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ (__pyx_v_dst->strides[__pyx_v_new_ndim]) = (__pyx_v_stride * __pyx_v_step); - /* "View.MemoryView":881 + /* "View.MemoryView":885 * * dst.strides[new_ndim] = stride * step * dst.shape[new_ndim] = new_shape # <<<<<<<<<<<<<< @@ -44943,7 +44992,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ (__pyx_v_dst->shape[__pyx_v_new_ndim]) = __pyx_v_new_shape; - /* "View.MemoryView":882 + /* "View.MemoryView":886 * dst.strides[new_ndim] = stride * step * dst.shape[new_ndim] = new_shape * dst.suboffsets[new_ndim] = suboffset # <<<<<<<<<<<<<< @@ -44954,7 +45003,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, } __pyx_L3:; - /* "View.MemoryView":885 + /* "View.MemoryView":889 * * * if suboffset_dim[0] < 0: # <<<<<<<<<<<<<< @@ -44964,7 +45013,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (((__pyx_v_suboffset_dim[0]) < 0) != 0); if (__pyx_t_2) { - /* "View.MemoryView":886 + /* "View.MemoryView":890 * * if suboffset_dim[0] < 0: * dst.data += start * stride # <<<<<<<<<<<<<< @@ -44973,7 +45022,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_dst->data = (__pyx_v_dst->data + (__pyx_v_start * __pyx_v_stride)); - /* "View.MemoryView":885 + /* "View.MemoryView":889 * * * if suboffset_dim[0] < 0: # <<<<<<<<<<<<<< @@ -44983,7 +45032,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L23; } - /* "View.MemoryView":888 + /* "View.MemoryView":892 * dst.data += start * stride * else: * dst.suboffsets[suboffset_dim[0]] += start * stride # <<<<<<<<<<<<<< @@ -44996,7 +45045,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, } __pyx_L23:; - /* "View.MemoryView":890 + /* "View.MemoryView":894 * dst.suboffsets[suboffset_dim[0]] += start * stride * * if suboffset >= 0: # <<<<<<<<<<<<<< @@ -45006,7 +45055,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = ((__pyx_v_suboffset >= 0) != 0); if (__pyx_t_2) { - /* "View.MemoryView":891 + /* "View.MemoryView":895 * * if suboffset >= 0: * if not is_slice: # <<<<<<<<<<<<<< @@ -45016,7 +45065,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = ((!(__pyx_v_is_slice != 0)) != 0); if (__pyx_t_2) { - /* "View.MemoryView":892 + /* "View.MemoryView":896 * if suboffset >= 0: * if not is_slice: * if new_ndim == 0: # <<<<<<<<<<<<<< @@ -45026,7 +45075,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = ((__pyx_v_new_ndim == 0) != 0); if (__pyx_t_2) { - /* "View.MemoryView":893 + /* "View.MemoryView":897 * if not is_slice: * if new_ndim == 0: * dst.data = ( dst.data)[0] + suboffset # <<<<<<<<<<<<<< @@ -45035,7 +45084,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_dst->data = ((((char **)__pyx_v_dst->data)[0]) + __pyx_v_suboffset); - /* "View.MemoryView":892 + /* "View.MemoryView":896 * if suboffset >= 0: * if not is_slice: * if new_ndim == 0: # <<<<<<<<<<<<<< @@ -45045,7 +45094,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L26; } - /* "View.MemoryView":895 + /* "View.MemoryView":899 * dst.data = ( dst.data)[0] + suboffset * else: * _err_dim(IndexError, "All dimensions preceding dimension %d " # <<<<<<<<<<<<<< @@ -45054,18 +45103,18 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ /*else*/ { - /* "View.MemoryView":896 + /* "View.MemoryView":900 * else: * _err_dim(IndexError, "All dimensions preceding dimension %d " * "must be indexed and not sliced", dim) # <<<<<<<<<<<<<< * else: * suboffset_dim[0] = new_ndim */ - __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_IndexError, ((char *)"All dimensions preceding dimension %d must be indexed and not sliced"), __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 895, __pyx_L1_error) + __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_IndexError, ((char *)"All dimensions preceding dimension %d must be indexed and not sliced"), __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 899, __pyx_L1_error) } __pyx_L26:; - /* "View.MemoryView":891 + /* "View.MemoryView":895 * * if suboffset >= 0: * if not is_slice: # <<<<<<<<<<<<<< @@ -45075,7 +45124,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L25; } - /* "View.MemoryView":898 + /* "View.MemoryView":902 * "must be indexed and not sliced", dim) * else: * suboffset_dim[0] = new_ndim # <<<<<<<<<<<<<< @@ -45087,7 +45136,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, } __pyx_L25:; - /* "View.MemoryView":890 + /* "View.MemoryView":894 * dst.suboffsets[suboffset_dim[0]] += start * stride * * if suboffset >= 0: # <<<<<<<<<<<<<< @@ -45096,7 +45145,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ } - /* "View.MemoryView":900 + /* "View.MemoryView":904 * suboffset_dim[0] = new_ndim * * return 0 # <<<<<<<<<<<<<< @@ -45106,7 +45155,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_r = 0; goto __pyx_L0; - /* "View.MemoryView":803 + /* "View.MemoryView":807 * * @cname('__pyx_memoryview_slice_memviewslice') * cdef int slice_memviewslice( # <<<<<<<<<<<<<< @@ -45130,7 +45179,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, return __pyx_r; } -/* "View.MemoryView":906 +/* "View.MemoryView":910 * * @cname('__pyx_pybuffer_index') * cdef char *pybuffer_index(Py_buffer *view, char *bufp, Py_ssize_t index, # <<<<<<<<<<<<<< @@ -45152,7 +45201,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("pybuffer_index", 0); - /* "View.MemoryView":908 + /* "View.MemoryView":912 * cdef char *pybuffer_index(Py_buffer *view, char *bufp, Py_ssize_t index, * Py_ssize_t dim) except NULL: * cdef Py_ssize_t shape, stride, suboffset = -1 # <<<<<<<<<<<<<< @@ -45161,7 +45210,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ __pyx_v_suboffset = -1L; - /* "View.MemoryView":909 + /* "View.MemoryView":913 * Py_ssize_t dim) except NULL: * cdef Py_ssize_t shape, stride, suboffset = -1 * cdef Py_ssize_t itemsize = view.itemsize # <<<<<<<<<<<<<< @@ -45171,7 +45220,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_1 = __pyx_v_view->itemsize; __pyx_v_itemsize = __pyx_t_1; - /* "View.MemoryView":912 + /* "View.MemoryView":916 * cdef char *resultp * * if view.ndim == 0: # <<<<<<<<<<<<<< @@ -45181,7 +45230,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_2 = ((__pyx_v_view->ndim == 0) != 0); if (__pyx_t_2) { - /* "View.MemoryView":913 + /* "View.MemoryView":917 * * if view.ndim == 0: * shape = view.len / itemsize # <<<<<<<<<<<<<< @@ -45190,15 +45239,15 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ if (unlikely(__pyx_v_itemsize == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); - __PYX_ERR(1, 913, __pyx_L1_error) + __PYX_ERR(1, 917, __pyx_L1_error) } else if (sizeof(Py_ssize_t) == sizeof(long) && (!(((Py_ssize_t)-1) > 0)) && unlikely(__pyx_v_itemsize == (Py_ssize_t)-1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_v_view->len))) { PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); - __PYX_ERR(1, 913, __pyx_L1_error) + __PYX_ERR(1, 917, __pyx_L1_error) } __pyx_v_shape = __Pyx_div_Py_ssize_t(__pyx_v_view->len, __pyx_v_itemsize); - /* "View.MemoryView":914 + /* "View.MemoryView":918 * if view.ndim == 0: * shape = view.len / itemsize * stride = itemsize # <<<<<<<<<<<<<< @@ -45207,7 +45256,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ __pyx_v_stride = __pyx_v_itemsize; - /* "View.MemoryView":912 + /* "View.MemoryView":916 * cdef char *resultp * * if view.ndim == 0: # <<<<<<<<<<<<<< @@ -45217,7 +45266,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P goto __pyx_L3; } - /* "View.MemoryView":916 + /* "View.MemoryView":920 * stride = itemsize * else: * shape = view.shape[dim] # <<<<<<<<<<<<<< @@ -45227,7 +45276,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P /*else*/ { __pyx_v_shape = (__pyx_v_view->shape[__pyx_v_dim]); - /* "View.MemoryView":917 + /* "View.MemoryView":921 * else: * shape = view.shape[dim] * stride = view.strides[dim] # <<<<<<<<<<<<<< @@ -45236,7 +45285,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ __pyx_v_stride = (__pyx_v_view->strides[__pyx_v_dim]); - /* "View.MemoryView":918 + /* "View.MemoryView":922 * shape = view.shape[dim] * stride = view.strides[dim] * if view.suboffsets != NULL: # <<<<<<<<<<<<<< @@ -45246,7 +45295,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_2 = ((__pyx_v_view->suboffsets != NULL) != 0); if (__pyx_t_2) { - /* "View.MemoryView":919 + /* "View.MemoryView":923 * stride = view.strides[dim] * if view.suboffsets != NULL: * suboffset = view.suboffsets[dim] # <<<<<<<<<<<<<< @@ -45255,7 +45304,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ __pyx_v_suboffset = (__pyx_v_view->suboffsets[__pyx_v_dim]); - /* "View.MemoryView":918 + /* "View.MemoryView":922 * shape = view.shape[dim] * stride = view.strides[dim] * if view.suboffsets != NULL: # <<<<<<<<<<<<<< @@ -45266,7 +45315,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P } __pyx_L3:; - /* "View.MemoryView":921 + /* "View.MemoryView":925 * suboffset = view.suboffsets[dim] * * if index < 0: # <<<<<<<<<<<<<< @@ -45276,7 +45325,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_2 = ((__pyx_v_index < 0) != 0); if (__pyx_t_2) { - /* "View.MemoryView":922 + /* "View.MemoryView":926 * * if index < 0: * index += view.shape[dim] # <<<<<<<<<<<<<< @@ -45285,7 +45334,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ __pyx_v_index = (__pyx_v_index + (__pyx_v_view->shape[__pyx_v_dim])); - /* "View.MemoryView":923 + /* "View.MemoryView":927 * if index < 0: * index += view.shape[dim] * if index < 0: # <<<<<<<<<<<<<< @@ -45295,26 +45344,26 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_2 = ((__pyx_v_index < 0) != 0); if (unlikely(__pyx_t_2)) { - /* "View.MemoryView":924 + /* "View.MemoryView":928 * index += view.shape[dim] * if index < 0: * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) # <<<<<<<<<<<<<< * * if index >= shape: */ - __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 924, __pyx_L1_error) + __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Out_of_bounds_on_buffer_access_a, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 924, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Out_of_bounds_on_buffer_access_a, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_IndexError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 924, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_IndexError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(1, 924, __pyx_L1_error) + __PYX_ERR(1, 928, __pyx_L1_error) - /* "View.MemoryView":923 + /* "View.MemoryView":927 * if index < 0: * index += view.shape[dim] * if index < 0: # <<<<<<<<<<<<<< @@ -45323,7 +45372,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ } - /* "View.MemoryView":921 + /* "View.MemoryView":925 * suboffset = view.suboffsets[dim] * * if index < 0: # <<<<<<<<<<<<<< @@ -45332,7 +45381,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ } - /* "View.MemoryView":926 + /* "View.MemoryView":930 * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) * * if index >= shape: # <<<<<<<<<<<<<< @@ -45342,26 +45391,26 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_2 = ((__pyx_v_index >= __pyx_v_shape) != 0); if (unlikely(__pyx_t_2)) { - /* "View.MemoryView":927 + /* "View.MemoryView":931 * * if index >= shape: * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) # <<<<<<<<<<<<<< * * resultp = bufp + index * stride */ - __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 927, __pyx_L1_error) + __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 931, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Out_of_bounds_on_buffer_access_a, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 927, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Out_of_bounds_on_buffer_access_a, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 931, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_IndexError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 927, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_IndexError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 931, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(1, 927, __pyx_L1_error) + __PYX_ERR(1, 931, __pyx_L1_error) - /* "View.MemoryView":926 + /* "View.MemoryView":930 * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) * * if index >= shape: # <<<<<<<<<<<<<< @@ -45370,7 +45419,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ } - /* "View.MemoryView":929 + /* "View.MemoryView":933 * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) * * resultp = bufp + index * stride # <<<<<<<<<<<<<< @@ -45379,7 +45428,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ __pyx_v_resultp = (__pyx_v_bufp + (__pyx_v_index * __pyx_v_stride)); - /* "View.MemoryView":930 + /* "View.MemoryView":934 * * resultp = bufp + index * stride * if suboffset >= 0: # <<<<<<<<<<<<<< @@ -45389,7 +45438,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_2 = ((__pyx_v_suboffset >= 0) != 0); if (__pyx_t_2) { - /* "View.MemoryView":931 + /* "View.MemoryView":935 * resultp = bufp + index * stride * if suboffset >= 0: * resultp = ( resultp)[0] + suboffset # <<<<<<<<<<<<<< @@ -45398,7 +45447,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ __pyx_v_resultp = ((((char **)__pyx_v_resultp)[0]) + __pyx_v_suboffset); - /* "View.MemoryView":930 + /* "View.MemoryView":934 * * resultp = bufp + index * stride * if suboffset >= 0: # <<<<<<<<<<<<<< @@ -45407,7 +45456,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ } - /* "View.MemoryView":933 + /* "View.MemoryView":937 * resultp = ( resultp)[0] + suboffset * * return resultp # <<<<<<<<<<<<<< @@ -45417,7 +45466,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_r = __pyx_v_resultp; goto __pyx_L0; - /* "View.MemoryView":906 + /* "View.MemoryView":910 * * @cname('__pyx_pybuffer_index') * cdef char *pybuffer_index(Py_buffer *view, char *bufp, Py_ssize_t index, # <<<<<<<<<<<<<< @@ -45436,7 +45485,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P return __pyx_r; } -/* "View.MemoryView":939 +/* "View.MemoryView":943 * * @cname('__pyx_memslice_transpose') * cdef int transpose_memslice(__Pyx_memviewslice *memslice) nogil except 0: # <<<<<<<<<<<<<< @@ -45461,7 +45510,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { int __pyx_t_8; int __pyx_t_9; - /* "View.MemoryView":940 + /* "View.MemoryView":944 * @cname('__pyx_memslice_transpose') * cdef int transpose_memslice(__Pyx_memviewslice *memslice) nogil except 0: * cdef int ndim = memslice.memview.view.ndim # <<<<<<<<<<<<<< @@ -45471,7 +45520,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { __pyx_t_1 = __pyx_v_memslice->memview->view.ndim; __pyx_v_ndim = __pyx_t_1; - /* "View.MemoryView":942 + /* "View.MemoryView":946 * cdef int ndim = memslice.memview.view.ndim * * cdef Py_ssize_t *shape = memslice.shape # <<<<<<<<<<<<<< @@ -45481,7 +45530,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { __pyx_t_2 = __pyx_v_memslice->shape; __pyx_v_shape = __pyx_t_2; - /* "View.MemoryView":943 + /* "View.MemoryView":947 * * cdef Py_ssize_t *shape = memslice.shape * cdef Py_ssize_t *strides = memslice.strides # <<<<<<<<<<<<<< @@ -45491,7 +45540,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { __pyx_t_2 = __pyx_v_memslice->strides; __pyx_v_strides = __pyx_t_2; - /* "View.MemoryView":947 + /* "View.MemoryView":951 * * cdef int i, j * for i in range(ndim / 2): # <<<<<<<<<<<<<< @@ -45503,7 +45552,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { for (__pyx_t_1 = 0; __pyx_t_1 < __pyx_t_4; __pyx_t_1+=1) { __pyx_v_i = __pyx_t_1; - /* "View.MemoryView":948 + /* "View.MemoryView":952 * cdef int i, j * for i in range(ndim / 2): * j = ndim - 1 - i # <<<<<<<<<<<<<< @@ -45512,7 +45561,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { */ __pyx_v_j = ((__pyx_v_ndim - 1) - __pyx_v_i); - /* "View.MemoryView":949 + /* "View.MemoryView":953 * for i in range(ndim / 2): * j = ndim - 1 - i * strides[i], strides[j] = strides[j], strides[i] # <<<<<<<<<<<<<< @@ -45524,7 +45573,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { (__pyx_v_strides[__pyx_v_i]) = __pyx_t_5; (__pyx_v_strides[__pyx_v_j]) = __pyx_t_6; - /* "View.MemoryView":950 + /* "View.MemoryView":954 * j = ndim - 1 - i * strides[i], strides[j] = strides[j], strides[i] * shape[i], shape[j] = shape[j], shape[i] # <<<<<<<<<<<<<< @@ -45536,7 +45585,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { (__pyx_v_shape[__pyx_v_i]) = __pyx_t_6; (__pyx_v_shape[__pyx_v_j]) = __pyx_t_5; - /* "View.MemoryView":952 + /* "View.MemoryView":956 * shape[i], shape[j] = shape[j], shape[i] * * if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0: # <<<<<<<<<<<<<< @@ -45554,16 +45603,16 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { __pyx_L6_bool_binop_done:; if (__pyx_t_7) { - /* "View.MemoryView":953 + /* "View.MemoryView":957 * * if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0: * _err(ValueError, "Cannot transpose memoryview with indirect dimensions") # <<<<<<<<<<<<<< * * return 1 */ - __pyx_t_9 = __pyx_memoryview_err(__pyx_builtin_ValueError, ((char *)"Cannot transpose memoryview with indirect dimensions")); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 953, __pyx_L1_error) + __pyx_t_9 = __pyx_memoryview_err(__pyx_builtin_ValueError, ((char *)"Cannot transpose memoryview with indirect dimensions")); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 957, __pyx_L1_error) - /* "View.MemoryView":952 + /* "View.MemoryView":956 * shape[i], shape[j] = shape[j], shape[i] * * if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0: # <<<<<<<<<<<<<< @@ -45573,7 +45622,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { } } - /* "View.MemoryView":955 + /* "View.MemoryView":959 * _err(ValueError, "Cannot transpose memoryview with indirect dimensions") * * return 1 # <<<<<<<<<<<<<< @@ -45583,7 +45632,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { __pyx_r = 1; goto __pyx_L0; - /* "View.MemoryView":939 + /* "View.MemoryView":943 * * @cname('__pyx_memslice_transpose') * cdef int transpose_memslice(__Pyx_memviewslice *memslice) nogil except 0: # <<<<<<<<<<<<<< @@ -45607,7 +45656,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { return __pyx_r; } -/* "View.MemoryView":972 +/* "View.MemoryView":976 * cdef int (*to_dtype_func)(char *, object) except 0 * * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -45630,7 +45679,7 @@ static void __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewsl __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__dealloc__", 0); - /* "View.MemoryView":973 + /* "View.MemoryView":977 * * def __dealloc__(self): * __PYX_XDEC_MEMVIEW(&self.from_slice, 1) # <<<<<<<<<<<<<< @@ -45639,7 +45688,7 @@ static void __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewsl */ __PYX_XDEC_MEMVIEW((&__pyx_v_self->from_slice), 1); - /* "View.MemoryView":972 + /* "View.MemoryView":976 * cdef int (*to_dtype_func)(char *, object) except 0 * * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -45651,7 +45700,7 @@ static void __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewsl __Pyx_RefNannyFinishContext(); } -/* "View.MemoryView":975 +/* "View.MemoryView":979 * __PYX_XDEC_MEMVIEW(&self.from_slice, 1) * * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< @@ -45666,7 +45715,7 @@ static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memor PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("convert_item_to_object", 0); - /* "View.MemoryView":976 + /* "View.MemoryView":980 * * cdef convert_item_to_object(self, char *itemp): * if self.to_object_func != NULL: # <<<<<<<<<<<<<< @@ -45676,7 +45725,7 @@ static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memor __pyx_t_1 = ((__pyx_v_self->to_object_func != NULL) != 0); if (__pyx_t_1) { - /* "View.MemoryView":977 + /* "View.MemoryView":981 * cdef convert_item_to_object(self, char *itemp): * if self.to_object_func != NULL: * return self.to_object_func(itemp) # <<<<<<<<<<<<<< @@ -45684,13 +45733,13 @@ static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memor * return memoryview.convert_item_to_object(self, itemp) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_v_self->to_object_func(__pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 977, __pyx_L1_error) + __pyx_t_2 = __pyx_v_self->to_object_func(__pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 981, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":976 + /* "View.MemoryView":980 * * cdef convert_item_to_object(self, char *itemp): * if self.to_object_func != NULL: # <<<<<<<<<<<<<< @@ -45699,7 +45748,7 @@ static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memor */ } - /* "View.MemoryView":979 + /* "View.MemoryView":983 * return self.to_object_func(itemp) * else: * return memoryview.convert_item_to_object(self, itemp) # <<<<<<<<<<<<<< @@ -45708,14 +45757,14 @@ static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memor */ /*else*/ { __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_memoryview_convert_item_to_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 979, __pyx_L1_error) + __pyx_t_2 = __pyx_memoryview_convert_item_to_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 983, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; } - /* "View.MemoryView":975 + /* "View.MemoryView":979 * __PYX_XDEC_MEMVIEW(&self.from_slice, 1) * * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< @@ -45734,7 +45783,7 @@ static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memor return __pyx_r; } -/* "View.MemoryView":981 +/* "View.MemoryView":985 * return memoryview.convert_item_to_object(self, itemp) * * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< @@ -45750,7 +45799,7 @@ static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memo PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("assign_item_from_object", 0); - /* "View.MemoryView":982 + /* "View.MemoryView":986 * * cdef assign_item_from_object(self, char *itemp, object value): * if self.to_dtype_func != NULL: # <<<<<<<<<<<<<< @@ -45760,16 +45809,16 @@ static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memo __pyx_t_1 = ((__pyx_v_self->to_dtype_func != NULL) != 0); if (__pyx_t_1) { - /* "View.MemoryView":983 + /* "View.MemoryView":987 * cdef assign_item_from_object(self, char *itemp, object value): * if self.to_dtype_func != NULL: * self.to_dtype_func(itemp, value) # <<<<<<<<<<<<<< * else: * memoryview.assign_item_from_object(self, itemp, value) */ - __pyx_t_2 = __pyx_v_self->to_dtype_func(__pyx_v_itemp, __pyx_v_value); if (unlikely(__pyx_t_2 == ((int)0))) __PYX_ERR(1, 983, __pyx_L1_error) + __pyx_t_2 = __pyx_v_self->to_dtype_func(__pyx_v_itemp, __pyx_v_value); if (unlikely(__pyx_t_2 == ((int)0))) __PYX_ERR(1, 987, __pyx_L1_error) - /* "View.MemoryView":982 + /* "View.MemoryView":986 * * cdef assign_item_from_object(self, char *itemp, object value): * if self.to_dtype_func != NULL: # <<<<<<<<<<<<<< @@ -45779,7 +45828,7 @@ static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memo goto __pyx_L3; } - /* "View.MemoryView":985 + /* "View.MemoryView":989 * self.to_dtype_func(itemp, value) * else: * memoryview.assign_item_from_object(self, itemp, value) # <<<<<<<<<<<<<< @@ -45787,13 +45836,13 @@ static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memo * @property */ /*else*/ { - __pyx_t_3 = __pyx_memoryview_assign_item_from_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 985, __pyx_L1_error) + __pyx_t_3 = __pyx_memoryview_assign_item_from_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_L3:; - /* "View.MemoryView":981 + /* "View.MemoryView":985 * return memoryview.convert_item_to_object(self, itemp) * * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< @@ -45814,7 +45863,7 @@ static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memo return __pyx_r; } -/* "View.MemoryView":988 +/* "View.MemoryView":992 * * @property * def base(self): # <<<<<<<<<<<<<< @@ -45840,7 +45889,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_16_memoryviewslice_4base___get__ __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":989 + /* "View.MemoryView":993 * @property * def base(self): * return self.from_object # <<<<<<<<<<<<<< @@ -45852,7 +45901,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_16_memoryviewslice_4base___get__ __pyx_r = __pyx_v_self->from_object; goto __pyx_L0; - /* "View.MemoryView":988 + /* "View.MemoryView":992 * * @property * def base(self): # <<<<<<<<<<<<<< @@ -45974,7 +46023,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUS return __pyx_r; } -/* "View.MemoryView":995 +/* "View.MemoryView":999 * * @cname('__pyx_memoryview_fromslice') * cdef memoryview_fromslice(__Pyx_memviewslice memviewslice, # <<<<<<<<<<<<<< @@ -45999,7 +46048,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl Py_ssize_t __pyx_t_9; __Pyx_RefNannySetupContext("memoryview_fromslice", 0); - /* "View.MemoryView":1003 + /* "View.MemoryView":1007 * cdef _memoryviewslice result * * if memviewslice.memview == Py_None: # <<<<<<<<<<<<<< @@ -46009,7 +46058,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_t_1 = ((((PyObject *)__pyx_v_memviewslice.memview) == Py_None) != 0); if (__pyx_t_1) { - /* "View.MemoryView":1004 + /* "View.MemoryView":1008 * * if memviewslice.memview == Py_None: * return None # <<<<<<<<<<<<<< @@ -46020,7 +46069,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; - /* "View.MemoryView":1003 + /* "View.MemoryView":1007 * cdef _memoryviewslice result * * if memviewslice.memview == Py_None: # <<<<<<<<<<<<<< @@ -46029,16 +46078,16 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ } - /* "View.MemoryView":1009 + /* "View.MemoryView":1013 * * * result = _memoryviewslice(None, 0, dtype_is_object) # <<<<<<<<<<<<<< * * result.from_slice = memviewslice */ - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1009, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1009, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); @@ -46049,13 +46098,13 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryviewslice_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1009, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryviewslice_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_result = ((struct __pyx_memoryviewslice_obj *)__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":1011 + /* "View.MemoryView":1015 * result = _memoryviewslice(None, 0, dtype_is_object) * * result.from_slice = memviewslice # <<<<<<<<<<<<<< @@ -46064,7 +46113,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->from_slice = __pyx_v_memviewslice; - /* "View.MemoryView":1012 + /* "View.MemoryView":1016 * * result.from_slice = memviewslice * __PYX_INC_MEMVIEW(&memviewslice, 1) # <<<<<<<<<<<<<< @@ -46073,14 +46122,14 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __PYX_INC_MEMVIEW((&__pyx_v_memviewslice), 1); - /* "View.MemoryView":1014 + /* "View.MemoryView":1018 * __PYX_INC_MEMVIEW(&memviewslice, 1) * * result.from_object = ( memviewslice.memview).base # <<<<<<<<<<<<<< * result.typeinfo = memviewslice.memview.typeinfo * */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_memviewslice.memview), __pyx_n_s_base); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1014, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_memviewslice.memview), __pyx_n_s_base); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1018, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_result->from_object); @@ -46088,7 +46137,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_v_result->from_object = __pyx_t_2; __pyx_t_2 = 0; - /* "View.MemoryView":1015 + /* "View.MemoryView":1019 * * result.from_object = ( memviewslice.memview).base * result.typeinfo = memviewslice.memview.typeinfo # <<<<<<<<<<<<<< @@ -46098,7 +46147,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_t_4 = __pyx_v_memviewslice.memview->typeinfo; __pyx_v_result->__pyx_base.typeinfo = __pyx_t_4; - /* "View.MemoryView":1017 + /* "View.MemoryView":1021 * result.typeinfo = memviewslice.memview.typeinfo * * result.view = memviewslice.memview.view # <<<<<<<<<<<<<< @@ -46108,7 +46157,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_t_5 = __pyx_v_memviewslice.memview->view; __pyx_v_result->__pyx_base.view = __pyx_t_5; - /* "View.MemoryView":1018 + /* "View.MemoryView":1022 * * result.view = memviewslice.memview.view * result.view.buf = memviewslice.data # <<<<<<<<<<<<<< @@ -46117,7 +46166,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->__pyx_base.view.buf = ((void *)__pyx_v_memviewslice.data); - /* "View.MemoryView":1019 + /* "View.MemoryView":1023 * result.view = memviewslice.memview.view * result.view.buf = memviewslice.data * result.view.ndim = ndim # <<<<<<<<<<<<<< @@ -46126,7 +46175,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->__pyx_base.view.ndim = __pyx_v_ndim; - /* "View.MemoryView":1020 + /* "View.MemoryView":1024 * result.view.buf = memviewslice.data * result.view.ndim = ndim * (<__pyx_buffer *> &result.view).obj = Py_None # <<<<<<<<<<<<<< @@ -46135,7 +46184,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ ((Py_buffer *)(&__pyx_v_result->__pyx_base.view))->obj = Py_None; - /* "View.MemoryView":1021 + /* "View.MemoryView":1025 * result.view.ndim = ndim * (<__pyx_buffer *> &result.view).obj = Py_None * Py_INCREF(Py_None) # <<<<<<<<<<<<<< @@ -46144,7 +46193,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ Py_INCREF(Py_None); - /* "View.MemoryView":1023 + /* "View.MemoryView":1027 * Py_INCREF(Py_None) * * if (memviewslice.memview).flags & PyBUF_WRITABLE: # <<<<<<<<<<<<<< @@ -46154,7 +46203,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_t_1 = ((((struct __pyx_memoryview_obj *)__pyx_v_memviewslice.memview)->flags & PyBUF_WRITABLE) != 0); if (__pyx_t_1) { - /* "View.MemoryView":1024 + /* "View.MemoryView":1028 * * if (memviewslice.memview).flags & PyBUF_WRITABLE: * result.flags = PyBUF_RECORDS # <<<<<<<<<<<<<< @@ -46163,7 +46212,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->__pyx_base.flags = PyBUF_RECORDS; - /* "View.MemoryView":1023 + /* "View.MemoryView":1027 * Py_INCREF(Py_None) * * if (memviewslice.memview).flags & PyBUF_WRITABLE: # <<<<<<<<<<<<<< @@ -46173,7 +46222,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl goto __pyx_L4; } - /* "View.MemoryView":1026 + /* "View.MemoryView":1030 * result.flags = PyBUF_RECORDS * else: * result.flags = PyBUF_RECORDS_RO # <<<<<<<<<<<<<< @@ -46185,7 +46234,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl } __pyx_L4:; - /* "View.MemoryView":1028 + /* "View.MemoryView":1032 * result.flags = PyBUF_RECORDS_RO * * result.view.shape = result.from_slice.shape # <<<<<<<<<<<<<< @@ -46194,7 +46243,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->__pyx_base.view.shape = ((Py_ssize_t *)__pyx_v_result->from_slice.shape); - /* "View.MemoryView":1029 + /* "View.MemoryView":1033 * * result.view.shape = result.from_slice.shape * result.view.strides = result.from_slice.strides # <<<<<<<<<<<<<< @@ -46203,7 +46252,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->__pyx_base.view.strides = ((Py_ssize_t *)__pyx_v_result->from_slice.strides); - /* "View.MemoryView":1032 + /* "View.MemoryView":1036 * * * result.view.suboffsets = NULL # <<<<<<<<<<<<<< @@ -46212,7 +46261,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->__pyx_base.view.suboffsets = NULL; - /* "View.MemoryView":1033 + /* "View.MemoryView":1037 * * result.view.suboffsets = NULL * for suboffset in result.from_slice.suboffsets[:ndim]: # <<<<<<<<<<<<<< @@ -46224,7 +46273,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_t_6 = __pyx_t_8; __pyx_v_suboffset = (__pyx_t_6[0]); - /* "View.MemoryView":1034 + /* "View.MemoryView":1038 * result.view.suboffsets = NULL * for suboffset in result.from_slice.suboffsets[:ndim]: * if suboffset >= 0: # <<<<<<<<<<<<<< @@ -46234,7 +46283,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_t_1 = ((__pyx_v_suboffset >= 0) != 0); if (__pyx_t_1) { - /* "View.MemoryView":1035 + /* "View.MemoryView":1039 * for suboffset in result.from_slice.suboffsets[:ndim]: * if suboffset >= 0: * result.view.suboffsets = result.from_slice.suboffsets # <<<<<<<<<<<<<< @@ -46243,7 +46292,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->__pyx_base.view.suboffsets = ((Py_ssize_t *)__pyx_v_result->from_slice.suboffsets); - /* "View.MemoryView":1036 + /* "View.MemoryView":1040 * if suboffset >= 0: * result.view.suboffsets = result.from_slice.suboffsets * break # <<<<<<<<<<<<<< @@ -46252,7 +46301,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ goto __pyx_L6_break; - /* "View.MemoryView":1034 + /* "View.MemoryView":1038 * result.view.suboffsets = NULL * for suboffset in result.from_slice.suboffsets[:ndim]: * if suboffset >= 0: # <<<<<<<<<<<<<< @@ -46263,7 +46312,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl } __pyx_L6_break:; - /* "View.MemoryView":1038 + /* "View.MemoryView":1042 * break * * result.view.len = result.view.itemsize # <<<<<<<<<<<<<< @@ -46273,7 +46322,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_t_9 = __pyx_v_result->__pyx_base.view.itemsize; __pyx_v_result->__pyx_base.view.len = __pyx_t_9; - /* "View.MemoryView":1039 + /* "View.MemoryView":1043 * * result.view.len = result.view.itemsize * for length in result.view.shape[:ndim]: # <<<<<<<<<<<<<< @@ -46283,29 +46332,29 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_t_7 = (__pyx_v_result->__pyx_base.view.shape + __pyx_v_ndim); for (__pyx_t_8 = __pyx_v_result->__pyx_base.view.shape; __pyx_t_8 < __pyx_t_7; __pyx_t_8++) { __pyx_t_6 = __pyx_t_8; - __pyx_t_2 = PyInt_FromSsize_t((__pyx_t_6[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1039, __pyx_L1_error) + __pyx_t_2 = PyInt_FromSsize_t((__pyx_t_6[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1043, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_XDECREF_SET(__pyx_v_length, __pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":1040 + /* "View.MemoryView":1044 * result.view.len = result.view.itemsize * for length in result.view.shape[:ndim]: * result.view.len *= length # <<<<<<<<<<<<<< * * result.to_object_func = to_object_func */ - __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_result->__pyx_base.view.len); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1040, __pyx_L1_error) + __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_result->__pyx_base.view.len); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1044, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyNumber_InPlaceMultiply(__pyx_t_2, __pyx_v_length); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1040, __pyx_L1_error) + __pyx_t_3 = PyNumber_InPlaceMultiply(__pyx_t_2, __pyx_v_length); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1044, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 1040, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 1044, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_result->__pyx_base.view.len = __pyx_t_9; } - /* "View.MemoryView":1042 + /* "View.MemoryView":1046 * result.view.len *= length * * result.to_object_func = to_object_func # <<<<<<<<<<<<<< @@ -46314,7 +46363,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->to_object_func = __pyx_v_to_object_func; - /* "View.MemoryView":1043 + /* "View.MemoryView":1047 * * result.to_object_func = to_object_func * result.to_dtype_func = to_dtype_func # <<<<<<<<<<<<<< @@ -46323,7 +46372,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->to_dtype_func = __pyx_v_to_dtype_func; - /* "View.MemoryView":1045 + /* "View.MemoryView":1049 * result.to_dtype_func = to_dtype_func * * return result # <<<<<<<<<<<<<< @@ -46335,7 +46384,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_r = ((PyObject *)__pyx_v_result); goto __pyx_L0; - /* "View.MemoryView":995 + /* "View.MemoryView":999 * * @cname('__pyx_memoryview_fromslice') * cdef memoryview_fromslice(__Pyx_memviewslice memviewslice, # <<<<<<<<<<<<<< @@ -46357,11 +46406,11 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl return __pyx_r; } -/* "View.MemoryView":1048 +/* "View.MemoryView":1052 * * @cname('__pyx_memoryview_get_slice_from_memoryview') * cdef __Pyx_memviewslice *get_slice_from_memview(memoryview memview, # <<<<<<<<<<<<<< - * __Pyx_memviewslice *mslice): + * __Pyx_memviewslice *mslice) except NULL: * cdef _memoryviewslice obj */ @@ -46374,8 +46423,8 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("get_slice_from_memview", 0); - /* "View.MemoryView":1051 - * __Pyx_memviewslice *mslice): + /* "View.MemoryView":1055 + * __Pyx_memviewslice *mslice) except NULL: * cdef _memoryviewslice obj * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< * obj = memview @@ -46385,20 +46434,20 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "View.MemoryView":1052 + /* "View.MemoryView":1056 * cdef _memoryviewslice obj * if isinstance(memview, _memoryviewslice): * obj = memview # <<<<<<<<<<<<<< * return &obj.from_slice * else: */ - if (!(likely(((((PyObject *)__pyx_v_memview)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type))))) __PYX_ERR(1, 1052, __pyx_L1_error) + if (!(likely(((((PyObject *)__pyx_v_memview)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type))))) __PYX_ERR(1, 1056, __pyx_L1_error) __pyx_t_3 = ((PyObject *)__pyx_v_memview); __Pyx_INCREF(__pyx_t_3); __pyx_v_obj = ((struct __pyx_memoryviewslice_obj *)__pyx_t_3); __pyx_t_3 = 0; - /* "View.MemoryView":1053 + /* "View.MemoryView":1057 * if isinstance(memview, _memoryviewslice): * obj = memview * return &obj.from_slice # <<<<<<<<<<<<<< @@ -46408,8 +46457,8 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p __pyx_r = (&__pyx_v_obj->from_slice); goto __pyx_L0; - /* "View.MemoryView":1051 - * __Pyx_memviewslice *mslice): + /* "View.MemoryView":1055 + * __Pyx_memviewslice *mslice) except NULL: * cdef _memoryviewslice obj * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< * obj = memview @@ -46417,7 +46466,7 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p */ } - /* "View.MemoryView":1055 + /* "View.MemoryView":1059 * return &obj.from_slice * else: * slice_copy(memview, mslice) # <<<<<<<<<<<<<< @@ -46427,7 +46476,7 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p /*else*/ { __pyx_memoryview_slice_copy(__pyx_v_memview, __pyx_v_mslice); - /* "View.MemoryView":1056 + /* "View.MemoryView":1060 * else: * slice_copy(memview, mslice) * return mslice # <<<<<<<<<<<<<< @@ -46438,26 +46487,26 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p goto __pyx_L0; } - /* "View.MemoryView":1048 + /* "View.MemoryView":1052 * * @cname('__pyx_memoryview_get_slice_from_memoryview') * cdef __Pyx_memviewslice *get_slice_from_memview(memoryview memview, # <<<<<<<<<<<<<< - * __Pyx_memviewslice *mslice): + * __Pyx_memviewslice *mslice) except NULL: * cdef _memoryviewslice obj */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); - __Pyx_WriteUnraisable("View.MemoryView.get_slice_from_memview", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; + __Pyx_AddTraceback("View.MemoryView.get_slice_from_memview", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_obj); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "View.MemoryView":1059 +/* "View.MemoryView":1063 * * @cname('__pyx_memoryview_slice_copy') * cdef void slice_copy(memoryview memview, __Pyx_memviewslice *dst): # <<<<<<<<<<<<<< @@ -46478,7 +46527,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem Py_ssize_t __pyx_t_5; __Pyx_RefNannySetupContext("slice_copy", 0); - /* "View.MemoryView":1063 + /* "View.MemoryView":1067 * cdef (Py_ssize_t*) shape, strides, suboffsets * * shape = memview.view.shape # <<<<<<<<<<<<<< @@ -46488,7 +46537,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem __pyx_t_1 = __pyx_v_memview->view.shape; __pyx_v_shape = __pyx_t_1; - /* "View.MemoryView":1064 + /* "View.MemoryView":1068 * * shape = memview.view.shape * strides = memview.view.strides # <<<<<<<<<<<<<< @@ -46498,7 +46547,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem __pyx_t_1 = __pyx_v_memview->view.strides; __pyx_v_strides = __pyx_t_1; - /* "View.MemoryView":1065 + /* "View.MemoryView":1069 * shape = memview.view.shape * strides = memview.view.strides * suboffsets = memview.view.suboffsets # <<<<<<<<<<<<<< @@ -46508,7 +46557,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem __pyx_t_1 = __pyx_v_memview->view.suboffsets; __pyx_v_suboffsets = __pyx_t_1; - /* "View.MemoryView":1067 + /* "View.MemoryView":1071 * suboffsets = memview.view.suboffsets * * dst.memview = <__pyx_memoryview *> memview # <<<<<<<<<<<<<< @@ -46517,7 +46566,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem */ __pyx_v_dst->memview = ((struct __pyx_memoryview_obj *)__pyx_v_memview); - /* "View.MemoryView":1068 + /* "View.MemoryView":1072 * * dst.memview = <__pyx_memoryview *> memview * dst.data = memview.view.buf # <<<<<<<<<<<<<< @@ -46526,7 +46575,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem */ __pyx_v_dst->data = ((char *)__pyx_v_memview->view.buf); - /* "View.MemoryView":1070 + /* "View.MemoryView":1074 * dst.data = memview.view.buf * * for dim in range(memview.view.ndim): # <<<<<<<<<<<<<< @@ -46538,7 +46587,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_dim = __pyx_t_4; - /* "View.MemoryView":1071 + /* "View.MemoryView":1075 * * for dim in range(memview.view.ndim): * dst.shape[dim] = shape[dim] # <<<<<<<<<<<<<< @@ -46547,7 +46596,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem */ (__pyx_v_dst->shape[__pyx_v_dim]) = (__pyx_v_shape[__pyx_v_dim]); - /* "View.MemoryView":1072 + /* "View.MemoryView":1076 * for dim in range(memview.view.ndim): * dst.shape[dim] = shape[dim] * dst.strides[dim] = strides[dim] # <<<<<<<<<<<<<< @@ -46556,7 +46605,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem */ (__pyx_v_dst->strides[__pyx_v_dim]) = (__pyx_v_strides[__pyx_v_dim]); - /* "View.MemoryView":1073 + /* "View.MemoryView":1077 * dst.shape[dim] = shape[dim] * dst.strides[dim] = strides[dim] * dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1 # <<<<<<<<<<<<<< @@ -46571,7 +46620,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem (__pyx_v_dst->suboffsets[__pyx_v_dim]) = __pyx_t_5; } - /* "View.MemoryView":1059 + /* "View.MemoryView":1063 * * @cname('__pyx_memoryview_slice_copy') * cdef void slice_copy(memoryview memview, __Pyx_memviewslice *dst): # <<<<<<<<<<<<<< @@ -46583,7 +46632,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem __Pyx_RefNannyFinishContext(); } -/* "View.MemoryView":1076 +/* "View.MemoryView":1080 * * @cname('__pyx_memoryview_copy_object') * cdef memoryview_copy(memoryview memview): # <<<<<<<<<<<<<< @@ -46598,7 +46647,7 @@ static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *__pyx PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("memoryview_copy", 0); - /* "View.MemoryView":1079 + /* "View.MemoryView":1083 * "Create a new memoryview object" * cdef __Pyx_memviewslice memviewslice * slice_copy(memview, &memviewslice) # <<<<<<<<<<<<<< @@ -46607,7 +46656,7 @@ static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *__pyx */ __pyx_memoryview_slice_copy(__pyx_v_memview, (&__pyx_v_memviewslice)); - /* "View.MemoryView":1080 + /* "View.MemoryView":1084 * cdef __Pyx_memviewslice memviewslice * slice_copy(memview, &memviewslice) * return memoryview_copy_from_slice(memview, &memviewslice) # <<<<<<<<<<<<<< @@ -46615,13 +46664,13 @@ static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *__pyx * @cname('__pyx_memoryview_copy_object_from_slice') */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_memoryview_copy_object_from_slice(__pyx_v_memview, (&__pyx_v_memviewslice)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1080, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_copy_object_from_slice(__pyx_v_memview, (&__pyx_v_memviewslice)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1084, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "View.MemoryView":1076 + /* "View.MemoryView":1080 * * @cname('__pyx_memoryview_copy_object') * cdef memoryview_copy(memoryview memview): # <<<<<<<<<<<<<< @@ -46640,7 +46689,7 @@ static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *__pyx return __pyx_r; } -/* "View.MemoryView":1083 +/* "View.MemoryView":1087 * * @cname('__pyx_memoryview_copy_object_from_slice') * cdef memoryview_copy_from_slice(memoryview memview, __Pyx_memviewslice *memviewslice): # <<<<<<<<<<<<<< @@ -46660,7 +46709,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview PyObject *__pyx_t_5 = NULL; __Pyx_RefNannySetupContext("memoryview_copy_from_slice", 0); - /* "View.MemoryView":1090 + /* "View.MemoryView":1094 * cdef int (*to_dtype_func)(char *, object) except 0 * * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< @@ -46671,7 +46720,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "View.MemoryView":1091 + /* "View.MemoryView":1095 * * if isinstance(memview, _memoryviewslice): * to_object_func = (<_memoryviewslice> memview).to_object_func # <<<<<<<<<<<<<< @@ -46681,7 +46730,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview __pyx_t_3 = ((struct __pyx_memoryviewslice_obj *)__pyx_v_memview)->to_object_func; __pyx_v_to_object_func = __pyx_t_3; - /* "View.MemoryView":1092 + /* "View.MemoryView":1096 * if isinstance(memview, _memoryviewslice): * to_object_func = (<_memoryviewslice> memview).to_object_func * to_dtype_func = (<_memoryviewslice> memview).to_dtype_func # <<<<<<<<<<<<<< @@ -46691,7 +46740,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview __pyx_t_4 = ((struct __pyx_memoryviewslice_obj *)__pyx_v_memview)->to_dtype_func; __pyx_v_to_dtype_func = __pyx_t_4; - /* "View.MemoryView":1090 + /* "View.MemoryView":1094 * cdef int (*to_dtype_func)(char *, object) except 0 * * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< @@ -46701,7 +46750,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview goto __pyx_L3; } - /* "View.MemoryView":1094 + /* "View.MemoryView":1098 * to_dtype_func = (<_memoryviewslice> memview).to_dtype_func * else: * to_object_func = NULL # <<<<<<<<<<<<<< @@ -46711,7 +46760,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview /*else*/ { __pyx_v_to_object_func = NULL; - /* "View.MemoryView":1095 + /* "View.MemoryView":1099 * else: * to_object_func = NULL * to_dtype_func = NULL # <<<<<<<<<<<<<< @@ -46722,7 +46771,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview } __pyx_L3:; - /* "View.MemoryView":1097 + /* "View.MemoryView":1101 * to_dtype_func = NULL * * return memoryview_fromslice(memviewslice[0], memview.view.ndim, # <<<<<<<<<<<<<< @@ -46731,20 +46780,20 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview */ __Pyx_XDECREF(__pyx_r); - /* "View.MemoryView":1099 + /* "View.MemoryView":1103 * return memoryview_fromslice(memviewslice[0], memview.view.ndim, * to_object_func, to_dtype_func, * memview.dtype_is_object) # <<<<<<<<<<<<<< * * */ - __pyx_t_5 = __pyx_memoryview_fromslice((__pyx_v_memviewslice[0]), __pyx_v_memview->view.ndim, __pyx_v_to_object_func, __pyx_v_to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1097, __pyx_L1_error) + __pyx_t_5 = __pyx_memoryview_fromslice((__pyx_v_memviewslice[0]), __pyx_v_memview->view.ndim, __pyx_v_to_object_func, __pyx_v_to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0; - /* "View.MemoryView":1083 + /* "View.MemoryView":1087 * * @cname('__pyx_memoryview_copy_object_from_slice') * cdef memoryview_copy_from_slice(memoryview memview, __Pyx_memviewslice *memviewslice): # <<<<<<<<<<<<<< @@ -46763,7 +46812,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview return __pyx_r; } -/* "View.MemoryView":1105 +/* "View.MemoryView":1109 * * * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil: # <<<<<<<<<<<<<< @@ -46775,7 +46824,7 @@ static Py_ssize_t abs_py_ssize_t(Py_ssize_t __pyx_v_arg) { Py_ssize_t __pyx_r; int __pyx_t_1; - /* "View.MemoryView":1106 + /* "View.MemoryView":1110 * * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil: * if arg < 0: # <<<<<<<<<<<<<< @@ -46785,7 +46834,7 @@ static Py_ssize_t abs_py_ssize_t(Py_ssize_t __pyx_v_arg) { __pyx_t_1 = ((__pyx_v_arg < 0) != 0); if (__pyx_t_1) { - /* "View.MemoryView":1107 + /* "View.MemoryView":1111 * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil: * if arg < 0: * return -arg # <<<<<<<<<<<<<< @@ -46795,7 +46844,7 @@ static Py_ssize_t abs_py_ssize_t(Py_ssize_t __pyx_v_arg) { __pyx_r = (-__pyx_v_arg); goto __pyx_L0; - /* "View.MemoryView":1106 + /* "View.MemoryView":1110 * * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil: * if arg < 0: # <<<<<<<<<<<<<< @@ -46804,7 +46853,7 @@ static Py_ssize_t abs_py_ssize_t(Py_ssize_t __pyx_v_arg) { */ } - /* "View.MemoryView":1109 + /* "View.MemoryView":1113 * return -arg * else: * return arg # <<<<<<<<<<<<<< @@ -46816,7 +46865,7 @@ static Py_ssize_t abs_py_ssize_t(Py_ssize_t __pyx_v_arg) { goto __pyx_L0; } - /* "View.MemoryView":1105 + /* "View.MemoryView":1109 * * * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil: # <<<<<<<<<<<<<< @@ -46829,7 +46878,7 @@ static Py_ssize_t abs_py_ssize_t(Py_ssize_t __pyx_v_arg) { return __pyx_r; } -/* "View.MemoryView":1112 +/* "View.MemoryView":1116 * * @cname('__pyx_get_best_slice_order') * cdef char get_best_order(__Pyx_memviewslice *mslice, int ndim) nogil: # <<<<<<<<<<<<<< @@ -46847,7 +46896,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ int __pyx_t_3; int __pyx_t_4; - /* "View.MemoryView":1117 + /* "View.MemoryView":1121 * """ * cdef int i * cdef Py_ssize_t c_stride = 0 # <<<<<<<<<<<<<< @@ -46856,7 +46905,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ */ __pyx_v_c_stride = 0; - /* "View.MemoryView":1118 + /* "View.MemoryView":1122 * cdef int i * cdef Py_ssize_t c_stride = 0 * cdef Py_ssize_t f_stride = 0 # <<<<<<<<<<<<<< @@ -46865,7 +46914,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ */ __pyx_v_f_stride = 0; - /* "View.MemoryView":1120 + /* "View.MemoryView":1124 * cdef Py_ssize_t f_stride = 0 * * for i in range(ndim - 1, -1, -1): # <<<<<<<<<<<<<< @@ -46875,7 +46924,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ for (__pyx_t_1 = (__pyx_v_ndim - 1); __pyx_t_1 > -1; __pyx_t_1-=1) { __pyx_v_i = __pyx_t_1; - /* "View.MemoryView":1121 + /* "View.MemoryView":1125 * * for i in range(ndim - 1, -1, -1): * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< @@ -46885,7 +46934,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ __pyx_t_2 = (((__pyx_v_mslice->shape[__pyx_v_i]) > 1) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1122 + /* "View.MemoryView":1126 * for i in range(ndim - 1, -1, -1): * if mslice.shape[i] > 1: * c_stride = mslice.strides[i] # <<<<<<<<<<<<<< @@ -46894,7 +46943,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ */ __pyx_v_c_stride = (__pyx_v_mslice->strides[__pyx_v_i]); - /* "View.MemoryView":1123 + /* "View.MemoryView":1127 * if mslice.shape[i] > 1: * c_stride = mslice.strides[i] * break # <<<<<<<<<<<<<< @@ -46903,7 +46952,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ */ goto __pyx_L4_break; - /* "View.MemoryView":1121 + /* "View.MemoryView":1125 * * for i in range(ndim - 1, -1, -1): * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< @@ -46914,7 +46963,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ } __pyx_L4_break:; - /* "View.MemoryView":1125 + /* "View.MemoryView":1129 * break * * for i in range(ndim): # <<<<<<<<<<<<<< @@ -46926,7 +46975,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_i = __pyx_t_4; - /* "View.MemoryView":1126 + /* "View.MemoryView":1130 * * for i in range(ndim): * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< @@ -46936,7 +46985,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ __pyx_t_2 = (((__pyx_v_mslice->shape[__pyx_v_i]) > 1) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1127 + /* "View.MemoryView":1131 * for i in range(ndim): * if mslice.shape[i] > 1: * f_stride = mslice.strides[i] # <<<<<<<<<<<<<< @@ -46945,7 +46994,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ */ __pyx_v_f_stride = (__pyx_v_mslice->strides[__pyx_v_i]); - /* "View.MemoryView":1128 + /* "View.MemoryView":1132 * if mslice.shape[i] > 1: * f_stride = mslice.strides[i] * break # <<<<<<<<<<<<<< @@ -46954,7 +47003,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ */ goto __pyx_L7_break; - /* "View.MemoryView":1126 + /* "View.MemoryView":1130 * * for i in range(ndim): * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< @@ -46965,7 +47014,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ } __pyx_L7_break:; - /* "View.MemoryView":1130 + /* "View.MemoryView":1134 * break * * if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride): # <<<<<<<<<<<<<< @@ -46975,7 +47024,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ __pyx_t_2 = ((abs_py_ssize_t(__pyx_v_c_stride) <= abs_py_ssize_t(__pyx_v_f_stride)) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1131 + /* "View.MemoryView":1135 * * if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride): * return 'C' # <<<<<<<<<<<<<< @@ -46985,7 +47034,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ __pyx_r = 'C'; goto __pyx_L0; - /* "View.MemoryView":1130 + /* "View.MemoryView":1134 * break * * if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride): # <<<<<<<<<<<<<< @@ -46994,7 +47043,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ */ } - /* "View.MemoryView":1133 + /* "View.MemoryView":1137 * return 'C' * else: * return 'F' # <<<<<<<<<<<<<< @@ -47006,7 +47055,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ goto __pyx_L0; } - /* "View.MemoryView":1112 + /* "View.MemoryView":1116 * * @cname('__pyx_get_best_slice_order') * cdef char get_best_order(__Pyx_memviewslice *mslice, int ndim) nogil: # <<<<<<<<<<<<<< @@ -47019,7 +47068,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ return __pyx_r; } -/* "View.MemoryView":1136 +/* "View.MemoryView":1140 * * @cython.cdivision(True) * cdef void _copy_strided_to_strided(char *src_data, Py_ssize_t *src_strides, # <<<<<<<<<<<<<< @@ -47040,7 +47089,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v Py_ssize_t __pyx_t_5; Py_ssize_t __pyx_t_6; - /* "View.MemoryView":1143 + /* "View.MemoryView":1147 * * cdef Py_ssize_t i * cdef Py_ssize_t src_extent = src_shape[0] # <<<<<<<<<<<<<< @@ -47049,7 +47098,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ __pyx_v_src_extent = (__pyx_v_src_shape[0]); - /* "View.MemoryView":1144 + /* "View.MemoryView":1148 * cdef Py_ssize_t i * cdef Py_ssize_t src_extent = src_shape[0] * cdef Py_ssize_t dst_extent = dst_shape[0] # <<<<<<<<<<<<<< @@ -47058,7 +47107,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ __pyx_v_dst_extent = (__pyx_v_dst_shape[0]); - /* "View.MemoryView":1145 + /* "View.MemoryView":1149 * cdef Py_ssize_t src_extent = src_shape[0] * cdef Py_ssize_t dst_extent = dst_shape[0] * cdef Py_ssize_t src_stride = src_strides[0] # <<<<<<<<<<<<<< @@ -47067,7 +47116,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ __pyx_v_src_stride = (__pyx_v_src_strides[0]); - /* "View.MemoryView":1146 + /* "View.MemoryView":1150 * cdef Py_ssize_t dst_extent = dst_shape[0] * cdef Py_ssize_t src_stride = src_strides[0] * cdef Py_ssize_t dst_stride = dst_strides[0] # <<<<<<<<<<<<<< @@ -47076,7 +47125,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ __pyx_v_dst_stride = (__pyx_v_dst_strides[0]); - /* "View.MemoryView":1148 + /* "View.MemoryView":1152 * cdef Py_ssize_t dst_stride = dst_strides[0] * * if ndim == 1: # <<<<<<<<<<<<<< @@ -47086,7 +47135,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v __pyx_t_1 = ((__pyx_v_ndim == 1) != 0); if (__pyx_t_1) { - /* "View.MemoryView":1149 + /* "View.MemoryView":1153 * * if ndim == 1: * if (src_stride > 0 and dst_stride > 0 and # <<<<<<<<<<<<<< @@ -47106,7 +47155,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v goto __pyx_L5_bool_binop_done; } - /* "View.MemoryView":1150 + /* "View.MemoryView":1154 * if ndim == 1: * if (src_stride > 0 and dst_stride > 0 and * src_stride == itemsize == dst_stride): # <<<<<<<<<<<<<< @@ -47121,7 +47170,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v __pyx_t_1 = __pyx_t_3; __pyx_L5_bool_binop_done:; - /* "View.MemoryView":1149 + /* "View.MemoryView":1153 * * if ndim == 1: * if (src_stride > 0 and dst_stride > 0 and # <<<<<<<<<<<<<< @@ -47130,7 +47179,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ if (__pyx_t_1) { - /* "View.MemoryView":1151 + /* "View.MemoryView":1155 * if (src_stride > 0 and dst_stride > 0 and * src_stride == itemsize == dst_stride): * memcpy(dst_data, src_data, itemsize * dst_extent) # <<<<<<<<<<<<<< @@ -47139,7 +47188,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ (void)(memcpy(__pyx_v_dst_data, __pyx_v_src_data, (__pyx_v_itemsize * __pyx_v_dst_extent))); - /* "View.MemoryView":1149 + /* "View.MemoryView":1153 * * if ndim == 1: * if (src_stride > 0 and dst_stride > 0 and # <<<<<<<<<<<<<< @@ -47149,7 +47198,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v goto __pyx_L4; } - /* "View.MemoryView":1153 + /* "View.MemoryView":1157 * memcpy(dst_data, src_data, itemsize * dst_extent) * else: * for i in range(dst_extent): # <<<<<<<<<<<<<< @@ -47162,7 +47211,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6; - /* "View.MemoryView":1154 + /* "View.MemoryView":1158 * else: * for i in range(dst_extent): * memcpy(dst_data, src_data, itemsize) # <<<<<<<<<<<<<< @@ -47171,7 +47220,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ (void)(memcpy(__pyx_v_dst_data, __pyx_v_src_data, __pyx_v_itemsize)); - /* "View.MemoryView":1155 + /* "View.MemoryView":1159 * for i in range(dst_extent): * memcpy(dst_data, src_data, itemsize) * src_data += src_stride # <<<<<<<<<<<<<< @@ -47180,7 +47229,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ __pyx_v_src_data = (__pyx_v_src_data + __pyx_v_src_stride); - /* "View.MemoryView":1156 + /* "View.MemoryView":1160 * memcpy(dst_data, src_data, itemsize) * src_data += src_stride * dst_data += dst_stride # <<<<<<<<<<<<<< @@ -47192,7 +47241,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v } __pyx_L4:; - /* "View.MemoryView":1148 + /* "View.MemoryView":1152 * cdef Py_ssize_t dst_stride = dst_strides[0] * * if ndim == 1: # <<<<<<<<<<<<<< @@ -47202,7 +47251,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v goto __pyx_L3; } - /* "View.MemoryView":1158 + /* "View.MemoryView":1162 * dst_data += dst_stride * else: * for i in range(dst_extent): # <<<<<<<<<<<<<< @@ -47215,7 +47264,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6; - /* "View.MemoryView":1159 + /* "View.MemoryView":1163 * else: * for i in range(dst_extent): * _copy_strided_to_strided(src_data, src_strides + 1, # <<<<<<<<<<<<<< @@ -47224,7 +47273,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ _copy_strided_to_strided(__pyx_v_src_data, (__pyx_v_src_strides + 1), __pyx_v_dst_data, (__pyx_v_dst_strides + 1), (__pyx_v_src_shape + 1), (__pyx_v_dst_shape + 1), (__pyx_v_ndim - 1), __pyx_v_itemsize); - /* "View.MemoryView":1163 + /* "View.MemoryView":1167 * src_shape + 1, dst_shape + 1, * ndim - 1, itemsize) * src_data += src_stride # <<<<<<<<<<<<<< @@ -47233,7 +47282,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ __pyx_v_src_data = (__pyx_v_src_data + __pyx_v_src_stride); - /* "View.MemoryView":1164 + /* "View.MemoryView":1168 * ndim - 1, itemsize) * src_data += src_stride * dst_data += dst_stride # <<<<<<<<<<<<<< @@ -47245,7 +47294,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v } __pyx_L3:; - /* "View.MemoryView":1136 + /* "View.MemoryView":1140 * * @cython.cdivision(True) * cdef void _copy_strided_to_strided(char *src_data, Py_ssize_t *src_strides, # <<<<<<<<<<<<<< @@ -47256,7 +47305,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v /* function exit code */ } -/* "View.MemoryView":1166 +/* "View.MemoryView":1170 * dst_data += dst_stride * * cdef void copy_strided_to_strided(__Pyx_memviewslice *src, # <<<<<<<<<<<<<< @@ -47266,7 +47315,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v static void copy_strided_to_strided(__Pyx_memviewslice *__pyx_v_src, __Pyx_memviewslice *__pyx_v_dst, int __pyx_v_ndim, size_t __pyx_v_itemsize) { - /* "View.MemoryView":1169 + /* "View.MemoryView":1173 * __Pyx_memviewslice *dst, * int ndim, size_t itemsize) nogil: * _copy_strided_to_strided(src.data, src.strides, dst.data, dst.strides, # <<<<<<<<<<<<<< @@ -47275,7 +47324,7 @@ static void copy_strided_to_strided(__Pyx_memviewslice *__pyx_v_src, __Pyx_memvi */ _copy_strided_to_strided(__pyx_v_src->data, __pyx_v_src->strides, __pyx_v_dst->data, __pyx_v_dst->strides, __pyx_v_src->shape, __pyx_v_dst->shape, __pyx_v_ndim, __pyx_v_itemsize); - /* "View.MemoryView":1166 + /* "View.MemoryView":1170 * dst_data += dst_stride * * cdef void copy_strided_to_strided(__Pyx_memviewslice *src, # <<<<<<<<<<<<<< @@ -47286,57 +47335,57 @@ static void copy_strided_to_strided(__Pyx_memviewslice *__pyx_v_src, __Pyx_memvi /* function exit code */ } -/* "View.MemoryView":1173 +/* "View.MemoryView":1177 * * @cname('__pyx_memoryview_slice_get_size') * cdef Py_ssize_t slice_get_size(__Pyx_memviewslice *src, int ndim) nogil: # <<<<<<<<<<<<<< * "Return the size of the memory occupied by the slice in number of bytes" - * cdef int i + * cdef Py_ssize_t shape, size = src.memview.view.itemsize */ static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *__pyx_v_src, int __pyx_v_ndim) { - int __pyx_v_i; + Py_ssize_t __pyx_v_shape; Py_ssize_t __pyx_v_size; Py_ssize_t __pyx_r; Py_ssize_t __pyx_t_1; - int __pyx_t_2; - int __pyx_t_3; - int __pyx_t_4; + Py_ssize_t *__pyx_t_2; + Py_ssize_t *__pyx_t_3; + Py_ssize_t *__pyx_t_4; - /* "View.MemoryView":1176 + /* "View.MemoryView":1179 + * cdef Py_ssize_t slice_get_size(__Pyx_memviewslice *src, int ndim) nogil: * "Return the size of the memory occupied by the slice in number of bytes" - * cdef int i - * cdef Py_ssize_t size = src.memview.view.itemsize # <<<<<<<<<<<<<< + * cdef Py_ssize_t shape, size = src.memview.view.itemsize # <<<<<<<<<<<<<< * - * for i in range(ndim): + * for shape in src.shape[:ndim]: */ __pyx_t_1 = __pyx_v_src->memview->view.itemsize; __pyx_v_size = __pyx_t_1; - /* "View.MemoryView":1178 - * cdef Py_ssize_t size = src.memview.view.itemsize + /* "View.MemoryView":1181 + * cdef Py_ssize_t shape, size = src.memview.view.itemsize * - * for i in range(ndim): # <<<<<<<<<<<<<< - * size *= src.shape[i] + * for shape in src.shape[:ndim]: # <<<<<<<<<<<<<< + * size *= shape * */ - __pyx_t_2 = __pyx_v_ndim; - __pyx_t_3 = __pyx_t_2; - for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { - __pyx_v_i = __pyx_t_4; + __pyx_t_3 = (__pyx_v_src->shape + __pyx_v_ndim); + for (__pyx_t_4 = __pyx_v_src->shape; __pyx_t_4 < __pyx_t_3; __pyx_t_4++) { + __pyx_t_2 = __pyx_t_4; + __pyx_v_shape = (__pyx_t_2[0]); - /* "View.MemoryView":1179 + /* "View.MemoryView":1182 * - * for i in range(ndim): - * size *= src.shape[i] # <<<<<<<<<<<<<< + * for shape in src.shape[:ndim]: + * size *= shape # <<<<<<<<<<<<<< * * return size */ - __pyx_v_size = (__pyx_v_size * (__pyx_v_src->shape[__pyx_v_i])); + __pyx_v_size = (__pyx_v_size * __pyx_v_shape); } - /* "View.MemoryView":1181 - * size *= src.shape[i] + /* "View.MemoryView":1184 + * size *= shape * * return size # <<<<<<<<<<<<<< * @@ -47345,12 +47394,12 @@ static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *__pyx_v_sr __pyx_r = __pyx_v_size; goto __pyx_L0; - /* "View.MemoryView":1173 + /* "View.MemoryView":1177 * * @cname('__pyx_memoryview_slice_get_size') * cdef Py_ssize_t slice_get_size(__Pyx_memviewslice *src, int ndim) nogil: # <<<<<<<<<<<<<< * "Return the size of the memory occupied by the slice in number of bytes" - * cdef int i + * cdef Py_ssize_t shape, size = src.memview.view.itemsize */ /* function exit code */ @@ -47358,7 +47407,7 @@ static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *__pyx_v_sr return __pyx_r; } -/* "View.MemoryView":1184 +/* "View.MemoryView":1187 * * @cname('__pyx_fill_contig_strides_array') * cdef Py_ssize_t fill_contig_strides_array( # <<<<<<<<<<<<<< @@ -47374,7 +47423,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ int __pyx_t_3; int __pyx_t_4; - /* "View.MemoryView":1193 + /* "View.MemoryView":1196 * cdef int idx * * if order == 'F': # <<<<<<<<<<<<<< @@ -47384,38 +47433,38 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ __pyx_t_1 = ((__pyx_v_order == 'F') != 0); if (__pyx_t_1) { - /* "View.MemoryView":1194 + /* "View.MemoryView":1197 * * if order == 'F': * for idx in range(ndim): # <<<<<<<<<<<<<< * strides[idx] = stride - * stride = stride * shape[idx] + * stride *= shape[idx] */ __pyx_t_2 = __pyx_v_ndim; __pyx_t_3 = __pyx_t_2; for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_idx = __pyx_t_4; - /* "View.MemoryView":1195 + /* "View.MemoryView":1198 * if order == 'F': * for idx in range(ndim): * strides[idx] = stride # <<<<<<<<<<<<<< - * stride = stride * shape[idx] + * stride *= shape[idx] * else: */ (__pyx_v_strides[__pyx_v_idx]) = __pyx_v_stride; - /* "View.MemoryView":1196 + /* "View.MemoryView":1199 * for idx in range(ndim): * strides[idx] = stride - * stride = stride * shape[idx] # <<<<<<<<<<<<<< + * stride *= shape[idx] # <<<<<<<<<<<<<< * else: * for idx in range(ndim - 1, -1, -1): */ __pyx_v_stride = (__pyx_v_stride * (__pyx_v_shape[__pyx_v_idx])); } - /* "View.MemoryView":1193 + /* "View.MemoryView":1196 * cdef int idx * * if order == 'F': # <<<<<<<<<<<<<< @@ -47425,30 +47474,30 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ goto __pyx_L3; } - /* "View.MemoryView":1198 - * stride = stride * shape[idx] + /* "View.MemoryView":1201 + * stride *= shape[idx] * else: * for idx in range(ndim - 1, -1, -1): # <<<<<<<<<<<<<< * strides[idx] = stride - * stride = stride * shape[idx] + * stride *= shape[idx] */ /*else*/ { for (__pyx_t_2 = (__pyx_v_ndim - 1); __pyx_t_2 > -1; __pyx_t_2-=1) { __pyx_v_idx = __pyx_t_2; - /* "View.MemoryView":1199 + /* "View.MemoryView":1202 * else: * for idx in range(ndim - 1, -1, -1): * strides[idx] = stride # <<<<<<<<<<<<<< - * stride = stride * shape[idx] + * stride *= shape[idx] * */ (__pyx_v_strides[__pyx_v_idx]) = __pyx_v_stride; - /* "View.MemoryView":1200 + /* "View.MemoryView":1203 * for idx in range(ndim - 1, -1, -1): * strides[idx] = stride - * stride = stride * shape[idx] # <<<<<<<<<<<<<< + * stride *= shape[idx] # <<<<<<<<<<<<<< * * return stride */ @@ -47457,8 +47506,8 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ } __pyx_L3:; - /* "View.MemoryView":1202 - * stride = stride * shape[idx] + /* "View.MemoryView":1205 + * stride *= shape[idx] * * return stride # <<<<<<<<<<<<<< * @@ -47467,7 +47516,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ __pyx_r = __pyx_v_stride; goto __pyx_L0; - /* "View.MemoryView":1184 + /* "View.MemoryView":1187 * * @cname('__pyx_fill_contig_strides_array') * cdef Py_ssize_t fill_contig_strides_array( # <<<<<<<<<<<<<< @@ -47480,7 +47529,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ return __pyx_r; } -/* "View.MemoryView":1205 +/* "View.MemoryView":1208 * * @cname('__pyx_memoryview_copy_data_to_temp') * cdef void *copy_data_to_temp(__Pyx_memviewslice *src, # <<<<<<<<<<<<<< @@ -47501,7 +47550,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, int __pyx_t_5; int __pyx_t_6; - /* "View.MemoryView":1216 + /* "View.MemoryView":1219 * cdef void *result * * cdef size_t itemsize = src.memview.view.itemsize # <<<<<<<<<<<<<< @@ -47511,7 +47560,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __pyx_t_1 = __pyx_v_src->memview->view.itemsize; __pyx_v_itemsize = __pyx_t_1; - /* "View.MemoryView":1217 + /* "View.MemoryView":1220 * * cdef size_t itemsize = src.memview.view.itemsize * cdef size_t size = slice_get_size(src, ndim) # <<<<<<<<<<<<<< @@ -47520,7 +47569,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ __pyx_v_size = __pyx_memoryview_slice_get_size(__pyx_v_src, __pyx_v_ndim); - /* "View.MemoryView":1219 + /* "View.MemoryView":1222 * cdef size_t size = slice_get_size(src, ndim) * * result = malloc(size) # <<<<<<<<<<<<<< @@ -47529,7 +47578,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ __pyx_v_result = malloc(__pyx_v_size); - /* "View.MemoryView":1220 + /* "View.MemoryView":1223 * * result = malloc(size) * if not result: # <<<<<<<<<<<<<< @@ -47539,16 +47588,16 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __pyx_t_2 = ((!(__pyx_v_result != 0)) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1221 + /* "View.MemoryView":1224 * result = malloc(size) * if not result: * _err(MemoryError, NULL) # <<<<<<<<<<<<<< * * */ - __pyx_t_3 = __pyx_memoryview_err(__pyx_builtin_MemoryError, NULL); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 1221, __pyx_L1_error) + __pyx_t_3 = __pyx_memoryview_err(__pyx_builtin_MemoryError, NULL); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 1224, __pyx_L1_error) - /* "View.MemoryView":1220 + /* "View.MemoryView":1223 * * result = malloc(size) * if not result: # <<<<<<<<<<<<<< @@ -47557,7 +47606,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ } - /* "View.MemoryView":1224 + /* "View.MemoryView":1227 * * * tmpslice.data = result # <<<<<<<<<<<<<< @@ -47566,7 +47615,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ __pyx_v_tmpslice->data = ((char *)__pyx_v_result); - /* "View.MemoryView":1225 + /* "View.MemoryView":1228 * * tmpslice.data = result * tmpslice.memview = src.memview # <<<<<<<<<<<<<< @@ -47576,7 +47625,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __pyx_t_4 = __pyx_v_src->memview; __pyx_v_tmpslice->memview = __pyx_t_4; - /* "View.MemoryView":1226 + /* "View.MemoryView":1229 * tmpslice.data = result * tmpslice.memview = src.memview * for i in range(ndim): # <<<<<<<<<<<<<< @@ -47588,7 +47637,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6; - /* "View.MemoryView":1227 + /* "View.MemoryView":1230 * tmpslice.memview = src.memview * for i in range(ndim): * tmpslice.shape[i] = src.shape[i] # <<<<<<<<<<<<<< @@ -47597,7 +47646,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ (__pyx_v_tmpslice->shape[__pyx_v_i]) = (__pyx_v_src->shape[__pyx_v_i]); - /* "View.MemoryView":1228 + /* "View.MemoryView":1231 * for i in range(ndim): * tmpslice.shape[i] = src.shape[i] * tmpslice.suboffsets[i] = -1 # <<<<<<<<<<<<<< @@ -47607,7 +47656,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, (__pyx_v_tmpslice->suboffsets[__pyx_v_i]) = -1L; } - /* "View.MemoryView":1230 + /* "View.MemoryView":1233 * tmpslice.suboffsets[i] = -1 * * fill_contig_strides_array(&tmpslice.shape[0], &tmpslice.strides[0], itemsize, # <<<<<<<<<<<<<< @@ -47616,7 +47665,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ (void)(__pyx_fill_contig_strides_array((&(__pyx_v_tmpslice->shape[0])), (&(__pyx_v_tmpslice->strides[0])), __pyx_v_itemsize, __pyx_v_ndim, __pyx_v_order)); - /* "View.MemoryView":1234 + /* "View.MemoryView":1237 * * * for i in range(ndim): # <<<<<<<<<<<<<< @@ -47628,7 +47677,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6; - /* "View.MemoryView":1235 + /* "View.MemoryView":1238 * * for i in range(ndim): * if tmpslice.shape[i] == 1: # <<<<<<<<<<<<<< @@ -47638,7 +47687,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __pyx_t_2 = (((__pyx_v_tmpslice->shape[__pyx_v_i]) == 1) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1236 + /* "View.MemoryView":1239 * for i in range(ndim): * if tmpslice.shape[i] == 1: * tmpslice.strides[i] = 0 # <<<<<<<<<<<<<< @@ -47647,7 +47696,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ (__pyx_v_tmpslice->strides[__pyx_v_i]) = 0; - /* "View.MemoryView":1235 + /* "View.MemoryView":1238 * * for i in range(ndim): * if tmpslice.shape[i] == 1: # <<<<<<<<<<<<<< @@ -47657,7 +47706,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, } } - /* "View.MemoryView":1238 + /* "View.MemoryView":1241 * tmpslice.strides[i] = 0 * * if slice_is_contig(src[0], order, ndim): # <<<<<<<<<<<<<< @@ -47667,7 +47716,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __pyx_t_2 = (__pyx_memviewslice_is_contig((__pyx_v_src[0]), __pyx_v_order, __pyx_v_ndim) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1239 + /* "View.MemoryView":1242 * * if slice_is_contig(src[0], order, ndim): * memcpy(result, src.data, size) # <<<<<<<<<<<<<< @@ -47676,7 +47725,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ (void)(memcpy(__pyx_v_result, __pyx_v_src->data, __pyx_v_size)); - /* "View.MemoryView":1238 + /* "View.MemoryView":1241 * tmpslice.strides[i] = 0 * * if slice_is_contig(src[0], order, ndim): # <<<<<<<<<<<<<< @@ -47686,7 +47735,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, goto __pyx_L9; } - /* "View.MemoryView":1241 + /* "View.MemoryView":1244 * memcpy(result, src.data, size) * else: * copy_strided_to_strided(src, tmpslice, ndim, itemsize) # <<<<<<<<<<<<<< @@ -47698,7 +47747,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, } __pyx_L9:; - /* "View.MemoryView":1243 + /* "View.MemoryView":1246 * copy_strided_to_strided(src, tmpslice, ndim, itemsize) * * return result # <<<<<<<<<<<<<< @@ -47708,7 +47757,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __pyx_r = __pyx_v_result; goto __pyx_L0; - /* "View.MemoryView":1205 + /* "View.MemoryView":1208 * * @cname('__pyx_memoryview_copy_data_to_temp') * cdef void *copy_data_to_temp(__Pyx_memviewslice *src, # <<<<<<<<<<<<<< @@ -47732,7 +47781,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, return __pyx_r; } -/* "View.MemoryView":1248 +/* "View.MemoryView":1251 * * @cname('__pyx_memoryview_err_extents') * cdef int _err_extents(int i, Py_ssize_t extent1, # <<<<<<<<<<<<<< @@ -47752,20 +47801,20 @@ static int __pyx_memoryview_err_extents(int __pyx_v_i, Py_ssize_t __pyx_v_extent #endif __Pyx_RefNannySetupContext("_err_extents", 0); - /* "View.MemoryView":1251 + /* "View.MemoryView":1254 * Py_ssize_t extent2) except -1 with gil: * raise ValueError("got differing extents in dimension %d (got %d and %d)" % * (i, extent1, extent2)) # <<<<<<<<<<<<<< * * @cname('__pyx_memoryview_err_dim') */ - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1251, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_extent1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1251, __pyx_L1_error) + __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_extent1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_extent2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1251, __pyx_L1_error) + __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_extent2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1251, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); @@ -47777,24 +47826,24 @@ static int __pyx_memoryview_err_extents(int __pyx_v_i, Py_ssize_t __pyx_v_extent __pyx_t_2 = 0; __pyx_t_3 = 0; - /* "View.MemoryView":1250 + /* "View.MemoryView":1253 * cdef int _err_extents(int i, Py_ssize_t extent1, * Py_ssize_t extent2) except -1 with gil: * raise ValueError("got differing extents in dimension %d (got %d and %d)" % # <<<<<<<<<<<<<< * (i, extent1, extent2)) * */ - __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_got_differing_extents_in_dimensi, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1250, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_got_differing_extents_in_dimensi, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1250, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(1, 1250, __pyx_L1_error) + __PYX_ERR(1, 1253, __pyx_L1_error) - /* "View.MemoryView":1248 + /* "View.MemoryView":1251 * * @cname('__pyx_memoryview_err_extents') * cdef int _err_extents(int i, Py_ssize_t extent1, # <<<<<<<<<<<<<< @@ -47817,7 +47866,7 @@ static int __pyx_memoryview_err_extents(int __pyx_v_i, Py_ssize_t __pyx_v_extent return __pyx_r; } -/* "View.MemoryView":1254 +/* "View.MemoryView":1257 * * @cname('__pyx_memoryview_err_dim') * cdef int _err_dim(object error, char *msg, int dim) except -1 with gil: # <<<<<<<<<<<<<< @@ -47838,18 +47887,18 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg, __Pyx_RefNannySetupContext("_err_dim", 0); __Pyx_INCREF(__pyx_v_error); - /* "View.MemoryView":1255 + /* "View.MemoryView":1258 * @cname('__pyx_memoryview_err_dim') * cdef int _err_dim(object error, char *msg, int dim) except -1 with gil: * raise error(msg.decode('ascii') % dim) # <<<<<<<<<<<<<< * * @cname('__pyx_memoryview_err') */ - __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_msg, 0, strlen(__pyx_v_msg), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1255, __pyx_L1_error) + __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_msg, 0, strlen(__pyx_v_msg), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1255, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyUnicode_Format(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1255, __pyx_L1_error) + __pyx_t_4 = PyUnicode_Format(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -47867,14 +47916,14 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg, __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1255, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(1, 1255, __pyx_L1_error) + __PYX_ERR(1, 1258, __pyx_L1_error) - /* "View.MemoryView":1254 + /* "View.MemoryView":1257 * * @cname('__pyx_memoryview_err_dim') * cdef int _err_dim(object error, char *msg, int dim) except -1 with gil: # <<<<<<<<<<<<<< @@ -47898,7 +47947,7 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg, return __pyx_r; } -/* "View.MemoryView":1258 +/* "View.MemoryView":1261 * * @cname('__pyx_memoryview_err') * cdef int _err(object error, char *msg) except -1 with gil: # <<<<<<<<<<<<<< @@ -47920,7 +47969,7 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) { __Pyx_RefNannySetupContext("_err", 0); __Pyx_INCREF(__pyx_v_error); - /* "View.MemoryView":1259 + /* "View.MemoryView":1262 * @cname('__pyx_memoryview_err') * cdef int _err(object error, char *msg) except -1 with gil: * if msg != NULL: # <<<<<<<<<<<<<< @@ -47930,14 +47979,14 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) { __pyx_t_1 = ((__pyx_v_msg != NULL) != 0); if (unlikely(__pyx_t_1)) { - /* "View.MemoryView":1260 + /* "View.MemoryView":1263 * cdef int _err(object error, char *msg) except -1 with gil: * if msg != NULL: * raise error(msg.decode('ascii')) # <<<<<<<<<<<<<< * else: * raise error */ - __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_msg, 0, strlen(__pyx_v_msg), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1260, __pyx_L1_error) + __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_msg, 0, strlen(__pyx_v_msg), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_error); __pyx_t_4 = __pyx_v_error; __pyx_t_5 = NULL; @@ -47953,14 +48002,14 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) { __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(1, 1260, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(1, 1260, __pyx_L1_error) + __PYX_ERR(1, 1263, __pyx_L1_error) - /* "View.MemoryView":1259 + /* "View.MemoryView":1262 * @cname('__pyx_memoryview_err') * cdef int _err(object error, char *msg) except -1 with gil: * if msg != NULL: # <<<<<<<<<<<<<< @@ -47969,7 +48018,7 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) { */ } - /* "View.MemoryView":1262 + /* "View.MemoryView":1265 * raise error(msg.decode('ascii')) * else: * raise error # <<<<<<<<<<<<<< @@ -47978,10 +48027,10 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) { */ /*else*/ { __Pyx_Raise(__pyx_v_error, 0, 0, 0); - __PYX_ERR(1, 1262, __pyx_L1_error) + __PYX_ERR(1, 1265, __pyx_L1_error) } - /* "View.MemoryView":1258 + /* "View.MemoryView":1261 * * @cname('__pyx_memoryview_err') * cdef int _err(object error, char *msg) except -1 with gil: # <<<<<<<<<<<<<< @@ -48005,7 +48054,7 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) { return __pyx_r; } -/* "View.MemoryView":1265 +/* "View.MemoryView":1268 * * @cname('__pyx_memoryview_copy_contents') * cdef int memoryview_copy_contents(__Pyx_memviewslice src, # <<<<<<<<<<<<<< @@ -48032,7 +48081,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ void *__pyx_t_7; int __pyx_t_8; - /* "View.MemoryView":1273 + /* "View.MemoryView":1276 * Check for overlapping memory and verify the shapes. * """ * cdef void *tmpdata = NULL # <<<<<<<<<<<<<< @@ -48041,7 +48090,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_tmpdata = NULL; - /* "View.MemoryView":1274 + /* "View.MemoryView":1277 * """ * cdef void *tmpdata = NULL * cdef size_t itemsize = src.memview.view.itemsize # <<<<<<<<<<<<<< @@ -48051,7 +48100,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_1 = __pyx_v_src.memview->view.itemsize; __pyx_v_itemsize = __pyx_t_1; - /* "View.MemoryView":1276 + /* "View.MemoryView":1279 * cdef size_t itemsize = src.memview.view.itemsize * cdef int i * cdef char order = get_best_order(&src, src_ndim) # <<<<<<<<<<<<<< @@ -48060,7 +48109,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_order = __pyx_get_best_slice_order((&__pyx_v_src), __pyx_v_src_ndim); - /* "View.MemoryView":1277 + /* "View.MemoryView":1280 * cdef int i * cdef char order = get_best_order(&src, src_ndim) * cdef bint broadcasting = False # <<<<<<<<<<<<<< @@ -48069,7 +48118,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_broadcasting = 0; - /* "View.MemoryView":1278 + /* "View.MemoryView":1281 * cdef char order = get_best_order(&src, src_ndim) * cdef bint broadcasting = False * cdef bint direct_copy = False # <<<<<<<<<<<<<< @@ -48078,7 +48127,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_direct_copy = 0; - /* "View.MemoryView":1281 + /* "View.MemoryView":1284 * cdef __Pyx_memviewslice tmp * * if src_ndim < dst_ndim: # <<<<<<<<<<<<<< @@ -48088,7 +48137,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = ((__pyx_v_src_ndim < __pyx_v_dst_ndim) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1282 + /* "View.MemoryView":1285 * * if src_ndim < dst_ndim: * broadcast_leading(&src, src_ndim, dst_ndim) # <<<<<<<<<<<<<< @@ -48097,7 +48146,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_memoryview_broadcast_leading((&__pyx_v_src), __pyx_v_src_ndim, __pyx_v_dst_ndim); - /* "View.MemoryView":1281 + /* "View.MemoryView":1284 * cdef __Pyx_memviewslice tmp * * if src_ndim < dst_ndim: # <<<<<<<<<<<<<< @@ -48107,7 +48156,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ goto __pyx_L3; } - /* "View.MemoryView":1283 + /* "View.MemoryView":1286 * if src_ndim < dst_ndim: * broadcast_leading(&src, src_ndim, dst_ndim) * elif dst_ndim < src_ndim: # <<<<<<<<<<<<<< @@ -48117,7 +48166,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = ((__pyx_v_dst_ndim < __pyx_v_src_ndim) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1284 + /* "View.MemoryView":1287 * broadcast_leading(&src, src_ndim, dst_ndim) * elif dst_ndim < src_ndim: * broadcast_leading(&dst, dst_ndim, src_ndim) # <<<<<<<<<<<<<< @@ -48126,7 +48175,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_memoryview_broadcast_leading((&__pyx_v_dst), __pyx_v_dst_ndim, __pyx_v_src_ndim); - /* "View.MemoryView":1283 + /* "View.MemoryView":1286 * if src_ndim < dst_ndim: * broadcast_leading(&src, src_ndim, dst_ndim) * elif dst_ndim < src_ndim: # <<<<<<<<<<<<<< @@ -48136,7 +48185,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ } __pyx_L3:; - /* "View.MemoryView":1286 + /* "View.MemoryView":1289 * broadcast_leading(&dst, dst_ndim, src_ndim) * * cdef int ndim = max(src_ndim, dst_ndim) # <<<<<<<<<<<<<< @@ -48152,7 +48201,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ } __pyx_v_ndim = __pyx_t_5; - /* "View.MemoryView":1288 + /* "View.MemoryView":1291 * cdef int ndim = max(src_ndim, dst_ndim) * * for i in range(ndim): # <<<<<<<<<<<<<< @@ -48164,7 +48213,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_i = __pyx_t_4; - /* "View.MemoryView":1289 + /* "View.MemoryView":1292 * * for i in range(ndim): * if src.shape[i] != dst.shape[i]: # <<<<<<<<<<<<<< @@ -48174,7 +48223,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = (((__pyx_v_src.shape[__pyx_v_i]) != (__pyx_v_dst.shape[__pyx_v_i])) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1290 + /* "View.MemoryView":1293 * for i in range(ndim): * if src.shape[i] != dst.shape[i]: * if src.shape[i] == 1: # <<<<<<<<<<<<<< @@ -48184,7 +48233,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = (((__pyx_v_src.shape[__pyx_v_i]) == 1) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1291 + /* "View.MemoryView":1294 * if src.shape[i] != dst.shape[i]: * if src.shape[i] == 1: * broadcasting = True # <<<<<<<<<<<<<< @@ -48193,7 +48242,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_broadcasting = 1; - /* "View.MemoryView":1292 + /* "View.MemoryView":1295 * if src.shape[i] == 1: * broadcasting = True * src.strides[i] = 0 # <<<<<<<<<<<<<< @@ -48202,7 +48251,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ (__pyx_v_src.strides[__pyx_v_i]) = 0; - /* "View.MemoryView":1290 + /* "View.MemoryView":1293 * for i in range(ndim): * if src.shape[i] != dst.shape[i]: * if src.shape[i] == 1: # <<<<<<<<<<<<<< @@ -48212,7 +48261,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ goto __pyx_L7; } - /* "View.MemoryView":1294 + /* "View.MemoryView":1297 * src.strides[i] = 0 * else: * _err_extents(i, dst.shape[i], src.shape[i]) # <<<<<<<<<<<<<< @@ -48220,11 +48269,11 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ * if src.suboffsets[i] >= 0: */ /*else*/ { - __pyx_t_6 = __pyx_memoryview_err_extents(__pyx_v_i, (__pyx_v_dst.shape[__pyx_v_i]), (__pyx_v_src.shape[__pyx_v_i])); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 1294, __pyx_L1_error) + __pyx_t_6 = __pyx_memoryview_err_extents(__pyx_v_i, (__pyx_v_dst.shape[__pyx_v_i]), (__pyx_v_src.shape[__pyx_v_i])); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 1297, __pyx_L1_error) } __pyx_L7:; - /* "View.MemoryView":1289 + /* "View.MemoryView":1292 * * for i in range(ndim): * if src.shape[i] != dst.shape[i]: # <<<<<<<<<<<<<< @@ -48233,7 +48282,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ } - /* "View.MemoryView":1296 + /* "View.MemoryView":1299 * _err_extents(i, dst.shape[i], src.shape[i]) * * if src.suboffsets[i] >= 0: # <<<<<<<<<<<<<< @@ -48243,16 +48292,16 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = (((__pyx_v_src.suboffsets[__pyx_v_i]) >= 0) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1297 + /* "View.MemoryView":1300 * * if src.suboffsets[i] >= 0: * _err_dim(ValueError, "Dimension %d is not direct", i) # <<<<<<<<<<<<<< * * if slices_overlap(&src, &dst, ndim, itemsize): */ - __pyx_t_6 = __pyx_memoryview_err_dim(__pyx_builtin_ValueError, ((char *)"Dimension %d is not direct"), __pyx_v_i); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 1297, __pyx_L1_error) + __pyx_t_6 = __pyx_memoryview_err_dim(__pyx_builtin_ValueError, ((char *)"Dimension %d is not direct"), __pyx_v_i); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 1300, __pyx_L1_error) - /* "View.MemoryView":1296 + /* "View.MemoryView":1299 * _err_extents(i, dst.shape[i], src.shape[i]) * * if src.suboffsets[i] >= 0: # <<<<<<<<<<<<<< @@ -48262,7 +48311,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ } } - /* "View.MemoryView":1299 + /* "View.MemoryView":1302 * _err_dim(ValueError, "Dimension %d is not direct", i) * * if slices_overlap(&src, &dst, ndim, itemsize): # <<<<<<<<<<<<<< @@ -48272,7 +48321,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = (__pyx_slices_overlap((&__pyx_v_src), (&__pyx_v_dst), __pyx_v_ndim, __pyx_v_itemsize) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1301 + /* "View.MemoryView":1304 * if slices_overlap(&src, &dst, ndim, itemsize): * * if not slice_is_contig(src, order, ndim): # <<<<<<<<<<<<<< @@ -48282,7 +48331,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = ((!(__pyx_memviewslice_is_contig(__pyx_v_src, __pyx_v_order, __pyx_v_ndim) != 0)) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1302 + /* "View.MemoryView":1305 * * if not slice_is_contig(src, order, ndim): * order = get_best_order(&dst, ndim) # <<<<<<<<<<<<<< @@ -48291,7 +48340,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_order = __pyx_get_best_slice_order((&__pyx_v_dst), __pyx_v_ndim); - /* "View.MemoryView":1301 + /* "View.MemoryView":1304 * if slices_overlap(&src, &dst, ndim, itemsize): * * if not slice_is_contig(src, order, ndim): # <<<<<<<<<<<<<< @@ -48300,17 +48349,17 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ } - /* "View.MemoryView":1304 + /* "View.MemoryView":1307 * order = get_best_order(&dst, ndim) * * tmpdata = copy_data_to_temp(&src, &tmp, order, ndim) # <<<<<<<<<<<<<< * src = tmp * */ - __pyx_t_7 = __pyx_memoryview_copy_data_to_temp((&__pyx_v_src), (&__pyx_v_tmp), __pyx_v_order, __pyx_v_ndim); if (unlikely(__pyx_t_7 == ((void *)NULL))) __PYX_ERR(1, 1304, __pyx_L1_error) + __pyx_t_7 = __pyx_memoryview_copy_data_to_temp((&__pyx_v_src), (&__pyx_v_tmp), __pyx_v_order, __pyx_v_ndim); if (unlikely(__pyx_t_7 == ((void *)NULL))) __PYX_ERR(1, 1307, __pyx_L1_error) __pyx_v_tmpdata = __pyx_t_7; - /* "View.MemoryView":1305 + /* "View.MemoryView":1308 * * tmpdata = copy_data_to_temp(&src, &tmp, order, ndim) * src = tmp # <<<<<<<<<<<<<< @@ -48319,7 +48368,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_src = __pyx_v_tmp; - /* "View.MemoryView":1299 + /* "View.MemoryView":1302 * _err_dim(ValueError, "Dimension %d is not direct", i) * * if slices_overlap(&src, &dst, ndim, itemsize): # <<<<<<<<<<<<<< @@ -48328,7 +48377,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ } - /* "View.MemoryView":1307 + /* "View.MemoryView":1310 * src = tmp * * if not broadcasting: # <<<<<<<<<<<<<< @@ -48338,7 +48387,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = ((!(__pyx_v_broadcasting != 0)) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1310 + /* "View.MemoryView":1313 * * * if slice_is_contig(src, 'C', ndim): # <<<<<<<<<<<<<< @@ -48348,7 +48397,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = (__pyx_memviewslice_is_contig(__pyx_v_src, 'C', __pyx_v_ndim) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1311 + /* "View.MemoryView":1314 * * if slice_is_contig(src, 'C', ndim): * direct_copy = slice_is_contig(dst, 'C', ndim) # <<<<<<<<<<<<<< @@ -48357,7 +48406,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_direct_copy = __pyx_memviewslice_is_contig(__pyx_v_dst, 'C', __pyx_v_ndim); - /* "View.MemoryView":1310 + /* "View.MemoryView":1313 * * * if slice_is_contig(src, 'C', ndim): # <<<<<<<<<<<<<< @@ -48367,7 +48416,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ goto __pyx_L12; } - /* "View.MemoryView":1312 + /* "View.MemoryView":1315 * if slice_is_contig(src, 'C', ndim): * direct_copy = slice_is_contig(dst, 'C', ndim) * elif slice_is_contig(src, 'F', ndim): # <<<<<<<<<<<<<< @@ -48377,7 +48426,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = (__pyx_memviewslice_is_contig(__pyx_v_src, 'F', __pyx_v_ndim) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1313 + /* "View.MemoryView":1316 * direct_copy = slice_is_contig(dst, 'C', ndim) * elif slice_is_contig(src, 'F', ndim): * direct_copy = slice_is_contig(dst, 'F', ndim) # <<<<<<<<<<<<<< @@ -48386,7 +48435,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_direct_copy = __pyx_memviewslice_is_contig(__pyx_v_dst, 'F', __pyx_v_ndim); - /* "View.MemoryView":1312 + /* "View.MemoryView":1315 * if slice_is_contig(src, 'C', ndim): * direct_copy = slice_is_contig(dst, 'C', ndim) * elif slice_is_contig(src, 'F', ndim): # <<<<<<<<<<<<<< @@ -48396,7 +48445,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ } __pyx_L12:; - /* "View.MemoryView":1315 + /* "View.MemoryView":1318 * direct_copy = slice_is_contig(dst, 'F', ndim) * * if direct_copy: # <<<<<<<<<<<<<< @@ -48406,7 +48455,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = (__pyx_v_direct_copy != 0); if (__pyx_t_2) { - /* "View.MemoryView":1317 + /* "View.MemoryView":1320 * if direct_copy: * * refcount_copying(&dst, dtype_is_object, ndim, False) # <<<<<<<<<<<<<< @@ -48415,7 +48464,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 0); - /* "View.MemoryView":1318 + /* "View.MemoryView":1321 * * refcount_copying(&dst, dtype_is_object, ndim, False) * memcpy(dst.data, src.data, slice_get_size(&src, ndim)) # <<<<<<<<<<<<<< @@ -48424,7 +48473,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ (void)(memcpy(__pyx_v_dst.data, __pyx_v_src.data, __pyx_memoryview_slice_get_size((&__pyx_v_src), __pyx_v_ndim))); - /* "View.MemoryView":1319 + /* "View.MemoryView":1322 * refcount_copying(&dst, dtype_is_object, ndim, False) * memcpy(dst.data, src.data, slice_get_size(&src, ndim)) * refcount_copying(&dst, dtype_is_object, ndim, True) # <<<<<<<<<<<<<< @@ -48433,7 +48482,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 1); - /* "View.MemoryView":1320 + /* "View.MemoryView":1323 * memcpy(dst.data, src.data, slice_get_size(&src, ndim)) * refcount_copying(&dst, dtype_is_object, ndim, True) * free(tmpdata) # <<<<<<<<<<<<<< @@ -48442,7 +48491,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ free(__pyx_v_tmpdata); - /* "View.MemoryView":1321 + /* "View.MemoryView":1324 * refcount_copying(&dst, dtype_is_object, ndim, True) * free(tmpdata) * return 0 # <<<<<<<<<<<<<< @@ -48452,7 +48501,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_r = 0; goto __pyx_L0; - /* "View.MemoryView":1315 + /* "View.MemoryView":1318 * direct_copy = slice_is_contig(dst, 'F', ndim) * * if direct_copy: # <<<<<<<<<<<<<< @@ -48461,7 +48510,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ } - /* "View.MemoryView":1307 + /* "View.MemoryView":1310 * src = tmp * * if not broadcasting: # <<<<<<<<<<<<<< @@ -48470,7 +48519,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ } - /* "View.MemoryView":1323 + /* "View.MemoryView":1326 * return 0 * * if order == 'F' == get_best_order(&dst, ndim): # <<<<<<<<<<<<<< @@ -48484,25 +48533,25 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_8 = (__pyx_t_2 != 0); if (__pyx_t_8) { - /* "View.MemoryView":1326 + /* "View.MemoryView":1329 * * * transpose_memslice(&src) # <<<<<<<<<<<<<< * transpose_memslice(&dst) * */ - __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_src)); if (unlikely(__pyx_t_5 == ((int)0))) __PYX_ERR(1, 1326, __pyx_L1_error) + __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_src)); if (unlikely(__pyx_t_5 == ((int)0))) __PYX_ERR(1, 1329, __pyx_L1_error) - /* "View.MemoryView":1327 + /* "View.MemoryView":1330 * * transpose_memslice(&src) * transpose_memslice(&dst) # <<<<<<<<<<<<<< * * refcount_copying(&dst, dtype_is_object, ndim, False) */ - __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_dst)); if (unlikely(__pyx_t_5 == ((int)0))) __PYX_ERR(1, 1327, __pyx_L1_error) + __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_dst)); if (unlikely(__pyx_t_5 == ((int)0))) __PYX_ERR(1, 1330, __pyx_L1_error) - /* "View.MemoryView":1323 + /* "View.MemoryView":1326 * return 0 * * if order == 'F' == get_best_order(&dst, ndim): # <<<<<<<<<<<<<< @@ -48511,7 +48560,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ } - /* "View.MemoryView":1329 + /* "View.MemoryView":1332 * transpose_memslice(&dst) * * refcount_copying(&dst, dtype_is_object, ndim, False) # <<<<<<<<<<<<<< @@ -48520,7 +48569,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 0); - /* "View.MemoryView":1330 + /* "View.MemoryView":1333 * * refcount_copying(&dst, dtype_is_object, ndim, False) * copy_strided_to_strided(&src, &dst, ndim, itemsize) # <<<<<<<<<<<<<< @@ -48529,7 +48578,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ copy_strided_to_strided((&__pyx_v_src), (&__pyx_v_dst), __pyx_v_ndim, __pyx_v_itemsize); - /* "View.MemoryView":1331 + /* "View.MemoryView":1334 * refcount_copying(&dst, dtype_is_object, ndim, False) * copy_strided_to_strided(&src, &dst, ndim, itemsize) * refcount_copying(&dst, dtype_is_object, ndim, True) # <<<<<<<<<<<<<< @@ -48538,7 +48587,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 1); - /* "View.MemoryView":1333 + /* "View.MemoryView":1336 * refcount_copying(&dst, dtype_is_object, ndim, True) * * free(tmpdata) # <<<<<<<<<<<<<< @@ -48547,7 +48596,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ free(__pyx_v_tmpdata); - /* "View.MemoryView":1334 + /* "View.MemoryView":1337 * * free(tmpdata) * return 0 # <<<<<<<<<<<<<< @@ -48557,7 +48606,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_r = 0; goto __pyx_L0; - /* "View.MemoryView":1265 + /* "View.MemoryView":1268 * * @cname('__pyx_memoryview_copy_contents') * cdef int memoryview_copy_contents(__Pyx_memviewslice src, # <<<<<<<<<<<<<< @@ -48581,7 +48630,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ return __pyx_r; } -/* "View.MemoryView":1337 +/* "View.MemoryView":1340 * * @cname('__pyx_memoryview_broadcast_leading') * cdef void broadcast_leading(__Pyx_memviewslice *mslice, # <<<<<<<<<<<<<< @@ -48596,7 +48645,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic int __pyx_t_2; int __pyx_t_3; - /* "View.MemoryView":1341 + /* "View.MemoryView":1344 * int ndim_other) nogil: * cdef int i * cdef int offset = ndim_other - ndim # <<<<<<<<<<<<<< @@ -48605,7 +48654,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic */ __pyx_v_offset = (__pyx_v_ndim_other - __pyx_v_ndim); - /* "View.MemoryView":1343 + /* "View.MemoryView":1346 * cdef int offset = ndim_other - ndim * * for i in range(ndim - 1, -1, -1): # <<<<<<<<<<<<<< @@ -48615,7 +48664,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic for (__pyx_t_1 = (__pyx_v_ndim - 1); __pyx_t_1 > -1; __pyx_t_1-=1) { __pyx_v_i = __pyx_t_1; - /* "View.MemoryView":1344 + /* "View.MemoryView":1347 * * for i in range(ndim - 1, -1, -1): * mslice.shape[i + offset] = mslice.shape[i] # <<<<<<<<<<<<<< @@ -48624,7 +48673,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic */ (__pyx_v_mslice->shape[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->shape[__pyx_v_i]); - /* "View.MemoryView":1345 + /* "View.MemoryView":1348 * for i in range(ndim - 1, -1, -1): * mslice.shape[i + offset] = mslice.shape[i] * mslice.strides[i + offset] = mslice.strides[i] # <<<<<<<<<<<<<< @@ -48633,7 +48682,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic */ (__pyx_v_mslice->strides[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->strides[__pyx_v_i]); - /* "View.MemoryView":1346 + /* "View.MemoryView":1349 * mslice.shape[i + offset] = mslice.shape[i] * mslice.strides[i + offset] = mslice.strides[i] * mslice.suboffsets[i + offset] = mslice.suboffsets[i] # <<<<<<<<<<<<<< @@ -48643,7 +48692,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic (__pyx_v_mslice->suboffsets[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->suboffsets[__pyx_v_i]); } - /* "View.MemoryView":1348 + /* "View.MemoryView":1351 * mslice.suboffsets[i + offset] = mslice.suboffsets[i] * * for i in range(offset): # <<<<<<<<<<<<<< @@ -48655,7 +48704,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; - /* "View.MemoryView":1349 + /* "View.MemoryView":1352 * * for i in range(offset): * mslice.shape[i] = 1 # <<<<<<<<<<<<<< @@ -48664,7 +48713,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic */ (__pyx_v_mslice->shape[__pyx_v_i]) = 1; - /* "View.MemoryView":1350 + /* "View.MemoryView":1353 * for i in range(offset): * mslice.shape[i] = 1 * mslice.strides[i] = mslice.strides[0] # <<<<<<<<<<<<<< @@ -48673,7 +48722,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic */ (__pyx_v_mslice->strides[__pyx_v_i]) = (__pyx_v_mslice->strides[0]); - /* "View.MemoryView":1351 + /* "View.MemoryView":1354 * mslice.shape[i] = 1 * mslice.strides[i] = mslice.strides[0] * mslice.suboffsets[i] = -1 # <<<<<<<<<<<<<< @@ -48683,7 +48732,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic (__pyx_v_mslice->suboffsets[__pyx_v_i]) = -1L; } - /* "View.MemoryView":1337 + /* "View.MemoryView":1340 * * @cname('__pyx_memoryview_broadcast_leading') * cdef void broadcast_leading(__Pyx_memviewslice *mslice, # <<<<<<<<<<<<<< @@ -48694,7 +48743,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic /* function exit code */ } -/* "View.MemoryView":1359 +/* "View.MemoryView":1362 * * @cname('__pyx_memoryview_refcount_copying') * cdef void refcount_copying(__Pyx_memviewslice *dst, bint dtype_is_object, # <<<<<<<<<<<<<< @@ -48705,7 +48754,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *__pyx_v_dst, int __pyx_v_dtype_is_object, int __pyx_v_ndim, int __pyx_v_inc) { int __pyx_t_1; - /* "View.MemoryView":1363 + /* "View.MemoryView":1366 * * * if dtype_is_object: # <<<<<<<<<<<<<< @@ -48715,7 +48764,7 @@ static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *__pyx_v_dst, i __pyx_t_1 = (__pyx_v_dtype_is_object != 0); if (__pyx_t_1) { - /* "View.MemoryView":1364 + /* "View.MemoryView":1367 * * if dtype_is_object: * refcount_objects_in_slice_with_gil(dst.data, dst.shape, # <<<<<<<<<<<<<< @@ -48724,7 +48773,7 @@ static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *__pyx_v_dst, i */ __pyx_memoryview_refcount_objects_in_slice_with_gil(__pyx_v_dst->data, __pyx_v_dst->shape, __pyx_v_dst->strides, __pyx_v_ndim, __pyx_v_inc); - /* "View.MemoryView":1363 + /* "View.MemoryView":1366 * * * if dtype_is_object: # <<<<<<<<<<<<<< @@ -48733,7 +48782,7 @@ static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *__pyx_v_dst, i */ } - /* "View.MemoryView":1359 + /* "View.MemoryView":1362 * * @cname('__pyx_memoryview_refcount_copying') * cdef void refcount_copying(__Pyx_memviewslice *dst, bint dtype_is_object, # <<<<<<<<<<<<<< @@ -48744,7 +48793,7 @@ static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *__pyx_v_dst, i /* function exit code */ } -/* "View.MemoryView":1368 +/* "View.MemoryView":1371 * * @cname('__pyx_memoryview_refcount_objects_in_slice_with_gil') * cdef void refcount_objects_in_slice_with_gil(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< @@ -48759,7 +48808,7 @@ static void __pyx_memoryview_refcount_objects_in_slice_with_gil(char *__pyx_v_da #endif __Pyx_RefNannySetupContext("refcount_objects_in_slice_with_gil", 0); - /* "View.MemoryView":1371 + /* "View.MemoryView":1374 * Py_ssize_t *strides, int ndim, * bint inc) with gil: * refcount_objects_in_slice(data, shape, strides, ndim, inc) # <<<<<<<<<<<<<< @@ -48768,7 +48817,7 @@ static void __pyx_memoryview_refcount_objects_in_slice_with_gil(char *__pyx_v_da */ __pyx_memoryview_refcount_objects_in_slice(__pyx_v_data, __pyx_v_shape, __pyx_v_strides, __pyx_v_ndim, __pyx_v_inc); - /* "View.MemoryView":1368 + /* "View.MemoryView":1371 * * @cname('__pyx_memoryview_refcount_objects_in_slice_with_gil') * cdef void refcount_objects_in_slice_with_gil(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< @@ -48783,7 +48832,7 @@ static void __pyx_memoryview_refcount_objects_in_slice_with_gil(char *__pyx_v_da #endif } -/* "View.MemoryView":1374 +/* "View.MemoryView":1377 * * @cname('__pyx_memoryview_refcount_objects_in_slice') * cdef void refcount_objects_in_slice(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< @@ -48800,7 +48849,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss int __pyx_t_4; __Pyx_RefNannySetupContext("refcount_objects_in_slice", 0); - /* "View.MemoryView":1378 + /* "View.MemoryView":1381 * cdef Py_ssize_t i * * for i in range(shape[0]): # <<<<<<<<<<<<<< @@ -48812,7 +48861,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; - /* "View.MemoryView":1379 + /* "View.MemoryView":1382 * * for i in range(shape[0]): * if ndim == 1: # <<<<<<<<<<<<<< @@ -48822,7 +48871,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss __pyx_t_4 = ((__pyx_v_ndim == 1) != 0); if (__pyx_t_4) { - /* "View.MemoryView":1380 + /* "View.MemoryView":1383 * for i in range(shape[0]): * if ndim == 1: * if inc: # <<<<<<<<<<<<<< @@ -48832,7 +48881,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss __pyx_t_4 = (__pyx_v_inc != 0); if (__pyx_t_4) { - /* "View.MemoryView":1381 + /* "View.MemoryView":1384 * if ndim == 1: * if inc: * Py_INCREF(( data)[0]) # <<<<<<<<<<<<<< @@ -48841,7 +48890,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss */ Py_INCREF((((PyObject **)__pyx_v_data)[0])); - /* "View.MemoryView":1380 + /* "View.MemoryView":1383 * for i in range(shape[0]): * if ndim == 1: * if inc: # <<<<<<<<<<<<<< @@ -48851,7 +48900,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss goto __pyx_L6; } - /* "View.MemoryView":1383 + /* "View.MemoryView":1386 * Py_INCREF(( data)[0]) * else: * Py_DECREF(( data)[0]) # <<<<<<<<<<<<<< @@ -48863,7 +48912,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss } __pyx_L6:; - /* "View.MemoryView":1379 + /* "View.MemoryView":1382 * * for i in range(shape[0]): * if ndim == 1: # <<<<<<<<<<<<<< @@ -48873,7 +48922,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss goto __pyx_L5; } - /* "View.MemoryView":1385 + /* "View.MemoryView":1388 * Py_DECREF(( data)[0]) * else: * refcount_objects_in_slice(data, shape + 1, strides + 1, # <<<<<<<<<<<<<< @@ -48882,7 +48931,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss */ /*else*/ { - /* "View.MemoryView":1386 + /* "View.MemoryView":1389 * else: * refcount_objects_in_slice(data, shape + 1, strides + 1, * ndim - 1, inc) # <<<<<<<<<<<<<< @@ -48893,7 +48942,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss } __pyx_L5:; - /* "View.MemoryView":1388 + /* "View.MemoryView":1391 * ndim - 1, inc) * * data += strides[0] # <<<<<<<<<<<<<< @@ -48903,7 +48952,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss __pyx_v_data = (__pyx_v_data + (__pyx_v_strides[0])); } - /* "View.MemoryView":1374 + /* "View.MemoryView":1377 * * @cname('__pyx_memoryview_refcount_objects_in_slice') * cdef void refcount_objects_in_slice(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< @@ -48915,7 +48964,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss __Pyx_RefNannyFinishContext(); } -/* "View.MemoryView":1394 +/* "View.MemoryView":1397 * * @cname('__pyx_memoryview_slice_assign_scalar') * cdef void slice_assign_scalar(__Pyx_memviewslice *dst, int ndim, # <<<<<<<<<<<<<< @@ -48925,7 +48974,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *__pyx_v_dst, int __pyx_v_ndim, size_t __pyx_v_itemsize, void *__pyx_v_item, int __pyx_v_dtype_is_object) { - /* "View.MemoryView":1397 + /* "View.MemoryView":1400 * size_t itemsize, void *item, * bint dtype_is_object) nogil: * refcount_copying(dst, dtype_is_object, ndim, False) # <<<<<<<<<<<<<< @@ -48934,7 +48983,7 @@ static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *__pyx_v_dst */ __pyx_memoryview_refcount_copying(__pyx_v_dst, __pyx_v_dtype_is_object, __pyx_v_ndim, 0); - /* "View.MemoryView":1398 + /* "View.MemoryView":1401 * bint dtype_is_object) nogil: * refcount_copying(dst, dtype_is_object, ndim, False) * _slice_assign_scalar(dst.data, dst.shape, dst.strides, ndim, # <<<<<<<<<<<<<< @@ -48943,7 +48992,7 @@ static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *__pyx_v_dst */ __pyx_memoryview__slice_assign_scalar(__pyx_v_dst->data, __pyx_v_dst->shape, __pyx_v_dst->strides, __pyx_v_ndim, __pyx_v_itemsize, __pyx_v_item); - /* "View.MemoryView":1400 + /* "View.MemoryView":1403 * _slice_assign_scalar(dst.data, dst.shape, dst.strides, ndim, * itemsize, item) * refcount_copying(dst, dtype_is_object, ndim, True) # <<<<<<<<<<<<<< @@ -48952,7 +49001,7 @@ static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *__pyx_v_dst */ __pyx_memoryview_refcount_copying(__pyx_v_dst, __pyx_v_dtype_is_object, __pyx_v_ndim, 1); - /* "View.MemoryView":1394 + /* "View.MemoryView":1397 * * @cname('__pyx_memoryview_slice_assign_scalar') * cdef void slice_assign_scalar(__Pyx_memviewslice *dst, int ndim, # <<<<<<<<<<<<<< @@ -48963,7 +49012,7 @@ static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *__pyx_v_dst /* function exit code */ } -/* "View.MemoryView":1404 +/* "View.MemoryView":1407 * * @cname('__pyx_memoryview__slice_assign_scalar') * cdef void _slice_assign_scalar(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< @@ -48980,7 +49029,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t Py_ssize_t __pyx_t_3; Py_ssize_t __pyx_t_4; - /* "View.MemoryView":1408 + /* "View.MemoryView":1411 * size_t itemsize, void *item) nogil: * cdef Py_ssize_t i * cdef Py_ssize_t stride = strides[0] # <<<<<<<<<<<<<< @@ -48989,7 +49038,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t */ __pyx_v_stride = (__pyx_v_strides[0]); - /* "View.MemoryView":1409 + /* "View.MemoryView":1412 * cdef Py_ssize_t i * cdef Py_ssize_t stride = strides[0] * cdef Py_ssize_t extent = shape[0] # <<<<<<<<<<<<<< @@ -48998,7 +49047,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t */ __pyx_v_extent = (__pyx_v_shape[0]); - /* "View.MemoryView":1411 + /* "View.MemoryView":1414 * cdef Py_ssize_t extent = shape[0] * * if ndim == 1: # <<<<<<<<<<<<<< @@ -49008,7 +49057,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t __pyx_t_1 = ((__pyx_v_ndim == 1) != 0); if (__pyx_t_1) { - /* "View.MemoryView":1412 + /* "View.MemoryView":1415 * * if ndim == 1: * for i in range(extent): # <<<<<<<<<<<<<< @@ -49020,7 +49069,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_i = __pyx_t_4; - /* "View.MemoryView":1413 + /* "View.MemoryView":1416 * if ndim == 1: * for i in range(extent): * memcpy(data, item, itemsize) # <<<<<<<<<<<<<< @@ -49029,7 +49078,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t */ (void)(memcpy(__pyx_v_data, __pyx_v_item, __pyx_v_itemsize)); - /* "View.MemoryView":1414 + /* "View.MemoryView":1417 * for i in range(extent): * memcpy(data, item, itemsize) * data += stride # <<<<<<<<<<<<<< @@ -49039,7 +49088,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t __pyx_v_data = (__pyx_v_data + __pyx_v_stride); } - /* "View.MemoryView":1411 + /* "View.MemoryView":1414 * cdef Py_ssize_t extent = shape[0] * * if ndim == 1: # <<<<<<<<<<<<<< @@ -49049,7 +49098,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t goto __pyx_L3; } - /* "View.MemoryView":1416 + /* "View.MemoryView":1419 * data += stride * else: * for i in range(extent): # <<<<<<<<<<<<<< @@ -49062,7 +49111,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_i = __pyx_t_4; - /* "View.MemoryView":1417 + /* "View.MemoryView":1420 * else: * for i in range(extent): * _slice_assign_scalar(data, shape + 1, strides + 1, # <<<<<<<<<<<<<< @@ -49071,7 +49120,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t */ __pyx_memoryview__slice_assign_scalar(__pyx_v_data, (__pyx_v_shape + 1), (__pyx_v_strides + 1), (__pyx_v_ndim - 1), __pyx_v_itemsize, __pyx_v_item); - /* "View.MemoryView":1419 + /* "View.MemoryView":1422 * _slice_assign_scalar(data, shape + 1, strides + 1, * ndim - 1, itemsize, item) * data += stride # <<<<<<<<<<<<<< @@ -49083,7 +49132,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t } __pyx_L3:; - /* "View.MemoryView":1404 + /* "View.MemoryView":1407 * * @cname('__pyx_memoryview__slice_assign_scalar') * cdef void _slice_assign_scalar(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< @@ -49482,7 +49531,7 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ return __pyx_r; } -/* "BufferFormatFromTypeInfo":1460 +/* "BufferFormatFromTypeInfo":1463 * * @cname('__pyx_format_from_typeinfo') * cdef bytes format_from_typeinfo(__Pyx_TypeInfo *type): # <<<<<<<<<<<<<< @@ -49513,7 +49562,7 @@ static PyObject *__pyx_format_from_typeinfo(__Pyx_TypeInfo *__pyx_v_type) { int __pyx_t_10; __Pyx_RefNannySetupContext("format_from_typeinfo", 0); - /* "BufferFormatFromTypeInfo":1465 + /* "BufferFormatFromTypeInfo":1468 * cdef bytes part, result * * if type.typegroup == 'S': # <<<<<<<<<<<<<< @@ -49523,7 +49572,7 @@ static PyObject *__pyx_format_from_typeinfo(__Pyx_TypeInfo *__pyx_v_type) { __pyx_t_1 = ((__pyx_v_type->typegroup == 'S') != 0); if (__pyx_t_1) { - /* "BufferFormatFromTypeInfo":1466 + /* "BufferFormatFromTypeInfo":1469 * * if type.typegroup == 'S': * assert type.fields != NULL and type.fields.type != NULL # <<<<<<<<<<<<<< @@ -49543,12 +49592,12 @@ static PyObject *__pyx_format_from_typeinfo(__Pyx_TypeInfo *__pyx_v_type) { __pyx_L4_bool_binop_done:; if (unlikely(!__pyx_t_1)) { PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(1, 1466, __pyx_L1_error) + __PYX_ERR(1, 1469, __pyx_L1_error) } } #endif - /* "BufferFormatFromTypeInfo":1468 + /* "BufferFormatFromTypeInfo":1471 * assert type.fields != NULL and type.fields.type != NULL * * if type.flags & __PYX_BUF_FLAGS_PACKED_STRUCT: # <<<<<<<<<<<<<< @@ -49558,7 +49607,7 @@ static PyObject *__pyx_format_from_typeinfo(__Pyx_TypeInfo *__pyx_v_type) { __pyx_t_1 = ((__pyx_v_type->flags & __PYX_BUF_FLAGS_PACKED_STRUCT) != 0); if (__pyx_t_1) { - /* "BufferFormatFromTypeInfo":1469 + /* "BufferFormatFromTypeInfo":1472 * * if type.flags & __PYX_BUF_FLAGS_PACKED_STRUCT: * alignment = b'^' # <<<<<<<<<<<<<< @@ -49568,7 +49617,7 @@ static PyObject *__pyx_format_from_typeinfo(__Pyx_TypeInfo *__pyx_v_type) { __Pyx_INCREF(__pyx_kp_b__69); __pyx_v_alignment = __pyx_kp_b__69; - /* "BufferFormatFromTypeInfo":1468 + /* "BufferFormatFromTypeInfo":1471 * assert type.fields != NULL and type.fields.type != NULL * * if type.flags & __PYX_BUF_FLAGS_PACKED_STRUCT: # <<<<<<<<<<<<<< @@ -49578,7 +49627,7 @@ static PyObject *__pyx_format_from_typeinfo(__Pyx_TypeInfo *__pyx_v_type) { goto __pyx_L6; } - /* "BufferFormatFromTypeInfo":1471 + /* "BufferFormatFromTypeInfo":1474 * alignment = b'^' * else: * alignment = b'' # <<<<<<<<<<<<<< @@ -49591,14 +49640,14 @@ static PyObject *__pyx_format_from_typeinfo(__Pyx_TypeInfo *__pyx_v_type) { } __pyx_L6:; - /* "BufferFormatFromTypeInfo":1473 + /* "BufferFormatFromTypeInfo":1476 * alignment = b'' * * parts = [b"T{"] # <<<<<<<<<<<<<< * field = type.fields * */ - __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1473, __pyx_L1_error) + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_kp_b_T_2); __Pyx_GIVEREF(__pyx_kp_b_T_2); @@ -49606,7 +49655,7 @@ static PyObject *__pyx_format_from_typeinfo(__Pyx_TypeInfo *__pyx_v_type) { __pyx_v_parts = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "BufferFormatFromTypeInfo":1474 + /* "BufferFormatFromTypeInfo":1477 * * parts = [b"T{"] * field = type.fields # <<<<<<<<<<<<<< @@ -49616,7 +49665,7 @@ static PyObject *__pyx_format_from_typeinfo(__Pyx_TypeInfo *__pyx_v_type) { __pyx_t_4 = __pyx_v_type->fields; __pyx_v_field = __pyx_t_4; - /* "BufferFormatFromTypeInfo":1476 + /* "BufferFormatFromTypeInfo":1479 * field = type.fields * * while field.type: # <<<<<<<<<<<<<< @@ -49627,40 +49676,40 @@ static PyObject *__pyx_format_from_typeinfo(__Pyx_TypeInfo *__pyx_v_type) { __pyx_t_1 = (__pyx_v_field->type != 0); if (!__pyx_t_1) break; - /* "BufferFormatFromTypeInfo":1477 + /* "BufferFormatFromTypeInfo":1480 * * while field.type: * part = format_from_typeinfo(field.type) # <<<<<<<<<<<<<< * parts.append(part + b':' + field.name + b':') * field += 1 */ - __pyx_t_3 = __pyx_format_from_typeinfo(__pyx_v_field->type); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1477, __pyx_L1_error) + __pyx_t_3 = __pyx_format_from_typeinfo(__pyx_v_field->type); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1480, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_XDECREF_SET(__pyx_v_part, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "BufferFormatFromTypeInfo":1478 + /* "BufferFormatFromTypeInfo":1481 * while field.type: * part = format_from_typeinfo(field.type) * parts.append(part + b':' + field.name + b':') # <<<<<<<<<<<<<< * field += 1 * */ - __pyx_t_3 = PyNumber_Add(__pyx_v_part, __pyx_kp_b__70); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1478, __pyx_L1_error) + __pyx_t_3 = PyNumber_Add(__pyx_v_part, __pyx_kp_b__70); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_field->name); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1478, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_field->name); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = PyNumber_Add(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1478, __pyx_L1_error) + __pyx_t_6 = PyNumber_Add(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_kp_b__70); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1478, __pyx_L1_error) + __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_kp_b__70); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_parts, __pyx_t_5); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(1, 1478, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_parts, __pyx_t_5); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(1, 1481, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "BufferFormatFromTypeInfo":1479 + /* "BufferFormatFromTypeInfo":1482 * part = format_from_typeinfo(field.type) * parts.append(part + b':' + field.name + b':') * field += 1 # <<<<<<<<<<<<<< @@ -49670,23 +49719,23 @@ static PyObject *__pyx_format_from_typeinfo(__Pyx_TypeInfo *__pyx_v_type) { __pyx_v_field = (__pyx_v_field + 1); } - /* "BufferFormatFromTypeInfo":1481 + /* "BufferFormatFromTypeInfo":1484 * field += 1 * * result = alignment.join(parts) + b'}' # <<<<<<<<<<<<<< * else: * fmt = __Pyx_TypeInfoToFormat(type) */ - __pyx_t_5 = __Pyx_PyBytes_Join(__pyx_v_alignment, __pyx_v_parts); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1481, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyBytes_Join(__pyx_v_alignment, __pyx_v_parts); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1484, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_kp_b__71); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1481, __pyx_L1_error) + __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_kp_b__71); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1484, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (!(likely(PyBytes_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_6)->tp_name), 0))) __PYX_ERR(1, 1481, __pyx_L1_error) + if (!(likely(PyBytes_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_6)->tp_name), 0))) __PYX_ERR(1, 1484, __pyx_L1_error) __pyx_v_result = ((PyObject*)__pyx_t_6); __pyx_t_6 = 0; - /* "BufferFormatFromTypeInfo":1465 + /* "BufferFormatFromTypeInfo":1468 * cdef bytes part, result * * if type.typegroup == 'S': # <<<<<<<<<<<<<< @@ -49696,7 +49745,7 @@ static PyObject *__pyx_format_from_typeinfo(__Pyx_TypeInfo *__pyx_v_type) { goto __pyx_L3; } - /* "BufferFormatFromTypeInfo":1483 + /* "BufferFormatFromTypeInfo":1486 * result = alignment.join(parts) + b'}' * else: * fmt = __Pyx_TypeInfoToFormat(type) # <<<<<<<<<<<<<< @@ -49706,7 +49755,7 @@ static PyObject *__pyx_format_from_typeinfo(__Pyx_TypeInfo *__pyx_v_type) { /*else*/ { __pyx_v_fmt = __Pyx_TypeInfoToFormat(__pyx_v_type); - /* "BufferFormatFromTypeInfo":1484 + /* "BufferFormatFromTypeInfo":1487 * else: * fmt = __Pyx_TypeInfoToFormat(type) * if type.arraysize[0]: # <<<<<<<<<<<<<< @@ -49716,56 +49765,56 @@ static PyObject *__pyx_format_from_typeinfo(__Pyx_TypeInfo *__pyx_v_type) { __pyx_t_1 = ((__pyx_v_type->arraysize[0]) != 0); if (__pyx_t_1) { - /* "BufferFormatFromTypeInfo":1485 + /* "BufferFormatFromTypeInfo":1488 * fmt = __Pyx_TypeInfoToFormat(type) * if type.arraysize[0]: * extents = [unicode(type.arraysize[i]) for i in range(type.ndim)] # <<<<<<<<<<<<<< * result = (u"(%s)" % u','.join(extents)).encode('ascii') + fmt.string * else: */ - __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1485, __pyx_L1_error) + __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = __pyx_v_type->ndim; __pyx_t_9 = __pyx_t_8; for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) { __pyx_v_i = __pyx_t_10; - __pyx_t_5 = __Pyx_PyInt_FromSize_t((__pyx_v_type->arraysize[__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1485, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyInt_FromSize_t((__pyx_v_type->arraysize[__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = __Pyx_PyObject_Unicode(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1485, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Unicode(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(__Pyx_ListComp_Append(__pyx_t_6, (PyObject*)__pyx_t_3))) __PYX_ERR(1, 1485, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_6, (PyObject*)__pyx_t_3))) __PYX_ERR(1, 1488, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_v_extents = ((PyObject*)__pyx_t_6); __pyx_t_6 = 0; - /* "BufferFormatFromTypeInfo":1486 + /* "BufferFormatFromTypeInfo":1489 * if type.arraysize[0]: * extents = [unicode(type.arraysize[i]) for i in range(type.ndim)] * result = (u"(%s)" % u','.join(extents)).encode('ascii') + fmt.string # <<<<<<<<<<<<<< * else: * result = fmt.string */ - __pyx_t_6 = PyUnicode_Join(__pyx_kp_u__72, __pyx_v_extents); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1486, __pyx_L1_error) + __pyx_t_6 = PyUnicode_Join(__pyx_kp_u__72, __pyx_v_extents); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1489, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_s, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1486, __pyx_L1_error) + __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_s, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1489, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyUnicode_AsASCIIString(((PyObject*)__pyx_t_3)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1486, __pyx_L1_error) + __pyx_t_6 = PyUnicode_AsASCIIString(((PyObject*)__pyx_t_3)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1489, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_FromString(__pyx_v_fmt.string); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1486, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_FromString(__pyx_v_fmt.string); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1489, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1486, __pyx_L1_error) + __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1489, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (!(likely(PyBytes_CheckExact(__pyx_t_5))||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(1, 1486, __pyx_L1_error) + if (!(likely(PyBytes_CheckExact(__pyx_t_5))||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(1, 1489, __pyx_L1_error) __pyx_v_result = ((PyObject*)__pyx_t_5); __pyx_t_5 = 0; - /* "BufferFormatFromTypeInfo":1484 + /* "BufferFormatFromTypeInfo":1487 * else: * fmt = __Pyx_TypeInfoToFormat(type) * if type.arraysize[0]: # <<<<<<<<<<<<<< @@ -49775,7 +49824,7 @@ static PyObject *__pyx_format_from_typeinfo(__Pyx_TypeInfo *__pyx_v_type) { goto __pyx_L9; } - /* "BufferFormatFromTypeInfo":1488 + /* "BufferFormatFromTypeInfo":1491 * result = (u"(%s)" % u','.join(extents)).encode('ascii') + fmt.string * else: * result = fmt.string # <<<<<<<<<<<<<< @@ -49783,7 +49832,7 @@ static PyObject *__pyx_format_from_typeinfo(__Pyx_TypeInfo *__pyx_v_type) { * return result */ /*else*/ { - __pyx_t_5 = __Pyx_PyObject_FromString(__pyx_v_fmt.string); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1488, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_FromString(__pyx_v_fmt.string); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1491, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_v_result = ((PyObject*)__pyx_t_5); __pyx_t_5 = 0; @@ -49792,7 +49841,7 @@ static PyObject *__pyx_format_from_typeinfo(__Pyx_TypeInfo *__pyx_v_type) { } __pyx_L3:; - /* "BufferFormatFromTypeInfo":1490 + /* "BufferFormatFromTypeInfo":1493 * result = fmt.string * * return result # <<<<<<<<<<<<<< @@ -49802,7 +49851,7 @@ static PyObject *__pyx_format_from_typeinfo(__Pyx_TypeInfo *__pyx_v_type) { __pyx_r = __pyx_v_result; goto __pyx_L0; - /* "BufferFormatFromTypeInfo":1460 + /* "BufferFormatFromTypeInfo":1463 * * @cname('__pyx_format_from_typeinfo') * cdef bytes format_from_typeinfo(__Pyx_TypeInfo *type): # <<<<<<<<<<<<<< @@ -49872,7 +49921,12 @@ static PyTypeObject __pyx_type_6primme_PrimmeParams = { sizeof(struct __pyx_obj_6primme_PrimmeParams), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_6primme_PrimmeParams, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 @@ -49925,6 +49979,9 @@ static PyTypeObject __pyx_type_6primme_PrimmeParams = { #if PY_VERSION_HEX >= 0x030800b1 0, /*tp_vectorcall*/ #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif }; static PyObject *__pyx_tp_new_6primme_PrimmeSvdsParams(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { @@ -49971,7 +50028,12 @@ static PyTypeObject __pyx_type_6primme_PrimmeSvdsParams = { sizeof(struct __pyx_obj_6primme_PrimmeSvdsParams), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_6primme_PrimmeSvdsParams, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 @@ -50024,6 +50086,9 @@ static PyTypeObject __pyx_type_6primme_PrimmeSvdsParams = { #if PY_VERSION_HEX >= 0x030800b1 0, /*tp_vectorcall*/ #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif }; static struct __pyx_obj_6primme___pyx_scope_struct__eigsh *__pyx_freelist_6primme___pyx_scope_struct__eigsh[8]; @@ -50085,7 +50150,12 @@ static PyTypeObject __pyx_type_6primme___pyx_scope_struct__eigsh = { sizeof(struct __pyx_obj_6primme___pyx_scope_struct__eigsh), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_6primme___pyx_scope_struct__eigsh, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 @@ -50138,6 +50208,9 @@ static PyTypeObject __pyx_type_6primme___pyx_scope_struct__eigsh = { #if PY_VERSION_HEX >= 0x030800b1 0, /*tp_vectorcall*/ #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif }; static struct __pyx_obj_6primme___pyx_scope_struct_1_genexpr *__pyx_freelist_6primme___pyx_scope_struct_1_genexpr[8]; @@ -50187,7 +50260,12 @@ static PyTypeObject __pyx_type_6primme___pyx_scope_struct_1_genexpr = { sizeof(struct __pyx_obj_6primme___pyx_scope_struct_1_genexpr), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_6primme___pyx_scope_struct_1_genexpr, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 @@ -50240,6 +50318,9 @@ static PyTypeObject __pyx_type_6primme___pyx_scope_struct_1_genexpr = { #if PY_VERSION_HEX >= 0x030800b1 0, /*tp_vectorcall*/ #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif }; static struct __pyx_obj_6primme___pyx_scope_struct_2_svds *__pyx_freelist_6primme___pyx_scope_struct_2_svds[8]; @@ -50329,7 +50410,12 @@ static PyTypeObject __pyx_type_6primme___pyx_scope_struct_2_svds = { sizeof(struct __pyx_obj_6primme___pyx_scope_struct_2_svds), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_6primme___pyx_scope_struct_2_svds, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 @@ -50382,6 +50468,9 @@ static PyTypeObject __pyx_type_6primme___pyx_scope_struct_2_svds = { #if PY_VERSION_HEX >= 0x030800b1 0, /*tp_vectorcall*/ #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif }; static struct __pyx_obj_6primme___pyx_scope_struct_3_genexpr *__pyx_freelist_6primme___pyx_scope_struct_3_genexpr[8]; @@ -50431,7 +50520,12 @@ static PyTypeObject __pyx_type_6primme___pyx_scope_struct_3_genexpr = { sizeof(struct __pyx_obj_6primme___pyx_scope_struct_3_genexpr), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_6primme___pyx_scope_struct_3_genexpr, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 @@ -50484,6 +50578,9 @@ static PyTypeObject __pyx_type_6primme___pyx_scope_struct_3_genexpr = { #if PY_VERSION_HEX >= 0x030800b1 0, /*tp_vectorcall*/ #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif }; static struct __pyx_vtabstruct_array __pyx_vtable_array; @@ -50612,7 +50709,12 @@ static PyTypeObject __pyx_type___pyx_array = { sizeof(struct __pyx_array_obj), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_array, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 @@ -50665,6 +50767,9 @@ static PyTypeObject __pyx_type___pyx_array = { #if PY_VERSION_HEX >= 0x030800b1 0, /*tp_vectorcall*/ #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif }; static PyObject *__pyx_tp_new_Enum(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { @@ -50723,7 +50828,12 @@ static PyTypeObject __pyx_type___pyx_MemviewEnum = { sizeof(struct __pyx_MemviewEnum_obj), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_Enum, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 @@ -50776,6 +50886,9 @@ static PyTypeObject __pyx_type___pyx_MemviewEnum = { #if PY_VERSION_HEX >= 0x030800b1 0, /*tp_vectorcall*/ #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif }; static struct __pyx_vtabstruct_memoryview __pyx_vtable_memoryview; @@ -50976,7 +51089,12 @@ static PyTypeObject __pyx_type___pyx_memoryview = { sizeof(struct __pyx_memoryview_obj), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_memoryview, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 @@ -51029,6 +51147,9 @@ static PyTypeObject __pyx_type___pyx_memoryview = { #if PY_VERSION_HEX >= 0x030800b1 0, /*tp_vectorcall*/ #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif }; static struct __pyx_vtabstruct__memoryviewslice __pyx_vtable__memoryviewslice; @@ -51106,7 +51227,12 @@ static PyTypeObject __pyx_type___pyx_memoryviewslice = { sizeof(struct __pyx_memoryviewslice_obj), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc__memoryviewslice, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 @@ -51167,6 +51293,9 @@ static PyTypeObject __pyx_type___pyx_memoryviewslice = { #if PY_VERSION_HEX >= 0x030800b1 0, /*tp_vectorcall*/ #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif }; static PyMethodDef __pyx_methods[] = { @@ -51647,9 +51776,9 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(2, 285, __pyx_L1_error) __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(2, 1038, __pyx_L1_error) __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(1, 151, __pyx_L1_error) - __pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_n_s_Ellipsis); if (!__pyx_builtin_Ellipsis) __PYX_ERR(1, 400, __pyx_L1_error) - __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(1, 609, __pyx_L1_error) - __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(1, 828, __pyx_L1_error) + __pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_n_s_Ellipsis); if (!__pyx_builtin_Ellipsis) __PYX_ERR(1, 404, __pyx_L1_error) + __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(1, 613, __pyx_L1_error) + __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(1, 832, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; @@ -52075,7 +52204,7 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__43); __Pyx_GIVEREF(__pyx_tuple__43); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":272 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":272 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -52086,7 +52215,7 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__45); __Pyx_GIVEREF(__pyx_tuple__45); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":276 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -52097,7 +52226,7 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__46); __Pyx_GIVEREF(__pyx_tuple__46); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":306 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":306 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -52108,7 +52237,7 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__47); __Pyx_GIVEREF(__pyx_tuple__47); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":856 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":856 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -52119,7 +52248,7 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__48); __Pyx_GIVEREF(__pyx_tuple__48); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":880 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":880 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -52130,7 +52259,7 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__49); __Pyx_GIVEREF(__pyx_tuple__49); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1038 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1038 * _import_array() * except Exception: * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< @@ -52141,7 +52270,7 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__50); __Pyx_GIVEREF(__pyx_tuple__50); - /* "../py3/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1044 + /* "../py3.8/lib/python3.8/site-packages/Cython/Includes/numpy/__init__.pxd":1044 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< @@ -52226,58 +52355,58 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__58); __Pyx_GIVEREF(__pyx_tuple__58); - /* "View.MemoryView":414 + /* "View.MemoryView":418 * def __setitem__(memoryview self, object index, object value): * if self.view.readonly: * raise TypeError("Cannot assign to read-only memoryview") # <<<<<<<<<<<<<< * * have_slices, index = _unellipsify(index, self.view.ndim) */ - __pyx_tuple__59 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(1, 414, __pyx_L1_error) + __pyx_tuple__59 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(1, 418, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__59); __Pyx_GIVEREF(__pyx_tuple__59); - /* "View.MemoryView":491 + /* "View.MemoryView":495 * result = struct.unpack(self.view.format, bytesitem) * except struct.error: * raise ValueError("Unable to convert item to object") # <<<<<<<<<<<<<< * else: * if len(self.view.format) == 1: */ - __pyx_tuple__60 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(1, 491, __pyx_L1_error) + __pyx_tuple__60 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(1, 495, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__60); __Pyx_GIVEREF(__pyx_tuple__60); - /* "View.MemoryView":516 + /* "View.MemoryView":520 * def __getbuffer__(self, Py_buffer *info, int flags): * if flags & PyBUF_WRITABLE and self.view.readonly: * raise ValueError("Cannot create writable memory view from read-only memoryview") # <<<<<<<<<<<<<< * * if flags & PyBUF_ND: */ - __pyx_tuple__61 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__61)) __PYX_ERR(1, 516, __pyx_L1_error) + __pyx_tuple__61 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__61)) __PYX_ERR(1, 520, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__61); __Pyx_GIVEREF(__pyx_tuple__61); - /* "View.MemoryView":566 + /* "View.MemoryView":570 * if self.view.strides == NULL: * * raise ValueError("Buffer view does not expose strides") # <<<<<<<<<<<<<< * * return tuple([stride for stride in self.view.strides[:self.view.ndim]]) */ - __pyx_tuple__62 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(1, 566, __pyx_L1_error) + __pyx_tuple__62 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(1, 570, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__62); __Pyx_GIVEREF(__pyx_tuple__62); - /* "View.MemoryView":573 + /* "View.MemoryView":577 * def suboffsets(self): * if self.view.suboffsets == NULL: * return (-1,) * self.view.ndim # <<<<<<<<<<<<<< * * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) */ - __pyx_tuple__63 = PyTuple_New(1); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(1, 573, __pyx_L1_error) + __pyx_tuple__63 = PyTuple_New(1); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(1, 577, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__63); __Pyx_INCREF(__pyx_int_neg_1); __Pyx_GIVEREF(__pyx_int_neg_1); @@ -52303,14 +52432,14 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__65); __Pyx_GIVEREF(__pyx_tuple__65); - /* "View.MemoryView":699 + /* "View.MemoryView":703 * for suboffset in suboffsets[:ndim]: * if suboffset >= 0: * raise ValueError("Indirect dimensions not supported") # <<<<<<<<<<<<<< * * */ - __pyx_tuple__66 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(1, 699, __pyx_L1_error) + __pyx_tuple__66 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(1, 703, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__66); __Pyx_GIVEREF(__pyx_tuple__66); @@ -52740,15 +52869,15 @@ static int __Pyx_modinit_type_init_code(void) { __pyx_vtable__memoryviewslice.__pyx_base.convert_item_to_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *))__pyx_memoryviewslice_convert_item_to_object; __pyx_vtable__memoryviewslice.__pyx_base.assign_item_from_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *, PyObject *))__pyx_memoryviewslice_assign_item_from_object; __pyx_type___pyx_memoryviewslice.tp_base = __pyx_memoryview_type; - if (PyType_Ready(&__pyx_type___pyx_memoryviewslice) < 0) __PYX_ERR(1, 961, __pyx_L1_error) + if (PyType_Ready(&__pyx_type___pyx_memoryviewslice) < 0) __PYX_ERR(1, 965, __pyx_L1_error) #if PY_VERSION_HEX < 0x030800B1 __pyx_type___pyx_memoryviewslice.tp_print = 0; #endif if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type___pyx_memoryviewslice.tp_dictoffset && __pyx_type___pyx_memoryviewslice.tp_getattro == PyObject_GenericGetAttr)) { __pyx_type___pyx_memoryviewslice.tp_getattro = __Pyx_PyObject_GenericGetAttr; } - if (__Pyx_SetVtable(__pyx_type___pyx_memoryviewslice.tp_dict, __pyx_vtabptr__memoryviewslice) < 0) __PYX_ERR(1, 961, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject*)&__pyx_type___pyx_memoryviewslice) < 0) __PYX_ERR(1, 961, __pyx_L1_error) + if (__Pyx_SetVtable(__pyx_type___pyx_memoryviewslice.tp_dict, __pyx_vtabptr__memoryviewslice) < 0) __PYX_ERR(1, 965, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type___pyx_memoryviewslice) < 0) __PYX_ERR(1, 965, __pyx_L1_error) __pyx_memoryviewslice_type = &__pyx_type___pyx_memoryviewslice; __Pyx_RefNannyFinishContext(); return 0; @@ -53000,9 +53129,9 @@ if (!__Pyx_RefNanny) { } #endif /*--- Builtin init code ---*/ - if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_InitCachedBuiltins() < 0) goto __pyx_L1_error; /*--- Constants init code ---*/ - if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_InitCachedConstants() < 0) goto __pyx_L1_error; /*--- Global type/function init code ---*/ (void)__Pyx_modinit_global_init_code(); (void)__Pyx_modinit_variable_export_code(); @@ -53535,29 +53664,29 @@ if (!__Pyx_RefNanny) { __pyx_t_10[7] = PyThread_allocate_lock(); memcpy(&(__pyx_memoryview_thread_locks[0]), __pyx_t_10, sizeof(__pyx_memoryview_thread_locks[0]) * (8)); - /* "View.MemoryView":545 + /* "View.MemoryView":549 * info.obj = self * * __pyx_getbuffer = capsule( &__pyx_memoryview_getbuffer, "getbuffer(obj, view, flags)") # <<<<<<<<<<<<<< * * */ - __pyx_t_7 = __pyx_capsule_create(((void *)(&__pyx_memoryview_getbuffer)), ((char *)"getbuffer(obj, view, flags)")); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 545, __pyx_L1_error) + __pyx_t_7 = __pyx_capsule_create(((void *)(&__pyx_memoryview_getbuffer)), ((char *)"getbuffer(obj, view, flags)")); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - if (PyDict_SetItem((PyObject *)__pyx_memoryview_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_7) < 0) __PYX_ERR(1, 545, __pyx_L1_error) + if (PyDict_SetItem((PyObject *)__pyx_memoryview_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_7) < 0) __PYX_ERR(1, 549, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_memoryview_type); - /* "View.MemoryView":991 + /* "View.MemoryView":995 * return self.from_object * * __pyx_getbuffer = capsule( &__pyx_memoryview_getbuffer, "getbuffer(obj, view, flags)") # <<<<<<<<<<<<<< * * */ - __pyx_t_7 = __pyx_capsule_create(((void *)(&__pyx_memoryview_getbuffer)), ((char *)"getbuffer(obj, view, flags)")); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 991, __pyx_L1_error) + __pyx_t_7 = __pyx_capsule_create(((void *)(&__pyx_memoryview_getbuffer)), ((char *)"getbuffer(obj, view, flags)")); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 995, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - if (PyDict_SetItem((PyObject *)__pyx_memoryviewslice_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_7) < 0) __PYX_ERR(1, 991, __pyx_L1_error) + if (PyDict_SetItem((PyObject *)__pyx_memoryviewslice_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_7) < 0) __PYX_ERR(1, 995, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_memoryviewslice_type); @@ -53571,7 +53700,7 @@ if (!__Pyx_RefNanny) { if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Enum, __pyx_t_7) < 0) __PYX_ERR(1, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "BufferFormatFromTypeInfo":1460 + /* "BufferFormatFromTypeInfo":1463 * * @cname('__pyx_format_from_typeinfo') * cdef bytes format_from_typeinfo(__Pyx_TypeInfo *type): # <<<<<<<<<<<<<< @@ -53768,7 +53897,7 @@ static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args return result; } #if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { +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); @@ -53839,12 +53968,12 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, } #if PY_MAJOR_VERSION >= 3 result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, - args, nargs, + args, (int)nargs, k, (int)nk, d, (int)nd, kwdefs, closure); #else result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, - args, nargs, + args, (int)nargs, k, (int)nk, d, (int)nd, closure); #endif @@ -55944,6 +56073,9 @@ static PyTypeObject __pyx_CyFunctionType_type = { #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); @@ -57319,7 +57451,6 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig) case 1: return a; case 2: - z = __Pyx_c_prod_float(a, a); return __Pyx_c_prod_float(a, a); case 3: z = __Pyx_c_prod_float(a, a); @@ -57474,7 +57605,6 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig) case 1: return a; case 2: - z = __Pyx_c_prod_double(a, a); return __Pyx_c_prod_double(a, a); case 3: z = __Pyx_c_prod_double(a, a); @@ -58742,6 +58872,7 @@ static void __Pyx_BufFmt_RaiseUnexpectedChar(char ch) { } static const char* __Pyx_BufFmt_DescribeTypeChar(char ch, int is_complex) { switch (ch) { + case '?': return "'bool'"; case 'c': return "'char'"; case 'b': return "'signed char'"; case 'B': return "'unsigned char'"; @@ -58784,7 +58915,7 @@ static size_t __Pyx_BufFmt_TypeCharToStandardSize(char ch, int is_complex) { } static size_t __Pyx_BufFmt_TypeCharToNativeSize(char ch, int is_complex) { switch (ch) { - case 'c': case 'b': case 'B': case 's': case 'p': return 1; + case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; case 'h': case 'H': return sizeof(short); case 'i': case 'I': return sizeof(int); case 'l': case 'L': return sizeof(long); @@ -58868,7 +58999,7 @@ static char __Pyx_BufFmt_TypeCharToGroup(char ch, int is_complex) { case 'b': case 'h': case 'i': case 'l': case 'q': case 's': case 'p': return 'I'; - case 'B': case 'H': case 'I': case 'L': case 'Q': + case '?': case 'B': case 'H': case 'I': case 'L': case 'Q': return 'U'; case 'f': case 'd': case 'g': return (is_complex ? 'C' : 'R'); @@ -59147,7 +59278,7 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha return NULL; } CYTHON_FALLTHROUGH; - case 'c': case 'b': case 'B': case 'h': case 'H': case 'i': case 'I': + case '?': case 'c': case 'b': case 'B': case 'h': case 'H': case 'i': case 'I': case 'l': case 'L': case 'q': case 'Q': case 'f': case 'd': case 'g': case 'O': case 'p': @@ -60421,6 +60552,9 @@ static PyTypeObject __pyx_GeneratorType_type = { #if PY_VERSION_HEX >= 0x030800b1 0, #endif +#if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, +#endif }; static int __pyx_Generator_init(void) { __pyx_GeneratorType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; diff --git a/doc/html/.buildinfo b/doc/html/.buildinfo index 71890c6c..4a6ea24e 100644 --- a/doc/html/.buildinfo +++ b/doc/html/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: b2315f1432018a0578e926c16e356966 +config: 9a0ed54895627e249ad4c9453744db7e tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/doc/html/_sources/intro.rst.txt b/doc/html/_sources/intro.rst.txt index 32ce4064..709530fa 100644 --- a/doc/html/_sources/intro.rst.txt +++ b/doc/html/_sources/intro.rst.txt @@ -56,6 +56,14 @@ From PRIMME 1.x to 2.0: Changelog ^^^^^^^^^ +Changes in PRIMME 3.1 (released on May 2, 2020): + +* Fixed compilation issues in F90 interface and examples. + +* Fixed bug in block orthogonalization. + +* Updated Python interface to Python version 3.8. + Changes in PRIMME 3.0 (released on December 14, 2019): * Added support for the generalized Hermitian eigenvalue problem (see |massMatrixMatvec|) and the standard normal eigenvalue problem (see :c:func:`zprimme_normal`). diff --git a/doc/html/_static/ajax-loader.gif b/doc/html/_static/ajax-loader.gif new file mode 100644 index 00000000..61faf8ca Binary files /dev/null and b/doc/html/_static/ajax-loader.gif differ diff --git a/doc/html/_static/basic.css b/doc/html/_static/basic.css index ea6972d5..0807176e 100644 --- a/doc/html/_static/basic.css +++ b/doc/html/_static/basic.css @@ -231,16 +231,6 @@ a.headerlink { visibility: hidden; } -a.brackets:before, -span.brackets > a:before{ - content: "["; -} - -a.brackets:after, -span.brackets > a:after { - content: "]"; -} - h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, @@ -289,12 +279,6 @@ img.align-center, .figure.align-center, object.align-center { margin-right: auto; } -img.align-default, .figure.align-default { - display: block; - margin-left: auto; - margin-right: auto; -} - .align-left { text-align: left; } @@ -303,10 +287,6 @@ img.align-default, .figure.align-default { text-align: center; } -.align-default { - text-align: center; -} - .align-right { text-align: right; } @@ -378,11 +358,6 @@ table.align-center { margin-right: auto; } -table.align-default { - margin-left: auto; - margin-right: auto; -} - table caption span.caption-number { font-style: italic; } @@ -416,16 +391,6 @@ table.citation td { border-bottom: none; } -th > p:first-child, -td > p:first-child { - margin-top: 0px; -} - -th > p:last-child, -td > p:last-child { - margin-bottom: 0px; -} - /* -- figures --------------------------------------------------------------- */ div.figure { @@ -495,58 +460,11 @@ ol.upperroman { list-style: upper-roman; } -li > p:first-child { - margin-top: 0px; -} - -li > p:last-child { - margin-bottom: 0px; -} - -dl.footnote > dt, -dl.citation > dt { - float: left; -} - -dl.footnote > dd, -dl.citation > dd { - margin-bottom: 0em; -} - -dl.footnote > dd:after, -dl.citation > dd:after { - content: ""; - clear: both; -} - -dl.field-list { - display: grid; - grid-template-columns: fit-content(30%) auto; -} - -dl.field-list > dt { - font-weight: bold; - word-break: break-word; - padding-left: 0.5em; - padding-right: 5px; -} - -dl.field-list > dt:after { - content: ":"; -} - -dl.field-list > dd { - padding-left: 0.5em; - margin-top: 0em; - margin-left: 0em; - margin-bottom: 0em; -} - dl { margin-bottom: 15px; } -dd > p:first-child { +dd p { margin-top: 0px; } @@ -619,12 +537,6 @@ dl.glossary dt { font-style: oblique; } -.classifier:before { - font-style: normal; - margin: 0.5em; - content: ":"; -} - abbr, acronym { border-bottom: dotted 1px; cursor: help; diff --git a/doc/html/_static/comment-bright.png b/doc/html/_static/comment-bright.png new file mode 100644 index 00000000..15e27edb Binary files /dev/null and b/doc/html/_static/comment-bright.png differ diff --git a/doc/html/_static/comment-close.png b/doc/html/_static/comment-close.png new file mode 100644 index 00000000..4d91bcf5 Binary files /dev/null and b/doc/html/_static/comment-close.png differ diff --git a/doc/html/_static/comment.png b/doc/html/_static/comment.png new file mode 100644 index 00000000..dfbc0cbd Binary files /dev/null and b/doc/html/_static/comment.png differ diff --git a/doc/html/_static/doctools.js b/doc/html/_static/doctools.js index b33f87fc..344db17d 100644 --- a/doc/html/_static/doctools.js +++ b/doc/html/_static/doctools.js @@ -87,13 +87,14 @@ jQuery.fn.highlightText = function(text, className) { node.nextSibling)); node.nodeValue = val.substr(0, pos); if (isInSVG) { + var bbox = span.getBBox(); var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); - var bbox = node.parentElement.getBBox(); - rect.x.baseVal.value = bbox.x; + rect.x.baseVal.value = bbox.x; rect.y.baseVal.value = bbox.y; rect.width.baseVal.value = bbox.width; rect.height.baseVal.value = bbox.height; rect.setAttribute('class', className); + var parentOfText = node.parentNode.parentNode; addItems.push({ "parent": node.parentNode, "target": rect}); diff --git a/doc/html/_static/documentation_options.js b/doc/html/_static/documentation_options.js index 8fd54c37..924d6fdb 100644 --- a/doc/html/_static/documentation_options.js +++ b/doc/html/_static/documentation_options.js @@ -1,10 +1,10 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '3.0', + VERSION: '3.1', LANGUAGE: 'None', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true, SOURCELINK_SUFFIX: '.txt', - NAVIGATION_WITH_KEYS: false + NAVIGATION_WITH_KEYS: false, }; \ No newline at end of file diff --git a/doc/html/_static/down-pressed.png b/doc/html/_static/down-pressed.png new file mode 100644 index 00000000..5756c8ca Binary files /dev/null and b/doc/html/_static/down-pressed.png differ diff --git a/doc/html/_static/down.png b/doc/html/_static/down.png new file mode 100644 index 00000000..1b3bdad2 Binary files /dev/null and b/doc/html/_static/down.png differ diff --git a/doc/html/_static/jquery-3.4.1.js b/doc/html/_static/jquery-3.2.1.js similarity index 89% rename from doc/html/_static/jquery-3.4.1.js rename to doc/html/_static/jquery-3.2.1.js index 773ad95c..d2d8ca47 100644 --- a/doc/html/_static/jquery-3.4.1.js +++ b/doc/html/_static/jquery-3.2.1.js @@ -1,5 +1,5 @@ /*! - * jQuery JavaScript Library v3.4.1 + * jQuery JavaScript Library v3.2.1 * https://jquery.com/ * * Includes Sizzle.js @@ -9,7 +9,7 @@ * Released under the MIT license * https://jquery.org/license * - * Date: 2019-05-01T21:04Z + * Date: 2017-03-20T18:59Z */ ( function( global, factory ) { @@ -71,70 +71,16 @@ var ObjectFunctionString = fnToString.call( Object ); var support = {}; -var isFunction = function isFunction( obj ) { - // Support: Chrome <=57, Firefox <=52 - // In some browsers, typeof returns "function" for HTML elements - // (i.e., `typeof document.createElement( "object" ) === "function"`). - // We don't want to classify *any* DOM node as a function. - return typeof obj === "function" && typeof obj.nodeType !== "number"; - }; - -var isWindow = function isWindow( obj ) { - return obj != null && obj === obj.window; - }; - - - - - var preservedScriptAttributes = { - type: true, - src: true, - nonce: true, - noModule: true - }; - - function DOMEval( code, node, doc ) { + function DOMEval( code, doc ) { doc = doc || document; - var i, val, - script = doc.createElement( "script" ); + var script = doc.createElement( "script" ); script.text = code; - if ( node ) { - for ( i in preservedScriptAttributes ) { - - // Support: Firefox 64+, Edge 18+ - // Some browsers don't support the "nonce" property on scripts. - // On the other hand, just using `getAttribute` is not enough as - // the `nonce` attribute is reset to an empty string whenever it - // becomes browsing-context connected. - // See https://github.com/whatwg/html/issues/2369 - // See https://html.spec.whatwg.org/#nonce-attributes - // The `node.getAttribute` check was added for the sake of - // `jQuery.globalEval` so that it can fake a nonce-containing node - // via an object. - val = node[ i ] || node.getAttribute && node.getAttribute( i ); - if ( val ) { - script.setAttribute( i, val ); - } - } - } doc.head.appendChild( script ).parentNode.removeChild( script ); } - - -function toType( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android <=2.3 only (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; -} /* global Symbol */ // Defining this global in .eslintrc.json would create a danger of using the global // unguarded in another place, it seems safer to define global only for this module @@ -142,7 +88,7 @@ function toType( obj ) { var - version = "3.4.1", + version = "3.2.1", // Define a local copy of jQuery jQuery = function( selector, context ) { @@ -154,7 +100,16 @@ var // Support: Android <=4.0 only // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; jQuery.fn = jQuery.prototype = { @@ -254,7 +209,7 @@ jQuery.extend = jQuery.fn.extend = function() { } // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !isFunction( target ) ) { + if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { target = {}; } @@ -271,28 +226,25 @@ jQuery.extend = jQuery.fn.extend = function() { // Extend the base object for ( name in options ) { + src = target[ name ]; copy = options[ name ]; - // Prevent Object.prototype pollution // Prevent never-ending loop - if ( name === "__proto__" || target === copy ) { + if ( target === copy ) { continue; } // Recurse if we're merging plain objects or arrays if ( deep && copy && ( jQuery.isPlainObject( copy ) || ( copyIsArray = Array.isArray( copy ) ) ) ) { - src = target[ name ]; - // Ensure proper type for the source value - if ( copyIsArray && !Array.isArray( src ) ) { - clone = []; - } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { - clone = {}; + if ( copyIsArray ) { + copyIsArray = false; + clone = src && Array.isArray( src ) ? src : []; + } else { - clone = src; + clone = src && jQuery.isPlainObject( src ) ? src : {}; } - copyIsArray = false; // Never move original objects, clone them target[ name ] = jQuery.extend( deep, clone, copy ); @@ -323,6 +275,28 @@ jQuery.extend( { noop: function() {}, + isFunction: function( obj ) { + return jQuery.type( obj ) === "function"; + }, + + isWindow: function( obj ) { + return obj != null && obj === obj.window; + }, + + isNumeric: function( obj ) { + + // As of jQuery 3.0, isNumeric is limited to + // strings and numbers (primitives or objects) + // that can be coerced to finite numbers (gh-2662) + var type = jQuery.type( obj ); + return ( type === "number" || type === "string" ) && + + // parseFloat NaNs numeric-cast false positives ("") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + !isNaN( obj - parseFloat( obj ) ); + }, + isPlainObject: function( obj ) { var proto, Ctor; @@ -345,6 +319,9 @@ jQuery.extend( { }, isEmptyObject: function( obj ) { + + /* eslint-disable no-unused-vars */ + // See https://github.com/eslint/eslint/issues/6125 var name; for ( name in obj ) { @@ -353,9 +330,27 @@ jQuery.extend( { return true; }, + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; + }, + // Evaluates a script in a global context - globalEval: function( code, options ) { - DOMEval( code, { nonce: options && options.nonce } ); + globalEval: function( code ) { + DOMEval( code ); + }, + + // Convert dashed to camelCase; used by the css and data modules + // Support: IE <=9 - 11, Edge 12 - 13 + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); }, each: function( obj, callback ) { @@ -478,6 +473,37 @@ jQuery.extend( { // A global GUID counter for objects guid: 1, + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var tmp, args, proxy; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: Date.now, + // jQuery.support is not used in Core but other projects attach their // properties to it so it needs to exist. support: support @@ -500,9 +526,9 @@ function isArrayLike( obj ) { // hasOwn isn't used here due to false negatives // regarding Nodelist length in IE var length = !!obj && "length" in obj && obj.length, - type = toType( obj ); + type = jQuery.type( obj ); - if ( isFunction( obj ) || isWindow( obj ) ) { + if ( type === "function" || jQuery.isWindow( obj ) ) { return false; } @@ -511,14 +537,14 @@ function isArrayLike( obj ) { } var Sizzle = /*! - * Sizzle CSS Selector Engine v2.3.4 + * Sizzle CSS Selector Engine v2.3.3 * https://sizzlejs.com/ * - * Copyright JS Foundation and other contributors + * Copyright jQuery Foundation and other contributors * Released under the MIT license - * https://js.foundation/ + * http://jquery.org/license * - * Date: 2019-04-08 + * Date: 2016-08-08 */ (function( window ) { @@ -552,7 +578,6 @@ var i, classCache = createCache(), tokenCache = createCache(), compilerCache = createCache(), - nonnativeSelectorCache = createCache(), sortOrder = function( a, b ) { if ( a === b ) { hasDuplicate = true; @@ -614,7 +639,8 @@ var i, rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - rdescend = new RegExp( whitespace + "|>" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), rpseudo = new RegExp( pseudos ), ridentifier = new RegExp( "^" + identifier + "$" ), @@ -635,7 +661,6 @@ var i, whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) }, - rhtml = /HTML$/i, rinputs = /^(?:input|select|textarea|button)$/i, rheader = /^h\d$/i, @@ -690,9 +715,9 @@ var i, setDocument(); }, - inDisabledFieldset = addCombinator( + disabledAncestor = addCombinator( function( elem ) { - return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; + return elem.disabled === true && ("form" in elem || "label" in elem); }, { dir: "parentNode", next: "legend" } ); @@ -805,22 +830,18 @@ function Sizzle( selector, context, results, seed ) { // Take advantage of querySelectorAll if ( support.qsa && - !nonnativeSelectorCache[ selector + " " ] && - (!rbuggyQSA || !rbuggyQSA.test( selector )) && + !compilerCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - // Support: IE 8 only - // Exclude object elements - (nodeType !== 1 || context.nodeName.toLowerCase() !== "object") ) { + if ( nodeType !== 1 ) { + newContext = context; + newSelector = selector; - newSelector = selector; - newContext = context; - - // qSA considers elements outside a scoping root when evaluating child or - // descendant combinators, which is not what we want. - // In such cases, we work around the behavior by prefixing every selector in the - // list with an ID selector referencing the scope context. - // Thanks to Andrew Dupont for this technique. - if ( nodeType === 1 && rdescend.test( selector ) ) { + // qSA looks outside Element context, which is not what we want + // Thanks to Andrew Dupont for this workaround technique + // Support: IE <=8 + // Exclude object elements + } else if ( context.nodeName.toLowerCase() !== "object" ) { // Capture the context ID, setting it first if necessary if ( (nid = context.getAttribute( "id" )) ) { @@ -842,16 +863,17 @@ function Sizzle( selector, context, results, seed ) { context; } - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - nonnativeSelectorCache( selector, true ); - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } } } } @@ -1015,7 +1037,7 @@ function createDisabledPseudo( disabled ) { // Where there is no isDisabled, check manually /* jshint -W018 */ elem.isDisabled !== !disabled && - inDisabledFieldset( elem ) === disabled; + disabledAncestor( elem ) === disabled; } return elem.disabled === disabled; @@ -1072,13 +1094,10 @@ support = Sizzle.support = {}; * @returns {Boolean} True iff elem is a non-HTML XML node */ isXML = Sizzle.isXML = function( elem ) { - var namespace = elem.namespaceURI, - docElem = (elem.ownerDocument || elem).documentElement; - - // Support: IE <=8 - // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes - // https://bugs.jquery.com/ticket/4833 - return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; }; /** @@ -1500,8 +1519,11 @@ Sizzle.matchesSelector = function( elem, expr ) { setDocument( elem ); } + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + if ( support.matchesSelector && documentIsHTML && - !nonnativeSelectorCache[ expr + " " ] && + !compilerCache[ expr + " " ] && ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { @@ -1515,9 +1537,7 @@ Sizzle.matchesSelector = function( elem, expr ) { elem.document && elem.document.nodeType !== 11 ) { return ret; } - } catch (e) { - nonnativeSelectorCache( expr, true ); - } + } catch (e) {} } return Sizzle( expr, document, null, [ elem ] ).length > 0; @@ -1976,7 +1996,7 @@ Expr = Sizzle.selectors = { "contains": markFunction(function( text ) { text = text.replace( runescape, funescape ); return function( elem ) { - return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; }; }), @@ -2115,11 +2135,7 @@ Expr = Sizzle.selectors = { }), "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? - argument + length : - argument > length ? - length : - argument; + var i = argument < 0 ? argument + length : argument; for ( ; --i >= 0; ) { matchIndexes.push( i ); } @@ -2832,9 +2848,11 @@ var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>| +var risSimple = /^.[^:#\[\.,]*$/; + // Implement the identical functionality for filter and not function winnow( elements, qualifier, not ) { - if ( isFunction( qualifier ) ) { + if ( jQuery.isFunction( qualifier ) ) { return jQuery.grep( elements, function( elem, i ) { return !!qualifier.call( elem, i, elem ) !== not; } ); @@ -2854,8 +2872,16 @@ function winnow( elements, qualifier, not ) { } ); } - // Filtered directly for both simple and complex selectors - return jQuery.filter( qualifier, elements, not ); + // Simple selector that can be filtered directly, removing non-Elements + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + // Complex selector, compare the two sets, removing non-Elements + qualifier = jQuery.filter( qualifier, elements ); + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1; + } ); } jQuery.filter = function( expr, elems, not ) { @@ -2976,7 +3002,7 @@ var rootjQuery, for ( match in context ) { // Properties of context are called as methods if possible - if ( isFunction( this[ match ] ) ) { + if ( jQuery.isFunction( this[ match ] ) ) { this[ match ]( context[ match ] ); // ...and otherwise set as attributes @@ -3019,7 +3045,7 @@ var rootjQuery, // HANDLE: $(function) // Shortcut for document ready - } else if ( isFunction( selector ) ) { + } else if ( jQuery.isFunction( selector ) ) { return root.ready !== undefined ? root.ready( selector ) : @@ -3169,18 +3195,18 @@ jQuery.each( { return siblings( elem.firstChild ); }, contents: function( elem ) { - if ( typeof elem.contentDocument !== "undefined" ) { - return elem.contentDocument; - } + if ( nodeName( elem, "iframe" ) ) { + return elem.contentDocument; + } - // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only - // Treat the template element as a regular one in browsers that - // don't support it. - if ( nodeName( elem, "template" ) ) { - elem = elem.content || elem; - } + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } - return jQuery.merge( [], elem.childNodes ); + return jQuery.merge( [], elem.childNodes ); } }, function( name, fn ) { jQuery.fn[ name ] = function( until, selector ) { @@ -3334,11 +3360,11 @@ jQuery.Callbacks = function( options ) { ( function add( args ) { jQuery.each( args, function( _, arg ) { - if ( isFunction( arg ) ) { + if ( jQuery.isFunction( arg ) ) { if ( !options.unique || !self.has( arg ) ) { list.push( arg ); } - } else if ( arg && arg.length && toType( arg ) !== "string" ) { + } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { // Inspect recursively add( arg ); @@ -3453,11 +3479,11 @@ function adoptValue( value, resolve, reject, noValue ) { try { // Check for promise aspect first to privilege synchronous behavior - if ( value && isFunction( ( method = value.promise ) ) ) { + if ( value && jQuery.isFunction( ( method = value.promise ) ) ) { method.call( value ).done( resolve ).fail( reject ); // Other thenables - } else if ( value && isFunction( ( method = value.then ) ) ) { + } else if ( value && jQuery.isFunction( ( method = value.then ) ) ) { method.call( value, resolve, reject ); // Other non-thenables @@ -3515,14 +3541,14 @@ jQuery.extend( { jQuery.each( tuples, function( i, tuple ) { // Map tuples (progress, done, fail) to arguments (done, fail, progress) - var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; // deferred.progress(function() { bind to newDefer or newDefer.notify }) // deferred.done(function() { bind to newDefer or newDefer.resolve }) // deferred.fail(function() { bind to newDefer or newDefer.reject }) deferred[ tuple[ 1 ] ]( function() { var returned = fn && fn.apply( this, arguments ); - if ( returned && isFunction( returned.promise ) ) { + if ( returned && jQuery.isFunction( returned.promise ) ) { returned.promise() .progress( newDefer.notify ) .done( newDefer.resolve ) @@ -3576,7 +3602,7 @@ jQuery.extend( { returned.then; // Handle a returned thenable - if ( isFunction( then ) ) { + if ( jQuery.isFunction( then ) ) { // Special processors (notify) just wait for resolution if ( special ) { @@ -3672,7 +3698,7 @@ jQuery.extend( { resolve( 0, newDefer, - isFunction( onProgress ) ? + jQuery.isFunction( onProgress ) ? onProgress : Identity, newDefer.notifyWith @@ -3684,7 +3710,7 @@ jQuery.extend( { resolve( 0, newDefer, - isFunction( onFulfilled ) ? + jQuery.isFunction( onFulfilled ) ? onFulfilled : Identity ) @@ -3695,7 +3721,7 @@ jQuery.extend( { resolve( 0, newDefer, - isFunction( onRejected ) ? + jQuery.isFunction( onRejected ) ? onRejected : Thrower ) @@ -3735,15 +3761,8 @@ jQuery.extend( { // fulfilled_callbacks.disable tuples[ 3 - i ][ 2 ].disable, - // rejected_handlers.disable - // fulfilled_handlers.disable - tuples[ 3 - i ][ 3 ].disable, - // progress_callbacks.lock - tuples[ 0 ][ 2 ].lock, - - // progress_handlers.lock - tuples[ 0 ][ 3 ].lock + tuples[ 0 ][ 2 ].lock ); } @@ -3813,7 +3832,7 @@ jQuery.extend( { // Use .then() to unwrap secondary thenables (cf. gh-3000) if ( master.state() === "pending" || - isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { return master.then(); } @@ -3941,7 +3960,7 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { bulk = key == null; // Sets many values - if ( toType( key ) === "object" ) { + if ( jQuery.type( key ) === "object" ) { chainable = true; for ( i in key ) { access( elems, fn, i, key[ i ], true, emptyGet, raw ); @@ -3951,7 +3970,7 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { } else if ( value !== undefined ) { chainable = true; - if ( !isFunction( value ) ) { + if ( !jQuery.isFunction( value ) ) { raw = true; } @@ -3993,23 +4012,6 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { return len ? fn( elems[ 0 ], key ) : emptyGet; }; - - -// Matches dashed string for camelizing -var rmsPrefix = /^-ms-/, - rdashAlpha = /-([a-z])/g; - -// Used by camelCase as callback to replace() -function fcamelCase( all, letter ) { - return letter.toUpperCase(); -} - -// Convert dashed to camelCase; used by the css and data modules -// Support: IE <=9 - 11, Edge 12 - 15 -// Microsoft forgot to hump their vendor prefix (#9572) -function camelCase( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); -} var acceptData = function( owner ) { // Accepts only: @@ -4072,14 +4074,14 @@ Data.prototype = { // Handle: [ owner, key, value ] args // Always use camelCase key (gh-2257) if ( typeof data === "string" ) { - cache[ camelCase( data ) ] = value; + cache[ jQuery.camelCase( data ) ] = value; // Handle: [ owner, { properties } ] args } else { // Copy the properties one-by-one to the cache object for ( prop in data ) { - cache[ camelCase( prop ) ] = data[ prop ]; + cache[ jQuery.camelCase( prop ) ] = data[ prop ]; } } return cache; @@ -4089,7 +4091,7 @@ Data.prototype = { this.cache( owner ) : // Always use camelCase key (gh-2257) - owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; + owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ]; }, access: function( owner, key, value ) { @@ -4137,9 +4139,9 @@ Data.prototype = { // If key is an array of keys... // We always set camelCase keys, so remove that. - key = key.map( camelCase ); + key = key.map( jQuery.camelCase ); } else { - key = camelCase( key ); + key = jQuery.camelCase( key ); // If a key with the spaces exists, use it. // Otherwise, create an array by matching non-whitespace @@ -4285,7 +4287,7 @@ jQuery.fn.extend( { if ( attrs[ i ] ) { name = attrs[ i ].name; if ( name.indexOf( "data-" ) === 0 ) { - name = camelCase( name.slice( 5 ) ); + name = jQuery.camelCase( name.slice( 5 ) ); dataAttr( elem, name, data[ name ] ); } } @@ -4489,26 +4491,6 @@ var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; -var documentElement = document.documentElement; - - - - var isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ); - }, - composed = { composed: true }; - - // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only - // Check attachment across shadow DOM boundaries when possible (gh-3504) - // Support: iOS 10.0-10.2 only - // Early iOS 10 versions support `attachShadow` but not `getRootNode`, - // leading to errors. We need to check for `getRootNode`. - if ( documentElement.getRootNode ) { - isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ) || - elem.getRootNode( composed ) === elem.ownerDocument; - }; - } var isHiddenWithinTree = function( elem, el ) { // isHiddenWithinTree might be called from jQuery#filter function; @@ -4523,7 +4505,7 @@ var isHiddenWithinTree = function( elem, el ) { // Support: Firefox <=43 - 45 // Disconnected elements can have computed display: none, so first confirm that elem is // in the document. - isAttached( elem ) && + jQuery.contains( elem.ownerDocument, elem ) && jQuery.css( elem, "display" ) === "none"; }; @@ -4552,7 +4534,8 @@ var swap = function( elem, options, callback, args ) { function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, scale, + var adjusted, + scale = 1, maxIterations = 20, currentValue = tween ? function() { @@ -4565,39 +4548,35 @@ function adjustCSS( elem, prop, valueParts, tween ) { unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), // Starting value computation is required for potential unit mismatches - initialInUnit = elem.nodeType && - ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && rcssNum.exec( jQuery.css( elem, prop ) ); if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - // Support: Firefox <=54 - // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) - initial = initial / 2; - // Trust units reported by jQuery.css unit = unit || initialInUnit[ 3 ]; + // Make sure we update the tween properties later on + valueParts = valueParts || []; + // Iteratively approximate from a nonzero starting point initialInUnit = +initial || 1; - while ( maxIterations-- ) { + do { - // Evaluate and update our best guess (doubling guesses that zero out). - // Finish if the scale equals or crosses 1 (making the old*new product non-positive). - jQuery.style( elem, prop, initialInUnit + unit ); - if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { - maxIterations = 0; - } - initialInUnit = initialInUnit / scale; + // If previous iteration zeroed out, double until we get *something*. + // Use string for doubling so we don't accidentally see scale as unchanged below + scale = scale || ".5"; - } - - initialInUnit = initialInUnit * 2; - jQuery.style( elem, prop, initialInUnit + unit ); + // Adjust and apply + initialInUnit = initialInUnit / scale; + jQuery.style( elem, prop, initialInUnit + unit ); - // Make sure we update the tween properties later on - valueParts = valueParts || []; + // Update scale, tolerating zero or NaN from tween.cur() + // Break the loop if scale is unchanged or perfect, or if we've just had enough. + } while ( + scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations + ); } if ( valueParts ) { @@ -4713,9 +4692,9 @@ jQuery.fn.extend( { } ); var rcheckableType = ( /^(?:checkbox|radio)$/i ); -var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i ); -var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); +var rscriptType = ( /^$|\/(?:java|ecma)script/i ); @@ -4785,7 +4764,7 @@ function setGlobalEval( elems, refElements ) { var rhtml = /<|&#?\w+;/; function buildFragment( elems, context, scripts, selection, ignored ) { - var elem, tmp, tag, wrap, attached, j, + var elem, tmp, tag, wrap, contains, j, fragment = context.createDocumentFragment(), nodes = [], i = 0, @@ -4797,7 +4776,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) { if ( elem || elem === 0 ) { // Add nodes directly - if ( toType( elem ) === "object" ) { + if ( jQuery.type( elem ) === "object" ) { // Support: Android <=4.0 only, PhantomJS 1 only // push.apply(_, arraylike) throws on ancient WebKit @@ -4849,13 +4828,13 @@ function buildFragment( elems, context, scripts, selection, ignored ) { continue; } - attached = isAttached( elem ); + contains = jQuery.contains( elem.ownerDocument, elem ); // Append to fragment tmp = getAll( fragment.appendChild( elem ), "script" ); // Preserve script evaluation history - if ( attached ) { + if ( contains ) { setGlobalEval( tmp ); } @@ -4898,6 +4877,8 @@ function buildFragment( elems, context, scripts, selection, ignored ) { div.innerHTML = ""; support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; } )(); +var documentElement = document.documentElement; + var @@ -4913,19 +4894,8 @@ function returnFalse() { return false; } -// Support: IE <=9 - 11+ -// focus() and blur() are asynchronous, except when they are no-op. -// So expect focus to be synchronous when the element is already active, -// and blur to be synchronous when the element is not already active. -// (focus and blur are always synchronous in other supported browsers, -// this just defines when we can count on it). -function expectSync( elem, type ) { - return ( elem === safeActiveElement() ) === ( type === "focus" ); -} - // Support: IE <=9 only -// Accessing document.activeElement can throw unexpectedly -// https://bugs.jquery.com/ticket/13393 +// See #13393 for more info function safeActiveElement() { try { return document.activeElement; @@ -5225,10 +5195,9 @@ jQuery.event = { while ( ( handleObj = matched.handlers[ j++ ] ) && !event.isImmediatePropagationStopped() ) { - // If the event is namespaced, then each handler is only invoked if it is - // specially universal or its namespaces are a superset of the event's. - if ( !event.rnamespace || handleObj.namespace === false || - event.rnamespace.test( handleObj.namespace ) ) { + // Triggered event must either 1) have no namespace, or 2) have namespace(s) + // a subset or equal to those in the bound event (both can have no namespace). + if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { event.handleObj = handleObj; event.data = handleObj.data; @@ -5317,7 +5286,7 @@ jQuery.event = { enumerable: true, configurable: true, - get: isFunction( hook ) ? + get: jQuery.isFunction( hook ) ? function() { if ( this.originalEvent ) { return hook( this.originalEvent ); @@ -5352,51 +5321,39 @@ jQuery.event = { // Prevent triggered image.load events from bubbling to window.load noBubble: true }, - click: { - - // Utilize native event to ensure correct state for checkable inputs - setup: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; + focus: { - // Claim the first handler - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - // dataPriv.set( el, "click", ... ) - leverageNative( el, "click", returnTrue ); + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + this.focus(); + return false; } - - // Return false to allow normal processing in the caller - return false; }, - trigger: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; - - // Force setup before triggering a click - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - leverageNative( el, "click" ); + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; } + }, + delegateType: "focusout" + }, + click: { - // Return non-false to allow normal event-path propagation - return true; + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) { + this.click(); + return false; + } }, - // For cross-browser consistency, suppress native .click() on links - // Also prevent it if we're currently inside a leveraged native-event stack + // For cross-browser consistency, don't fire native .click() on links _default: function( event ) { - var target = event.target; - return rcheckableType.test( target.type ) && - target.click && nodeName( target, "input" ) && - dataPriv.get( target, "click" ) || - nodeName( target, "a" ); + return nodeName( event.target, "a" ); } }, @@ -5413,93 +5370,6 @@ jQuery.event = { } }; -// Ensure the presence of an event listener that handles manually-triggered -// synthetic events by interrupting progress until reinvoked in response to -// *native* events that it fires directly, ensuring that state changes have -// already occurred before other listeners are invoked. -function leverageNative( el, type, expectSync ) { - - // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add - if ( !expectSync ) { - if ( dataPriv.get( el, type ) === undefined ) { - jQuery.event.add( el, type, returnTrue ); - } - return; - } - - // Register the controller as a special universal handler for all event namespaces - dataPriv.set( el, type, false ); - jQuery.event.add( el, type, { - namespace: false, - handler: function( event ) { - var notAsync, result, - saved = dataPriv.get( this, type ); - - if ( ( event.isTrigger & 1 ) && this[ type ] ) { - - // Interrupt processing of the outer synthetic .trigger()ed event - // Saved data should be false in such cases, but might be a leftover capture object - // from an async native handler (gh-4350) - if ( !saved.length ) { - - // Store arguments for use when handling the inner native event - // There will always be at least one argument (an event object), so this array - // will not be confused with a leftover capture object. - saved = slice.call( arguments ); - dataPriv.set( this, type, saved ); - - // Trigger the native event and capture its result - // Support: IE <=9 - 11+ - // focus() and blur() are asynchronous - notAsync = expectSync( this, type ); - this[ type ](); - result = dataPriv.get( this, type ); - if ( saved !== result || notAsync ) { - dataPriv.set( this, type, false ); - } else { - result = {}; - } - if ( saved !== result ) { - - // Cancel the outer synthetic event - event.stopImmediatePropagation(); - event.preventDefault(); - return result.value; - } - - // If this is an inner synthetic event for an event with a bubbling surrogate - // (focus or blur), assume that the surrogate already propagated from triggering the - // native event and prevent that from happening again here. - // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the - // bubbling surrogate propagates *after* the non-bubbling base), but that seems - // less bad than duplication. - } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { - event.stopPropagation(); - } - - // If this is a native event triggered above, everything is now in order - // Fire an inner synthetic event with the original arguments - } else if ( saved.length ) { - - // ...and capture the result - dataPriv.set( this, type, { - value: jQuery.event.trigger( - - // Support: IE <=9 - 11+ - // Extend with the prototype to reset the above stopImmediatePropagation() - jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), - saved.slice( 1 ), - this - ) - } ); - - // Abort handling of the native event - event.stopImmediatePropagation(); - } - } - } ); -} - jQuery.removeEvent = function( elem, type, handle ) { // This "if" is needed for plain objects @@ -5551,7 +5421,7 @@ jQuery.Event = function( src, props ) { } // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || Date.now(); + this.timeStamp = src && src.timeStamp || jQuery.now(); // Mark it as fixed this[ jQuery.expando ] = true; @@ -5612,7 +5482,6 @@ jQuery.each( { shiftKey: true, view: true, "char": true, - code: true, charCode: true, key: true, keyCode: true, @@ -5659,33 +5528,6 @@ jQuery.each( { } }, jQuery.event.addProp ); -jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { - jQuery.event.special[ type ] = { - - // Utilize native event if possible so blur/focus sequence is correct - setup: function() { - - // Claim the first handler - // dataPriv.set( this, "focus", ... ) - // dataPriv.set( this, "blur", ... ) - leverageNative( this, type, expectSync ); - - // Return false to allow normal processing in the caller - return false; - }, - trigger: function() { - - // Force setup before trigger - leverageNative( this, type ); - - // Return non-false to allow normal event-path propagation - return true; - }, - - delegateType: delegateType - }; -} ); - // Create mouseenter/leave events using mouseover/out and event-time checks // so that event delegation works in jQuery. // Do the same for pointerenter/pointerleave and pointerover/pointerout @@ -5778,13 +5620,14 @@ var /* eslint-enable */ - // Support: IE <=10 - 11, Edge 12 - 13 only + // Support: IE <=10 - 11, Edge 12 - 13 // In IE/Edge using regex groups here causes severe slowdowns. // See https://connect.microsoft.com/IE/feedback/details/1736512/ rnoInnerhtml = /\s*$/g; // Prefer a tbody over its parent table for containing new rows @@ -5792,7 +5635,7 @@ function manipulationTarget( elem, content ) { if ( nodeName( elem, "table" ) && nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { - return jQuery( elem ).children( "tbody" )[ 0 ] || elem; + return jQuery( ">tbody", elem )[ 0 ] || elem; } return elem; @@ -5804,8 +5647,10 @@ function disableScript( elem ) { return elem; } function restoreScript( elem ) { - if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { - elem.type = elem.type.slice( 5 ); + var match = rscriptTypeMasked.exec( elem.type ); + + if ( match ) { + elem.type = match[ 1 ]; } else { elem.removeAttribute( "type" ); } @@ -5871,15 +5716,15 @@ function domManip( collection, args, callback, ignored ) { l = collection.length, iNoClone = l - 1, value = args[ 0 ], - valueIsFunction = isFunction( value ); + isFunction = jQuery.isFunction( value ); // We can't cloneNode fragments that contain checked, in WebKit - if ( valueIsFunction || + if ( isFunction || ( l > 1 && typeof value === "string" && !support.checkClone && rchecked.test( value ) ) ) { return collection.each( function( index ) { var self = collection.eq( index ); - if ( valueIsFunction ) { + if ( isFunction ) { args[ 0 ] = value.call( this, index, self.html() ); } domManip( self, args, callback, ignored ); @@ -5933,16 +5778,14 @@ function domManip( collection, args, callback, ignored ) { !dataPriv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) { - if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { + if ( node.src ) { // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl && !node.noModule ) { - jQuery._evalUrl( node.src, { - nonce: node.nonce || node.getAttribute( "nonce" ) - } ); + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); } } else { - DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); + DOMEval( node.textContent.replace( rcleanScript, "" ), doc ); } } } @@ -5964,7 +5807,7 @@ function remove( elem, selector, keepData ) { } if ( node.parentNode ) { - if ( keepData && isAttached( node ) ) { + if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { setGlobalEval( getAll( node, "script" ) ); } node.parentNode.removeChild( node ); @@ -5982,7 +5825,7 @@ jQuery.extend( { clone: function( elem, dataAndEvents, deepDataAndEvents ) { var i, l, srcElements, destElements, clone = elem.cloneNode( true ), - inPage = isAttached( elem ); + inPage = jQuery.contains( elem.ownerDocument, elem ); // Fix IE cloning issues if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && @@ -6222,6 +6065,8 @@ jQuery.each( { return this.pushStack( ret ); }; } ); +var rmargin = ( /^margin/ ); + var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); var getStyles = function( elem ) { @@ -6238,8 +6083,6 @@ var getStyles = function( elem ) { return view.getComputedStyle( elem ); }; -var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); - ( function() { @@ -6253,35 +6096,25 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); return; } - container.style.cssText = "position:absolute;left:-11111px;width:60px;" + - "margin-top:1px;padding:0;border:0"; div.style.cssText = - "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + + "box-sizing:border-box;" + + "position:relative;display:block;" + "margin:auto;border:1px;padding:1px;" + - "width:60%;top:1%"; - documentElement.appendChild( container ).appendChild( div ); + "top:1%;width:50%"; + div.innerHTML = ""; + documentElement.appendChild( container ); var divStyle = window.getComputedStyle( div ); pixelPositionVal = divStyle.top !== "1%"; // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 - reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; + reliableMarginLeftVal = divStyle.marginLeft === "2px"; + boxSizingReliableVal = divStyle.width === "4px"; - // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 + // Support: Android 4.0 - 4.3 only // Some styles come back with percentage values, even though they shouldn't - div.style.right = "60%"; - pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; - - // Support: IE 9 - 11 only - // Detect misreporting of content dimensions for box-sizing:border-box elements - boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; - - // Support: IE 9 only - // Detect overflow:scroll screwiness (gh-3699) - // Support: Chrome <=64 - // Don't get tricked when zoom affects offsetWidth (gh-4029) - div.style.position = "absolute"; - scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; + div.style.marginRight = "50%"; + pixelMarginRightVal = divStyle.marginRight === "4px"; documentElement.removeChild( container ); @@ -6290,12 +6123,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); div = null; } - function roundPixelMeasures( measure ) { - return Math.round( parseFloat( measure ) ); - } - - var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, - reliableMarginLeftVal, + var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal, container = document.createElement( "div" ), div = document.createElement( "div" ); @@ -6310,26 +6138,26 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); div.cloneNode( true ).style.backgroundClip = ""; support.clearCloneStyle = div.style.backgroundClip === "content-box"; + container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" + + "padding:0;margin-top:1px;position:absolute"; + container.appendChild( div ); + jQuery.extend( support, { - boxSizingReliable: function() { + pixelPosition: function() { computeStyleTests(); - return boxSizingReliableVal; + return pixelPositionVal; }, - pixelBoxStyles: function() { + boxSizingReliable: function() { computeStyleTests(); - return pixelBoxStylesVal; + return boxSizingReliableVal; }, - pixelPosition: function() { + pixelMarginRight: function() { computeStyleTests(); - return pixelPositionVal; + return pixelMarginRightVal; }, reliableMarginLeft: function() { computeStyleTests(); return reliableMarginLeftVal; - }, - scrollboxSize: function() { - computeStyleTests(); - return scrollboxSizeVal; } } ); } )(); @@ -6352,7 +6180,7 @@ function curCSS( elem, name, computed ) { if ( computed ) { ret = computed.getPropertyValue( name ) || computed[ name ]; - if ( ret === "" && !isAttached( elem ) ) { + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { ret = jQuery.style( elem, name ); } @@ -6361,7 +6189,7 @@ function curCSS( elem, name, computed ) { // but width seems to be reliably pixels. // This is against the CSSOM draft spec: // https://drafts.csswg.org/cssom/#resolved-values - if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { + if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) { // Remember the original values width = style.width; @@ -6408,13 +6236,30 @@ function addGetHookIf( conditionFn, hookFn ) { } -var cssPrefixes = [ "Webkit", "Moz", "ms" ], - emptyStyle = document.createElement( "div" ).style, - vendorProps = {}; +var -// Return a vendor-prefixed property or undefined + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }, + + cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style; + +// Return a css property mapped to a potentially vendor prefixed property function vendorPropName( name ) { + // Shortcut for names that are not vendor prefixed + if ( name in emptyStyle ) { + return name; + } + // Check for vendor prefixed names var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), i = cssPrefixes.length; @@ -6427,33 +6272,16 @@ function vendorPropName( name ) { } } -// Return a potentially-mapped jQuery.cssProps or vendor prefixed property +// Return a property mapped along what jQuery.cssProps suggests or to +// a vendor prefixed property. function finalPropName( name ) { - var final = jQuery.cssProps[ name ] || vendorProps[ name ]; - - if ( final ) { - return final; - } - if ( name in emptyStyle ) { - return name; + var ret = jQuery.cssProps[ name ]; + if ( !ret ) { + ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name; } - return vendorProps[ name ] = vendorPropName( name ) || name; + return ret; } - -var - - // Swappable if display is none or starts with table - // except "table", "table-cell", or "table-caption" - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rcustomProp = /^--/, - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }; - function setPositiveNumber( elem, value, subtract ) { // Any relative (+/-) values have already been @@ -6466,137 +6294,87 @@ function setPositiveNumber( elem, value, subtract ) { value; } -function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { - var i = dimension === "width" ? 1 : 0, - extra = 0, - delta = 0; +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { + var i, + val = 0; - // Adjustment may not be necessary - if ( box === ( isBorderBox ? "border" : "content" ) ) { - return 0; + // If we already have the right measurement, avoid augmentation + if ( extra === ( isBorderBox ? "border" : "content" ) ) { + i = 4; + + // Otherwise initialize for horizontal or vertical properties + } else { + i = name === "width" ? 1 : 0; } for ( ; i < 4; i += 2 ) { - // Both box models exclude margin - if ( box === "margin" ) { - delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); + // Both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); } - // If we get here with a content-box, we're seeking "padding" or "border" or "margin" - if ( !isBorderBox ) { - - // Add padding - delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // For "border" or "margin", add border - if ( box !== "padding" ) { - delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + if ( isBorderBox ) { - // But still keep track of it otherwise - } else { - extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); } - // If we get here with a border-box (content + padding + border), we're seeking "content" or - // "padding" or "margin" + // At this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } } else { - // For "content", subtract padding - if ( box === "content" ) { - delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } + // At this point, extra isn't content, so add padding + val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - // For "content" or "padding", subtract border - if ( box !== "margin" ) { - delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + // At this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); } } } - // Account for positive content-box scroll gutter when requested by providing computedVal - if ( !isBorderBox && computedVal >= 0 ) { - - // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border - // Assuming integer scroll gutter, subtract the rest and round down - delta += Math.max( 0, Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - computedVal - - delta - - extra - - 0.5 - - // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter - // Use an explicit zero to avoid NaN (gh-3964) - ) ) || 0; - } - - return delta; + return val; } -function getWidthOrHeight( elem, dimension, extra ) { +function getWidthOrHeight( elem, name, extra ) { // Start with computed style - var styles = getStyles( elem ), - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). - // Fake content-box until we know it's needed to know the true value. - boxSizingNeeded = !support.boxSizingReliable() || extra, - isBorderBox = boxSizingNeeded && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - valueIsBorderBox = isBorderBox, - - val = curCSS( elem, dimension, styles ), - offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); + var valueIsBorderBox, + styles = getStyles( elem ), + val = curCSS( elem, name, styles ), + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - // Support: Firefox <=54 - // Return a confounding non-pixel value or feign ignorance, as appropriate. + // Computed unit is not pixels. Stop here and return. if ( rnumnonpx.test( val ) ) { - if ( !extra ) { - return val; - } - val = "auto"; + return val; } + // Check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && + ( support.boxSizingReliable() || val === elem.style[ name ] ); - // Fall back to offsetWidth/offsetHeight when value is "auto" + // Fall back to offsetWidth/Height when value is "auto" // This happens for inline elements with no explicit setting (gh-3571) - // Support: Android <=4.1 - 4.3 only - // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) - // Support: IE 9-11 only - // Also use offsetWidth/offsetHeight for when box sizing is unreliable - // We use getClientRects() to check for hidden/disconnected. - // In those cases, the computed value can be trusted to be border-box - if ( ( !support.boxSizingReliable() && isBorderBox || - val === "auto" || - !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && - elem.getClientRects().length ) { - - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // Where available, offsetWidth/offsetHeight approximate border box dimensions. - // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the - // retrieved value as a content box dimension. - valueIsBorderBox = offsetProp in elem; - if ( valueIsBorderBox ) { - val = elem[ offsetProp ]; - } + if ( val === "auto" ) { + val = elem[ "offset" + name[ 0 ].toUpperCase() + name.slice( 1 ) ]; } - // Normalize "" and auto + // Normalize "", auto, and prepare for extra val = parseFloat( val ) || 0; - // Adjust for the element's box model + // Use the active box-sizing model to add/subtract irrelevant styles return ( val + - boxModelAdjustment( + augmentWidthOrHeight( elem, - dimension, + name, extra || ( isBorderBox ? "border" : "content" ), valueIsBorderBox, - styles, - - // Provide the current computed size to request scroll gutter calculation (gh-3589) - val + styles ) ) + "px"; } @@ -6626,13 +6404,6 @@ jQuery.extend( { "flexGrow": true, "flexShrink": true, "fontWeight": true, - "gridArea": true, - "gridColumn": true, - "gridColumnEnd": true, - "gridColumnStart": true, - "gridRow": true, - "gridRowEnd": true, - "gridRowStart": true, "lineHeight": true, "opacity": true, "order": true, @@ -6644,7 +6415,9 @@ jQuery.extend( { // Add in properties whose names you wish to fix before // setting or getting the value - cssProps: {}, + cssProps: { + "float": "cssFloat" + }, // Get and set the style property on a DOM Node style: function( elem, name, value, extra ) { @@ -6656,7 +6429,7 @@ jQuery.extend( { // Make sure that we're working with the right name var ret, type, hooks, - origName = camelCase( name ), + origName = jQuery.camelCase( name ), isCustomProp = rcustomProp.test( name ), style = elem.style; @@ -6688,9 +6461,7 @@ jQuery.extend( { } // If a number was passed in, add the unit (except for certain CSS properties) - // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append - // "px" to a few hardcoded values. - if ( type === "number" && !isCustomProp ) { + if ( type === "number" ) { value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); } @@ -6726,7 +6497,7 @@ jQuery.extend( { css: function( elem, name, extra, styles ) { var val, num, hooks, - origName = camelCase( name ), + origName = jQuery.camelCase( name ), isCustomProp = rcustomProp.test( name ); // Make sure that we're working with the right name. We don't @@ -6764,8 +6535,8 @@ jQuery.extend( { } } ); -jQuery.each( [ "height", "width" ], function( i, dimension ) { - jQuery.cssHooks[ dimension ] = { +jQuery.each( [ "height", "width" ], function( i, name ) { + jQuery.cssHooks[ name ] = { get: function( elem, computed, extra ) { if ( computed ) { @@ -6781,52 +6552,29 @@ jQuery.each( [ "height", "width" ], function( i, dimension ) { // in IE throws an error. ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? swap( elem, cssShow, function() { - return getWidthOrHeight( elem, dimension, extra ); + return getWidthOrHeight( elem, name, extra ); } ) : - getWidthOrHeight( elem, dimension, extra ); + getWidthOrHeight( elem, name, extra ); } }, set: function( elem, value, extra ) { var matches, - styles = getStyles( elem ), - - // Only read styles.position if the test has a chance to fail - // to avoid forcing a reflow. - scrollboxSizeBuggy = !support.scrollboxSize() && - styles.position === "absolute", - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) - boxSizingNeeded = scrollboxSizeBuggy || extra, - isBorderBox = boxSizingNeeded && + styles = extra && getStyles( elem ), + subtract = extra && augmentWidthOrHeight( + elem, + name, + extra, jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - subtract = extra ? - boxModelAdjustment( - elem, - dimension, - extra, - isBorderBox, - styles - ) : - 0; - - // Account for unreliable border-box dimensions by comparing offset* to computed and - // faking a content-box to get border and padding (gh-3699) - if ( isBorderBox && scrollboxSizeBuggy ) { - subtract -= Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - parseFloat( styles[ dimension ] ) - - boxModelAdjustment( elem, dimension, "border", false, styles ) - - 0.5 + styles ); - } // Convert to pixels if value adjustment is needed if ( subtract && ( matches = rcssNum.exec( value ) ) && ( matches[ 3 ] || "px" ) !== "px" ) { - elem.style[ dimension ] = value; - value = jQuery.css( elem, dimension ); + elem.style[ name ] = value; + value = jQuery.css( elem, name ); } return setPositiveNumber( elem, value, subtract ); @@ -6870,7 +6618,7 @@ jQuery.each( { } }; - if ( prefix !== "margin" ) { + if ( !rmargin.test( prefix ) ) { jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; } } ); @@ -6980,9 +6728,9 @@ Tween.propHooks = { // Use .style if available and use plain properties where available. if ( jQuery.fx.step[ tween.prop ] ) { jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.nodeType === 1 && ( - jQuery.cssHooks[ tween.prop ] || - tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { + } else if ( tween.elem.nodeType === 1 && + ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || + jQuery.cssHooks[ tween.prop ] ) ) { jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); } else { tween.elem[ tween.prop ] = tween.now; @@ -7041,7 +6789,7 @@ function createFxNow() { window.setTimeout( function() { fxNow = undefined; } ); - return ( fxNow = Date.now() ); + return ( fxNow = jQuery.now() ); } // Generate parameters to create a standard animation @@ -7145,10 +6893,9 @@ function defaultPrefilter( elem, props, opts ) { // Restrict "overflow" and "display" styles during box animations if ( isBox && elem.nodeType === 1 ) { - // Support: IE <=9 - 11, Edge 12 - 15 + // Support: IE <=9 - 11, Edge 12 - 13 // Record all 3 overflow attributes because IE does not infer the shorthand - // from identically-valued overflowX and overflowY and Edge just mirrors - // the overflowX value there. + // from identically-valued overflowX and overflowY opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; // Identify a display type, preferring old show/hide data over the CSS cascade @@ -7256,7 +7003,7 @@ function propFilter( props, specialEasing ) { // camelCase, specialEasing and expand cssHook pass for ( index in props ) { - name = camelCase( index ); + name = jQuery.camelCase( index ); easing = specialEasing[ name ]; value = props[ index ]; if ( Array.isArray( value ) ) { @@ -7381,9 +7128,9 @@ function Animation( elem, properties, options ) { for ( ; index < length; index++ ) { result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); if ( result ) { - if ( isFunction( result.stop ) ) { + if ( jQuery.isFunction( result.stop ) ) { jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = - result.stop.bind( result ); + jQuery.proxy( result.stop, result ); } return result; } @@ -7391,7 +7138,7 @@ function Animation( elem, properties, options ) { jQuery.map( props, createTween, animation ); - if ( isFunction( animation.opts.start ) ) { + if ( jQuery.isFunction( animation.opts.start ) ) { animation.opts.start.call( elem, animation ); } @@ -7424,7 +7171,7 @@ jQuery.Animation = jQuery.extend( Animation, { }, tweener: function( props, callback ) { - if ( isFunction( props ) ) { + if ( jQuery.isFunction( props ) ) { callback = props; props = [ "*" ]; } else { @@ -7456,9 +7203,9 @@ jQuery.Animation = jQuery.extend( Animation, { jQuery.speed = function( speed, easing, fn ) { var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { complete: fn || !fn && easing || - isFunction( speed ) && speed, + jQuery.isFunction( speed ) && speed, duration: speed, - easing: fn && easing || easing && !isFunction( easing ) && easing + easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing }; // Go to the end state if fx are off @@ -7485,7 +7232,7 @@ jQuery.speed = function( speed, easing, fn ) { opt.old = opt.complete; opt.complete = function() { - if ( isFunction( opt.old ) ) { + if ( jQuery.isFunction( opt.old ) ) { opt.old.call( this ); } @@ -7649,7 +7396,7 @@ jQuery.fx.tick = function() { i = 0, timers = jQuery.timers; - fxNow = Date.now(); + fxNow = jQuery.now(); for ( ; i < timers.length; i++ ) { timer = timers[ i ]; @@ -8002,7 +7749,7 @@ jQuery.each( [ // Strip and collapse whitespace according to HTML spec - // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace + // https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace function stripAndCollapse( value ) { var tokens = value.match( rnothtmlwhite ) || []; return tokens.join( " " ); @@ -8013,30 +7760,20 @@ function getClass( elem ) { return elem.getAttribute && elem.getAttribute( "class" ) || ""; } -function classesToArray( value ) { - if ( Array.isArray( value ) ) { - return value; - } - if ( typeof value === "string" ) { - return value.match( rnothtmlwhite ) || []; - } - return []; -} - jQuery.fn.extend( { addClass: function( value ) { var classes, elem, cur, curValue, clazz, j, finalValue, i = 0; - if ( isFunction( value ) ) { + if ( jQuery.isFunction( value ) ) { return this.each( function( j ) { jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); } ); } - classes = classesToArray( value ); + if ( typeof value === "string" && value ) { + classes = value.match( rnothtmlwhite ) || []; - if ( classes.length ) { while ( ( elem = this[ i++ ] ) ) { curValue = getClass( elem ); cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); @@ -8065,7 +7802,7 @@ jQuery.fn.extend( { var classes, elem, cur, curValue, clazz, j, finalValue, i = 0; - if ( isFunction( value ) ) { + if ( jQuery.isFunction( value ) ) { return this.each( function( j ) { jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); } ); @@ -8075,9 +7812,9 @@ jQuery.fn.extend( { return this.attr( "class", "" ); } - classes = classesToArray( value ); + if ( typeof value === "string" && value ) { + classes = value.match( rnothtmlwhite ) || []; - if ( classes.length ) { while ( ( elem = this[ i++ ] ) ) { curValue = getClass( elem ); @@ -8107,14 +7844,13 @@ jQuery.fn.extend( { }, toggleClass: function( value, stateVal ) { - var type = typeof value, - isValidValue = type === "string" || Array.isArray( value ); + var type = typeof value; - if ( typeof stateVal === "boolean" && isValidValue ) { + if ( typeof stateVal === "boolean" && type === "string" ) { return stateVal ? this.addClass( value ) : this.removeClass( value ); } - if ( isFunction( value ) ) { + if ( jQuery.isFunction( value ) ) { return this.each( function( i ) { jQuery( this ).toggleClass( value.call( this, i, getClass( this ), stateVal ), @@ -8126,12 +7862,12 @@ jQuery.fn.extend( { return this.each( function() { var className, i, self, classNames; - if ( isValidValue ) { + if ( type === "string" ) { // Toggle individual class names i = 0; self = jQuery( this ); - classNames = classesToArray( value ); + classNames = value.match( rnothtmlwhite ) || []; while ( ( className = classNames[ i++ ] ) ) { @@ -8190,7 +7926,7 @@ var rreturn = /\r/g; jQuery.fn.extend( { val: function( value ) { - var hooks, ret, valueIsFunction, + var hooks, ret, isFunction, elem = this[ 0 ]; if ( !arguments.length ) { @@ -8219,7 +7955,7 @@ jQuery.fn.extend( { return; } - valueIsFunction = isFunction( value ); + isFunction = jQuery.isFunction( value ); return this.each( function( i ) { var val; @@ -8228,7 +7964,7 @@ jQuery.fn.extend( { return; } - if ( valueIsFunction ) { + if ( isFunction ) { val = value.call( this, i, jQuery( this ).val() ); } else { val = value; @@ -8370,24 +8106,18 @@ jQuery.each( [ "radio", "checkbox" ], function() { // Return jQuery for attributes-only inclusion -support.focusin = "onfocusin" in window; - - -var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - stopPropagationCallback = function( e ) { - e.stopPropagation(); - }; +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/; jQuery.extend( jQuery.event, { trigger: function( event, data, elem, onlyHandlers ) { - var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, + var i, cur, tmp, bubbleType, ontype, handle, special, eventPath = [ elem || document ], type = hasOwn.call( event, "type" ) ? event.type : event, namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - cur = lastElement = tmp = elem = elem || document; + cur = tmp = elem = elem || document; // Don't do events on text and comment nodes if ( elem.nodeType === 3 || elem.nodeType === 8 ) { @@ -8439,7 +8169,7 @@ jQuery.extend( jQuery.event, { // Determine event propagation path in advance, per W3C events spec (#9951) // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { bubbleType = special.delegateType || type; if ( !rfocusMorph.test( bubbleType + type ) ) { @@ -8459,7 +8189,7 @@ jQuery.extend( jQuery.event, { // Fire handlers on the event path i = 0; while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - lastElement = cur; + event.type = i > 1 ? bubbleType : special.bindType || type; @@ -8491,7 +8221,7 @@ jQuery.extend( jQuery.event, { // Call a native DOM method on the target with the same name as the event. // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { + if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { // Don't re-trigger an onFOO event when we call its FOO() method tmp = elem[ ontype ]; @@ -8502,17 +8232,7 @@ jQuery.extend( jQuery.event, { // Prevent re-triggering of the same event, since we already bubbled it above jQuery.event.triggered = type; - - if ( event.isPropagationStopped() ) { - lastElement.addEventListener( type, stopPropagationCallback ); - } - elem[ type ](); - - if ( event.isPropagationStopped() ) { - lastElement.removeEventListener( type, stopPropagationCallback ); - } - jQuery.event.triggered = undefined; if ( tmp ) { @@ -8558,6 +8278,31 @@ jQuery.fn.extend( { } ); +jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup contextmenu" ).split( " " ), + function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; +} ); + +jQuery.fn.extend( { + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +} ); + + + + +support.focusin = "onfocusin" in window; + + // Support: Firefox <=44 // Firefox doesn't have focus(in | out) events // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 @@ -8601,7 +8346,7 @@ if ( !support.focusin ) { } var location = window.location; -var nonce = Date.now(); +var nonce = jQuery.now(); var rquery = ( /\?/ ); @@ -8659,7 +8404,7 @@ function buildParams( prefix, obj, traditional, add ) { } } ); - } else if ( !traditional && toType( obj ) === "object" ) { + } else if ( !traditional && jQuery.type( obj ) === "object" ) { // Serialize object item. for ( name in obj ) { @@ -8681,7 +8426,7 @@ jQuery.param = function( a, traditional ) { add = function( key, valueOrFunction ) { // If value is a function, invoke it and use its return value - var value = isFunction( valueOrFunction ) ? + var value = jQuery.isFunction( valueOrFunction ) ? valueOrFunction() : valueOrFunction; @@ -8689,10 +8434,6 @@ jQuery.param = function( a, traditional ) { encodeURIComponent( value == null ? "" : value ); }; - if ( a == null ) { - return ""; - } - // If an array was passed in, assume that it is an array of form elements. if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { @@ -8803,7 +8544,7 @@ function addToPrefiltersOrTransports( structure ) { i = 0, dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; - if ( isFunction( func ) ) { + if ( jQuery.isFunction( func ) ) { // For each dataType in the dataTypeExpression while ( ( dataType = dataTypes[ i++ ] ) ) { @@ -9195,14 +8936,12 @@ jQuery.extend( { if ( !responseHeaders ) { responseHeaders = {}; while ( ( match = rheaders.exec( responseHeadersString ) ) ) { - responseHeaders[ match[ 1 ].toLowerCase() + " " ] = - ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) - .concat( match[ 2 ] ); + responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; } } - match = responseHeaders[ key.toLowerCase() + " " ]; + match = responseHeaders[ key.toLowerCase() ]; } - return match == null ? null : match.join( ", " ); + return match == null ? null : match; }, // Raw string @@ -9277,7 +9016,7 @@ jQuery.extend( { if ( s.crossDomain == null ) { urlAnchor = document.createElement( "a" ); - // Support: IE <=8 - 11, Edge 12 - 15 + // Support: IE <=8 - 11, Edge 12 - 13 // IE throws exception on accessing the href property if url is malformed, // e.g. http://example.com:80x/ try { @@ -9335,8 +9074,8 @@ jQuery.extend( { // Remember the hash so we can put it back uncached = s.url.slice( cacheURL.length ); - // If data is available and should be processed, append data to url - if ( s.data && ( s.processData || typeof s.data === "string" ) ) { + // If data is available, append data to url + if ( s.data ) { cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; // #9682: remove data so that it's not used in an eventual retry @@ -9573,7 +9312,7 @@ jQuery.each( [ "get", "post" ], function( i, method ) { jQuery[ method ] = function( url, data, callback, type ) { // Shift arguments if data argument was omitted - if ( isFunction( data ) ) { + if ( jQuery.isFunction( data ) ) { type = type || callback; callback = data; data = undefined; @@ -9591,7 +9330,7 @@ jQuery.each( [ "get", "post" ], function( i, method ) { } ); -jQuery._evalUrl = function( url, options ) { +jQuery._evalUrl = function( url ) { return jQuery.ajax( { url: url, @@ -9601,16 +9340,7 @@ jQuery._evalUrl = function( url, options ) { cache: true, async: false, global: false, - - // Only evaluate the response if it is successful (gh-4126) - // dataFilter is not invoked for failure responses, so using it instead - // of the default converter is kludgy but it works. - converters: { - "text script": function() {} - }, - dataFilter: function( response ) { - jQuery.globalEval( response, options ); - } + "throws": true } ); }; @@ -9620,7 +9350,7 @@ jQuery.fn.extend( { var wrap; if ( this[ 0 ] ) { - if ( isFunction( html ) ) { + if ( jQuery.isFunction( html ) ) { html = html.call( this[ 0 ] ); } @@ -9646,7 +9376,7 @@ jQuery.fn.extend( { }, wrapInner: function( html ) { - if ( isFunction( html ) ) { + if ( jQuery.isFunction( html ) ) { return this.each( function( i ) { jQuery( this ).wrapInner( html.call( this, i ) ); } ); @@ -9666,10 +9396,10 @@ jQuery.fn.extend( { }, wrap: function( html ) { - var htmlIsFunction = isFunction( html ); + var isFunction = jQuery.isFunction( html ); return this.each( function( i ) { - jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); + jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html ); } ); }, @@ -9761,8 +9491,7 @@ jQuery.ajaxTransport( function( options ) { return function() { if ( callback ) { callback = errorCallback = xhr.onload = - xhr.onerror = xhr.onabort = xhr.ontimeout = - xhr.onreadystatechange = null; + xhr.onerror = xhr.onabort = xhr.onreadystatechange = null; if ( type === "abort" ) { xhr.abort(); @@ -9802,7 +9531,7 @@ jQuery.ajaxTransport( function( options ) { // Listen to events xhr.onload = callback(); - errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); + errorCallback = xhr.onerror = callback( "error" ); // Support: IE 9 only // Use onreadystatechange to replace onabort @@ -9893,21 +9622,24 @@ jQuery.ajaxPrefilter( "script", function( s ) { // Bind script tag hack transport jQuery.ajaxTransport( "script", function( s ) { - // This transport only deals with cross domain or forced-by-attrs requests - if ( s.crossDomain || s.scriptAttrs ) { + // This transport only deals with cross domain requests + if ( s.crossDomain ) { var script, callback; return { send: function( _, complete ) { - script = jQuery( " - @@ -64,7 +63,7 @@
- 3.0 + 3.1
diff --git a/doc/html/apisvds.html b/doc/html/apisvds.html index 9d74fba9..5b56e6dc 100644 --- a/doc/html/apisvds.html +++ b/doc/html/apisvds.html @@ -8,7 +8,7 @@ - Singular Value Problems — PRIMME 3.0 documentation + Singular Value Problems — PRIMME 3.1 documentation @@ -25,7 +25,6 @@ - @@ -64,7 +63,7 @@
- 3.0 + 3.1
diff --git a/doc/html/appendix.html b/doc/html/appendix.html index af64a088..85a6d5cb 100644 --- a/doc/html/appendix.html +++ b/doc/html/appendix.html @@ -8,7 +8,7 @@ - Parameters Description — PRIMME 3.0 documentation + Parameters Description — PRIMME 3.1 documentation @@ -25,7 +25,6 @@ - @@ -64,7 +63,7 @@
- 3.0 + 3.1
@@ -190,45 +189,45 @@

Types

The following data types are macros used in PRIMME as followed.

-PRIMME_INT
+PRIMME_INT

Integer type used in matrix dimensions (such as n and nLocal) and counters (such as numMatvecs).

The integer size is controlled by the compilation flag PRIMME_INT_SIZE, see Making and Linking.

-PRIMME_HALF
+PRIMME_HALF

Macro that is __fp16 if half precision is supported by the compiler. Otherwise it is a struct with the same size as int short.

-

New in version 3.0.

+

New in version 3.0.

-PRIMME_COMPLEX_HALF
+PRIMME_COMPLEX_HALF

Macro that is a struct with fields r and i with type PRIMME_HALF.

-

New in version 3.0.

+

New in version 3.0.

-PRIMME_COMPLEX_FLOAT
+PRIMME_COMPLEX_FLOAT

Macro that is complex float in C and std::complex<float> in C++.

-

New in version 2.0.

+

New in version 2.0.

-PRIMME_COMPLEX_DOUBLE
+PRIMME_COMPLEX_DOUBLE

Macro that is complex double in C and std::complex<double> in C++.

-

New in version 2.0.

+

New in version 2.0.

@@ -237,21 +236,21 @@

Types

Other macros

-PRIMME_VERSION_MAJOR
+PRIMME_VERSION_MAJOR

Constant int with the major version number.

For instance, the value of the macro is 3 for version 3.0.

-

New in version 3.0.

+

New in version 3.0.

-PRIMME_VERSION_MINOR
+PRIMME_VERSION_MINOR

Constant int with the minor version number.

For instance, the value of the macro is 0 for version 3.0.

-

New in version 3.0.

+

New in version 3.0.

@@ -260,11 +259,11 @@

Other macros

-primme_params
+primme_params

Structure to set the problem matrices and eigensolver options.

-PRIMME_INT n
+PRIMME_INT n

Dimension of the matrix.

Input/output:

@@ -277,21 +276,25 @@

primme_params
-void (*matrixMatvec)(void *x, PRIMME_INT *ldx, void *y, PRIMME_INT *ldy, int *blockSize, primme_params *primme, int *ierr)
+void (*matrixMatvec)(void *x, PRIMME_INT *ldx, void *y, PRIMME_INT *ldy, int *blockSize, primme_params *primme, int *ierr)

Block matrix-multivector multiplication, \(y = A x\) in solving \(A x = \lambda x\) or \(A x = \lambda B x\).

-
-
Parameters
-
    -
  • x – matrix of size nLocal x blockSize in column-major order with leading dimension ldx.

  • -
  • ldx – the leading dimension of the array x.

  • -
  • y – matrix of size nLocal x blockSize in column-major order with leading dimension ldy.

  • -
  • ldy – the leading dimension of the array y.

  • -
  • blockSize – number of columns in x and y.

  • -
  • primme – parameters structure.

  • -
  • ierr – output error code; if it is set to non-zero, the current call to PRIMME will stop.

  • + +++ + + + +
    Parameters:
      +
    • x – matrix of size nLocal x blockSize in column-major order with leading dimension ldx.
    • +
    • ldx – the leading dimension of the array x.
    • +
    • y – matrix of size nLocal x blockSize in column-major order with leading dimension ldy.
    • +
    • ldy – the leading dimension of the array y.
    • +
    • blockSize – number of columns in x and y.
    • +
    • primme – parameters structure.
    • +
    • ierr – output error code; if it is set to non-zero, the current call to PRIMME will stop.
    - - +

    The actual type of x and y matches the type of evecs of the calling dprimme() (or a variant), unless the user sets matrixMatvec_type to another precision.

    @@ -303,18 +306,18 @@

    primme_params -

    Note

    -

    If you have performance issues with leading dimension different from nLocal, +

    Note

    +

    If you have performance issues with leading dimension different from nLocal, set ldOPs to nLocal.

    -

    Changed in version 2.0.

    +

    Changed in version 2.0.

-primme_op_datatype matrixMatvec_type
+primme_op_datatype matrixMatvec_type

Precision of the vectors x and y passed to matrixMatvec.

If it is primme_op_default, the vectors’ type matches the calling dprimme() (or a variant). Otherwise, the user can force the precision of the vectors x and y to be a particular precision regardless of the calling dprimme() (or a variant) function: half, @@ -332,27 +335,31 @@

primme_params -

New in version 3.0.

+

New in version 3.0.

-void (*applyPreconditioner)(void *x, PRIMME_INT *ldx, void *y, PRIMME_INT *ldy, int *blockSize, primme_params *primme, int *ierr)
+void (*applyPreconditioner)(void *x, PRIMME_INT *ldx, void *y, PRIMME_INT *ldy, int *blockSize, primme_params *primme, int *ierr)

Block preconditioner-multivector application, \(y = M^{-1}x\) where \(M\) is usually an approximation of \(A - \sigma I\) or \(A - \sigma B\) for finding eigenvalues close to \(\sigma\).

-
-
Parameters
-
    -
  • x – matrix of size nLocal x blockSize in column-major order with leading dimension ldx.

  • -
  • ldx – the leading dimension of the array x.

  • -
  • y – matrix of size nLocal x blockSize in column-major order with leading dimension ldy.

  • -
  • ldy – the leading dimension of the array y.

  • -
  • blockSize – number of columns in x and y.

  • -
  • primme – parameters structure.

  • -
  • ierr – output error code; if it is set to non-zero, the current call to PRIMME will stop.

  • + +++ + + + +
    Parameters:
      +
    • x – matrix of size nLocal x blockSize in column-major order with leading dimension ldx.
    • +
    • ldx – the leading dimension of the array x.
    • +
    • y – matrix of size nLocal x blockSize in column-major order with leading dimension ldy.
    • +
    • ldy – the leading dimension of the array y.
    • +
    • blockSize – number of columns in x and y.
    • +
    • primme – parameters structure.
    • +
    • ierr – output error code; if it is set to non-zero, the current call to PRIMME will stop.
    - - +

    The actual type of x and y matches the type of evecs of the calling dprimme() (or a variant), unless the user sets applyPreconditioner_type to another precision.

    @@ -364,13 +371,13 @@

    primme_params -

    Changed in version 2.0.

    +

    Changed in version 2.0.

-primme_op_datatype applyPreconditioner_type
+primme_op_datatype applyPreconditioner_type

Precision of the vectors x and y passed to applyPreconditioner.

If it is primme_op_default, the vectors’ type matches the calling dprimme() (or a variant). Otherwise, the user can force the precision of the vectors x and y to be a particular precision regardless of the calling dprimme() (or a variant) function: half, @@ -386,28 +393,32 @@

primme_params -

New in version 3.0.

+

New in version 3.0.

-void (*massMatrixMatvec)(void *x, PRIMME_INT *ldx, void *y, PRIMME_INT *ldy, int *blockSize, primme_params *primme, int *ierr)
+void (*massMatrixMatvec)(void *x, PRIMME_INT *ldx, void *y, PRIMME_INT *ldy, int *blockSize, primme_params *primme, int *ierr)

Block matrix-multivector multiplication, \(y = B x\) in solving \(A x = \lambda B x\). If it is NULL, the standard eigenvalue problem \(A x = \lambda x\) is solved.

-
-
Parameters
-
    -
  • x – matrix of size nLocal x blockSize in column-major order with leading dimension ldx.

  • -
  • ldx – the leading dimension of the array x.

  • -
  • y – matrix of size nLocal x blockSize in column-major order with leading dimension ldy.

  • -
  • ldy – the leading dimension of the array y.

  • -
  • blockSize – number of columns in x and y.

  • -
  • primme – parameters structure.

  • -
  • ierr – output error code; if it is set to non-zero, the current call to PRIMME will stop.

  • + +++ + + + +
    Parameters:
      +
    • x – matrix of size nLocal x blockSize in column-major order with leading dimension ldx.
    • +
    • ldx – the leading dimension of the array x.
    • +
    • y – matrix of size nLocal x blockSize in column-major order with leading dimension ldy.
    • +
    • ldy – the leading dimension of the array y.
    • +
    • blockSize – number of columns in x and y.
    • +
    • primme – parameters structure.
    • +
    • ierr – output error code; if it is set to non-zero, the current call to PRIMME will stop.
    - - +

    The actual type of x and y matches the type of evecs of the calling dprimme() (or a variant), unless the user sets matrixMatvec_type to another precision.

    @@ -419,13 +430,13 @@

    primme_params -

    Changed in version 2.0.

    +

    Changed in version 2.0.

-primme_op_datatype massMatrixMatvec_type
+primme_op_datatype massMatrixMatvec_type

Precision of the vectors x and y passed to massMatrixMatvec.

If it is primme_op_default, the vectors’ type matches the calling dprimme() (or a variant). Otherwise, the user can force the precision of the vectors x and y to be a particular precision regardless of the calling dprimme() (or a variant) function: half, @@ -443,13 +454,13 @@

primme_params -

New in version 3.0.

+

New in version 3.0.

-int numProcs
+int numProcs

Number of processes calling dprimme() or zprimme() in parallel.

Input/output:

@@ -462,7 +473,7 @@

primme_params
-int procID
+int procID

The identity of the local process within a parallel execution calling dprimme() or zprimme(). Only the process with id 0 prints information.

@@ -478,7 +489,7 @@

primme_params
-int nLocal
+int nLocal

Number of local rows on this process.

Input/output:

@@ -492,7 +503,7 @@

primme_params
-void *commInfo
+void *commInfo

A pointer to whatever parallel environment structures needed. For example, with MPI, it could be a pointer to the MPI communicator. PRIMME does not use this. It is available for possible use in @@ -509,21 +520,25 @@

primme_params
-void (*globalSumReal)(void *sendBuf, void *recvBuf, int *count, primme_params *primme, int *ierr)
+void (*globalSumReal)(void *sendBuf, void *recvBuf, int *count, primme_params *primme, int *ierr)

Global sum reduction function. No need to set for sequential programs.

-
-
Parameters
-
-primme_op_datatype globalSumReal_type
+primme_op_datatype globalSumReal_type

Precision of the vectors sendBuf and recvBuf passed to globalSumReal.

If it is primme_op_default, the vectors’ type matches the calling dprimme() (or a variant). Otherwise, the user can force the precision of the vectors sendBuf and recvBuf to be a particular precision regardless of the calling dprimme() (or a variant) function: half, @@ -574,24 +589,28 @@

primme_params -

New in version 3.0.

+

New in version 3.0.

-void (*broadcastReal)(void *buffer, int *count, primme_params *primme, int *ierr)
+void (*broadcastReal)(void *buffer, int *count, primme_params *primme, int *ierr)

Broadcast function from process with ID zero. It is optional in parallel executions, and not needed for sequential programs.

-
-
Parameters
-
-primme_op_datatype broadcastReal_type
+primme_op_datatype broadcastReal_type

Precision of the vector buffer` passed to broadcastReal.

If it is primme_op_default, the vectors’ type matches the calling dprimme() (or a variant). Otherwise, the user can force the precision of the vectors x and y to be a particular precision regardless of the calling dprimme() (or a variant) function: half, @@ -642,13 +661,13 @@

primme_params -

New in version 3.0.

+

New in version 3.0.

-primme_op_datatype internalPrecision
+primme_op_datatype internalPrecision

Internal working precision.

If it is primme_op_default, most of the vectors are stored with the same precision as the calling dprimme() (or a variant), and most of the @@ -663,13 +682,13 @@

primme_params -

New in version 3.0.

+

New in version 3.0.

-int numEvals
+int numEvals

Number of eigenvalues wanted.

Input/output:

@@ -682,21 +701,21 @@

primme_params
-primme_target target
+primme_target target

Which eigenpairs to find:

-
-
primme_smallest

Smallest algebraic eigenvalues; targetShifts is ignored.

-
-
primme_largest

Largest algebraic eigenvalues; targetShifts is ignored.

-
-
primme_closest_geq

Closest to, but greater or equal than the shifts in targetShifts.

-
-
primme_closest_leq

Closest to, but less or equal than the shifts in targetShifts.

-
-
primme_closest_abs

Closest in absolute value to the shifts in targetShifts.

-
-
primme_largest_abs

Furthest in absolute value to the shifts in targetShifts.

-
+
+
primme_smallest
+
Smallest algebraic eigenvalues; targetShifts is ignored.
+
primme_largest
+
Largest algebraic eigenvalues; targetShifts is ignored.
+
primme_closest_geq
+
Closest to, but greater or equal than the shifts in targetShifts.
+
primme_closest_leq
+
Closest to, but less or equal than the shifts in targetShifts.
+
primme_closest_abs
+
Closest in absolute value to the shifts in targetShifts.
+
primme_largest_abs
+
Furthest in absolute value to the shifts in targetShifts.

Input/output:

@@ -709,7 +728,7 @@

primme_params
-int numTargetShifts
+int numTargetShifts

Size of the array targetShifts. Used only when target is primme_closest_geq, primme_closest_leq, primme_closest_abs or primme_largest_abs. @@ -725,7 +744,7 @@

primme_params
-double *targetShifts
+double *targetShifts

Array of shifts, at least of size numTargetShifts. Used only when target is primme_closest_geq, primme_closest_leq, primme_closest_abs or primme_largest_abs.

@@ -741,34 +760,36 @@

primme_params -

Note

+

Note

Considerations for interior problems:

-

-int printLevel
+int printLevel

The level of message reporting from the code. All output is written in outputFile.

One of:

Output key:

@@ -818,20 +840,20 @@

primme_params -

Note

+

Note

Convergence history for plotting may be produced simply by:

grep OUT outpufile | awk '{print $8" "$14}' > out
 grep INN outpufile | awk '{print $3" "$11}' > inn
 

Then in gnuplot:

-
plot 'out' w lp, 'inn' w lp
+
plot 'out' w lp, 'inn' w lp
 
-double aNorm
+double aNorm

An estimate of the norm of \(A\), which is used in the default convergence criterion (see eps).

If aNorm is less than or equal to 0, the code uses the largest absolute @@ -847,7 +869,7 @@

primme_params
-double BNorm
+double BNorm

An estimate of the norm of \(B\), which is used to estimate the conditioning number of the matrix \(B\).

If BNorm is less than or equal to 0, the code uses the largest inner-product with \(B\) @@ -860,13 +882,13 @@

primme_params -

New in version 3.0.

+

New in version 3.0.

-double invBNorm
+double invBNorm

An estimate of the norm of the inverse of \(B\), which is used in the default convergence criterion (see eps).

If invBNorm is less than or equal to 0, the code uses the inverse of the smallest inner-product with \(B\) @@ -879,13 +901,13 @@

primme_params -

New in version 3.0.

+

New in version 3.0.

-primme_orth orth
+primme_orth orth

Selects the orthogonalization method used by PRIMME.

If the value is primme_orth_implicit_I, the bases are orthogonalized with classical Gram-Schmidt with reorthogonalization stopping when the new vector’s @@ -911,13 +933,13 @@

primme_params -

New in version 3.0.

+

New in version 3.0.

-double eps
+double eps

If convTestFun is NULL, an eigenpairs is marked as converged when the 2-norm of the residual vector is less than eps * aNorm * invBNorm. The residual vector is \(A x - \lambda x\) or \(A x - \lambda B x\).

@@ -933,7 +955,7 @@

primme_params
-FILE *outputFile
+FILE *outputFile

Opened file to write down the output.

Input/output:

@@ -946,7 +968,7 @@

primme_params
-int dynamicMethodSwitch
+int dynamicMethodSwitch

If this value is 1, it alternates dynamically between PRIMME_DEFAULT_MIN_TIME and PRIMME_DEFAULT_MIN_MATVECS, trying to identify the fastest method.

On exit, it holds a recommended method for future runs on this problem:

@@ -966,20 +988,20 @@

primme_params -

Note

-

Even for expert users we do not recommend setting dynamicMethodSwitch +

Note

+

Even for expert users we do not recommend setting dynamicMethodSwitch directly, but through primme_set_method().

-

Note

-

The code obtains timings by the gettimeofday Unix utility. If a cheaper, more +

Note

+

The code obtains timings by the gettimeofday Unix utility. If a cheaper, more accurate timer is available, modify the PRIMMESRC/COMMONSRC/wtime.c

-int locking
+int locking

If set to 1, hard locking will be used (locking converged eigenvectors out of the search basis). If set to 0, the code will try to use soft locking (à la ARPACK), when large enough minRestartSize is available.

@@ -995,7 +1017,7 @@

primme_params
-int initSize
+int initSize

On input, the number of initial vector guesses provided in evecs argument in dprimme() or zprimme().

On output, initSize holds the number of converged eigenpairs. Without locking all @@ -1014,7 +1036,7 @@

primme_params
-PRIMME_INT ldevecs
+PRIMME_INT ldevecs

The leading dimension of evecs. The default is nLocal.

Input/output:

@@ -1024,13 +1046,13 @@

primme_params -

New in version 2.0.

+

New in version 2.0.

-int numOrthoConst
+int numOrthoConst

Number of vectors to be used as external orthogonalization constraints. These vectors are provided in the first numOrthoConst positions of the evecs argument in dprimme() or zprimme() and must be orthonormal.

@@ -1051,7 +1073,7 @@

primme_params
-int maxBasisSize
+int maxBasisSize

The maximum basis size allowed in the main iteration. This has memory implications.

Input/output:

@@ -1066,7 +1088,7 @@

primme_params
-int minRestartSize
+int minRestartSize

Maximum Ritz vectors kept after restarting the basis.

Input/output:

@@ -1080,7 +1102,7 @@

primme_params
-int maxBlockSize
+int maxBlockSize

The maximum block size the code will try to use.

The user should set this based on the architecture specifics of the target computer, @@ -1096,15 +1118,15 @@

primme_params -

Note

-

Inner iterations of QMR are not performed in a block fashion. +

Note

+

Inner iterations of QMR are not performed in a block fashion. Every correction equation from a block is solved independently.

-PRIMME_INT maxMatvecs
+PRIMME_INT maxMatvecs

Maximum number of matrix vector multiplications (approximately equal to the number of preconditioning operations) that the code is allowed to perform before it exits.

@@ -1119,7 +1141,7 @@

primme_params
-PRIMME_INT maxOuterIterations
+PRIMME_INT maxOuterIterations

Maximum number of outer iterations that the code is allowed to perform before it exits.

Input/output:

@@ -1133,7 +1155,7 @@

primme_params
-PRIMME_INT iseed
+PRIMME_INT iseed

The PRIMME_INT iseed[4] is an array with the seeds needed by the LAPACK dlarnv and zlarnv.

The default value is an array with values -1, -1, -1 and -1. In that case, iseed is set based on the value of procID to avoid every parallel process generating @@ -1149,7 +1171,7 @@

primme_params
-void *matrix
+void *matrix

This field may be used to pass any required information in the matrix-vector product matrixMatvec.

Input/output:

@@ -1162,7 +1184,7 @@

primme_params
-void *massMatrix
+void *massMatrix

This field may be used to pass any required information in the matrix-vector product massMatrixMatvec.

Input/output:

@@ -1172,13 +1194,13 @@

primme_params -

New in version 3.0.

+

New in version 3.0.

-void *preconditioner
+void *preconditioner

This field may be used to pass any required information in the preconditioner function applyPreconditioner.

Input/output:

@@ -1191,7 +1213,7 @@

primme_params
-double *ShiftsForPreconditioner
+double *ShiftsForPreconditioner

Array of size blockSize provided during execution of dprimme() and zprimme() holding the shifts to be used (if needed) in the preconditioning operation.

@@ -1207,15 +1229,15 @@

primme_params
-primme_init initBasisMode
+primme_init initBasisMode

Select how the search subspace basis is initialized up to minRestartSize vectors if not enough initial vectors are provided (see initSize):

    -
  • primme_init_krylov, with a block Krylov subspace generated by the matrix problem and -the last initial vectors if given or a random vector otherwise; the size of the block is maxBlockSize.

  • -
  • primme_init_random, with random vectors.

  • -
  • primme_init_user, the initial basis will have only initial vectors if given, -or a single random vector.

  • +
  • primme_init_krylov, with a block Krylov subspace generated by the matrix problem and +the last initial vectors if given or a random vector otherwise; the size of the block is maxBlockSize.
  • +
  • primme_init_random, with random vectors.
  • +
  • primme_init_user, the initial basis will have only initial vectors if given, +or a single random vector.

Input/output:

@@ -1225,23 +1247,23 @@

primme_params -

New in version 2.0.

+

New in version 2.0.

-primme_projection projectionParams.projection
+primme_projection projectionParams.projection

Select the extraction technique, i.e., how the approximate eigenvectors \(x_i\) and eigenvalues \(\lambda_i\) are computed from the search subspace \(\mathcal V\):

    -
  • primme_proj_RR, Rayleigh-Ritz, \(Ax_i - Bx_i\lambda_i \perp \mathcal V\).

  • -
  • primme_proj_harmonic, Harmonic Rayleigh-Ritz, +

  • primme_proj_RR, Rayleigh-Ritz, \(Ax_i - Bx_i\lambda_i \perp \mathcal V\).
  • +
  • primme_proj_harmonic, Harmonic Rayleigh-Ritz, \(Ax_i - Bx_i\lambda_i \perp (A-\tau B)\mathcal V\), where \(\tau\) is the current -target shift (see targetShifts).

  • -
  • primme_proj_refined, refined extraction, compute \(x_i\) with \(||x_i||=1\) that +target shift (see targetShifts).

  • +
  • primme_proj_refined, refined extraction, compute \(x_i\) with \(||x_i||=1\) that minimizes \(||(A-\tau B)x_i||\); the eigenvalues are computed as the -Rayleigh quotients, \(\lambda_i=\frac{x_i^*Ax_i}{x_i^*Bx_i}\).

  • +Rayleigh quotients, \(\lambda_i=\frac{x_i^*Ax_i}{x_i^*Bx_i}\).

Input/output:

@@ -1254,9 +1276,9 @@

primme_params
-int restartingParams.maxPrevRetain
+int restartingParams.maxPrevRetain

Number of approximations from previous iteration to be retained -after restart (this is the locally optimal restarting, see [r2]). +after restart (this is the locally optimal restarting, see [r2]). The restart size is minRestartSize plus maxPrevRetain.

Input/output:

@@ -1270,7 +1292,7 @@

primme_params
-int correctionParams.precondition
+int correctionParams.precondition

Set to 1 to use preconditioning. Make sure applyPreconditioner is not NULL then!

Input/output:

@@ -1285,7 +1307,7 @@

primme_params
-int correctionParams.robustShifts
+int correctionParams.robustShifts

Set to 1 to use robust shifting. It tries to avoid stagnation and misconvergence by providing as shifts in ShiftsForPreconditioner the Ritz values displaced by an approximation of the eigenvalue error.

@@ -1301,13 +1323,13 @@

primme_params
-int correctionParams.maxInnerIterations
+int correctionParams.maxInnerIterations

Control the maximum number of inner QMR iterations:

    -
  • 0: no inner iterations;

  • -
  • >0: perform at most that number of inner iterations per outer step;

  • -
  • <0: perform at most the rest of the remaining matrix-vector products -up to reach maxMatvecs.

  • +
  • 0: no inner iterations;
  • +
  • >0: perform at most that number of inner iterations per outer step;
  • +
  • <0: perform at most the rest of the remaining matrix-vector products +up to reach maxMatvecs.

Input/output:

@@ -1322,7 +1344,7 @@

primme_params
-double correctionParams.relTolBase
+double correctionParams.relTolBase

Parameter used when convTest is primme_decreasing_LTolerance.

Input/output:

@@ -1337,21 +1359,21 @@

primme_params
-primme_convergencetest correctionParams.convTest
+primme_convergencetest correctionParams.convTest

Set how to stop the inner QMR method:

    -
  • primme_full_LTolerance: stop by iterations only;

  • -
  • primme_decreasing_LTolerance, stop when +

  • primme_full_LTolerance: stop by iterations only;
  • +
  • primme_decreasing_LTolerance, stop when \(\text{relTolBase}^{-\text{outIts}}\) where outIts is the number of outer iterations and retTolBase is set in relTolBase; This is a legacy option from classical JDQR and we recommend -strongly against its use.

  • -
  • primme_adaptive, stop when the estimated eigenvalue residual -has reached the required tolerance (based on Notay’s JDCG).

  • -
  • primme_adaptive_ETolerance, as primme_adaptive but also +strongly against its use.

  • +
  • primme_adaptive, stop when the estimated eigenvalue residual +has reached the required tolerance (based on Notay’s JDCG).
  • +
  • primme_adaptive_ETolerance, as primme_adaptive but also stopping when the estimated eigenvalue residual has reduced 10 -times.

  • +times.

Input/output:

@@ -1362,40 +1384,40 @@

primme_params -

Note

-

Avoid to set maxInnerIterations to -1 and convTest to primme_full_LTolerance.

+

Note

+

Avoid to set maxInnerIterations to -1 and convTest to primme_full_LTolerance.

See also maxInnerIterations.

-int correctionParams.projectors.LeftQ
+int correctionParams.projectors.LeftQ
-int correctionParams.projectors.LeftX
+int correctionParams.projectors.LeftX
-int correctionParams.projectors.RightQ
+int correctionParams.projectors.RightQ
-int correctionParams.projectors.RightX
+int correctionParams.projectors.RightX
-int correctionParams.projectors.SkewQ
+int correctionParams.projectors.SkewQ
-int correctionParams.projectors.SkewX
+int correctionParams.projectors.SkewX

Control the projectors involved in the computation of the correction appended to the basis every (outer) iteration.

Consider the current selected Ritz value \(\Lambda\) and vectors \(X\), @@ -1403,34 +1425,34 @@

primme_params\(Q\), and the preconditioner \(M^{-1}\).

When maxInnerIterations is 0, the correction \(D\) appended to the basis in GD is:

- +
---+++ - - - - + + + + - - - - + + + + - - - + + + - - - + + + - - - + + +

RightX

SkewX

\(D\)

RightXSkewX\(D\)

0

0

\(M^{-1}R\) (Classic GD)

00\(M^{-1}R\) (Classic GD)

1

0

\(M^{-1}(R-\Delta X)\) (cheap Olsen’s Method)

10\(M^{-1}(R-\Delta X)\) (cheap Olsen’s Method)

1

1

\((I- M^{-1}X(X^*M^{-1}X)^{-1}X^*)M^{-1}R\) (Olsen’s Method)

11\((I- M^{-1}X(X^*M^{-1}X)^{-1}X^*)M^{-1}R\) (Olsen’s Method)

0

1

error

01error
@@ -1456,66 +1478,66 @@

primme_paramsRightQ and SkewQ:

- +
---+++ - - - - + + + + - - - - + + + + - - - + + + - - - + + + - - - + + +

RightQ

SkewQ

\(P_Q^r\)

RightQSkewQ\(P_Q^r\)

0

0

\(I\)

00\(I\)

1

0

\(I - QQ^*\)

10\(I - QQ^*\)

1

1

\(I - KQ(Q^*KQ)^{-1}Q^*\)

11\(I - KQ(Q^*KQ)^{-1}Q^*\)

0

1

error

01error

For RightX and SkewX:

- +
---+++ - - - - + + + + - - - - + + + + - - - + + + - - - + + + - - - + + +

RightX

SkewX

\(P_X^r\)

RightXSkewX\(P_X^r\)

0

0

\(I\)

00\(I\)

1

0

\(I - XX^*\)

10\(I - XX^*\)

1

1

\(I - KX(X^*KX)^{-1}X^*\)

11\(I - KX(X^*KX)^{-1}X^*\)

0

1

error

01error
@@ -1527,12 +1549,12 @@

primme_paramsthis field is read by dprimme().

-

See [r3] for a study about different projector configurations in JD.

+

See [r3] for a study about different projector configurations in JD.

-PRIMME_INT ldOPs
+PRIMME_INT ldOPs

Recommended leading dimension to be used in matrixMatvec, applyPreconditioner and massMatrixMatvec. The default value is zero, which means no user recommendation. In that case, PRIMME computes ldOPs internally to get better memory performance.

@@ -1544,43 +1566,47 @@

primme_params -

New in version 2.0.

+

New in version 2.0.

-void (*monitorFun)(void *basisEvals, int *basisSize, int *basisFlags, int *iblock, int *blockSize, void *basisNorms, int *numConverged, void *lockedEvals, int *numLocked, int *lockedFlags, void *lockedNorms, int *inner_its, void *LSRes, const char *msg, double *time, primme_event *event, struct primme_params *primme, int *ierr)
+void (*monitorFun)(void *basisEvals, int *basisSize, int *basisFlags, int *iblock, int *blockSize, void *basisNorms, int *numConverged, void *lockedEvals, int *numLocked, int *lockedFlags, void *lockedNorms, int *inner_its, void *LSRes, const char *msg, double *time, primme_event *event, struct primme_params *primme, int *ierr)

Convergence monitor. Used to customize how to report solver information during execution (iteration number, matvecs, time, unconverged and converged eigenvalues, residual norms, targets, etc).

-
-
Parameters
-
    -
  • basisEvals – array with approximate eigenvalues of the basis.

  • -
  • basisSize – size of the arrays, basisEvals, basisFlags and basisNorms.

  • -
  • basisFlags – state of every approximate pair in the basis.

  • -
  • iblock – indices of the approximate pairs in the block targeted during current iteration.

  • -
  • blockSize – size of array iblock.

  • -
  • basisNorms – array with residual norms of the pairs in the basis.

  • -
  • numConverged – number of pairs converged in the basis plus the number of the locked pairs (note that this value isn’t monotonic).

  • -
  • lockedEvals – array with the locked eigenvalues.

  • -
  • numLocked – size of the arrays lockedEvals, lockedFlags and lockedNorms.

  • -
  • lockedFlags – state of each locked eigenpair.

  • -
  • lockedNorms – array with the residual norms of the locked pairs.

  • -
  • inner_its – number of performed QMR iterations in the current correction equation. It resets for each block vector.

  • -
  • LSRes – residual norm of the linear system at the current QMR iteration.

  • -
  • msg – output message or function name.

  • -
  • time – time duration.

  • -
  • event – event reported.

  • -
  • primme – parameters structure; the counter in stats are updated with the current number of matrix-vector products, iterations, elapsed time, etc., since start.

  • -
  • ierr – output error code; if it is set to non-zero, the current call to PRIMME will stop.

  • + +++ + + + +
    Parameters:
      +
    • basisEvals – array with approximate eigenvalues of the basis.
    • +
    • basisSize – size of the arrays, basisEvals, basisFlags and basisNorms.
    • +
    • basisFlags – state of every approximate pair in the basis.
    • +
    • iblock – indices of the approximate pairs in the block targeted during current iteration.
    • +
    • blockSize – size of array iblock.
    • +
    • basisNorms – array with residual norms of the pairs in the basis.
    • +
    • numConverged – number of pairs converged in the basis plus the number of the locked pairs (note that this value isn’t monotonic).
    • +
    • lockedEvals – array with the locked eigenvalues.
    • +
    • numLocked – size of the arrays lockedEvals, lockedFlags and lockedNorms.
    • +
    • lockedFlags – state of each locked eigenpair.
    • +
    • lockedNorms – array with the residual norms of the locked pairs.
    • +
    • inner_its – number of performed QMR iterations in the current correction equation. It resets for each block vector.
    • +
    • LSRes – residual norm of the linear system at the current QMR iteration.
    • +
    • msg – output message or function name.
    • +
    • time – time duration.
    • +
    • event – event reported.
    • +
    • primme – parameters structure; the counter in stats are updated with the current number of matrix-vector products, iterations, elapsed time, etc., since start.
    • +
    • ierr – output error code; if it is set to non-zero, the current call to PRIMME will stop.
    - - +

    This function is called at the following events:

      -
    • *event == primme_event_outer_iteration: every outer iterations.

      +
    • *event == primme_event_outer_iteration: every outer iterations.

      For this event the following inputs are provided: basisEvals, basisNorms, basisSize, basisFlags, iblock and blockSize.

      basisNorms[iblock[i]] has the residual norm for the selected pair in the block. @@ -1590,39 +1616,39 @@

      primme_paramslocking is enabled, lockedEvals, numLocked, lockedFlags and lockedNorms are also provided.

      inner_its and LSRes are not provided.

    • -
    • *event == primme_event_inner_iteration: every QMR iteration.

      +
    • *event == primme_event_inner_iteration: every QMR iteration.

      basisEvals[0] and basisNorms[0] provides the approximate eigenvalue and the residual norm of the pair which is improved in the current correction equation. If convTest is primme_adaptive or primme_adaptive_ETolerance, basisEvals[0] and basisNorms[0] are updated every QMR iteration.

      inner_its and LSRes are also provided.

      lockedEvals, numLocked, lockedFlags and lockedNorms may not be provided.

    • -
    • *event == primme_event_converged: a new eigenpair in the basis passed the convergence criterion.

      +
    • *event == primme_event_converged: a new eigenpair in the basis passed the convergence criterion.

      iblock[0] is the index of the newly converged pair in the basis which will be locked or soft-locked. The following are provided: basisEvals, basisNorms, basisSize, basisFlags and blockSize[0]==1.

      lockedEvals, numLocked, lockedFlags and lockedNorms may not be provided.

      inner_its and LSRes are not provided.

    • -
    • *event == primme_event_locked: new pair was added to the locked eigenvectors.

      +
    • *event == primme_event_locked: new pair was added to the locked eigenvectors.

      lockedEvals, numLocked, lockedFlags and lockedNorms are provided. The last element of lockedEvals, lockedFlags and lockedNorms corresponds to the recent locked pair.

      basisEvals, numConverged, basisFlags and basisNorms may not be provided.

      inner_its and LSRes are not provided.

    • -
    • *event == primme_event_message: output message

      +
    • *event == primme_event_message: output message

      msg is the message to print.

      The rest of the arguments are not provided.

    The values of basisFlags and lockedFlags are:

      -
    • 0: unconverged.

    • -
    • 1: internal use; only in basisFlags.

    • -
    • 2: passed convergence test convTestFun.

    • -
    • 3: practically converged because the solver may not be able +

    • 0: unconverged.
    • +
    • 1: internal use; only in basisFlags.
    • +
    • 2: passed convergence test convTestFun.
    • +
    • 3: practically converged because the solver may not be able to reduce the residual norm further without recombining -the locked eigenvectors.

    • +the locked eigenvectors.

    The actual type of basisEvals, basisNorms, lockedEvals, lockedNorms and LSRes matches the type of evecs of the calling dprimme() (or a variant), unless the user sets monitorFun_type to @@ -1636,13 +1662,13 @@

    primme_params -

    Changed in version 3.0.

    +

    Changed in version 3.0.

-primme_op_datatype monitorFun_type
+primme_op_datatype monitorFun_type

Precision of the vectors basisEvals, basisNorms, lockedEvals, lockedNorms and LSRes passed to monitorFun.

If it is primme_op_default, the vectors’ type matches the calling dprimme() (or a variant). Otherwise, the precision is half, @@ -1658,13 +1684,13 @@

primme_params -

New in version 3.0.

+

New in version 3.0.

-void *monitor
+void *monitor

This field may be used to pass any required information to the function monitorFun.

Input/output:

@@ -1674,13 +1700,13 @@

primme_params -

New in version 2.0.

+

New in version 2.0.

-PRIMME_INT stats.numOuterIterations
+PRIMME_INT stats.numOuterIterations

Hold the number of outer iterations. The value is available during execution and at the end.

Input/output:

@@ -1693,7 +1719,7 @@

primme_params
-PRIMME_INT stats.numRestarts
+PRIMME_INT stats.numRestarts

Hold the number of restarts during execution and at the end.

Input/output:

@@ -1706,7 +1732,7 @@

primme_params
-PRIMME_INT stats.numMatvecs
+PRIMME_INT stats.numMatvecs

Hold how many vectors the operator in matrixMatvec has been applied on. The value is available during execution and at the end.

Input/output:

@@ -1720,7 +1746,7 @@

primme_params
-PRIMME_INT stats.numPreconds
+PRIMME_INT stats.numPreconds

Hold how many vectors the operator in applyPreconditioner has been applied on. The value is available during execution and at the end.

Input/output:

@@ -1734,7 +1760,7 @@

primme_params
-PRIMME_INT stats.numGlobalSum
+PRIMME_INT stats.numGlobalSum

Hold how many times globalSumReal has been called. The value is available during execution and at the end.

Input/output:

@@ -1748,7 +1774,7 @@

primme_params
-double stats.volumeGlobalSum
+double stats.volumeGlobalSum

Hold how many REAL have been reduced by globalSumReal. The value is available during execution and at the end.

Input/output:

@@ -1762,7 +1788,7 @@

primme_params
-PRIMME_INT stats.numBroadcast
+PRIMME_INT stats.numBroadcast

Hold how many times broadcastReal has been called. The value is available during execution and at the end.

Input/output:

@@ -1773,13 +1799,13 @@

primme_params -

New in version 3.0.

+

New in version 3.0.

-double stats.volumeBroadcast
+double stats.volumeBroadcast

Hold how many REAL have been broadcast by broadcastReal. The value is available during execution and at the end.

Input/output:

@@ -1790,13 +1816,13 @@

primme_params -

New in version 3.0.

+

New in version 3.0.

-PRIMME_INT stats.numOrthoInnerProds
+PRIMME_INT stats.numOrthoInnerProds

Hold how many inner products with vectors of length nLocal have been computed during orthogonalization. The value is available during execution and at the end.

Input/output:

@@ -1807,13 +1833,13 @@

primme_params -

New in version 3.0.

+

New in version 3.0.

-double stats.elapsedTime
+double stats.elapsedTime

Hold the wall clock time spent by the call to dprimme() or zprimme(). The value is available at the end of the execution.

Input/output:

@@ -1827,7 +1853,7 @@

primme_params
-double stats.timeMatvec
+double stats.timeMatvec

Hold the wall clock time spent by matrixMatvec. The value is available at the end of the execution.

Input/output:

@@ -1841,7 +1867,7 @@

primme_params
-double stats.timePrecond
+double stats.timePrecond

Hold the wall clock time spent by applyPreconditioner. The value is available at the end of the execution.

Input/output:

@@ -1855,7 +1881,7 @@

primme_params
-double stats.timeOrtho
+double stats.timeOrtho

Hold the wall clock time spent by orthogonalization. The value is available at the end of the execution.

Input/output:

@@ -1869,7 +1895,7 @@

primme_params
-double stats.timeGlobalSum
+double stats.timeGlobalSum

Hold the wall clock time spent by globalSumReal. The value is available at the end of the execution.

Input/output:

@@ -1883,7 +1909,7 @@

primme_params
-double stats.timeBroadcast
+double stats.timeBroadcast

Hold the wall clock time spent by broadcastReal. The value is available at the end of the execution.

Input/output:

@@ -1894,13 +1920,13 @@

primme_params -

New in version 3.0.

+

New in version 3.0.

-double stats.estimateMinEVal
+double stats.estimateMinEVal

Hold the estimation of the smallest eigenvalue for the current eigenproblem. The value is available during execution and at the end.

Input/output:

@@ -1914,7 +1940,7 @@

primme_params
-double stats.estimateMaxEVal
+double stats.estimateMaxEVal

Hold the estimation of the largest eigenvalue for the current eigenproblem. The value is available during execution and at the end.

Input/output:

@@ -1928,7 +1954,7 @@

primme_params
-double stats.estimateLargestSVal
+double stats.estimateLargestSVal

Hold the estimation of the largest singular value (i.e., the absolute value of the eigenvalue with largest absolute value) for the current eigenproblem. The value is available during execution and at the end.

@@ -1943,7 +1969,7 @@

primme_params
-double stats.maxConvTol
+double stats.maxConvTol

Hold the maximum residual norm of the converged eigenvectors. The value is available during execution and at the end.

Input/output:

@@ -1957,7 +1983,7 @@

primme_params
-PRIMME_INT stats.lockingIssue
+PRIMME_INT stats.lockingIssue

It is set to a nonzero value if some of the returned eigenpairs do not pass the convergence criterion. See convTestFun and eps.

Input/output:

@@ -1968,27 +1994,31 @@

primme_params -

New in version 3.0.

+

New in version 3.0.

-void (*convTestFun)(double *eval, void *evec, double *resNorm, int *isconv, primme_params *primme, int *ierr)
+void (*convTestFun)(double *eval, void *evec, double *resNorm, int *isconv, primme_params *primme, int *ierr)

Function that evaluates if the approximate eigenpair has converged. If NULL, it is used the default convergence criteria (see eps).

-
-
Parameters
-
    -
  • eval – the approximate value to evaluate.

  • -
  • evec – one dimensional array of size nLocal containing the approximate vector; it can be NULL.

  • -
  • resNorm – the norm of the residual vector.

  • -
  • isconv – (output) the function sets zero if the pair is not converged and non zero otherwise.

  • -
  • primme – parameters structure.

  • -
  • ierr – output error code; if it is set to non-zero, the current call to PRIMME will stop.

  • + +++ + + + +
    Parameters:
      +
    • eval – the approximate value to evaluate.
    • +
    • evec – one dimensional array of size nLocal containing the approximate vector; it can be NULL.
    • +
    • resNorm – the norm of the residual vector.
    • +
    • isconv – (output) the function sets zero if the pair is not converged and non zero otherwise.
    • +
    • primme – parameters structure.
    • +
    • ierr – output error code; if it is set to non-zero, the current call to PRIMME will stop.
    - - +

    The actual type of evec matches the type of evecs of the calling dprimme() (or a variant), unless the user sets convTestFun_type to another precision.

    @@ -2000,13 +2030,13 @@

    primme_params -

    New in version 2.0.

    +

    New in version 2.0.

-primme_op_datatype convTestFun_type
+primme_op_datatype convTestFun_type

Precision of the vectors evec passed to convTestFun.

If it is primme_op_default, evec’s type matches the calling dprimme() (or a variant). Otherwise, the precision is half, @@ -2022,13 +2052,13 @@

primme_params -

New in version 3.0.

+

New in version 3.0.

-void *convtest
+void *convtest

This field may be used to pass any required information to the function convTestFun.

Input/output:

@@ -2038,13 +2068,13 @@

primme_params -

New in version 2.0.

+

New in version 2.0.

-void *queue
+void *queue

Pointer to the accelerator’s data structure.

If the main call is dprimme_magma() or a variant, this field should have the pointer to an initialized magma_queue_t.

@@ -2057,7 +2087,7 @@

primme_params -

New in version 3.0.

+

New in version 3.0.

@@ -2069,10 +2099,10 @@

primme_params

Preset Methods

-primme_preset_method
+primme_preset_method
-PRIMME_DEFAULT_MIN_TIME
+PRIMME_DEFAULT_MIN_TIME

Set as PRIMME_JDQMR_ETol when target is either primme_smallest or primme_largest, and as PRIMME_JDQMR otherwise. This method is usually the fastest if the cost of the matrix vector product is inexpensive.

@@ -2080,7 +2110,7 @@

primme_params
-PRIMME_DEFAULT_MIN_MATVECS
+PRIMME_DEFAULT_MIN_MATVECS

Currently set as PRIMME_GD_Olsen_plusK; this method usually performs fewer matrix vector products than other methods, so it’s a good choice when this operation is expensive.

@@ -2088,7 +2118,7 @@

primme_params
-PRIMME_DYNAMIC
+PRIMME_DYNAMIC

Switches to the best method dynamically; currently, between methods PRIMME_DEFAULT_MIN_TIME and PRIMME_DEFAULT_MIN_MATVECS.

With PRIMME_DYNAMIC primme_set_method() sets @@ -2098,59 +2128,59 @@

primme_params
-PRIMME_Arnoldi
+PRIMME_Arnoldi

Arnoldi implemented à la Generalized Davidson.

With PRIMME_Arnoldi primme_set_method() sets:

-PRIMME_GD
+PRIMME_GD

Generalized Davidson.

With PRIMME_GD primme_set_method() sets:

-PRIMME_GD_plusK
+PRIMME_GD_plusK

GD with locally optimal restarting.

With PRIMME_GD_plusK primme_set_method() sets maxPrevRetain = 2 if maxBlockSize is 1 and numEvals > 1; otherwise it sets maxPrevRetain to maxBlockSize. Also:

-PRIMME_GD_Olsen_plusK
+PRIMME_GD_Olsen_plusK

GD+k and the cheap Olsen’s Method.

With PRIMME_GD_Olsen_plusK primme_set_method() makes the same changes as for method PRIMME_GD_plusK and sets RightX = 1.

@@ -2158,7 +2188,7 @@

primme_params
-PRIMME_JD_Olsen_plusK
+PRIMME_JD_Olsen_plusK

GD+k and Olsen’s Method.

With PRIMME_JD_Olsen_plusK primme_set_method() makes the same changes as for method PRIMME_GD_plusK and also sets @@ -2167,28 +2197,28 @@

primme_params
-PRIMME_RQI
+PRIMME_RQI

(Accelerated) Rayleigh Quotient Iteration.

With PRIMME_RQI primme_set_method() sets:

-

Note

-

If numTargetShifts > 0 and targetShifts are provided, the interior problem +

Note

+

If numTargetShifts > 0 and targetShifts are provided, the interior problem solved uses these shifts in the correction equation. Therefore RQI becomes INVIT (inverse iteration) in that case.

@@ -2196,53 +2226,53 @@

primme_params
-PRIMME_JDQR
+PRIMME_JDQR

Jacobi-Davidson with fixed number of inner steps.

With PRIMME_JDQR primme_set_method() sets:

-PRIMME_JDQMR
+PRIMME_JDQMR

Jacobi-Davidson with adaptive stopping criterion for inner Quasi Minimum Residual (QMR).

With PRIMME_JDQMR primme_set_method() sets:

-PRIMME_JDQMR_ETol
+PRIMME_JDQMR_ETol

JDQMR but QMR stops after residual norm reduces by a 0.1 factor.

With PRIMME_JDQMR_ETol primme_set_method() makes the same changes as for the method PRIMME_JDQMR and sets @@ -2251,62 +2281,62 @@

primme_params
-PRIMME_STEEPEST_DESCENT
+PRIMME_STEEPEST_DESCENT

Steepest descent.

With PRIMME_STEEPEST_DESCENT primme_set_method() sets:

-PRIMME_LOBPCG_OrthoBasis
+PRIMME_LOBPCG_OrthoBasis

LOBPCG with orthogonal basis.

With PRIMME_LOBPCG_OrthoBasis primme_set_method() sets:

-PRIMME_LOBPCG_OrthoBasis_Window
+PRIMME_LOBPCG_OrthoBasis_Window

LOBPCG with sliding window of maxBlockSize < 3 * numEvals.

With PRIMME_LOBPCG_OrthoBasis_Window primme_set_method() sets:

@@ -2319,53 +2349,53 @@

primme_paramsdprimme() and zprimme() return one of the following error codes. Some of the error codes have a macro associated which is indicated in brackets.

diff --git a/doc/html/appendixsvds.html b/doc/html/appendixsvds.html index a6f47a01..6ca56876 100644 --- a/doc/html/appendixsvds.html +++ b/doc/html/appendixsvds.html @@ -8,7 +8,7 @@ - Parameter Description — PRIMME 3.0 documentation + Parameter Description — PRIMME 3.1 documentation @@ -25,7 +25,6 @@ - @@ -63,7 +62,7 @@
- 3.0 + 3.1
@@ -184,11 +183,11 @@

Parameter Descriptionprimme_svds_params

-primme_svds_params
+primme_svds_params

Structure to set the problem matrix and the solver options.

-PRIMME_INT m
+PRIMME_INT m

Number of rows of the matrix.

Input/output:

@@ -201,7 +200,7 @@

primme_svds_params
-PRIMME_INT n
+PRIMME_INT n

Number of columns of the matrix.

Input/output:

@@ -214,22 +213,26 @@

primme_svds_params
-void (*matrixMatvec)(void *x, PRIMME_INT ldx, void *y, PRIMME_INT ldy, int *blockSize, int *transpose, primme_svds_params *primme_svds, int *ierr)
+void (*matrixMatvec)(void *x, PRIMME_INT ldx, void *y, PRIMME_INT ldy, int *blockSize, int *transpose, primme_svds_params *primme_svds, int *ierr)

Block matrix-multivector multiplication, \(y = A x\) if transpose is zero, and \(y = A^*x\) otherwise.

-
-
Parameters
-
    -
  • x – input array.

  • -
  • ldx – leading dimension of x.

  • -
  • y – output array.

  • -
  • ldy – leading dimension of y.

  • -
  • blockSize – number of columns in x and y.

  • -
  • transpose – if non-zero, the transpose A should be applied.

  • -
  • primme_svds – parameters structure.

  • -
  • ierr – output error code; if it is set to non-zero, the current call to PRIMME will stop.

  • + +++ + + + +
    Parameters:
      +
    • x – input array.
    • +
    • ldx – leading dimension of x.
    • +
    • y – output array.
    • +
    • ldy – leading dimension of y.
    • +
    • blockSize – number of columns in x and y.
    • +
    • transpose – if non-zero, the transpose A should be applied.
    • +
    • primme_svds – parameters structure.
    • +
    • ierr – output error code; if it is set to non-zero, the current call to PRIMME will stop.
    - - +

    If transpose is zero, then x and y are arrays of dimensions nLocal x blockSize and mLocal x blockSize respectively. Elsewhere they have dimensions mLocal x blockSize and nLocal x blockSize. Both arrays are in column-major order (elements in the same column with consecutive row indices are consecutive in memory).

    @@ -244,15 +247,15 @@

    primme_svds_params -

    Note

    -

    Integer arguments are passed by reference to make easier the interface to other +

    Note

    +

    Integer arguments are passed by reference to make easier the interface to other languages (like Fortran).

-primme_op_datatype matrixMatvec_type
+primme_op_datatype matrixMatvec_type

Precision of the vectors x and y passed to matrixMatvec_type.

If it is primme_op_default, the vectors’ type matches the calling dprimme_svds() (or a variant). Otherwise, the precision is half, @@ -268,34 +271,38 @@

primme_svds_params -

New in version 3.0.

+

New in version 3.0.

-void (*applyPreconditioner)(void *x, PRIMME_INT ldx, void *y, PRIMME_INT ldy, int *blockSize, int *mode, primme_svds_params *primme_svds, int *ierr)
+void (*applyPreconditioner)(void *x, PRIMME_INT ldx, void *y, PRIMME_INT ldy, int *blockSize, int *mode, primme_svds_params *primme_svds, int *ierr)

Block preconditioner-multivector application, \(y = M^{-1}x\) for finding singular values close to \(\sigma\). Depending on mode, \(M\) is expected to be an approximation of the following operators:

    -
  • primme_svds_op_AtA: \(M \approx A^*Ax - \sigma^2 I\),

  • -
  • primme_svds_op_AAt: \(M \approx AA^*x - \sigma^2 I\),

  • -
  • primme_svds_op_augmented: \(M \approx \left(\begin{array}{cc} 0 & A^* \\ A & 0 \end{array}\right) - \sigma I\).

  • +
  • primme_svds_op_AtA: \(M \approx A^*Ax - \sigma^2 I\),
  • +
  • primme_svds_op_AAt: \(M \approx AA^*x - \sigma^2 I\),
  • +
  • primme_svds_op_augmented: \(M \approx \left(\begin{array}{cc} 0 & A^* \\ A & 0 \end{array}\right) - \sigma I\).
-
-
Parameters
-
    -
  • x – input array.

  • -
  • ldx – leading dimension of x.

  • -
  • y – output array.

  • -
  • ldy – leading dimension of y.

  • -
  • blockSize – number of columns in x and y.

  • -
  • mode – one of primme_svds_op_AtA, primme_svds_op_AAt or primme_svds_op_augmented.

  • -
  • primme_svds – parameters structure.

  • -
  • ierr – output error code; if it is set to non-zero, the current call to PRIMME will stop.

  • + +++ + + + +
    Parameters:
      +
    • x – input array.
    • +
    • ldx – leading dimension of x.
    • +
    • y – output array.
    • +
    • ldy – leading dimension of y.
    • +
    • blockSize – number of columns in x and y.
    • +
    • mode – one of primme_svds_op_AtA, primme_svds_op_AAt or primme_svds_op_augmented.
    • +
    • primme_svds – parameters structure.
    • +
    • ierr – output error code; if it is set to non-zero, the current call to PRIMME will stop.
    - - +

    If mode is primme_svds_op_AtA, then x and y are arrays of dimensions nLocal x blockSize; if mode is primme_svds_op_AAt, they are mLocal x blockSize; and otherwise they are (mLocal + nLocal) x blockSize. Both arrays are in column-major order (elements in the same column with consecutive row indices are consecutive in memory).

    @@ -313,7 +320,7 @@

    primme_svds_params
    -primme_op_datatype applyPreconditioner_type
    +primme_op_datatype applyPreconditioner_type

    Precision of the vectors x and y passed to applyPreconditioner_type.

    If it is primme_op_default, the vectors’ type matches the calling dprimme_svds() (or a variant). Otherwise, the precision is half, @@ -329,13 +336,13 @@

    primme_svds_params -

    New in version 3.0.

    +

    New in version 3.0.

-int numProcs
+int numProcs

Number of processes calling dprimme_svds() or zprimme_svds() in parallel.

Input/output:

@@ -348,7 +355,7 @@

primme_svds_params
-int procID
+int procID

The identity of the local process within a parallel execution calling dprimme_svds() or zprimme_svds(). Only the process with id 0 prints information.

@@ -364,7 +371,7 @@

primme_svds_params
-PRIMME_INT mLocal
+PRIMME_INT mLocal

Number of local rows on this process. The value depends on how the matrix and preconditioner is distributed along the processes.

Input/output:

@@ -380,7 +387,7 @@

primme_svds_params
-PRIMME_INT nLocal
+PRIMME_INT nLocal

Number of local columns on this process. The value depends on how the matrix and preconditioner is distributed along the processes.

Input/output:

@@ -395,7 +402,7 @@

primme_svds_params
-void *commInfo
+void *commInfo

A pointer to whatever parallel environment structures needed. For example, with MPI, it could be a pointer to the MPI communicator. PRIMME does not use this. It is available for possible use in @@ -411,21 +418,25 @@

primme_svds_params
-void (*globalSumReal)(double *sendBuf, double *recvBuf, int *count, primme_svds_params *primme_svds, int *ierr)
+void (*globalSumReal)(double *sendBuf, double *recvBuf, int *count, primme_svds_params *primme_svds, int *ierr)

Global sum reduction function. No need to set for sequential programs.

-
-
Parameters
-
    -
  • sendBuf – array of size count with the local input values.

  • -
  • recvBuf – array of size count with the global output values + +++ + + + +
    Parameters:
      +
    • sendBuf – array of size count with the local input values.
    • +
    • recvBuf – array of size count with the global output values so that the i-th element of recvBuf is the sum over all processes of the i-th element -of sendBuf.

    • -
    • count – array size of sendBuf and recvBuf.

    • -
    • primme_svds – parameters structure.

    • -
    • ierr – output error code; if it is set to non-zero, the current call to PRIMME will stop.

    • +of sendBuf. +
    • count – array size of sendBuf and recvBuf.
    • +
    • primme_svds – parameters structure.
    • +
    • ierr – output error code; if it is set to non-zero, the current call to PRIMME will stop.
    - - +

    The actual type of sendBuf and recvBuf depends on which function is being calling. For dprimme_svds() and zprimme_svds() it is double, and for sprimme_svds() and cprimme_svds() it is float. Note that count is the number of values of the actual type.

    @@ -454,7 +465,7 @@

    primme_svds_params
    -primme_op_datatype globalSumReal_type
    +primme_op_datatype globalSumReal_type

    Precision of the vectors sendBuf and recvBuf passed to globalSumReal.

    If it is primme_op_default, the vectors’ type matches the calling dprimme_svds() (or a variant). Otherwise, the precision is half, @@ -470,24 +481,28 @@

    primme_svds_params -

    New in version 3.0.

    +

    New in version 3.0.

-void (*broadcastReal)(void *buffer, int *count, primme_svds_params *primme_svds, int *ierr)
+void (*broadcastReal)(void *buffer, int *count, primme_svds_params *primme_svds, int *ierr)

Broadcast function from process with ID zero. It is optional in parallel executions, and not needed for sequential programs.

-
-
Parameters
-
-int numSvals
+int numSvals

Number of singular triplets wanted.

Input/output:

@@ -532,7 +547,7 @@

primme_svds_params
-primme_op_datatype broadcastReal_type
+primme_op_datatype broadcastReal_type

Precision of the vector buffer` passed to broadcastReal.

If it is primme_op_default, the vectors’ type matches the calling dprimme_svds() (or a variant). Otherwise, the precision is half, @@ -548,13 +563,13 @@

primme_svds_params -

New in version 3.0.

+

New in version 3.0.

-primme_op_datatype internalPrecision
+primme_op_datatype internalPrecision

Internal working precision.

If it is primme_op_default, most of the vectors are stored with the same precision as the calling dprimme_svds() (or a variant), and most of the @@ -569,21 +584,21 @@

primme_svds_params -

New in version 3.0.

+

New in version 3.0.

-primme_svds_target target
+primme_svds_target target

Which singular values to find:

-
-
primme_svds_smallest

Smallest singular values; targetShifts is ignored.

-
-
primme_svds_largest

Largest singular values; targetShifts is ignored.

-
-
primme_svds_closest_abs

Closest in absolute value to the shifts in targetShifts.

-
+
+
primme_svds_smallest
+
Smallest singular values; targetShifts is ignored.
+
primme_svds_largest
+
Largest singular values; targetShifts is ignored.
+
primme_svds_closest_abs
+
Closest in absolute value to the shifts in targetShifts.

Input/output:

@@ -596,7 +611,7 @@

primme_svds_params
-int numTargetShifts
+int numTargetShifts

Size of the array targetShifts. Used only when target is primme_svds_closest_abs. The default values is 0.

@@ -611,7 +626,7 @@

primme_svds_params
-double *targetShifts
+double *targetShifts

Array of shifts, at least of size numTargetShifts. Used only when target is primme_svds_closest_abs.

Singular values are computed in order so that the @@ -625,22 +640,24 @@

primme_svds_params -

Note

-

Eventually this is used by dprimme_svds() and zprimme_svds(). Please +

Note

+

Eventually this is used by dprimme_svds() and zprimme_svds(). Please see considerations of targetShifts.

-int printLevel
+int printLevel

The level of message reporting from the code. All output is written in outputFile.

One of:

    -
  • 0: silent.

  • -
  • 1: print some error messages when these occur.

  • -
  • 2: as in 1, and info about targeted singular triplets when they are marked as converged:

    +
  • 0: silent.

    +
  • +
  • 1: print some error messages when these occur.

    +
  • +
  • 2: as in 1, and info about targeted singular triplets when they are marked as converged:

    #Converged $1 sval[ $2 ]= $3 norm $4 Mvecs $5 Time $7 stage $10
     
    @@ -649,19 +666,20 @@

    primme_svds_params3: as in 2, and info about targeted singular triplets every outer iteration:

    OUT $6 conv $1 blk $8 MV $5 Sec $7 SV $3 |r| $4 stage $10
     

    Also, if using PRIMME_DYNAMIC, show JDQMR/GD+k performance ratio and the current method in use.

  • -
  • 4: as in 3, and info about targeted singular triplets every inner iteration:

    +
  • 4: as in 3, and info about targeted singular triplets every inner iteration:

    INN MV $5 Sec $7 Sval $3 Lin|r| $9 SV|r| $4 stage $10
     
  • -
  • 5: as in 4, and verbose info about certain choices of the algorithm.

  • +
  • 5: as in 4, and verbose info about certain choices of the algorithm.

    +

Output key:

@@ -687,14 +705,14 @@

primme_svds_params -

Note

+

Note

Convergence history for plotting may be produced simply by:

grep OUT outpufile | awk '{print $8" "$14}' > out
 grep INN outpufile | awk '{print $3" "$11}' > inn
 

Or in gnuplot:

-
plot 'out' w lp, 'inn' w lp
+
plot 'out' w lp, 'inn' w lp
 
@@ -702,7 +720,7 @@

primme_svds_params
-double aNorm
+double aNorm

An estimate of the 2-norm of \(A\), which is used in the default convergence criterion (see eps).

If aNorm is less than or equal to 0, the code uses the largest absolute @@ -718,7 +736,7 @@

primme_svds_params
-double eps
+double eps

If convTestFun is NULL, a triplet \((u,\sigma,v)\) is marked as converged when \(\sqrt{\|A v - \sigma u\|^2 + \|A^* u - \sigma v\|^2}\) is less than eps * aNorm, or close to the minimum tolerance that @@ -735,7 +753,7 @@

primme_svds_params
-FILE *outputFile
+FILE *outputFile

Opened file to write down the output.

Input/output:

@@ -748,7 +766,7 @@

primme_svds_params
-int locking
+int locking

If set to 1, the underneath eigensolvers will use hard locking. See locking.

Input/output:

@@ -762,7 +780,7 @@

primme_svds_params
-int initSize
+int initSize

On input, the number of initial vector guesses provided in svecs argument in dprimme_svds() and zprimme_svds().

@@ -780,7 +798,7 @@

primme_svds_params
-int numOrthoConst
+int numOrthoConst

Number of vectors to be used as external orthogonalization constraints. The left and the right vector constraints are provided as input of the svecs argument in sprimme_svds() or other variant, and must be orthonormal.

@@ -803,7 +821,7 @@

primme_svds_params
-int maxBasisSize
+int maxBasisSize

The maximum basis size allowed in the main iteration. This has memory implications.

Input/output:

@@ -818,7 +836,7 @@

primme_svds_params
-int maxBlockSize
+int maxBlockSize

The maximum block size the code will try to use.

The user should set this based on the architecture specifics of the target computer, @@ -837,7 +855,7 @@

primme_svds_params
-PRIMME_INT maxMatvecs
+PRIMME_INT maxMatvecs

Maximum number of matrix vector multiplications (approximately half the number of preconditioning operations) that the code is allowed to perform before it exits.

@@ -852,7 +870,7 @@

primme_svds_params
-PRIMME_INT iseed
+PRIMME_INT iseed

The PRIMME_INT iseed[4] is an array with the seeds needed by the LAPACK dlarnv and zlarnv.

The default value is an array with values -1, -1, -1 and -1. In that case, iseed is set based on the value of procID to avoid every parallel process generating @@ -868,7 +886,7 @@

primme_svds_params
-void *matrix
+void *matrix

This field may be used to pass any required information in the matrix-vector product matrixMatvec.

Input/output:

@@ -881,7 +899,7 @@

primme_svds_params
-void *preconditioner
+void *preconditioner

This field may be used to pass any required information in the preconditioner function applyPreconditioner.

Input/output:

@@ -894,7 +912,7 @@

primme_svds_params
-int precondition
+int precondition

Set to 1 to use preconditioning. Make sure applyPreconditioner is not NULL then!

Input/output:

@@ -909,12 +927,12 @@

primme_svds_params
-primme_svds_op_operator method
+primme_svds_op_operator method

Select the equivalent eigenvalue problem that will be solved:

    -
  • primme_svds_op_AtA: \(A^*Ax = \sigma^2 x\),

  • -
  • primme_svds_op_AAt: \(AA^*x = \sigma^2 x\),

  • -
  • primme_svds_op_augmented: \(\left(\begin{array}{cc} 0 & A^* \\ A & 0 \end{array}\right) x = \sigma x\).

  • +
  • primme_svds_op_AtA: \(A^*Ax = \sigma^2 x\),
  • +
  • primme_svds_op_AAt: \(AA^*x = \sigma^2 x\),
  • +
  • primme_svds_op_augmented: \(\left(\begin{array}{cc} 0 & A^* \\ A & 0 \end{array}\right) x = \sigma x\).

The options for this solver are stored in primme.

Input/output:

@@ -929,7 +947,7 @@

primme_svds_params
-primme_svds_op_operator methodStage2
+primme_svds_op_operator methodStage2

Select the equivalent eigenvalue problem that will be solved to refine the solution. The allowed options are primme_svds_op_none to not refine the solution and primme_svds_op_augmented to refine the solution by solving the augmented problem with the current solution as the initial vectors. See method.

@@ -946,7 +964,7 @@

primme_svds_params
-primme_params primme
+primme_params primme

Parameter structure storing the options for underneath eigensolver that will be called at the first stage. See method.

Input/output:

@@ -961,7 +979,7 @@

primme_svds_params
-primme_params primmeStage2
+primme_params primmeStage2

Parameter structure storing the options for underneath eigensolver that will be called at the second stage. See methodStage2.

Input/output:

@@ -976,28 +994,32 @@

primme_svds_params
-void (*convTestFun)(double *sval, void *leftsvec, void *rightsvec, double *rNorm, int *isconv, primme_svds_params *primme_svds, int *ierr)
+void (*convTestFun)(double *sval, void *leftsvec, void *rightsvec, double *rNorm, int *isconv, primme_svds_params *primme_svds, int *ierr)

Function that evaluates if the approximate triplet has converged. If NULL, it is used the default convergence criteria (see eps).

-
-
Parameters
-
    -
  • sval – the approximate singular value to evaluate.

  • -
  • leftsvec – one dimensional array of size mLocal containing the approximate left singular vector; it can be NULL.

  • -
  • rightsvec – one dimensional array of size nLocal containing the approximate right singular vector; it can be NULL.

  • -
  • resNorm – the norm of the residual vector.

  • -
  • isconv – (output) the function sets zero if the pair is not converged and non zero otherwise.

  • -
  • primme_svds – parameters structure.

  • -
  • ierr – output error code; if it is set to non-zero, the current call to PRIMME will stop.

  • + +++ + + + +
    Parameters:
      +
    • sval – the approximate singular value to evaluate.
    • +
    • leftsvec – one dimensional array of size mLocal containing the approximate left singular vector; it can be NULL.
    • +
    • rightsvec – one dimensional array of size nLocal containing the approximate right singular vector; it can be NULL.
    • +
    • resNorm – the norm of the residual vector.
    • +
    • isconv – (output) the function sets zero if the pair is not converged and non zero otherwise.
    • +
    • primme_svds – parameters structure.
    • +
    • ierr – output error code; if it is set to non-zero, the current call to PRIMME will stop.
    - - +

    The actual type of leftsvec and rightsvec matches the type of svecs of the calling dprimme_svds() (or a variant), unless convTestFun_type sets another precision.

    -

    Warning

    -

    When solving the augmented problem (for the method primme_svds_augmented and at the second stage in the method primme_svds_hybrid), +

    Warning

    +

    When solving the augmented problem (for the method primme_svds_augmented and at the second stage in the method primme_svds_hybrid), the given residual vector norm resNorm is an approximation of the actual residual. Also leftsvec and rightsvec may not have length 1.

    @@ -1012,7 +1034,7 @@

    primme_svds_params
    -primme_op_datatype convTestFun_type
    +primme_op_datatype convTestFun_type

    Precision of the vectors leftsvec and rightsvec passed to convTestFun.

    If it is primme_op_default, the type matches the calling dprimme_svds() (or a variant). Otherwise, the precision is half, @@ -1028,13 +1050,13 @@

    primme_svds_params -

    New in version 3.0.

    +

    New in version 3.0.

-void *convtest
+void *convtest

This field may be used to pass any required information to the function convTestFun.

Input/output:

@@ -1047,38 +1069,42 @@

primme_svds_params
-void (*monitorFun)(void *basisSvals, int *basisSize, int *basisFlags, int *iblock, int *blockSize, void *basisNorms, int *numConverged, void *lockedSvals, int *numLocked, int *lockedFlags, void *lockedNorms, int *inner_its, void *LSRes, const char *msg, double *time, primme_event *event, int *stage, primme_svds_params *primme_svds, int *ierr)
+void (*monitorFun)(void *basisSvals, int *basisSize, int *basisFlags, int *iblock, int *blockSize, void *basisNorms, int *numConverged, void *lockedSvals, int *numLocked, int *lockedFlags, void *lockedNorms, int *inner_its, void *LSRes, const char *msg, double *time, primme_event *event, int *stage, primme_svds_params *primme_svds, int *ierr)

Convergence monitor. Used to customize how to report solver information during execution (stage, iteration number, matvecs, time, residual norms, targets, etc).

-
-
Parameters
-
    -
  • basisSvals – array with approximate singular values of the basis.

  • -
  • basisSize – size of the arrays basisSvals, basisFlags and basisNorms.

  • -
  • basisFlags – state of every approximate triplet in the basis.

  • -
  • iblock – indices of the approximate triplet in the block.

  • -
  • blockSize – size of array iblock.

  • -
  • basisNorms – array with residual norms of the triplets in the basis.

  • -
  • numConverged – number of triplets converged in the basis plus the number of the locked triplets (note that this value isn’t monotonic).

  • -
  • lockedSvals – array with the locked triplets.

  • -
  • numLocked – size of the arrays lockedSvals, lockedFlags and lockedNorms.

  • -
  • lockedFlags – state of each locked triplets.

  • -
  • lockedNorms – array with residual norms of the locked triplets.

  • -
  • inner_its – number of performed QMR iterations in the current correction equation.

  • -
  • LSRes – residual norm of the linear system at the current QMR iteration.

  • -
  • msg – output message or function name.

  • -
  • time – time duration.

  • -
  • event – event reported.

  • -
  • stage0 for first stage, 1 for second stage.

  • -
  • primme_svds – parameters structure; the counter in stats are updated with the current number of matrix-vector products, iterations, elapsed time, etc., since start.

  • -
  • ierr – output error code; if it is set to non-zero, the current call to PRIMME will stop.

  • + +++ + + + +
    Parameters:
      +
    • basisSvals – array with approximate singular values of the basis.
    • +
    • basisSize – size of the arrays basisSvals, basisFlags and basisNorms.
    • +
    • basisFlags – state of every approximate triplet in the basis.
    • +
    • iblock – indices of the approximate triplet in the block.
    • +
    • blockSize – size of array iblock.
    • +
    • basisNorms – array with residual norms of the triplets in the basis.
    • +
    • numConverged – number of triplets converged in the basis plus the number of the locked triplets (note that this value isn’t monotonic).
    • +
    • lockedSvals – array with the locked triplets.
    • +
    • numLocked – size of the arrays lockedSvals, lockedFlags and lockedNorms.
    • +
    • lockedFlags – state of each locked triplets.
    • +
    • lockedNorms – array with residual norms of the locked triplets.
    • +
    • inner_its – number of performed QMR iterations in the current correction equation.
    • +
    • LSRes – residual norm of the linear system at the current QMR iteration.
    • +
    • msg – output message or function name.
    • +
    • time – time duration.
    • +
    • event – event reported.
    • +
    • stage0 for first stage, 1 for second stage.
    • +
    • primme_svds – parameters structure; the counter in stats are updated with the current number of matrix-vector products, iterations, elapsed time, etc., since start.
    • +
    • ierr – output error code; if it is set to non-zero, the current call to PRIMME will stop.
    - - +

    This function is called at the next events:

      -
    • *event == primme_event_outer_iteration: every outer iterations.

      +
    • *event == primme_event_outer_iteration: every outer iterations.

      It is provided basisSvals, basisSize, basisFlags, iblock and blockSize.

      basisNorms[iblock[i]] has the residual norms for the selected triplets in the block. PRIMME avoids computing the residual of soft-locked triplets, basisNorms[i] for i<iblock[0]. @@ -1087,37 +1113,37 @@

      primme_svds_paramslocking is enabled, lockedSvals, numLocked, lockedFlags and lockedNorms are also provided.

      inner_its and LSRes are not provided.

    • -
    • *event == primme_event_inner_iteration: every QMR iteration.

      +
    • *event == primme_event_inner_iteration: every QMR iteration.

      basisSvals[0] and basisNorms[0] provides the approximate singular value and the residual norm of the triplet which is improved in the current correction equation. If convTest is primme_adaptive or primme_adaptive_ETolerance, basisSvals[0], and basisNorms[0] are updated every QMR iteration.

      inner_its and LSRes are also provided.

      lockedSvals, numLocked, lockedFlags, and lockedNorms may not be provided.

    • -
    • *event == primme_event_converged: a new triplet in the basis passed the convergence criterion

      +
    • *event == primme_event_converged: a new triplet in the basis passed the convergence criterion

      iblock[0] is the index of the newly converged triplet in the basis which will be locked or soft locked. The following are provided: basisSvals, basisSize, basisFlags and blockSize[0]==1.

      lockedSvals, numLocked, lockedFlags and lockedNorms may not be provided.

      inner_its and LSRes are not provided.

    • -
    • *event == primme_event_locked: a new triplet added to the locked singular vectors.

      +
    • *event == primme_event_locked: a new triplet added to the locked singular vectors.

      lockedSvals, numLocked, lockedFlags and lockedNorms are provided. The last element of lockedSvals, lockedFlags and lockedNorms corresponds to the recent locked triplet.

      basisSvals, numConverged, basisFlags and basisNorms may not be provided.

      inner_its and LSRes are not be provided.

    • -
    • *event == primme_event_message: output message

      +
    • *event == primme_event_message: output message

      msg is the message to print.

      The rest of the arguments are not provided.

    The values of basisFlags and lockedFlags are:

      -
    • 0: unconverged.

    • -
    • 1: internal use; only in basisFlags.

    • -
    • 2: passed convergence test (see eps).

    • -
    • 3: converged because the solver may not be able to reduce the residual norm further.

    • +
    • 0: unconverged.
    • +
    • 1: internal use; only in basisFlags.
    • +
    • 2: passed convergence test (see eps).
    • +
    • 3: converged because the solver may not be able to reduce the residual norm further.

    The actual type of basisEvals, basisNorms, lockedEvals, lockedNorms and LSRes matches the type of evecs of the calling dprimme_svds() (or a variant), unless monitorFun_type sets @@ -1131,13 +1157,13 @@

    primme_svds_params -

    Changed in version 3.0.

    +

    Changed in version 3.0.

-primme_op_datatype monitorFun_type
+primme_op_datatype monitorFun_type

Precision of the vectors basisEvals, basisNorms, lockedEvals, lockedNorms and LSRes passed to monitorFun.

If it is primme_op_default, the vectors’ type matches the calling dprimme_svds() (or a variant). Otherwise, the precision is half, @@ -1153,13 +1179,13 @@

primme_svds_params -

New in version 3.0.

+

New in version 3.0.

-void *monitor
+void *monitor

This field may be used to pass any required information to the function monitorFun.

Input/output:

@@ -1172,7 +1198,7 @@

primme_svds_params
-PRIMME_INT stats.numOuterIterations
+PRIMME_INT stats.numOuterIterations

Hold the number of outer iterations.

Input/output:

@@ -1185,7 +1211,7 @@

primme_svds_params
-PRIMME_INT stats.numRestarts
+PRIMME_INT stats.numRestarts

Hold the number of restarts.

Input/output:

@@ -1198,7 +1224,7 @@

primme_svds_params
-PRIMME_INT stats.numMatvecs
+PRIMME_INT stats.numMatvecs

Hold how many vectors the operator in matrixMatvec has been applied on.

Input/output:

@@ -1211,7 +1237,7 @@

primme_svds_params
-PRIMME_INT stats.numPreconds
+PRIMME_INT stats.numPreconds

Hold how many vectors the operator in applyPreconditioner has been applied on.

Input/output:

@@ -1224,7 +1250,7 @@

primme_svds_params
-PRIMME_INT stats.numGlobalSum
+PRIMME_INT stats.numGlobalSum

Hold how many times globalSumReal has been called. The value is available during execution and at the end.

Input/output:

@@ -1235,13 +1261,13 @@

primme_svds_params -

New in version 3.0.

+

New in version 3.0.

-double stats.volumeGlobalSum
+double stats.volumeGlobalSum

Hold how many REAL have been reduced by globalSumReal. The value is available during execution and at the end.

Input/output:

@@ -1252,13 +1278,13 @@

primme_svds_params -

New in version 3.0.

+

New in version 3.0.

-PRIMME_INT stats.numBroadcast
+PRIMME_INT stats.numBroadcast

Hold how many times broadcastReal has been called. The value is available during execution and at the end.

Input/output:

@@ -1269,13 +1295,13 @@

primme_svds_params -

New in version 3.0.

+

New in version 3.0.

-double stats.volumeBroadcast
+double stats.volumeBroadcast

Hold how many REAL have been broadcast by broadcastReal. The value is available during execution and at the end.

Input/output:

@@ -1286,13 +1312,13 @@

primme_svds_params -

New in version 3.0.

+

New in version 3.0.

-PRIMME_INT stats.numOrthoInnerProds
+PRIMME_INT stats.numOrthoInnerProds

Hold how many inner products with vectors of length mLocal and nLocal have been computed during orthogonalization. The value is available during execution and at the end.

Input/output:

@@ -1303,13 +1329,13 @@

primme_svds_params -

New in version 3.0.

+

New in version 3.0.

-double stats.elapsedTime
+double stats.elapsedTime

Hold the wall clock time spent by the call to dprimme_svds() or zprimme_svds().

Input/output:

@@ -1322,7 +1348,7 @@

primme_svds_params
-double stats.timeMatvec
+double stats.timeMatvec

Hold the wall clock time spent by matrixMatvec. The value is available at the end of the execution.

Input/output:

@@ -1333,13 +1359,13 @@

primme_svds_params -

New in version 3.0.

+

New in version 3.0.

-double stats.timePrecond
+double stats.timePrecond

Hold the wall clock time spent by applyPreconditioner. The value is available at the end of the execution.

Input/output:

@@ -1350,13 +1376,13 @@

primme_svds_params -

New in version 3.0.

+

New in version 3.0.

-double stats.timeOrtho
+double stats.timeOrtho

Hold the wall clock time spent by orthogonalization. The value is available at the end of the execution.

Input/output:

@@ -1367,13 +1393,13 @@

primme_svds_params -

New in version 3.0.

+

New in version 3.0.

-double stats.timeGlobalSum
+double stats.timeGlobalSum

Hold the wall clock time spent by globalSumReal. The value is available at the end of the execution.

Input/output:

@@ -1384,13 +1410,13 @@

primme_svds_params -

New in version 3.0.

+

New in version 3.0.

-double stats.timeBroadcast
+double stats.timeBroadcast

Hold the wall clock time spent by broadcastReal. The value is available at the end of the execution.

Input/output:

@@ -1401,13 +1427,13 @@

primme_svds_params -

New in version 3.0.

+

New in version 3.0.

-PRIMME_INT stats.lockingIssue
+PRIMME_INT stats.lockingIssue

It is set to a nonzero value if some of the returned triplets do not pass the convergence criterion. See convTestFun and eps.

Input/output:

@@ -1418,13 +1444,13 @@

primme_svds_params -

New in version 3.0.

+

New in version 3.0.

-void *queue
+void *queue

Pointer to the accelerator’s data structure.

If the main call is dprimme_svds_magma() or a variant, this field should have the pointer to an initialized magma_queue_t.

@@ -1437,7 +1463,7 @@

primme_svds_params -

New in version 3.0.

+

New in version 3.0.

@@ -1449,17 +1475,17 @@

primme_svds_params

Preset Methods

-primme_svds_preset_method
+primme_svds_preset_method
-primme_svds_default
+primme_svds_default

Set as primme_svds_hybrid.

-primme_svds_normalequations
+primme_svds_normalequations

Solve the equivalent eigenvalue problem \(A^*A V = \Sigma^2 V\) and computes \(U\) by normalizing the vectors \(AV\). If m is smaller than n, \(AA^*\) is solved instead.

With primme_svds_normalequations primme_svds_set_method() sets @@ -1471,7 +1497,7 @@

primme_svds_params
-primme_svds_augmented
+primme_svds_augmented

Solve the equivalent eigenvalue problem \(\left(\begin{array}{cc} 0 & A^* \\ A & 0 \end{array}\right) X = \sigma X\) with \(X = \left(\begin{array}{cc}V\\U\end{array}\right)\).

With primme_svds_augmented primme_svds_set_method() sets @@ -1483,7 +1509,7 @@

primme_svds_params
-primme_svds_hybrid
+primme_svds_hybrid

First solve the equivalent normal equations (see primme_svds_normalequations) and then refine the solution solving the augmented problem (see primme_svds_augmented).

With primme_svds_normalequations primme_svds_set_method() sets @@ -1504,32 +1530,32 @@

primme_svds_paramsdprimme_svds() and zprimme_svds() return one of the following error codes. Some of the error codes have a macro associated which is indicated in brackets.

    -
  • 0: success; usually all requested singular triplets have converged.

  • -
  • -1: (PRIMME_UNEXPECTED_FAILURE) unexpected internal error; please consider to set printLevel to a value larger than 0 to see the call stack and to report these errors because they may be bugs.

  • -
  • -2: (PRIMME_MALLOC_FAILURE) failure in allocating memory; it can be either CPU or GPU.

  • -
  • -3: (PRIMME_MAIN_ITER_FAILURE) maximum number of matvecs maxMatvecs reached.

  • -
  • -4: primme_svds is NULL.

  • -
  • -5: Wrong value for m or n or mLocal or nLocal.

  • -
  • -6: Wrong value for numProcs.

  • -
  • -7: matrixMatvec is not set.

  • -
  • -8: applyPreconditioner is not set but precondition == 1.

  • -
  • -9: numProcs >1 but globalSumReal is not set.

  • -
  • -10: Wrong value for numSvals, it’s larger than min(m, n).

  • -
  • -11: Wrong value for numSvals, it’s smaller than 1.

  • -
  • -13: Wrong value for target.

  • -
  • -14: Wrong value for method.

  • -
  • -15: Not supported combination of method and methodStage2.

  • -
  • -16: Wrong value for printLevel.

  • -
  • -17: svals is not set.

  • -
  • -18: svecs is not set.

  • -
  • -19: resNorms is not set.

  • -
  • -40: (PRIMME_LAPACK_FAILURE) some LAPACK function performing a factorization returned an error code; set printLevel > 0 to see the error code and the call stack.

  • -
  • -41: (PRIMME_USER_FAILURE) some of the user-defined functions (matrixMatvec, applyPreconditioner, …) returned a non-zero error code; set printLevel > 0 to see the call stack that produced the error.

  • -
  • -42: (PRIMME_ORTHO_CONST_FAILURE) the provided orthogonal constraints (see numOrthoConst) are not full rank.

  • -
  • -43: (PRIMME_PARALLEL_FAILURE) some process has a different value in an input option than the process zero, or it is not acting coherently; set printLevel > 0 to see the call stack that produced the error.

  • -
  • -44: (PRIMME_FUNCTION_UNAVAILABLE) PRIMME was not compiled with support for the requesting precision or for GPUs.

  • -
  • -100 up to -199: eigensolver error from first stage; see the value plus 100 in Error Codes.

  • -
  • -200 up to -299: eigensolver error from second stage; see the value plus 200 in Error Codes.

  • +
  • 0: success; usually all requested singular triplets have converged.
  • +
  • -1: (PRIMME_UNEXPECTED_FAILURE) unexpected internal error; please consider to set printLevel to a value larger than 0 to see the call stack and to report these errors because they may be bugs.
  • +
  • -2: (PRIMME_MALLOC_FAILURE) failure in allocating memory; it can be either CPU or GPU.
  • +
  • -3: (PRIMME_MAIN_ITER_FAILURE) maximum number of matvecs maxMatvecs reached.
  • +
  • -4: primme_svds is NULL.
  • +
  • -5: Wrong value for m or n or mLocal or nLocal.
  • +
  • -6: Wrong value for numProcs.
  • +
  • -7: matrixMatvec is not set.
  • +
  • -8: applyPreconditioner is not set but precondition == 1.
  • +
  • -9: numProcs >1 but globalSumReal is not set.
  • +
  • -10: Wrong value for numSvals, it’s larger than min(m, n).
  • +
  • -11: Wrong value for numSvals, it’s smaller than 1.
  • +
  • -13: Wrong value for target.
  • +
  • -14: Wrong value for method.
  • +
  • -15: Not supported combination of method and methodStage2.
  • +
  • -16: Wrong value for printLevel.
  • +
  • -17: svals is not set.
  • +
  • -18: svecs is not set.
  • +
  • -19: resNorms is not set.
  • +
  • -40: (PRIMME_LAPACK_FAILURE) some LAPACK function performing a factorization returned an error code; set printLevel > 0 to see the error code and the call stack.
  • +
  • -41: (PRIMME_USER_FAILURE) some of the user-defined functions (matrixMatvec, applyPreconditioner, …) returned a non-zero error code; set printLevel > 0 to see the call stack that produced the error.
  • +
  • -42: (PRIMME_ORTHO_CONST_FAILURE) the provided orthogonal constraints (see numOrthoConst) are not full rank.
  • +
  • -43: (PRIMME_PARALLEL_FAILURE) some process has a different value in an input option than the process zero, or it is not acting coherently; set printLevel > 0 to see the call stack that produced the error.
  • +
  • -44: (PRIMME_FUNCTION_UNAVAILABLE) PRIMME was not compiled with support for the requesting precision or for GPUs.
  • +
  • -100 up to -199: eigensolver error from first stage; see the value plus 100 in Error Codes.
  • +
  • -200 up to -299: eigensolver error from second stage; see the value plus 200 in Error Codes.

diff --git a/doc/html/genindex.html b/doc/html/genindex.html index 67f5d764..f3637b71 100644 --- a/doc/html/genindex.html +++ b/doc/html/genindex.html @@ -9,7 +9,7 @@ - Index — PRIMME 3.0 documentation + Index — PRIMME 3.1 documentation @@ -26,7 +26,6 @@ - @@ -63,7 +62,7 @@
- 3.0 + 3.1
diff --git a/doc/html/intro.html b/doc/html/intro.html index d11fdce2..aeaaa720 100644 --- a/doc/html/intro.html +++ b/doc/html/intro.html @@ -8,7 +8,7 @@ - PRIMME: PReconditioned Iterative MultiMethod Eigensolver — PRIMME 3.0 documentation + PRIMME: PReconditioned Iterative MultiMethod Eigensolver — PRIMME 3.1 documentation @@ -25,7 +25,6 @@ - @@ -64,7 +63,7 @@
- 3.0 + 3.1
@@ -194,86 +193,92 @@

PRIMME: PReconditioned Iterative MultiMethod Eigensolver

From PRIMME 2.2 to 3.0:

From PRIMME 2.0 to 2.1:

From PRIMME 1.x to 2.0:

Changelog

+

Changes in PRIMME 3.1 (released on May 2, 2020):

+
    +
  • Fixed compilation issues in F90 interface and examples.
  • +
  • Fixed bug in block orthogonalization.
  • +
  • Updated Python interface to Python version 3.8.
  • +

Changes in PRIMME 3.0 (released on December 14, 2019):

Changes in PRIMME 2.2 (released on October 26, 2018):

    -
  • Improved stability for single precision.

  • -
  • Improved support for the shared library.

  • -
  • Updated PETSc examples in Fortran; added new examples in single precision.

  • -
  • Improved support for FreeBSD and MacOS.

  • -
  • New install and uninstall actions.

  • -
  • MATLAB interface support for user-defined stopping criterion (see convTestFun and convTestFun) and stopping with ctr+c.

  • -
  • Optional suffix on BLAS/LAPACK function names (for OpenBLAS, see PRIMME_BLAS_SUFFIX).

  • -
  • Replaced XHEGV by XHEGVX (to support ESSL).

  • -
  • Fixed bugs in the library and in the Matlab interface.

  • +
  • Improved stability for single precision.
  • +
  • Improved support for the shared library.
  • +
  • Updated PETSc examples in Fortran; added new examples in single precision.
  • +
  • Improved support for FreeBSD and MacOS.
  • +
  • New install and uninstall actions.
  • +
  • MATLAB interface support for user-defined stopping criterion (see convTestFun and convTestFun) and stopping with ctr+c.
  • +
  • Optional suffix on BLAS/LAPACK function names (for OpenBLAS, see PRIMME_BLAS_SUFFIX).
  • +
  • Replaced XHEGV by XHEGVX (to support ESSL).
  • +
  • Fixed bugs in the library and in the Matlab interface.

Changes in PRIMME 2.1 (released on April 4, 2017):

    -
  • Improved robustness by broadcasting the result of critical LAPACK +

  • Improved robustness by broadcasting the result of critical LAPACK operations instead of replicating them on every process; this is useful when using a threaded BLAS/LAPACK or when some parallel -processes may run on different architectures or libraries.

  • -
  • New stopping criteria in QMR that improve performance for interior -problems.

  • -
  • MATLAB interface reimplementation with support for singular value +processes may run on different architectures or libraries.

  • +
  • New stopping criteria in QMR that improve performance for interior +problems.
  • +
  • MATLAB interface reimplementation with support for singular value problems, primme_svds(), with double and single precision, and -compatible with Octave.

  • -
  • R interface

  • -
  • Proper reporting of convergence history for singular value solvers.

  • +compatible with Octave. +
  • R interface
  • +
  • Proper reporting of convergence history for singular value solvers.

Changes in PRIMME 2.0 (released on September 19, 2016):

Changes in PRIMME 1.2.2 (released on October 13, 2015):

Changes in PRIMME 1.2.1 (released on September 7, 2015):

    -
  • Added MATLAB interface to full PRIMME functionality.

  • -
  • Support for BLAS/LAPACK with 64bits integers (-DPRIMME_BLASINT_SIZE=64).

  • -
  • Simplified configuration of Make_flags and Make_links (removed TOP variable -and replaced defines NUM_SUM and NUM_IBM by F77UNDERSCORE).

  • -
  • Replaced directories DTEST and ZTEST by TEST, that has:

    -
      -
    • driver.c: read matrices in MatrixMarket format and PETSc binary and +

    • Added MATLAB interface to full PRIMME functionality.
    • +
    • Support for BLAS/LAPACK with 64bits integers (-DPRIMME_BLASINT_SIZE=64).
    • +
    • Simplified configuration of Make_flags and Make_links (removed TOP variable +and replaced defines NUM_SUM and NUM_IBM by F77UNDERSCORE).
    • +
    • Replaced directories DTEST and ZTEST by TEST, that has:
        +
      • driver.c: read matrices in MatrixMarket format and PETSc binary and call PRIMME with the parameters specified in a file; support -complex arithmetic and MPI and can use PETSc preconditioners.

      • -
      • ex*.c and ex*.f: small, didactic examples of usage in C and Fortran -and in parallel (with PETSc).

      • +complex arithmetic and MPI and can use PETSc preconditioners. +
      • ex*.c and ex*.f: small, didactic examples of usage in C and Fortran +and in parallel (with PETSc).
    • -
    • Fixed a few minor bugs and improved documentation (especially the F77 interface).

    • -
    • Using Sphinx to manage documentation.

    • +
    • Fixed a few minor bugs and improved documentation (especially the F77 interface).
    • +
    • Using Sphinx to manage documentation.

    Changes in PRIMME 1.2 (released on December 21, 2014):

      -
    • A Fortran compiler is no longer required for building the PRIMME library. -Fortran programs can still be linked to PRIMME’s F77 interface.

    • -
    • Fixed some uncommon issues with the F77 interface.

    • -
    • PRIMME can be called now multiple times from the same program.

    • -
    • Performance improvements in the QMR inner solver, especially for -complex arithmetic.

    • -
    • Fixed a couple of bugs with the locking functionality.

      +
    • A Fortran compiler is no longer required for building the PRIMME library. +Fortran programs can still be linked to PRIMME’s F77 interface.

      +
    • +
    • Fixed some uncommon issues with the F77 interface.

      +
    • +
    • PRIMME can be called now multiple times from the same program.

      +
    • +
    • Performance improvements in the QMR inner solver, especially for +complex arithmetic.

      +
    • +
    • Fixed a couple of bugs with the locking functionality.

        -
      • In certain extreme cases where all eigenvalues of a matrix were needed.

      • -
      • The order of selecting interior eigenvalues.

      • +
      • In certain extreme cases where all eigenvalues of a matrix were needed.
      • +
      • The order of selecting interior eigenvalues.

      The above fixes have improved robustness and performance.

    • -
    • PRIMME now assigns unique random seeds per parallel process -for up to 4096^3 (140 trillion) processes.

    • -
    • For the PRIMME_DYNAMIC method, fixed issues with initialization and -synchronization decisions across multiple processes.

    • -
    • Fixed uncommon library interface bugs, coordinated better +

    • PRIMME now assigns unique random seeds per parallel process +for up to 4096^3 (140 trillion) processes.

      +
    • +
    • For the PRIMME_DYNAMIC method, fixed issues with initialization and +synchronization decisions across multiple processes.

      +
    • +
    • Fixed uncommon library interface bugs, coordinated better setting the method and the user setting of parameters, and improved -the interface in the sample programs and makefiles.

    • -
    • Other performance and documentation improvements.

    • +the interface in the sample programs and makefiles.

      + +
    • Other performance and documentation improvements.

      +
@@ -360,50 +372,67 @@

License Information

Citing the code

Please cite (BibTeX):

-
-
r1
-

A. Stathopoulos and J. R. McCombs PRIMME: PReconditioned Iterative + + + + + +
[r1]A. Stathopoulos and J. R. McCombs PRIMME: PReconditioned Iterative MultiMethod Eigensolver: Methods and software description, ACM Transaction on Mathematical Software Vol. 37, No. 2, (2010), -21:1-21:30.

- -
r6
-

L. Wu, E. Romero and A. Stathopoulos, PRIMME_SVDS: A High-Performance +21:1-21:30.

+ + + + + +
[r6]L. Wu, E. Romero and A. Stathopoulos, PRIMME_SVDS: A High-Performance Preconditioned SVD Solver for Accurate Large-Scale Computations, -J. Sci. Comput., Vol. 39, No. 5, (2017), S248–S271.

- - +J. Sci. Comput., Vol. 39, No. 5, (2017), S248–S271.

More information on the algorithms and research that led to this software can be found in the rest of the papers. The work has been supported by a number of grants from the National Science Foundation.

-
-
r2
-

A. Stathopoulos, Nearly optimal preconditioned methods for Hermitian + + + + + +
[r2]A. Stathopoulos, Nearly optimal preconditioned methods for Hermitian eigenproblems under limited memory. Part I: Seeking one eigenvalue, SIAM -J. Sci. Comput., Vol. 29, No. 2, (2007), 481–514.

- -
r3
-

A. Stathopoulos and J. R. McCombs, Nearly optimal preconditioned +J. Sci. Comput., Vol. 29, No. 2, (2007), 481–514.

+ + + + + +
[r3]A. Stathopoulos and J. R. McCombs, Nearly optimal preconditioned methods for Hermitian eigenproblems under limited memory. Part II: Seeking many eigenvalues, SIAM J. Sci. Comput., Vol. 29, No. 5, (2007), -2162-2188.

- -
r4
-

J. R. McCombs and A. Stathopoulos, Iterative Validation of +2162-2188.

+ + + + + +
[r4]J. R. McCombs and A. Stathopoulos, Iterative Validation of Eigensolvers: A Scheme for Improving the Reliability of Hermitian Eigenvalue Solvers, SIAM J. Sci. Comput., Vol. 28, No. 6, (2006), -2337-2358.

- -
r5
-

A. Stathopoulos, Locking issues for finding a large number of eigenvectors -of Hermitian matrices, Tech Report: WM-CS-2005-03, July, 2005.

-
-
r7
-

L. Wu and A. Stathopoulos, A Preconditioned Hybrid SVD Method for Computing +2337-2358.

+ + + + + +
[r5]A. Stathopoulos, Locking issues for finding a large number of eigenvectors +of Hermitian matrices, Tech Report: WM-CS-2005-03, July, 2005.
+ + + + + +
[r7]L. Wu and A. Stathopoulos, A Preconditioned Hybrid SVD Method for Computing Accurately Singular Triplets of Large Matrices, SIAM J. Sci. Comput. 37-5(2015), -pp. S365-S388.

- - +pp. S365-S388.

Contact Information

@@ -415,68 +444,80 @@

Contact Information

Support

    -
  • National Science Foundation through grants CCF 1218349, ACI SI2-SSE 1440700, and NSCI 1835821

  • -
  • Department of Energy through grant Exascale Computing Project 17-SC-20-SC

  • +
  • National Science Foundation through grants CCF 1218349, ACI SI2-SSE 1440700, and NSCI 1835821
  • +
  • Department of Energy through grant Exascale Computing Project 17-SC-20-SC

Directory Structure

The next directories and files should be available:

    -
  • COPYING.txt, license;

  • -
  • Make_flags, flags to be used by makefiles to compile library and tests;

  • -
  • Link_flags, flags needed in making and linking the test programs;

  • -
  • include/, directory with headers files;

  • -
  • src/, directory with the source code for libprimme:

    +
  • COPYING.txt, license;

    +
  • +
  • Make_flags, flags to be used by makefiles to compile library and tests;

    +
  • +
  • Link_flags, flags needed in making and linking the test programs;

    +
  • +
  • include/, directory with headers files;

    +
  • +
  • src/, directory with the source code for libprimme:

      -
    • include/, common headers;

    • -
    • eigs/, eigenvalue interface and implementation;

    • -
    • svds/, singular value interface and implementation;

    • -
    • tools/, tools used to generated some headers;

    • +
    • include/, common headers;
    • +
    • eigs/, eigenvalue interface and implementation;
    • +
    • svds/, singular value interface and implementation;
    • +
    • tools/, tools used to generated some headers;
  • -
  • Matlab/, MATLAB interface;

  • -
  • Python/, Python interface;

  • -
  • examples/, sample programs in C, C++ and F77, both sequential and parallel;

  • -
  • tests/, drivers for testing purpose and test cases;

  • -
  • lib/libprimme.a, the PRIMME library (to be made);

  • -
  • makefile main make file;

  • -
  • readme.txt text version of the documentation;

  • -
  • doc/ directory with the HTML and PDF versions of the documentation.

  • +
  • Matlab/, MATLAB interface;

    +
  • +
  • Python/, Python interface;

    +
  • +
  • examples/, sample programs in C, C++ and F77, both sequential and parallel;

    +
  • +
  • tests/, drivers for testing purpose and test cases;

    +
  • +
  • lib/libprimme.a, the PRIMME library (to be made);

    +
  • +
  • makefile main make file;

    +
  • +
  • readme.txt text version of the documentation;

    +
  • +
  • doc/ directory with the HTML and PDF versions of the documentation.

    +

Making and Linking

Make_flags has the flags and compilers used to make libprimme.a:

    -
  • CC, compiler program such as gcc, clang or icc.

  • -
  • -
    CFLAGS, compiler options such as -g or -O3 and macro definitions

    like the ones described next.

    -
    +
  • CC, compiler program such as gcc, clang or icc.
  • +
  • +
    CFLAGS, compiler options such as -g or -O3 and macro definitions
    +
    like the ones described next.

Compiler flags for the BLAS and LAPACK libraries:

    -
  • -DF77UNDERSCORE, if Fortran appends an underscore to function names -(usually it does).

  • -
  • -DPRIMME_BLASINT_SIZE=64, if the library integers are 64-bit integer (kind=8) type, -aka ILP64 interface; usually integers are 32-bits even in 64-bit architectures (aka LP64 interface).

  • -
  • -DPRIMME_BLAS_SUFFIX=<suffix>, set a suffix to BLAS/LAPACK function names; for instance, -OpenBlas compiled with ILP64 may append _64 to the function names.

  • +
  • -DF77UNDERSCORE, if Fortran appends an underscore to function names +(usually it does).
  • +
  • -DPRIMME_BLASINT_SIZE=64, if the library integers are 64-bit integer (kind=8) type, +aka ILP64 interface; usually integers are 32-bits even in 64-bit architectures (aka LP64 interface).
  • +
  • -DPRIMME_BLAS_SUFFIX=<suffix>, set a suffix to BLAS/LAPACK function names; for instance, +OpenBlas compiled with ILP64 may append _64 to the function names.

By default PRIMME sets the integer type for matrix dimensions and counters (PRIMME_INT) to 64 bits integer int64_t. This can be changed by setting the macro PRIMME_INT_SIZE to one of the following values:

    -
  • 0: use the regular int of your compiler.

  • -
  • 32: use C99 int32_t.

  • -
  • 64: use C99 int64_t.

  • +
  • 0: use the regular int of your compiler.
  • +
  • 32: use C99 int32_t.
  • +
  • 64: use C99 int64_t.
-

Note

-

When -DPRIMME_BLASINT_SIZE=64 is set the code uses the type int64_t +

Note

+

When -DPRIMME_BLASINT_SIZE=64 is set the code uses the type int64_t supported by the C99 standard. In case the compiler doesn’t honor the standard, you can set the corresponding type name supported, for instance -DPRIMME_BLASINT_SIZE=__int64.

@@ -492,8 +533,8 @@

Directory StructureLink_flags has the flags for linking with external libraries and making the executables located in examples and tests:

After that, type this to compile and execute a simple test:

$ make test
@@ -508,30 +549,30 @@ 

Directory Structure-DPRIMME_BLASINT_SIZE=64 from CFLAGS.

Full description of actions that make can take:

    -
  • make lib, builds the static library libprimme.a.

  • -
  • make solib, builds the shared library libprimme.so.

  • -
  • make install, installs header files and the static and dynamic libraries.

  • -
  • make uninstall, uninstalls header files and the static and dynamic libraries.

  • -
  • make matlab, builds libprimme.a compatible with MATLAB and the MATLAB module.

  • -
  • make octave, builds libprimme.a and the Octave module.

  • -
  • make python, builds libprimme.a and the Python module.

  • -
  • make python_install, install the Python module.

  • -
  • make R_install, builds and installs the R package.

  • -
  • make test, build and execute simple examples.

  • -
  • make clean, removes all *.o, a.out, and core files from src.

  • +
  • make lib, builds the static library libprimme.a.
  • +
  • make solib, builds the shared library libprimme.so.
  • +
  • make install, installs header files and the static and dynamic libraries.
  • +
  • make uninstall, uninstalls header files and the static and dynamic libraries.
  • +
  • make matlab, builds libprimme.a compatible with MATLAB and the MATLAB module.
  • +
  • make octave, builds libprimme.a and the Octave module.
  • +
  • make python, builds libprimme.a and the Python module.
  • +
  • make python_install, install the Python module.
  • +
  • make R_install, builds and installs the R package.
  • +
  • make test, build and execute simple examples.
  • +
  • make clean, removes all *.o, a.out, and core files from src.

Considerations using an IDE

PRIMME can be built in other environments such as Anjuta, Eclipse, KDevelop, Qt Creator, Visual Studio and XCode. To build the PRIMME library do the following:

    -
  1. Create a new project and include the source files under the directory src.

  2. -
  3. Add the directories include and src/include as include directories.

  4. +
  5. Create a new project and include the source files under the directory src.
  6. +
  7. Add the directories include and src/include as include directories.

To build an example code using PRIMME make sure:

    -
  • to add a reference for PRIMME, BLAS and LAPACK libraries;

  • -
  • to add the directory include as an include directory.

  • +
  • to add a reference for PRIMME, BLAS and LAPACK libraries;
  • +
  • to add the directory include as an include directory.

@@ -540,22 +581,22 @@

Tested Systems -
  • SUSE 13.1 & 13.2

  • -
  • CentOS 6.6

  • -
  • Ubuntu 18.04

  • -
  • MacOS X 10.9 & 10.10

  • -
  • Cygwin & MinGW

  • -
  • Cray XC30

  • -
  • FreeBSD 11.2

  • +
  • SUSE 13.1 & 13.2
  • +
  • CentOS 6.6
  • +
  • Ubuntu 18.04
  • +
  • MacOS X 10.9 & 10.10
  • +
  • Cygwin & MinGW
  • +
  • Cray XC30
  • +
  • FreeBSD 11.2
  • Main Contributors

      -
    • James R. McCombs

    • -
    • Eloy Romero Alcalde

    • -
    • Andreas Stathopoulos

    • -
    • Lingfei Wu

    • +
    • James R. McCombs
    • +
    • Eloy Romero Alcalde
    • +
    • Andreas Stathopoulos
    • +
    • Lingfei Wu

    diff --git a/doc/html/mateigs.html b/doc/html/mateigs.html index fae7e441..8d5c7ef6 100644 --- a/doc/html/mateigs.html +++ b/doc/html/mateigs.html @@ -8,7 +8,7 @@ - MATLAB Interface — PRIMME 3.0 documentation + MATLAB Interface — PRIMME 3.1 documentation @@ -25,7 +25,6 @@ - @@ -64,7 +63,7 @@
    - 3.0 + 3.1
    @@ -182,7 +181,7 @@

    MATLAB Interface

    -function [varargout] = primme_eigs(varargin)
    +function [varargout] = primme_eigs(varargin)

    primme_eigs() finds a few eigenvalues and their corresponding eigenvectors of a symmetric/Hermitian matrix, A, or of a generalized problem (A,B), by calling PRIMME.

    D = primme_eigs(A) returns a vector of A’s 6 largest magnitude eigenvalues.

    @@ -197,8 +196,9 @@

    MATLAB Interfacetarget is

    D = primme_eigs(...,k,target,OPTS) specifies extra solver parameters. Some default values are indicated in brackets {}:

      -
    • aNorm: the estimated 2-norm of A {0.0 (estimate the norm internally)}

    • -
    • tol: convergence tolerance: NORM(A*X(:,i)-X(:,i)*D(i,i)) < tol*NORM(A) -(see eps) {\(10^4\) times the machine precision}

    • -
    • maxBlockSize: maximum block size (useful for high multiplicities) {1}

    • -
    • disp: different level reporting (0-3) (see HIST) {no output 0}

    • -
    • display: toggle information display (see HIST)

    • -
    • isreal: whether A represented by Afun is real or complex {false}

    • -
    • isdouble: whether the class of in/out vectors in Afun are -double or single {false}

    • -
    • isgpu: whether the class of in/out vectors in Afun are gpuArray {false}

    • -
    • ishermitian: whether A is Hermitian; otherwise it is considered normal {true}

    • -
    • targetShifts: shifts for interior eigenvalues (see target) {[]}

    • -
    • v0: any number of initial guesses to the eigenvectors (see initSize {[]}

    • -
    • orthoConst: external orthogonalization constraints (see numOrthoConst {[]}

    • -
    • locking: 1, hard locking; 0, soft locking

    • -
    • p: maximum size of the search subspace (see maxBasisSize)

    • -
    • minRestartSize: minimum Ritz vectors to keep in restarting

    • -
    • maxMatvecs: maximum number of matrix vector multiplications {Inf}

    • -
    • maxit: maximum number of outer iterations (see maxOuterIterations) {Inf}

    • -
    • maxPrevRetain: number of Ritz vectors from previous iteration that are kept after restart {typically >0}

    • -
    • robustShifts: setting to true may avoid stagnation or misconvergence

    • -
    • maxInnerIterations: maximum number of inner solver iterations

    • -
    • LeftQ: use the locked vectors in the left projector

    • -
    • LeftX: use the approx. eigenvector in the left projector

    • -
    • RightQ: use the locked vectors in the right projector

    • -
    • RightX: use the approx. eigenvector in the right projector

    • -
    • SkewQ: use the preconditioned locked vectors in the right projector

    • -
    • SkewX: use the preconditioned approx. eigenvector in the right projector

    • -
    • relTolBase: a legacy from classical JDQR (not recommended)

    • -
    • convTest: how to stop the inner QMR Method

    • -
    • convTestFun: function handler with an alternative convergence criterion. +

    • aNorm: the estimated 2-norm of A {0.0 (estimate the norm internally)}
    • +
    • tol: convergence tolerance: NORM(A*X(:,i)-X(:,i)*D(i,i)) < tol*NORM(A) +(see eps) {\(10^4\) times the machine precision}
    • +
    • maxBlockSize: maximum block size (useful for high multiplicities) {1}
    • +
    • disp: different level reporting (0-3) (see HIST) {no output 0}
    • +
    • display: toggle information display (see HIST)
    • +
    • isreal: whether A represented by Afun is real or complex {false}
    • +
    • isdouble: whether the class of in/out vectors in Afun are +double or single {false}
    • +
    • isgpu: whether the class of in/out vectors in Afun are gpuArray {false}
    • +
    • ishermitian: whether A is Hermitian; otherwise it is considered normal {true}
    • +
    • targetShifts: shifts for interior eigenvalues (see target) {[]}
    • +
    • v0: any number of initial guesses to the eigenvectors (see initSize {[]}
    • +
    • orthoConst: external orthogonalization constraints (see numOrthoConst {[]}
    • +
    • locking: 1, hard locking; 0, soft locking
    • +
    • p: maximum size of the search subspace (see maxBasisSize)
    • +
    • minRestartSize: minimum Ritz vectors to keep in restarting
    • +
    • maxMatvecs: maximum number of matrix vector multiplications {Inf}
    • +
    • maxit: maximum number of outer iterations (see maxOuterIterations) {Inf}
    • +
    • maxPrevRetain: number of Ritz vectors from previous iteration that are kept after restart {typically >0}
    • +
    • robustShifts: setting to true may avoid stagnation or misconvergence
    • +
    • maxInnerIterations: maximum number of inner solver iterations
    • +
    • LeftQ: use the locked vectors in the left projector
    • +
    • LeftX: use the approx. eigenvector in the left projector
    • +
    • RightQ: use the locked vectors in the right projector
    • +
    • RightX: use the approx. eigenvector in the right projector
    • +
    • SkewQ: use the preconditioned locked vectors in the right projector
    • +
    • SkewX: use the preconditioned approx. eigenvector in the right projector
    • +
    • relTolBase: a legacy from classical JDQR (not recommended)
    • +
    • convTest: how to stop the inner QMR Method
    • +
    • convTestFun: function handler with an alternative convergence criterion. If FUN(EVAL,EVEC,RNORM) returns a nonzero value, the pair (EVAL,EVEC) -with residual norm RNORM is considered converged.

    • -
    • iseed: random seed

    • +with residual norm RNORM is considered converged. +
    • iseed: random seed

    D = primme_eigs(A,k,target,OPTS,METHOD) specifies the eigensolver method. METHOD can be one of the next strings:

    D = primme_eigs(A,k,target,OPTS,METHOD,P)

    @@ -293,13 +294,13 @@

    MATLAB Interface -
  • HIST(:,1): number of matvecs

  • -
  • HIST(:,2): time

  • -
  • HIST(:,3): number of converged/locked pairs

  • -
  • HIST(:,4): block index

  • -
  • HIST(:,5): approximate eigenvalue

  • -
  • HIST(:,6): residual norm

  • -
  • HIST(:,7): QMR residual norm

  • +
  • HIST(:,1): number of matvecs
  • +
  • HIST(:,2): time
  • +
  • HIST(:,3): number of converged/locked pairs
  • +
  • HIST(:,4): block index
  • +
  • HIST(:,5): approximate eigenvalue
  • +
  • HIST(:,6): residual norm
  • +
  • HIST(:,7): QMR residual norm
  • OPTS.disp controls the granularity of the record. If OPTS.disp == 1, HIST diff --git a/doc/html/matsvds.html b/doc/html/matsvds.html index 5856913f..469e0f39 100644 --- a/doc/html/matsvds.html +++ b/doc/html/matsvds.html @@ -8,7 +8,7 @@ - MATLAB Interface — PRIMME 3.0 documentation + MATLAB Interface — PRIMME 3.1 documentation @@ -25,7 +25,6 @@ - @@ -64,7 +63,7 @@

    - 3.0 + 3.1
    @@ -182,7 +181,7 @@

    MATLAB Interface

    -function [varargout] = primme_svds(varargin)
    +function [varargout] = primme_svds(varargin)

    primme_svds() finds a few singular values and vectors of a matrix A by calling PRIMME. A is typically large and sparse.

    S = primme_svds(A) returns a vector with the 6 largest singular values of A.

    @@ -195,43 +194,59 @@

    MATLAB Interfacesigma.

      -
    • If sigma is a vector, find the singular value S(i) closest to each sigma(i), for i<=k.

    • -
    • If sigma is 'L', it computes the largest singular values.

    • -
    • if sigma is 'S', it computes the smallest singular values.

    • +
    • If sigma is a vector, find the singular value S(i) closest to each sigma(i), for i<=k.
    • +
    • If sigma is 'L', it computes the largest singular values.
    • +
    • if sigma is 'S', it computes the smallest singular values.

    S = primme_svds(A,k,sigma,OPTIONS) specifies extra solver parameters. Some default values are indicated in brackets {}:

      -
    • aNorm: estimation of the 2-norm of A {0.0 (estimate the norm internally)}

    • -
    • tol: convergence tolerance NORM([A*V-U*S;A'*U-V*S]) <= tol * NORM(A) (see eps) { 1e-10 for double precision and 1e-3 for single precision}

    • -
    • maxit: maximum number of matvecs with A and A' (see maxMatvecs) {inf}

    • -
    • p: maximum basis size (see maxBasisSize)

    • -
    • disp: level of reporting 0-3 (see HIST) {0: no output}

    • -
    • isreal: if 0, the matrix is complex; else it’s real {0: complex}

    • -
    • isdouble: if 0, the matrix is single; else it’s double {1: double}

    • -
    • method: which equivalent eigenproblem to solve

      +
    • aNorm: estimation of the 2-norm of A {0.0 (estimate the norm internally)}

      +
    • +
    • tol: convergence tolerance NORM([A*V-U*S;A'*U-V*S]) <= tol * NORM(A) (see eps) { 1e-10 for double precision and 1e-3 for single precision}

      +
    • +
    • maxit: maximum number of matvecs with A and A' (see maxMatvecs) {inf}

      +
    • +
    • p: maximum basis size (see maxBasisSize)

      +
    • +
    • disp: level of reporting 0-3 (see HIST) {0: no output}

      +
    • +
    • isreal: if 0, the matrix is complex; else it’s real {0: complex}

      +
    • +
    • isdouble: if 0, the matrix is single; else it’s double {1: double}

      +
    • +
    • method: which equivalent eigenproblem to solve

    • -
    • u0: initial guesses to the left singular vectors (see initSize) {[]}

    • -
    • v0: initial guesses to the right singular vectors {[]}

    • -
    • orthoConst: external orthogonalization constraints (see numOrthoConst) {[]}

    • -
    • locking: 1, hard locking; 0, soft locking

    • -
    • maxBlockSize: maximum block size

    • -
    • iseed: random seed

    • -
    • primme: options for first stage solver

    • -
    • primmeStage2: options for second stage solver

    • -
    • convTestFun: function handler with an alternative convergence criterion. +

    • u0: initial guesses to the left singular vectors (see initSize) {[]}

      +
    • +
    • v0: initial guesses to the right singular vectors {[]}

      +
    • +
    • orthoConst: external orthogonalization constraints (see numOrthoConst) {[]}

      +
    • +
    • locking: 1, hard locking; 0, soft locking

      +
    • +
    • maxBlockSize: maximum block size

      +
    • +
    • iseed: random seed

      +
    • +
    • primme: options for first stage solver

      +
    • +
    • primmeStage2: options for second stage solver

      +
    • +
    • convTestFun: function handler with an alternative convergence criterion. If FUN(SVAL,LSVEC,RSVEC,RNORM) returns a nonzero value, the triplet (SVAL,LSVEC,RSVEC) with residual norm RNORM -is considered converged.

    • +is considered converged.

      +

    The available options for OPTIONS.primme and primmeStage2 are @@ -239,27 +254,27 @@

    MATLAB InterfaceS = primme_svds(A,k,sigma,OPTIONS,P) applies a preconditioner P as follows:

      -
    • If P is a matrix it applies P\X and P'\X to approximate A\X and A'\X.

    • -
    • If P is a function handle, PFUN, PFUN(X,'notransp') returns P\X and -PFUN(X,'transp') returns P’\X, approximating A\X and A'\X respectively.

    • -
    • -
      If P is a struct, it can have one or more of the following fields:

      P.AHA\X or P.AHA(X) returns an approximation of (A'*A)\X, +

    • If P is a matrix it applies P\X and P'\X to approximate A\X and A'\X.
    • +
    • If P is a function handle, PFUN, PFUN(X,'notransp') returns P\X and +PFUN(X,'transp') returns P’\X, approximating A\X and A'\X respectively.
    • +
    • +
      If P is a struct, it can have one or more of the following fields:
      +
      P.AHA\X or P.AHA(X) returns an approximation of (A'*A)\X, P.AAH\X or P.AAH(X) returns an approximation of (A*A')\X, -P.aug\X or P.aug(X) returns an approximation of [zeros(N,N) A';A zeros(M,M)]\X.

      -
      +P.aug\X or P.aug(X) returns an approximation of [zeros(N,N) A';A zeros(M,M)]\X.
    • -
    • If P is [] then no preconditioner is applied.

    • +
    • If P is [] then no preconditioner is applied.

    S = primme_svds(A,k,sigma,OPTIONS,P1,P2) applies a factorized preconditioner:

      -
    • If both P1 and P2 are nonempty, apply (P1*P2)\X to approximate A\X.

    • -
    • If P1 is [] and P2 is nonempty, then (P2'*P2)\X approximates A'*A. +

    • If both P1 and P2 are nonempty, apply (P1*P2)\X to approximate A\X.
    • +
    • If P1 is [] and P2 is nonempty, then (P2'*P2)\X approximates A'*A. P2 can be the R factor of an (incomplete) QR factorization of A or -the L factor of an (incomplete) LL’ factorization of A'*A (RIF).

    • -
    • If both P1 and P2 are [] then no preconditioner is applied.

    • +the L factor of an (incomplete) LL’ factorization of A'*A (RIF). +
    • If both P1 and P2 are [] then no preconditioner is applied.

    [U,S,V] = primme_svds(...) returns also the corresponding singular vectors. @@ -276,14 +291,14 @@

    MATLAB Interface -
  • HIST(:,1): number of matvecs

  • -
  • HIST(:,2): time

  • -
  • HIST(:,3): number of converged/locked triplets

  • -
  • HIST(:,4): stage

  • -
  • HIST(:,5): block index

  • -
  • HIST(:,6): approximate singular value

  • -
  • HIST(:,7): residual norm

  • -
  • HIST(:,8): QMR residual norm

  • +
  • HIST(:,1): number of matvecs
  • +
  • HIST(:,2): time
  • +
  • HIST(:,3): number of converged/locked triplets
  • +
  • HIST(:,4): stage
  • +
  • HIST(:,5): block index
  • +
  • HIST(:,6): approximate singular value
  • +
  • HIST(:,7): residual norm
  • +
  • HIST(:,8): QMR residual norm
  • OPTS.disp controls the granularity of the record. If OPTS.disp == 1, HIST @@ -320,7 +335,7 @@

    MATLAB Interface% Estimation of the smallest singular value A = diag([1 repmat(2,1,1000) 3:100]); -[~,sval,~,rnorm] = primme_svds(A,1,'S',struct('convTestFun',@(s,u,v,r)r<s*.1)); +[~,sval,~,rnorm] = primme_svds(A,1,'S',struct('convTestFun',@(s,u,v,r)r<s*.1)); sval - rnorm % approximate smallest singular value diff --git a/doc/html/objects.inv b/doc/html/objects.inv index cd632525..eabba605 100644 Binary files a/doc/html/objects.inv and b/doc/html/objects.inv differ diff --git a/doc/html/primmec.html b/doc/html/primmec.html index 6c8aa903..7524ea40 100644 --- a/doc/html/primmec.html +++ b/doc/html/primmec.html @@ -8,7 +8,7 @@ - C Library Interface — PRIMME 3.0 documentation + C Library Interface — PRIMME 3.1 documentation @@ -25,7 +25,6 @@ - @@ -64,7 +63,7 @@
    - 3.0 + 3.1
    @@ -199,109 +198,123 @@

    C Library Interface

    The PRIMME interface is composed of the following functions. To solve real symmetric and complex Hermitian problems, standard \(A x = \lambda x\) and generalized \(A x = \lambda B x\), call:

    -
    int dprimme (double *evals, double *evecs, double *resNorms,
    +
    +int dprimme (double *evals, double *evecs, double *resNorms,
                             primme_params *primme)
     int zprimme (double *evals, PRIMME_COMPLEX_DOUBLE *evecs,
    -                 double *resNorms, primme_params *primme)
    + double *resNorms, primme_params *primme) +

    There are more versions for matrix problems working in other precisions:

    - +
    ---+++ - - - - + + + + - - - - + + + + - - - + + + - - - + + +

    Precision

    Real

    Complex

    PrecisionRealComplex

    half

    hprimme() -hsprimme()

    kprimme() -ksprimme()

    halfhprimme() +hsprimme()kprimme() +ksprimme()

    single

    sprimme()

    cprimme()

    singlesprimme()cprimme()

    double

    dprimme()

    zprimme()

    doubledprimme()zprimme()

    To solve standard eigenproblems with normal but not necessarily Hermitian matrices call:

    -
    int zprimme_normal (PRIMME_COMPLEX_DOUBLE *evals,
    +
    +int zprimme_normal (PRIMME_COMPLEX_DOUBLE *evals,
                      PRIMME_COMPLEX_DOUBLE *evecs,
    -                 double *resNorms, primme_params *primme)
    + double *resNorms, primme_params *primme) +

    There are more versions for matrix problems working in other precisions:

    - +
    --++ - - - + + + - - - + + + - - + + - - + +

    Precision

    Complex

    PrecisionComplex

    half

    kprimme_normal() -kcprimme_normal()

    halfkprimme_normal() +kcprimme_normal()

    single

    cprimme_normal()

    singlecprimme_normal()

    double

    zprimme_normal()

    doublezprimme_normal()

    Other useful functions:

    -
    void primme_initialize (primme_params *primme)
    +
    +void primme_initialize (primme_params *primme)
     int primme_set_method (primme_preset_method method,
                                                          primme_params *params)
     void primme_display_params (primme_params primme)
    -void primme_free (primme_params *primme)
    +void primme_free (primme_params *primme) +

    PRIMME stores its data on the structure primme_params. See Parameters Guide for an introduction about its fields.

    Running

    To use PRIMME, follow these basic steps.

      -
    1. Include:

      +
    2. Include:

      #include "primme.h"   /* header file is required to run primme */
       
    3. -
    4. Initialize a PRIMME parameters structure for default settings:

      -
      primme_params primme;
      -primme_initialize (&primme);
      +
    5. Initialize a PRIMME parameters structure for default settings:

      +
      +primme_params primme;
      +primme_initialize (&primme);
      +
    6. -
    7. Set problem parameters (see also Parameters Guide), and, +

    8. Set problem parameters (see also Parameters Guide), and, optionally, set one of the preset methods:

      -
      primme.matrixMatvec = LaplacianMatrixMatvec; /* MV product */
      +
      +primme.matrixMatvec = LaplacianMatrixMatvec; /* MV product */
       primme.n = 100;                   /* set problem dimension */
       primme.numEvals = 10;       /* Number of wanted eigenpairs */
       ret = primme_set_method (method, &primme);
      -...
      +... +
    9. -
    10. Then call the solver:

      -
      ret = dprimme (evals, evecs, resNorms, &primme);
      +
    11. Then call the solver:

      +
      +ret = dprimme (evals, evecs, resNorms, &primme);
      +

      The call arguments are:

        -
      • evals, array to return the found eigenvalues;

      • -
      • evecs, array to return the found eigenvectors;

      • -
      • resNorms, array to return the residual norms of the found eigenpairs; and

      • -
      • ret, returned error code.

      • +
      • evals, array to return the found eigenvalues;
      • +
      • evecs, array to return the found eigenvectors;
      • +
      • resNorms, array to return the residual norms of the found eigenpairs; and
      • +
      • ret, returned error code.
    12. -
    13. To free the work arrays in PRIMME:

      -
      primme_free (&primme);
      +
    14. To free the work arrays in PRIMME:

      +
      +primme_free (&primme);
      +

    See usage examples at the directory examples.

    @@ -392,67 +405,71 @@

    Interface Description?primme

    -int hprimme(PRIMME_HALF *evals, PRIMME_HALF *evecs, PRIMME_HALF *resNorms, primme_params *primme)
    +int hprimme(PRIMME_HALF *evals, PRIMME_HALF *evecs, PRIMME_HALF *resNorms, primme_params *primme)
    -int hsprimme(float *evals, PRIMME_HALF *evecs, float *resNorms, primme_params *primme)
    +int hsprimme(float *evals, PRIMME_HALF *evecs, float *resNorms, primme_params *primme)
    -int kprimme(PRIMME_HALF *evals, PRIMME_COMPLEX_HALF *evecs, PRIMME_HALF *resNorms, primme_params *primme)
    +int kprimme(PRIMME_HALF *evals, PRIMME_COMPLEX_HALF *evecs, PRIMME_HALF *resNorms, primme_params *primme)
    -int ksprimme(float *evals, PRIMME_COMPLEX_HALF *evecs, float *resNorms, primme_params *primme)
    +int ksprimme(float *evals, PRIMME_COMPLEX_HALF *evecs, float *resNorms, primme_params *primme)
    -

    New in version 3.0.

    +

    New in version 3.0.

    -int sprimme(float *evals, float *evecs, float *resNorms, primme_params *primme)
    +int sprimme(float *evals, float *evecs, float *resNorms, primme_params *primme)
    -int cprimme(float *evals, PRIMME_COMPLEX_FLOAT *evecs, float *resNorms, primme_params *primme)
    +int cprimme(float *evals, PRIMME_COMPLEX_FLOAT *evecs, float *resNorms, primme_params *primme)
    -

    New in version 2.0.

    +

    New in version 2.0.

    -int dprimme(double *evals, double *evecs, double *resNorms, primme_params *primme)
    +int dprimme(double *evals, double *evecs, double *resNorms, primme_params *primme)
    -int zprimme(double *evals, PRIMME_COMPLEX_DOUBLE *evecs, double *resNorms, primme_params *primme)
    +int zprimme(double *evals, PRIMME_COMPLEX_DOUBLE *evecs, double *resNorms, primme_params *primme)

    Solve a real symmetric/Hermitian standard or generalized eigenproblem.

    All arrays should be hosted on CPU. The computations are performed on CPU (see magma_dprimme() for using GPUs).

    -
    -
    Parameters
    -
    @@ -231,12 +234,14 @@

    primme_initialize_f77primme_set_method_f77

    -primme_set_method_f77(method, primme, ierr)
    +primme_set_method_f77(method, primme, ierr)

    Set PRIMME parameters to one of the preset configurations.

    -
    -
    Parameters
    -
      -
    • method (integer) –

      (input) preset configuration. One of:

      + +++ + + + +
      Parameters:
        +
      • method (integer) –

        (input) preset configuration. One of:

        PRIMME_DYNAMIC
        PRIMME_DEFAULT_MIN_TIME
        @@ -255,12 +260,14 @@

        primme_set_method_f77PRIMME_LOBPCG_OrthoBasis_Window

        See primme_preset_method.

        -

      • -
      • primme (ptr) – (input) parameters structure.

      • -
      • ierr (integer) – (output) if 0, successful; if negative, something went wrong.

      • + +
      • primme (ptr) – (input) parameters structure.
      • +
      • ierr (integer) – (output) if 0, successful; if negative, something went wrong.
      - - +
    @@ -268,15 +275,19 @@

    primme_set_method_f77primme_free_f77

    -primme_free_f77(primme)
    +primme_free_f77(primme)

    Free memory allocated by PRIMME and delete all values set.

    -
    -
    Parameters
    -
      -
    • primme (ptr) – (input/output) parameters structure.

    • + +++ + + + +
      Parameters:
        +
      • primme (ptr) – (input/output) parameters structure.
      - - +
    @@ -284,23 +295,27 @@

    primme_free_f77

    -sprimme_f77(evals, evecs, resNorms, primme, ierr)
    +sprimme_f77(evals, evecs, resNorms, primme, ierr)

    Solve a real symmetric standard or generalized eigenproblem.

    All arrays should be hosted on CPU. The computations are performed on CPU (see magma_sprimme() for using GPUs).

    -
    -
    Parameters
    -
      -
    • evals(*) (real) – (output) array at least of size numEvals to store the -computed eigenvalues; all parallel calls return the same value in this array.

    • -
    • evecs(*) (real) – (input/output) array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs -to store column-wise the (local part for this process of the) computed eigenvectors.

    • -
    • resNorms(*) (real) – (output) array at least of size numEvals to store the -residual norms of the computed eigenpairs; all parallel calls return the same value in this array.

    • -
    • primme (ptr) – parameters structure.

    • -
    • ierr (integer) – (output) error indicator; see Error Codes.

    • + +++ + + + +
      Parameters:
        +
      • evals(*) (real) – (output) array at least of size numEvals to store the +computed eigenvalues; all parallel calls return the same value in this array.
      • +
      • evecs(*) (real) – (input/output) array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs +to store column-wise the (local part for this process of the) computed eigenvectors.
      • +
      • resNorms(*) (real) – (output) array at least of size numEvals to store the +residual norms of the computed eigenpairs; all parallel calls return the same value in this array.
      • +
      • primme (ptr) – parameters structure.
      • +
      • ierr (integer) – (output) error indicator; see Error Codes.
      - - +

      On input, evecs should start with the content of the numOrthoConst vectors, followed by the initSize vectors.

      On return, the i-th eigenvector starts at evecs(( numOrthoConst + i - 1)* ldevecs + 1). @@ -308,7 +323,7 @@

      sprimme_f77evecs unless the user sets internalPrecision otherwise.

      The type and precision of the callbacks is also the same as evecs. Although this can be changed. See details for matrixMatvec, massMatrixMatvec, applyPreconditioner, globalSumReal, broadcastReal, and convTestFun.

      -

      New in version 2.0.

      +

      New in version 2.0.

    @@ -317,23 +332,27 @@

    sprimme_f77

    -cprimme_f77(evals, evecs, resNorms, primme, ierr)
    +cprimme_f77(evals, evecs, resNorms, primme, ierr)

    Solve a Hermitian standard or generalized eigenproblem.

    All arrays should be hosted on CPU. The computations are performed on CPU (see magma_cprimme() for using GPUs).

    -
    -
    Parameters
    -
      -
    • evals(*) (real) – (output) array at least of size numEvals to store the -computed eigenvalues; all parallel calls return the same value in this array.

    • -
    • evecs(*) (complex real) – (input/output) array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs -to store column-wise the (local part for this process of the) computed eigenvectors.

    • -
    • resNorms(*) (real) – (output) array at least of size numEvals to store the -residual norms of the computed eigenpairs; all parallel calls return the same value in this array.

    • -
    • primme (ptr) – (input) parameters structure.

    • -
    • ierr (integer) – (output) error indicator; see Error Codes.

    • + +++ + + + +
      Parameters:
        +
      • evals(*) (real) – (output) array at least of size numEvals to store the +computed eigenvalues; all parallel calls return the same value in this array.
      • +
      • evecs(*) (complex real) – (input/output) array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs +to store column-wise the (local part for this process of the) computed eigenvectors.
      • +
      • resNorms(*) (real) – (output) array at least of size numEvals to store the +residual norms of the computed eigenpairs; all parallel calls return the same value in this array.
      • +
      • primme (ptr) – (input) parameters structure.
      • +
      • ierr (integer) – (output) error indicator; see Error Codes.
      - - +

      On input, evecs should start with the content of the numOrthoConst vectors, followed by the initSize vectors.

      On return, the i-th eigenvector starts at evecs(( numOrthoConst + i - 1)* ldevecs + 1). @@ -341,7 +360,7 @@

      cprimme_f77evecs unless the user sets internalPrecision otherwise.

      The type and precision of the callbacks is also the same as evecs. Although this can be changed. See details for matrixMatvec, massMatrixMatvec, applyPreconditioner, globalSumReal, broadcastReal, and convTestFun.

      -

      New in version 2.0.

      +

      New in version 2.0.

    @@ -350,23 +369,27 @@

    cprimme_f77

    -dprimme_f77(evals, evecs, resNorms, primme, ierr)
    +dprimme_f77(evals, evecs, resNorms, primme, ierr)

    Solve a real symmetric standard or generalized eigenproblem.

    All arrays should be hosted on CPU. The computations are performed on CPU (see magma_dprimme() for using GPUs).

    -
    -
    Parameters
    -
      -
    • evals(*) (double precision) – (output) array at least of size numEvals to store the -computed eigenvalues; all parallel calls return the same value in this array.

    • -
    • evecs(*) (double precision) – (input/output) array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs -to store column-wise the (local part for this process of the) computed eigenvectors.

    • -
    • resNorms(*) (double precision) – (output) array at least of size numEvals to store the -residual norms of the computed eigenpairs; all parallel calls return the same value in this array.

    • -
    • primme (ptr) – parameters structure.

    • -
    • ierr (integer) – (output) error indicator; see Error Codes.

    • + +++ + + + +
      Parameters:
        +
      • evals(*) (double precision) – (output) array at least of size numEvals to store the +computed eigenvalues; all parallel calls return the same value in this array.
      • +
      • evecs(*) (double precision) – (input/output) array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs +to store column-wise the (local part for this process of the) computed eigenvectors.
      • +
      • resNorms(*) (double precision) – (output) array at least of size numEvals to store the +residual norms of the computed eigenpairs; all parallel calls return the same value in this array.
      • +
      • primme (ptr) – parameters structure.
      • +
      • ierr (integer) – (output) error indicator; see Error Codes.
      - - +

      On input, evecs should start with the content of the numOrthoConst vectors, followed by the initSize vectors.

      On return, the i-th eigenvector starts at evecs(( numOrthoConst + i - 1)* ldevecs + 1). @@ -380,23 +403,27 @@

      dprimme_f77

      -zprimme_f77(evals, evecs, resNorms, primme, ierr)
      +zprimme_f77(evals, evecs, resNorms, primme, ierr)

      Solve a Hermitian standard or generalized eigenproblem.

      All arrays should be hosted on CPU. The computations are performed on CPU (see magma_zprimme() for using GPUs).

      -
      -
      Parameters
      -
        -
      • evals(*) (double precision) – (output) array at least of size numEvals to store the -computed eigenvalues; all parallel calls return the same value in this array.

      • -
      • evecs(*) (complex double precision) – (input/output) array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs -to store column-wise the (local part for this process of the) computed eigenvectors.

      • -
      • resNorms(*) (double precision) – (output) array at least of size numEvals to store the -residual norms of the computed eigenpairs; all parallel calls return the same value in this array.

      • -
      • primme (ptr) – parameters structure.

      • -
      • ierr (integer) – (output) error indicator; see Error Codes.

      • + +++ + + + +
        Parameters:
          +
        • evals(*) (double precision) – (output) array at least of size numEvals to store the +computed eigenvalues; all parallel calls return the same value in this array.
        • +
        • evecs(*) (complex double precision) – (input/output) array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs +to store column-wise the (local part for this process of the) computed eigenvectors.
        • +
        • resNorms(*) (double precision) – (output) array at least of size numEvals to store the +residual norms of the computed eigenpairs; all parallel calls return the same value in this array.
        • +
        • primme (ptr) – parameters structure.
        • +
        • ierr (integer) – (output) error indicator; see Error Codes.
        - - +

        On input, evecs should start with the content of the numOrthoConst vectors, followed by the initSize vectors.

        On return, the i-th eigenvector starts at evecs(( numOrthoConst + i - 1)* ldevecs + 1). @@ -410,23 +437,27 @@

        zprimme_f77

        -magma_sprimme_f77(evals, evecs, resNorms, primme, ierr)
        +magma_sprimme_f77(evals, evecs, resNorms, primme, ierr)

        Solve a real symmetric standard or generalized eigenproblem.

        Most of the computations are performed on GPU (see sprimme() for using only the CPU).

        -
        -
        Parameters
        -
          -
        • evals(*) (real) – (output) CPU array at least of size numEvals to store the -computed eigenvalues; all parallel calls return the same value in this array.

        • -
        • evecs(*) (real) – (input/output) GPU array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs -to store column-wise the (local part for this process of the) computed eigenvectors.

        • -
        • resNorms(*) (real) – (output) CPU array at least of size numEvals to store the -residual norms of the computed eigenpairs; all parallel calls return the same value in this array.

        • -
        • primme (ptr) – parameters structure.

        • -
        • ierr (integer) – (output) error indicator; see Error Codes.

        • + +++ + + + +
          Parameters:
            +
          • evals(*) (real) – (output) CPU array at least of size numEvals to store the +computed eigenvalues; all parallel calls return the same value in this array.
          • +
          • evecs(*) (real) – (input/output) GPU array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs +to store column-wise the (local part for this process of the) computed eigenvectors.
          • +
          • resNorms(*) (real) – (output) CPU array at least of size numEvals to store the +residual norms of the computed eigenpairs; all parallel calls return the same value in this array.
          • +
          • primme (ptr) – parameters structure.
          • +
          • ierr (integer) – (output) error indicator; see Error Codes.
          - - +

          On input, evecs should start with the content of the numOrthoConst vectors, followed by the initSize vectors.

          On return, the i-th eigenvector starts at evecs(( numOrthoConst + i - 1)* ldevecs + 1). @@ -434,7 +465,7 @@

          magma_sprimme_f77evecs unless the user sets internalPrecision otherwise.

          The type and precision of the callbacks is also the same as evecs. Although this can be changed. See details for matrixMatvec, massMatrixMatvec, applyPreconditioner, globalSumReal, broadcastReal, and convTestFun.

          -

          New in version 3.0.

          +

          New in version 3.0.

        @@ -443,23 +474,27 @@

        magma_sprimme_f77

        -magma_cprimme_f77(evals, evecs, resNorms, primme, ierr)
        +magma_cprimme_f77(evals, evecs, resNorms, primme, ierr)

        Solve a Hermitian standard or generalized eigenproblem.

        Most of the computations are performed on GPU (see cprimme() for using only the CPU).

        -
        -
        Parameters
        -
          -
        • evals(*) (real) – (output) CPU array at least of size numEvals to store the -computed eigenvalues; all parallel calls return the same value in this array.

        • -
        • evecs(*) (complex real) – (input/output) GPU array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs -to store column-wise the (local part for this process of the) computed eigenvectors.

        • -
        • resNorms(*) (real) – (output) CPU array at least of size numEvals to store the -residual norms of the computed eigenpairs; all parallel calls return the same value in this array.

        • -
        • primme (ptr) – (input) parameters structure.

        • -
        • ierr (integer) – (output) error indicator; see Error Codes.

        • + +++ + + + +
          Parameters:
            +
          • evals(*) (real) – (output) CPU array at least of size numEvals to store the +computed eigenvalues; all parallel calls return the same value in this array.
          • +
          • evecs(*) (complex real) – (input/output) GPU array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs +to store column-wise the (local part for this process of the) computed eigenvectors.
          • +
          • resNorms(*) (real) – (output) CPU array at least of size numEvals to store the +residual norms of the computed eigenpairs; all parallel calls return the same value in this array.
          • +
          • primme (ptr) – (input) parameters structure.
          • +
          • ierr (integer) – (output) error indicator; see Error Codes.
          - - +

          On input, evecs should start with the content of the numOrthoConst vectors, followed by the initSize vectors.

          On return, the i-th eigenvector starts at evecs(( numOrthoConst + i - 1)* ldevecs + 1). @@ -467,7 +502,7 @@

          magma_cprimme_f77evecs unless the user sets internalPrecision otherwise.

          The type and precision of the callbacks is also the same as evecs. Although this can be changed. See details for matrixMatvec, massMatrixMatvec, applyPreconditioner, globalSumReal, broadcastReal, and convTestFun.

          -

          New in version 3.0.

          +

          New in version 3.0.

        @@ -476,23 +511,27 @@

        magma_cprimme_f77

        -magma_dprimme_f77(evals, evecs, resNorms, primme, ierr)
        +magma_dprimme_f77(evals, evecs, resNorms, primme, ierr)

        Solve a real symmetric standard or generalized eigenproblem.

        Most of the computations are performed on GPU (see dprimme() for using only the CPU).

        -
        -
        Parameters
        -
          -
        • evals(*) (double precision) – (output) CPU array at least of size numEvals to store the -computed eigenvalues; all parallel calls return the same value in this array.

        • -
        • evecs(*) (double precision) – (input/output) GPU array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs -to store column-wise the (local part for this process of the) computed eigenvectors.

        • -
        • resNorms(*) (double precision) – (output) CPU array at least of size numEvals to store the -residual norms of the computed eigenpairs; all parallel calls return the same value in this array.

        • -
        • primme (ptr) – parameters structure.

        • -
        • ierr (integer) – (output) error indicator; see Error Codes.

        • + +++ + + + +
          Parameters:
            +
          • evals(*) (double precision) – (output) CPU array at least of size numEvals to store the +computed eigenvalues; all parallel calls return the same value in this array.
          • +
          • evecs(*) (double precision) – (input/output) GPU array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs +to store column-wise the (local part for this process of the) computed eigenvectors.
          • +
          • resNorms(*) (double precision) – (output) CPU array at least of size numEvals to store the +residual norms of the computed eigenpairs; all parallel calls return the same value in this array.
          • +
          • primme (ptr) – parameters structure.
          • +
          • ierr (integer) – (output) error indicator; see Error Codes.
          - - +

          On input, evecs should start with the content of the numOrthoConst vectors, followed by the initSize vectors.

          On return, the i-th eigenvector starts at evecs(( numOrthoConst + i - 1)* ldevecs + 1). @@ -500,7 +539,7 @@

          magma_dprimme_f77evecs unless the user sets internalPrecision otherwise.

          The type and precision of the callbacks is also the same as evecs. Although this can be changed. See details for matrixMatvec, massMatrixMatvec, applyPreconditioner, globalSumReal, broadcastReal, and convTestFun.

          -

          New in version 3.0.

          +

          New in version 3.0.

        @@ -509,23 +548,27 @@

        magma_dprimme_f77

        -magma_zprimme_f77(evals, evecs, resNorms, primme, ierr)
        +magma_zprimme_f77(evals, evecs, resNorms, primme, ierr)

        Solve a Hermitian standard or generalized eigenproblem.

        Most of the computations are performed on GPU (see zprimme() for using only the CPU).

        -
        -
        Parameters
        -
          -
        • evals(*) (double precision) – (output) CPU array at least of size numEvals to store the -computed eigenvalues; all parallel calls return the same value in this array.

        • -
        • evecs(*) (complex double precision) – (input/output) GPU array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs -to store column-wise the (local part for this process of the) computed eigenvectors.

        • -
        • resNorms(*) (double precision) – (output) CPU array at least of size numEvals to store the -residual norms of the computed eigenpairs; all parallel calls return the same value in this array.

        • -
        • primme (ptr) – (input) parameters structure.

        • -
        • ierr (integer) – (output) error indicator; see Error Codes.

        • + +++ + + + +
          Parameters:
            +
          • evals(*) (double precision) – (output) CPU array at least of size numEvals to store the +computed eigenvalues; all parallel calls return the same value in this array.
          • +
          • evecs(*) (complex double precision) – (input/output) GPU array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs +to store column-wise the (local part for this process of the) computed eigenvectors.
          • +
          • resNorms(*) (double precision) – (output) CPU array at least of size numEvals to store the +residual norms of the computed eigenpairs; all parallel calls return the same value in this array.
          • +
          • primme (ptr) – (input) parameters structure.
          • +
          • ierr (integer) – (output) error indicator; see Error Codes.
          - - +

          On input, evecs should start with the content of the numOrthoConst vectors, followed by the initSize vectors.

          On return, the i-th eigenvector starts at evecs(( numOrthoConst + i - 1)* ldevecs + 1). @@ -533,7 +576,7 @@

          magma_zprimme_f77evecs unless the user sets internalPrecision otherwise.

          The type and precision of the callbacks is also the same as evecs. Although this can be changed. See details for matrixMatvec, massMatrixMatvec, applyPreconditioner, globalSumReal, broadcastReal, and convTestFun.

          -

          New in version 3.0.

          +

          New in version 3.0.

        @@ -542,23 +585,27 @@

        magma_zprimme_f77

        -cprimme_normal_f77(evals, evecs, resNorms, primme, ierr)
        +cprimme_normal_f77(evals, evecs, resNorms, primme, ierr)

        Solve a normal standard eigenproblem, which may not be Hermitian.

        All arrays should be hosted on CPU. The computations are performed on CPU (see magma_cprimme_normal_f77() for using GPUs).

        -
        -
        Parameters
        -
          -
        • evals(*) (real) – (output) array at least of size numEvals to store the -computed eigenvalues; all parallel calls return the same value in this array.

        • -
        • evecs(*) (complex real) – (input/output) array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs -to store column-wise the (local part for this process of the) computed eigenvectors.

        • -
        • resNorms(*) (real) – (output) array at least of size numEvals to store the -residual norms of the computed eigenpairs; all parallel calls return the same value in this array.

        • -
        • primme (ptr) – (input) parameters structure.

        • -
        • ierr (integer) – (output) error indicator; see Error Codes.

        • + +++ + + + +
          Parameters:
            +
          • evals(*) (real) – (output) array at least of size numEvals to store the +computed eigenvalues; all parallel calls return the same value in this array.
          • +
          • evecs(*) (complex real) – (input/output) array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs +to store column-wise the (local part for this process of the) computed eigenvectors.
          • +
          • resNorms(*) (real) – (output) array at least of size numEvals to store the +residual norms of the computed eigenpairs; all parallel calls return the same value in this array.
          • +
          • primme (ptr) – (input) parameters structure.
          • +
          • ierr (integer) – (output) error indicator; see Error Codes.
          - - +

          On input, evecs should start with the content of the numOrthoConst vectors, followed by the initSize vectors.

          On return, the i-th eigenvector starts at evecs(( numOrthoConst + i - 1)* ldevecs + 1). @@ -566,7 +613,7 @@

          cprimme_normal_f77evecs unless the user sets internalPrecision otherwise.

          The type and precision of the callbacks is also the same as evecs. Although this can be changed. See details for matrixMatvec, massMatrixMatvec, applyPreconditioner, globalSumReal, broadcastReal, and convTestFun.

          -

          New in version 3.0.

          +

          New in version 3.0.

        @@ -575,23 +622,27 @@

        cprimme_normal_f77

        -zprimme_normal_f77(evals, evecs, resNorms, primme, ierr)
        +zprimme_normal_f77(evals, evecs, resNorms, primme, ierr)

        Solve a normal standard eigenproblem, which may not be Hermitian.

        All arrays should be hosted on CPU. The computations are performed on CPU (see magma_zprimme_normal_f77() for using GPUs).

        -
        -
        Parameters
        -
          -
        • evals(*) (double precision) – (output) array at least of size numEvals to store the -computed eigenvalues; all parallel calls return the same value in this array.

        • -
        • evecs(*) (complex double precision) – (input/output) array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs -to store column-wise the (local part for this process of the) computed eigenvectors.

        • -
        • resNorms(*) (double precision) – (output) array at least of size numEvals to store the -residual norms of the computed eigenpairs; all parallel calls return the same value in this array.

        • -
        • primme (ptr) – parameters structure.

        • -
        • ierr (integer) – (output) error indicator; see Error Codes.

        • + +++ + + + +
          Parameters:
            +
          • evals(*) (double precision) – (output) array at least of size numEvals to store the +computed eigenvalues; all parallel calls return the same value in this array.
          • +
          • evecs(*) (complex double precision) – (input/output) array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs +to store column-wise the (local part for this process of the) computed eigenvectors.
          • +
          • resNorms(*) (double precision) – (output) array at least of size numEvals to store the +residual norms of the computed eigenpairs; all parallel calls return the same value in this array.
          • +
          • primme (ptr) – parameters structure.
          • +
          • ierr (integer) – (output) error indicator; see Error Codes.
          - - +

          On input, evecs should start with the content of the numOrthoConst vectors, followed by the initSize vectors.

          On return, the i-th eigenvector starts at evecs(( numOrthoConst + i - 1)* ldevecs + 1). @@ -599,7 +650,7 @@

          zprimme_normal_f77evecs unless the user sets internalPrecision otherwise.

          The type and precision of the callbacks is also the same as evecs. Although this can be changed. See details for matrixMatvec, massMatrixMatvec, applyPreconditioner, globalSumReal, broadcastReal, and convTestFun.

          -

          New in version 3.0.

          +

          New in version 3.0.

        @@ -608,23 +659,27 @@

        zprimme_normal_f77

        -magma_cprimme_normal_f77(evals, evecs, resNorms, primme, ierr)
        +magma_cprimme_normal_f77(evals, evecs, resNorms, primme, ierr)

        Solve a normal standard eigenproblem, which may not be Hermitian.

        Most of the arrays are stored on GPU, and also most of the computations are done on GPU (see cprimme_normal_f77() for using only the CPU).

        -
        -
        Parameters
        -
          -
        • evals(*) (real) – (output) CPU array at least of size numEvals to store the -computed eigenvalues; all parallel calls return the same value in this array.

        • -
        • evecs(*) (complex real) – (input/output) GPU array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs -to store column-wise the (local part for this process of the) computed eigenvectors.

        • -
        • resNorms(*) (real) – (output) CPU array at least of size numEvals to store the -residual norms of the computed eigenpairs; all parallel calls return the same value in this array.

        • -
        • primme (ptr) – (input) parameters structure.

        • -
        • ierr (integer) – (output) error indicator; see Error Codes.

        • + +++ + + + +
          Parameters:
            +
          • evals(*) (real) – (output) CPU array at least of size numEvals to store the +computed eigenvalues; all parallel calls return the same value in this array.
          • +
          • evecs(*) (complex real) – (input/output) GPU array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs +to store column-wise the (local part for this process of the) computed eigenvectors.
          • +
          • resNorms(*) (real) – (output) CPU array at least of size numEvals to store the +residual norms of the computed eigenpairs; all parallel calls return the same value in this array.
          • +
          • primme (ptr) – (input) parameters structure.
          • +
          • ierr (integer) – (output) error indicator; see Error Codes.
          - - +

          On input, evecs should start with the content of the numOrthoConst vectors, followed by the initSize vectors.

          On return, the i-th eigenvector starts at evecs(( numOrthoConst + i - 1)* ldevecs + 1). @@ -632,7 +687,7 @@

          magma_cprimme_normal_f77evecs unless the user sets internalPrecision otherwise.

          The type and precision of the callbacks is also the same as evecs. Although this can be changed. See details for matrixMatvec, massMatrixMatvec, applyPreconditioner, globalSumReal, broadcastReal, and convTestFun.

          -

          New in version 3.0.

          +

          New in version 3.0.

        @@ -641,23 +696,27 @@

        magma_cprimme_normal_f77

        -magma_zprimme_normal_f77(evals, evecs, resNorms, primme, ierr)
        +magma_zprimme_normal_f77(evals, evecs, resNorms, primme, ierr)

        Solve a normal standard eigenproblem, which may not be Hermitian.

        Most of the arrays are stored on GPU, and also most of the computations are done on GPU (see zprimme_normal_f77() for using only the CPU).

        -
        -
        Parameters
        -
          -
        • evals(*) (double precision) – (output) CPU array at least of size numEvals to store the -computed eigenvalues; all parallel calls return the same value in this array.

        • -
        • evecs(*) (complex double precision) – (input/output) GPU array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs -to store column-wise the (local part for this process of the) computed eigenvectors.

        • -
        • resNorms(*) (double precision) – (output) CPU array at least of size numEvals to store the -residual norms of the computed eigenpairs; all parallel calls return the same value in this array.

        • -
        • primme (ptr) – (input) parameters structure.

        • -
        • ierr (integer) – (output) error indicator; see Error Codes.

        • + +++ + + + +
          Parameters:
            +
          • evals(*) (double precision) – (output) CPU array at least of size numEvals to store the +computed eigenvalues; all parallel calls return the same value in this array.
          • +
          • evecs(*) (complex double precision) – (input/output) GPU array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs +to store column-wise the (local part for this process of the) computed eigenvectors.
          • +
          • resNorms(*) (double precision) – (output) CPU array at least of size numEvals to store the +residual norms of the computed eigenpairs; all parallel calls return the same value in this array.
          • +
          • primme (ptr) – (input) parameters structure.
          • +
          • ierr (integer) – (output) error indicator; see Error Codes.
          - - +

          On input, evecs should start with the content of the numOrthoConst vectors, followed by the initSize vectors.

          On return, the i-th eigenvector starts at evecs(( numOrthoConst + i - 1)* ldevecs + 1). @@ -665,7 +724,7 @@

          magma_zprimme_normal_f77evecs unless the user sets internalPrecision otherwise.

          The type and precision of the callbacks is also the same as evecs. Although this can be changed. See details for matrixMatvec, massMatrixMatvec, applyPreconditioner, globalSumReal, broadcastReal, and convTestFun.

          -

          New in version 3.0.

          +

          New in version 3.0.

        @@ -674,13 +733,15 @@

        magma_zprimme_normal_f77

        -primme_set_member_f77(primme, label, value)
        +primme_set_member_f77(primme, label, value)

        Set a value in some field of the parameter structure.

        -
        -
        Parameters
        -
          -
        • primme (ptr) – (input) parameters structure.

        • -
        • label (integer) –

          field where to set value. One of:

          + +++ + + + +
          Parameters:
            +
          • primme (ptr) – (input) parameters structure.
          • +
          • label (integer) –

            field where to set value. One of:

            @@ -770,17 +831,19 @@

            primme_set_member_f77PRIMME_monitor

            -

          • -
          • value

            (input) value to set.

            +
          • +
          • value

            (input) value to set.

            If the type of the option is integer (int, PRIMME_INT, size_t), the type of value should be as long as PRIMME_INT, which is integer*8 by default.

            -

          • +
          - - +
          -

          Note

          -

          Don’t use this function inside PRIMME’s callback functions, e.g., matrixMatvec or +

          Note

          +

          Don’t use this function inside PRIMME’s callback functions, e.g., matrixMatvec or applyPreconditioner, or in functions called by these functions.

        @@ -790,29 +853,33 @@

        primme_set_member_f77primmetop_get_member_f77

        -primmetop_get_member_f77(primme, label, value)
        +primmetop_get_member_f77(primme, label, value)

        Get the value in some field of the parameter structure.

        -
        -
        Parameters
        -
        @@ -844,17 +911,21 @@

        primmetop_get_member_f77

        -primmetop_get_prec_shift_f77(primme, index, value)
        +primmetop_get_prec_shift_f77(primme, index, value)

        Get the value in some position of the array ShiftsForPreconditioner.

        -
        -
        Parameters
        -
          -
        • primme (ptr) – (input) parameters structure.

        • -
        • index (integer) – (input) position of the array; the first position is 1.

        • -
        • value – (output) value of the array at that position.

        • + +++ + + + +
          Parameters:
            +
          • primme (ptr) – (input) parameters structure.
          • +
          • index (integer) – (input) position of the array; the first position is 1.
          • +
          • value – (output) value of the array at that position.
          - - +
        @@ -862,29 +933,33 @@

        primmetop_get_prec_shift_f77

        -primme_get_member_f77(primme, label, value)
        +primme_get_member_f77(primme, label, value)

        Get the value in some field of the parameter structure.

        -
        -
        Parameters
        -
        @@ -916,20 +991,24 @@

        primme_get_member_f77primme_get_prec_shift_f77

        -primme_get_prec_shift_f77(primme, index, value)
        +primme_get_prec_shift_f77(primme, index, value)

        Get the value in some position of the array ShiftsForPreconditioner.

        -
        -
        Parameters
        -
          -
        • primme (ptr) – (input) parameters structure.

        • -
        • index (integer) – (input) position of the array; the first position is 1.

        • -
        • value – (output) value of the array at that position.

        • + +++ + + + +
          Parameters:
            +
          • primme (ptr) – (input) parameters structure.
          • +
          • index (integer) – (input) position of the array; the first position is 1.
          • +
          • value – (output) value of the array at that position.
          - - +
          -

          Note

          -

          Use this function exclusively inside the function matrixMatvec, massMatrixMatvec, or applyPreconditioner. +

          Note

          +

          Use this function exclusively inside the function matrixMatvec, massMatrixMatvec, or applyPreconditioner. Otherwise use the function primmetop_get_prec_shift_f77().

        diff --git a/doc/html/primmef90.html b/doc/html/primmef90.html index efd241a7..6eed7c5c 100644 --- a/doc/html/primmef90.html +++ b/doc/html/primmef90.html @@ -8,7 +8,7 @@ - FORTRAN 90 Library Interface — PRIMME 3.0 documentation + FORTRAN 90 Library Interface — PRIMME 3.1 documentation @@ -25,7 +25,6 @@ - @@ -64,7 +63,7 @@
        - 3.0 + 3.1
        @@ -192,32 +191,36 @@

        FORTRAN 90 Library Interface

        -

        New in version 3.0.

        +

        New in version 3.0.

        The next enumerations and functions are declared in primme_f90.inc.

        -type iso_c_binding/c_ptr
        +type iso_c_binding/c_ptr

        Fortran datatype for C pointers.

        -subroutine primme_eigs_matvec(x, ldx, y, ldy, blockSize, primme, ierr)
        +subroutine primme_eigs_matvec(x, ldx, y, ldy, blockSize, primme, ierr)

        Abstract interface for the callbacks matrixMatvec, massMatrixMatvec, and applyPreconditioner.

        -
        -
        Parameters
        -
          -
        • x (ldx,*) [type(*),in] :: matrix of size nLocal x blockSize in column-major order with leading dimension ldx.

        • -
        • ldx [c_int64_t] :: the leading dimension of the array x.

        • -
        • y (ldy,*) [type(*),out] :: matrix of size nLocal x blockSize in column-major order with leading dimension ldy.

        • -
        • ldy [c_int64_t] :: the leading dimension of the array y.

        • -
        • blockSize [c_int,in] :: number of columns in x and y.

        • -
        • primme [c_ptr,in] :: parameters structure created by primme_params_create().

        • -
        • ierr [c_int,out] :: output error code; if it is set to non-zero, the current call to PRIMME will stop.

        • + +++ + + + +
          Parameters:
            +
          • x (ldx,*) [type(*),in] :: matrix of size nLocal x blockSize in column-major order with leading dimension ldx.
          • +
          • ldx [c_int64_t] :: the leading dimension of the array x.
          • +
          • y (ldy,*) [type(*),out] :: matrix of size nLocal x blockSize in column-major order with leading dimension ldy.
          • +
          • ldy [c_int64_t] :: the leading dimension of the array y.
          • +
          • blockSize [c_int,in] :: number of columns in x and y.
          • +
          • primme [c_ptr,in] :: parameters structure created by primme_params_create().
          • +
          • ierr [c_int,out] :: output error code; if it is set to non-zero, the current call to PRIMME will stop.
          - - +

          See more details about the precision and type for x and y in the documentation of the callbacks.

        @@ -225,14 +228,17 @@

        FORTRAN 90 Library Interface

        -c_ptr primme_params_create()
        +c_ptr primme_params_create()

        Allocate and initialize a parameters structure to the default values.

        After calling xprimme() (or a variant), call primme_params_destroy() to release allocated resources by PRIMME.

        -
        -
        Return
        -

        primme_params_create [c_ptr] :: pointer to a parameters structure.

        -
        -
        + +++ + + + +
        Return:primme_params_create [c_ptr] :: pointer to a parameters structure.
        @@ -240,12 +246,14 @@

        primme_params_createprimme_set_method

        -c_int primme_set_method(method, primme)
        +c_int primme_set_method(method, primme)

        Set PRIMME parameters to one of the preset configurations.

        -
        -
        Parameters
        -
          -
        • method [c_int,in] ::

          preset configuration. One of:

          + +++ + + + + + +
          Parameters:
            +
          • method [c_int,in] ::

            preset configuration. One of:

            PRIMME_DYNAMIC
            PRIMME_DEFAULT_MIN_TIME
            @@ -264,14 +272,16 @@

            primme_set_methodPRIMME_LOBPCG_OrthoBasis_Window

            See primme_preset_method.

            -

          • -
          • primme [c_ptr,in] :: parameters structure created by primme_params_create().

          • + +
          • primme [c_ptr,in] :: parameters structure created by primme_params_create().
          - -
          Return
          -

          primme_set_method [c_int] :: nonzero value if the call is not successful.

          -
          - +
          Return:

          primme_set_method [c_int] :: nonzero value if the call is not successful.

          +
        @@ -279,17 +289,19 @@

        primme_set_method

        -c_int primme_params_destroy(primme)
        +c_int primme_params_destroy(primme)

        Free memory allocated by PRIMME associated to a parameters structure created with primme_params_create().

        -
        -
        Parameters
        -

        primme [c_ptr] :: parameters structure.

        -
        -
        Return
        -

        primme_params_destroy :: nonzero value if the call is not successful.

        -
        -
        + +++ + + + + + +
        Parameters:primme [c_ptr] :: parameters structure.
        Return:primme_params_destroy :: nonzero value if the call is not successful.
        @@ -297,26 +309,30 @@

        primme_params_destroyxprimme

        -c_int xprimme(evals, evecs, resNorms, primme)
        +c_int xprimme(evals, evecs, resNorms, primme)

        Solve a real symmetric/Hermitian standard or generalized eigenproblem.

        All arrays should be hosted on CPU. The computations are performed on CPU (see magma_xprimme() for using GPUs).

        -
        -
        Parameters
        -
          -
        • evals (*) [real(kind),out] :: array at least of size numEvals to store the -computed eigenvalues; all processes in a parallel run return this local array with the same values.

        • -
        • evecs :: array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs -to store column-wise the (local part for this process of the) computed eigenvectors.

        • -
        • resNorms (*) [real(kind),out] :: array at least of size numEvals to store the + +++ + + + + + +
          Parameters:
            +
          • evals (*) [real(kind),out] :: array at least of size numEvals to store the +computed eigenvalues; all processes in a parallel run return this local array with the same values.
          • +
          • evecs :: array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs +to store column-wise the (local part for this process of the) computed eigenvectors.
          • +
          • resNorms (*) [real(kind),out] :: array at least of size numEvals to store the residual norms of the computed eigenpairs; all processes in parallel run return this local array with -the same values.

          • -
          • primme [c_ptr,in] :: parameters structure created by primme_params_create().

          • +the same values. +
          • primme [c_ptr,in] :: parameters structure created by primme_params_create().
          - -
          Return
          -

          xprimme [c_int] :: error indicator; see Error Codes.

          -
          - +
          Return:

          xprimme [c_int] :: error indicator; see Error Codes.

          +

          The arrays evals, evecs, and resNorms should have the same kind.

          On input, evecs should start with the content of the numOrthoConst vectors, followed by the initSize vectors.

          @@ -331,26 +347,30 @@

          xprimme

          -c_int magma_xprimme(evals, evecs, resNorms, primme)
          +c_int magma_xprimme(evals, evecs, resNorms, primme)

          Solve a real symmetric/Hermitian standard or generalized eigenproblem.

          Most of the computations are performed on GPU (see xprimme() for using only the CPU).

          -
          -
          Parameters
          -
            -
          • evals (*) [real(kind),out] :: CPU array at least of size numEvals to store the -computed eigenvalues; all processes in a parallel run return this local array with the same values.

          • -
          • evecs :: GPU array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs -to store column-wise the (local part for this process of the) computed eigenvectors.

          • -
          • resNorms (*) [real(kind),out] :: CPU array at least of size numEvals to store the + +++ + + + + + +
            Parameters:
              +
            • evals (*) [real(kind),out] :: CPU array at least of size numEvals to store the +computed eigenvalues; all processes in a parallel run return this local array with the same values.
            • +
            • evecs :: GPU array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs +to store column-wise the (local part for this process of the) computed eigenvectors.
            • +
            • resNorms (*) [real(kind),out] :: CPU array at least of size numEvals to store the residual norms of the computed eigenpairs; all processes in parallel run return this local array with -the same values.

            • -
            • primme [c_ptr,in] :: parameters structure created by primme_params_create().

            • +the same values. +
            • primme [c_ptr,in] :: parameters structure created by primme_params_create().
            - -
            Return
            -

            magma_xprimme [c_int] :: error indicator; see Error Codes.

            -
            - +
            Return:

            magma_xprimme [c_int] :: error indicator; see Error Codes.

            +

            On input, evecs should start with the content of the numOrthoConst vectors, followed by the initSize vectors.

            On return, the i-th eigenvector starts at evecs(( numOrthoConst + i - 1)* ldevecs + 1). @@ -365,26 +385,30 @@

            magma_xprimme

            -c_int xprimme_normal(evals, evecs, resNorms, primme)
            +c_int xprimme_normal(evals, evecs, resNorms, primme)

            Solve a normal standard eigenproblem, which may not be Hermitian.

            All arrays should be hosted on CPU. The computations are performed on CPU (see magma_xprimme_normal() for using GPUs).

            -
            -
            Parameters
            -
              -
            • evals (*) [complex(kind),out] :: array at least of size numEvals to store the -computed eigenvalues; all processes in a parallel run return this local array with the same values.

            • -
            • evecs :: array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs -to store column-wise the (local part for this process of the) computed eigenvectors.

            • -
            • resNorms (*) [real(kind),out] :: array at least of size numEvals to store the + +++ + + + + + +
              Parameters:
                +
              • evals (*) [complex(kind),out] :: array at least of size numEvals to store the +computed eigenvalues; all processes in a parallel run return this local array with the same values.
              • +
              • evecs :: array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs +to store column-wise the (local part for this process of the) computed eigenvectors.
              • +
              • resNorms (*) [real(kind),out] :: array at least of size numEvals to store the residual norms of the computed eigenpairs; all processes in parallel run return this local array with -the same values.

              • -
              • primme [c_ptr,in] :: parameters structure created by primme_params_create().

              • +the same values. +
              • primme [c_ptr,in] :: parameters structure created by primme_params_create().
              - -
              Return
              -

              xprimme_normal [c_int] :: error indicator; see Error Codes.

              -
              - +
              Return:

              xprimme_normal [c_int] :: error indicator; see Error Codes.

              +

              The arrays evals, evecs, and resNorms should have the same kind.

              On input, evecs should start with the content of the numOrthoConst vectors, followed by the initSize vectors.

              @@ -399,26 +423,30 @@

              xprimme_normal

              -c_int magma_xprimme_normal(evals, evecs, resNorms, primme)
              +c_int magma_xprimme_normal(evals, evecs, resNorms, primme)

              Solve a normal standard eigenproblem, which may not be Hermitian.

              Most of the arrays are stored on GPU, and also most of the computations are done on GPU (see xprimme() for using only the CPU).

              -
              -
              Parameters
              -
                -
              • evals (*) [complex(kind),out] :: CPU array at least of size numEvals to store the -computed eigenvalues; all processes in a parallel run return this local array with the same values.

              • -
              • evecs :: GPU array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs -to store column-wise the (local part for this process of the) computed eigenvectors.

              • -
              • resNorms (*) [real(kind),out] :: CPU array at least of size numEvals to store the + +++ + + + + + +
                Parameters:
                  +
                • evals (*) [complex(kind),out] :: CPU array at least of size numEvals to store the +computed eigenvalues; all processes in a parallel run return this local array with the same values.
                • +
                • evecs :: GPU array at least of size nLocal times (numOrthoConst + numEvals) with leading dimension ldevecs +to store column-wise the (local part for this process of the) computed eigenvectors.
                • +
                • resNorms (*) [real(kind),out] :: CPU array at least of size numEvals to store the residual norms of the computed eigenpairs; all processes in parallel run return this local array with -the same values.

                • -
                • primme [c_ptr,in] :: parameters structure created by primme_params_create().

                • +the same values. +
                • primme [c_ptr,in] :: parameters structure created by primme_params_create().
                - -
                Return
                -

                magma_xprimme_normal [c_int] :: error indicator; see Error Codes.

                -
                - +
                Return:

                magma_xprimme_normal [c_int] :: error indicator; see Error Codes.

                +

                On input, evecs should start with the content of the numOrthoConst vectors, followed by the initSize vectors.

                On return, the i-th eigenvector starts at evecs(( numOrthoConst + i - 1)* ldevecs + 1). @@ -433,13 +461,15 @@

                magma_xprimme_normalprimme_set_member

                -c_int primme_set_member(primme, label, value)
                +c_int primme_set_member(primme, label, value)

                Set a value in some field of the parameter structure.

                -
                -
                Parameters
                -
                  -
                • primme [c_ptr,in] :: parameters structure created by primme_params_create().

                • -
                • label [c_int,in] ::

                  field where to set value. One of:

                  + +++ + + +
                  Parameters: - -
                  Return
                  -

                  primme_set_member [c_int] ::

                  nonzero value if the call is not successful.

                  +
                  Return:

                  primme_set_member [c_int] ::

                  nonzero value if the call is not successful.

                  Examples:

                  type(c_ptr) :: primme
                   integer :: ierr
                  @@ -564,8 +594,10 @@ 

                  primme_set_member

                  -c_int primme_get_member(primme, label, value)
                  +c_int primme_get_member(primme, label, value)

                  Get the value in some field of the parameter structure.

                  -
                  -
                  Parameters
                  -
                  diff --git a/doc/html/readme.html b/doc/html/readme.html index e45fa1b2..3f7b8935 100644 --- a/doc/html/readme.html +++ b/doc/html/readme.html @@ -8,7 +8,7 @@ - PRIMME Documentation — PRIMME 3.0 documentation + PRIMME Documentation — PRIMME 3.1 documentation @@ -25,7 +25,6 @@ - @@ -63,7 +62,7 @@
                  - 3.0 + 3.1
                  @@ -210,8 +209,8 @@

                  PRIMME Documentation

                  Indices

                  diff --git a/doc/html/search.html b/doc/html/search.html index 23993aee..090cc8f7 100644 --- a/doc/html/search.html +++ b/doc/html/search.html @@ -8,7 +8,7 @@ - Search — PRIMME 3.0 documentation + Search — PRIMME 3.1 documentation @@ -25,7 +25,6 @@ - @@ -63,7 +62,7 @@
                  - 3.0 + 3.1
                  diff --git a/doc/html/searchindex.js b/doc/html/searchindex.js index 6bd6be2a..1d8964e2 100644 --- a/doc/html/searchindex.js +++ b/doc/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["apieigs","apisvds","appendix","appendixsvds","intro","mateigs","matsvds","primmec","primmef77","primmef90","pyeigsh","pysvds","readme","svdsc","svdsf77","svdsf90"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,sphinx:56},filenames:["apieigs.rst","apisvds.rst","appendix.rst","appendixsvds.rst","intro.rst","mateigs.rst","matsvds.rst","primmec.rst","primmef77.rst","primmef90.rst","pyeigsh.rst","pysvds.rst","readme.rst","svdsc.rst","svdsf77.rst","svdsf90.rst"],objects:{"":{"f/_/primme_eigs_matvec":[9,4,1,""],"f/_/primme_svds_matvec":[15,4,1,""],"f/iso_c_binding/c_ptr":[9,5,1,""],PRIMME_COMPLEX_DOUBLE:[2,0,1,"c.PRIMME_COMPLEX_DOUBLE"],PRIMME_COMPLEX_FLOAT:[2,0,1,"c.PRIMME_COMPLEX_FLOAT"],PRIMME_COMPLEX_HALF:[2,0,1,"c.PRIMME_COMPLEX_HALF"],PRIMME_HALF:[2,0,1,"c.PRIMME_HALF"],PRIMME_INT:[2,0,1,"c.PRIMME_INT"],PRIMME_VERSION_MAJOR:[2,1,1,"c.PRIMME_VERSION_MAJOR"],PRIMME_VERSION_MINOR:[2,1,1,"c.PRIMME_VERSION_MINOR"],cprimme:[7,2,1,"c.cprimme"],cprimme_f77:[8,2,1,"c.cprimme_f77"],cprimme_normal:[7,2,1,"c.cprimme_normal"],cprimme_normal_f77:[8,2,1,"c.cprimme_normal_f77"],cprimme_svds:[13,2,1,"c.cprimme_svds"],cprimme_svds_f77:[14,2,1,"c.cprimme_svds_f77"],dprimme:[7,2,1,"c.dprimme"],dprimme_f77:[8,2,1,"c.dprimme_f77"],dprimme_svds:[13,2,1,"c.dprimme_svds"],dprimme_svds_f77:[14,2,1,"c.dprimme_svds_f77"],hprimme:[7,2,1,"c.hprimme"],hprimme_svds:[13,2,1,"c.hprimme_svds"],hsprimme:[7,2,1,"c.hsprimme"],hsprimme_svds:[13,2,1,"c.hsprimme_svds"],kcprimme_normal:[7,2,1,"c.kcprimme_normal"],kprimme:[7,2,1,"c.kprimme"],kprimme_normal:[7,2,1,"c.kprimme_normal"],kprimme_svds:[13,2,1,"c.kprimme_svds"],ksprimme:[7,2,1,"c.ksprimme"],ksprimme_svds:[13,2,1,"c.ksprimme_svds"],magma_cprimme:[7,2,1,"c.magma_cprimme"],magma_cprimme_f77:[8,2,1,"c.magma_cprimme_f77"],magma_cprimme_normal:[7,2,1,"c.magma_cprimme_normal"],magma_cprimme_normal_f77:[8,2,1,"c.magma_cprimme_normal_f77"],magma_cprimme_svds:[13,2,1,"c.magma_cprimme_svds"],magma_cprimme_svds_f77:[14,2,1,"c.magma_cprimme_svds_f77"],magma_dprimme:[7,2,1,"c.magma_dprimme"],magma_dprimme_f77:[8,2,1,"c.magma_dprimme_f77"],magma_dprimme_svds:[13,2,1,"c.magma_dprimme_svds"],magma_dprimme_svds_f77:[14,2,1,"c.magma_dprimme_svds_f77"],magma_hprimme:[7,2,1,"c.magma_hprimme"],magma_hprimme_svds:[13,2,1,"c.magma_hprimme_svds"],magma_hsprimme:[7,2,1,"c.magma_hsprimme"],magma_hsprimme_svds:[13,2,1,"c.magma_hsprimme_svds"],magma_kcprimme_normal:[7,2,1,"c.magma_kcprimme_normal"],magma_kprimme:[7,2,1,"c.magma_kprimme"],magma_kprimme_normal:[7,2,1,"c.magma_kprimme_normal"],magma_kprimme_svds:[13,2,1,"c.magma_kprimme_svds"],magma_ksprimme:[7,2,1,"c.magma_ksprimme"],magma_ksprimme_svds:[13,2,1,"c.magma_ksprimme_svds"],magma_sprimme:[7,2,1,"c.magma_sprimme"],magma_sprimme_f77:[8,2,1,"c.magma_sprimme_f77"],magma_sprimme_svds:[13,2,1,"c.magma_sprimme_svds"],magma_sprimme_svds_f77:[14,2,1,"c.magma_sprimme_svds_f77"],magma_zprimme:[7,2,1,"c.magma_zprimme"],magma_zprimme_f77:[8,2,1,"c.magma_zprimme_f77"],magma_zprimme_normal:[7,2,1,"c.magma_zprimme_normal"],magma_zprimme_normal_f77:[8,2,1,"c.magma_zprimme_normal_f77"],magma_zprimme_svds:[13,2,1,"c.magma_zprimme_svds"],magma_zprimme_svds_f77:[14,2,1,"c.magma_zprimme_svds_f77"],primme_display_params:[7,2,1,"c.primme_display_params"],primme_free:[7,2,1,"c.primme_free"],primme_free_f77:[8,2,1,"c.primme_free_f77"],primme_get_member_f77:[8,2,1,"c.primme_get_member_f77"],primme_get_prec_shift_f77:[8,2,1,"c.primme_get_prec_shift_f77"],primme_initialize:[7,2,1,"c.primme_initialize"],primme_initialize_f77:[8,2,1,"c.primme_initialize_f77"],primme_params:[2,0,1,"c.primme_params"],primme_params_create:[7,2,1,"c.primme_params_create"],primme_params_destroy:[7,2,1,"c.primme_params_destroy"],primme_preset_method:[2,0,1,"c.primme_preset_method"],primme_set_member_f77:[8,2,1,"c.primme_set_member_f77"],primme_set_method:[7,2,1,"c.primme_set_method"],primme_set_method_f77:[8,2,1,"c.primme_set_method_f77"],primme_svds_display_params:[13,2,1,"c.primme_svds_display_params"],primme_svds_display_params_f77:[14,2,1,"c.primme_svds_display_params_f77"],primme_svds_free:[13,2,1,"c.primme_svds_free"],primme_svds_free_f77:[14,2,1,"c.primme_svds_free_f77"],primme_svds_get_member_f77:[14,2,1,"c.primme_svds_get_member_f77"],primme_svds_initialize:[13,2,1,"c.primme_svds_initialize"],primme_svds_initialize_f77:[14,2,1,"c.primme_svds_initialize_f77"],primme_svds_params:[3,0,1,"c.primme_svds_params"],primme_svds_params_create:[13,2,1,"c.primme_svds_params_create"],primme_svds_params_destroy:[13,2,1,"c.primme_svds_params_destroy"],primme_svds_preset_method:[3,0,1,"c.primme_svds_preset_method"],primme_svds_set_member_f77:[14,2,1,"c.primme_svds_set_member_f77"],primme_svds_set_method:[13,2,1,"c.primme_svds_set_method"],primme_svds_set_method_f77:[14,2,1,"c.primme_svds_set_method_f77"],primme_svdstop_get_member_f77:[14,2,1,"c.primme_svdstop_get_member_f77"],primmetop_get_member_f77:[8,2,1,"c.primmetop_get_member_f77"],primmetop_get_prec_shift_f77:[8,2,1,"c.primmetop_get_prec_shift_f77"],ptr:[8,0,1,"c.ptr"],sprimme:[7,2,1,"c.sprimme"],sprimme_f77:[8,2,1,"c.sprimme_f77"],sprimme_svds:[13,2,1,"c.sprimme_svds"],sprimme_svds_f77:[14,2,1,"c.sprimme_svds_f77"],zprimme:[7,2,1,"c.zprimme"],zprimme_f77:[8,2,1,"c.zprimme_f77"],zprimme_normal:[7,2,1,"c.zprimme_normal"],zprimme_normal_f77:[8,2,1,"c.zprimme_normal_f77"],zprimme_svds:[13,2,1,"c.zprimme_svds"],zprimme_svds_f77:[14,2,1,"c.zprimme_svds_f77"]},"primme_params.correctionParams":{convTest:[2,3,1,"c.primme_params.correctionParams.convTest"],maxInnerIterations:[2,3,1,"c.primme_params.correctionParams.maxInnerIterations"],precondition:[2,3,1,"c.primme_params.correctionParams.precondition"],relTolBase:[2,3,1,"c.primme_params.correctionParams.relTolBase"],robustShifts:[2,3,1,"c.primme_params.correctionParams.robustShifts"]},"primme_params.correctionParams.projectors":{LeftQ:[2,3,1,"c.primme_params.correctionParams.projectors.LeftQ"],LeftX:[2,3,1,"c.primme_params.correctionParams.projectors.LeftX"],RightQ:[2,3,1,"c.primme_params.correctionParams.projectors.RightQ"],RightX:[2,3,1,"c.primme_params.correctionParams.projectors.RightX"],SkewQ:[2,3,1,"c.primme_params.correctionParams.projectors.SkewQ"],SkewX:[2,3,1,"c.primme_params.correctionParams.projectors.SkewX"]},"primme_params.projectionParams":{projection:[2,3,1,"c.primme_params.projectionParams.projection"]},"primme_params.restartingParams":{maxPrevRetain:[2,3,1,"c.primme_params.restartingParams.maxPrevRetain"]},"primme_params.stats":{elapsedTime:[2,3,1,"c.primme_params.stats.elapsedTime"],estimateLargestSVal:[2,3,1,"c.primme_params.stats.estimateLargestSVal"],estimateMaxEVal:[2,3,1,"c.primme_params.stats.estimateMaxEVal"],estimateMinEVal:[2,3,1,"c.primme_params.stats.estimateMinEVal"],lockingIssue:[2,3,1,"c.primme_params.stats.lockingIssue"],maxConvTol:[2,3,1,"c.primme_params.stats.maxConvTol"],numBroadcast:[2,3,1,"c.primme_params.stats.numBroadcast"],numGlobalSum:[2,3,1,"c.primme_params.stats.numGlobalSum"],numMatvecs:[2,3,1,"c.primme_params.stats.numMatvecs"],numOrthoInnerProds:[2,3,1,"c.primme_params.stats.numOrthoInnerProds"],numOuterIterations:[2,3,1,"c.primme_params.stats.numOuterIterations"],numPreconds:[2,3,1,"c.primme_params.stats.numPreconds"],numRestarts:[2,3,1,"c.primme_params.stats.numRestarts"],timeBroadcast:[2,3,1,"c.primme_params.stats.timeBroadcast"],timeGlobalSum:[2,3,1,"c.primme_params.stats.timeGlobalSum"],timeMatvec:[2,3,1,"c.primme_params.stats.timeMatvec"],timeOrtho:[2,3,1,"c.primme_params.stats.timeOrtho"],timePrecond:[2,3,1,"c.primme_params.stats.timePrecond"],volumeBroadcast:[2,3,1,"c.primme_params.stats.volumeBroadcast"],volumeGlobalSum:[2,3,1,"c.primme_params.stats.volumeGlobalSum"]},"primme_svds_params.stats":{elapsedTime:[3,3,1,"c.primme_svds_params.stats.elapsedTime"],lockingIssue:[3,3,1,"c.primme_svds_params.stats.lockingIssue"],numBroadcast:[3,3,1,"c.primme_svds_params.stats.numBroadcast"],numGlobalSum:[3,3,1,"c.primme_svds_params.stats.numGlobalSum"],numMatvecs:[3,3,1,"c.primme_svds_params.stats.numMatvecs"],numOrthoInnerProds:[3,3,1,"c.primme_svds_params.stats.numOrthoInnerProds"],numOuterIterations:[3,3,1,"c.primme_svds_params.stats.numOuterIterations"],numPreconds:[3,3,1,"c.primme_svds_params.stats.numPreconds"],numRestarts:[3,3,1,"c.primme_svds_params.stats.numRestarts"],timeBroadcast:[3,3,1,"c.primme_svds_params.stats.timeBroadcast"],timeGlobalSum:[3,3,1,"c.primme_svds_params.stats.timeGlobalSum"],timeMatvec:[3,3,1,"c.primme_svds_params.stats.timeMatvec"],timeOrtho:[3,3,1,"c.primme_svds_params.stats.timeOrtho"],timePrecond:[3,3,1,"c.primme_svds_params.stats.timePrecond"],volumeBroadcast:[3,3,1,"c.primme_svds_params.stats.volumeBroadcast"],volumeGlobalSum:[3,3,1,"c.primme_svds_params.stats.volumeGlobalSum"]},primme:{eigsh:[10,6,1,""],svds:[11,6,1,""]},primme_params:{BNorm:[2,3,1,"c.primme_params.BNorm"],ShiftsForPreconditioner:[2,3,1,"c.primme_params.ShiftsForPreconditioner"],aNorm:[2,3,1,"c.primme_params.aNorm"],applyPreconditioner:[2,3,1,"c.primme_params.applyPreconditioner"],applyPreconditioner_type:[2,3,1,"c.primme_params.applyPreconditioner_type"],broadcastReal:[2,3,1,"c.primme_params.broadcastReal"],broadcastReal_type:[2,3,1,"c.primme_params.broadcastReal_type"],commInfo:[2,3,1,"c.primme_params.commInfo"],convTestFun:[2,3,1,"c.primme_params.convTestFun"],convTestFun_type:[2,3,1,"c.primme_params.convTestFun_type"],convtest:[2,3,1,"c.primme_params.convtest"],dynamicMethodSwitch:[2,3,1,"c.primme_params.dynamicMethodSwitch"],eps:[2,3,1,"c.primme_params.eps"],globalSumReal:[2,3,1,"c.primme_params.globalSumReal"],globalSumReal_type:[2,3,1,"c.primme_params.globalSumReal_type"],initBasisMode:[2,3,1,"c.primme_params.initBasisMode"],initSize:[2,3,1,"c.primme_params.initSize"],internalPrecision:[2,3,1,"c.primme_params.internalPrecision"],invBNorm:[2,3,1,"c.primme_params.invBNorm"],iseed:[2,3,1,"c.primme_params.iseed"],ldOPs:[2,3,1,"c.primme_params.ldOPs"],ldevecs:[2,3,1,"c.primme_params.ldevecs"],locking:[2,3,1,"c.primme_params.locking"],massMatrix:[2,3,1,"c.primme_params.massMatrix"],massMatrixMatvec:[2,3,1,"c.primme_params.massMatrixMatvec"],massMatrixMatvec_type:[2,3,1,"c.primme_params.massMatrixMatvec_type"],matrix:[2,3,1,"c.primme_params.matrix"],matrixMatvec:[2,3,1,"c.primme_params.matrixMatvec"],matrixMatvec_type:[2,3,1,"c.primme_params.matrixMatvec_type"],maxBasisSize:[2,3,1,"c.primme_params.maxBasisSize"],maxBlockSize:[2,3,1,"c.primme_params.maxBlockSize"],maxMatvecs:[2,3,1,"c.primme_params.maxMatvecs"],maxOuterIterations:[2,3,1,"c.primme_params.maxOuterIterations"],minRestartSize:[2,3,1,"c.primme_params.minRestartSize"],monitor:[2,3,1,"c.primme_params.monitor"],monitorFun:[2,3,1,"c.primme_params.monitorFun"],monitorFun_type:[2,3,1,"c.primme_params.monitorFun_type"],n:[2,3,1,"c.primme_params.n"],nLocal:[2,3,1,"c.primme_params.nLocal"],numEvals:[2,3,1,"c.primme_params.numEvals"],numOrthoConst:[2,3,1,"c.primme_params.numOrthoConst"],numProcs:[2,3,1,"c.primme_params.numProcs"],numTargetShifts:[2,3,1,"c.primme_params.numTargetShifts"],orth:[2,3,1,"c.primme_params.orth"],outputFile:[2,3,1,"c.primme_params.outputFile"],preconditioner:[2,3,1,"c.primme_params.preconditioner"],printLevel:[2,3,1,"c.primme_params.printLevel"],procID:[2,3,1,"c.primme_params.procID"],queue:[2,3,1,"c.primme_params.queue"],target:[2,3,1,"c.primme_params.target"],targetShifts:[2,3,1,"c.primme_params.targetShifts"]},primme_preset_method:{PRIMME_Arnoldi:[2,3,1,"c.primme_preset_method.PRIMME_Arnoldi"],PRIMME_DEFAULT_MIN_MATVECS:[2,3,1,"c.primme_preset_method.PRIMME_DEFAULT_MIN_MATVECS"],PRIMME_DEFAULT_MIN_TIME:[2,3,1,"c.primme_preset_method.PRIMME_DEFAULT_MIN_TIME"],PRIMME_DYNAMIC:[2,3,1,"c.primme_preset_method.PRIMME_DYNAMIC"],PRIMME_GD:[2,3,1,"c.primme_preset_method.PRIMME_GD"],PRIMME_GD_Olsen_plusK:[2,3,1,"c.primme_preset_method.PRIMME_GD_Olsen_plusK"],PRIMME_GD_plusK:[2,3,1,"c.primme_preset_method.PRIMME_GD_plusK"],PRIMME_JDQMR:[2,3,1,"c.primme_preset_method.PRIMME_JDQMR"],PRIMME_JDQMR_ETol:[2,3,1,"c.primme_preset_method.PRIMME_JDQMR_ETol"],PRIMME_JDQR:[2,3,1,"c.primme_preset_method.PRIMME_JDQR"],PRIMME_JD_Olsen_plusK:[2,3,1,"c.primme_preset_method.PRIMME_JD_Olsen_plusK"],PRIMME_LOBPCG_OrthoBasis:[2,3,1,"c.primme_preset_method.PRIMME_LOBPCG_OrthoBasis"],PRIMME_LOBPCG_OrthoBasis_Window:[2,3,1,"c.primme_preset_method.PRIMME_LOBPCG_OrthoBasis_Window"],PRIMME_RQI:[2,3,1,"c.primme_preset_method.PRIMME_RQI"],PRIMME_STEEPEST_DESCENT:[2,3,1,"c.primme_preset_method.PRIMME_STEEPEST_DESCENT"]},primme_svds_params:{aNorm:[3,3,1,"c.primme_svds_params.aNorm"],applyPreconditioner:[3,3,1,"c.primme_svds_params.applyPreconditioner"],applyPreconditioner_type:[3,3,1,"c.primme_svds_params.applyPreconditioner_type"],broadcastReal:[3,3,1,"c.primme_svds_params.broadcastReal"],broadcastReal_type:[3,3,1,"c.primme_svds_params.broadcastReal_type"],commInfo:[3,3,1,"c.primme_svds_params.commInfo"],convTestFun:[3,3,1,"c.primme_svds_params.convTestFun"],convTestFun_type:[3,3,1,"c.primme_svds_params.convTestFun_type"],convtest:[3,3,1,"c.primme_svds_params.convtest"],eps:[3,3,1,"c.primme_svds_params.eps"],globalSumReal:[3,3,1,"c.primme_svds_params.globalSumReal"],globalSumReal_type:[3,3,1,"c.primme_svds_params.globalSumReal_type"],initSize:[3,3,1,"c.primme_svds_params.initSize"],internalPrecision:[3,3,1,"c.primme_svds_params.internalPrecision"],iseed:[3,3,1,"c.primme_svds_params.iseed"],locking:[3,3,1,"c.primme_svds_params.locking"],m:[3,3,1,"c.primme_svds_params.m"],mLocal:[3,3,1,"c.primme_svds_params.mLocal"],matrix:[3,3,1,"c.primme_svds_params.matrix"],matrixMatvec:[3,3,1,"c.primme_svds_params.matrixMatvec"],matrixMatvec_type:[3,3,1,"c.primme_svds_params.matrixMatvec_type"],maxBasisSize:[3,3,1,"c.primme_svds_params.maxBasisSize"],maxBlockSize:[3,3,1,"c.primme_svds_params.maxBlockSize"],maxMatvecs:[3,3,1,"c.primme_svds_params.maxMatvecs"],method:[3,3,1,"c.primme_svds_params.method"],methodStage2:[3,3,1,"c.primme_svds_params.methodStage2"],monitor:[3,3,1,"c.primme_svds_params.monitor"],monitorFun:[3,3,1,"c.primme_svds_params.monitorFun"],monitorFun_type:[3,3,1,"c.primme_svds_params.monitorFun_type"],n:[3,3,1,"c.primme_svds_params.n"],nLocal:[3,3,1,"c.primme_svds_params.nLocal"],numOrthoConst:[3,3,1,"c.primme_svds_params.numOrthoConst"],numProcs:[3,3,1,"c.primme_svds_params.numProcs"],numSvals:[3,3,1,"c.primme_svds_params.numSvals"],numTargetShifts:[3,3,1,"c.primme_svds_params.numTargetShifts"],outputFile:[3,3,1,"c.primme_svds_params.outputFile"],precondition:[3,3,1,"c.primme_svds_params.precondition"],preconditioner:[3,3,1,"c.primme_svds_params.preconditioner"],primme:[3,3,1,"c.primme_svds_params.primme"],primmeStage2:[3,3,1,"c.primme_svds_params.primmeStage2"],printLevel:[3,3,1,"c.primme_svds_params.printLevel"],procID:[3,3,1,"c.primme_svds_params.procID"],queue:[3,3,1,"c.primme_svds_params.queue"],target:[3,3,1,"c.primme_svds_params.target"],targetShifts:[3,3,1,"c.primme_svds_params.targetShifts"]},primme_svds_preset_method:{primme_svds_augmented:[3,3,1,"c.primme_svds_preset_method.primme_svds_augmented"],primme_svds_default:[3,3,1,"c.primme_svds_preset_method.primme_svds_default"],primme_svds_hybrid:[3,3,1,"c.primme_svds_preset_method.primme_svds_hybrid"],primme_svds_normalequations:[3,3,1,"c.primme_svds_preset_method.primme_svds_normalequations"]}},objnames:{"0":["c","type","C type"],"1":["c","macro","C macro"],"2":["c","function","C function"],"3":["c","member","C member"],"4":["f","subroutine","Fortran subroutine"],"5":["f","type","Fortran type"],"6":["py","function","Python function"]},objtypes:{"0":"c:type","1":"c:macro","2":"c:function","3":"c:member","4":"f:subroutine","5":"f:type","6":"py:function"},terms:{"0035e":10,"0204e":10,"0618e":10,"0d0":[9,15],"1_c_int64_t":[9,15],"1d0":[9,15],"200x50":6,"64bit":4,"abstract":[9,15],"case":[2,3,4,8,14],"char":[2,3],"class":5,"const":[2,3],"default":[2,3,4,5,6,7,8,9,10,11,13,14,15],"enum":4,"float":[2,3,4,7,10,11,13],"function":[2,3,4,5,6,7,8,9,10,11,13,14,15],"import":[10,11],"int":[2,3,4,7,8,10,11,13],"long":8,"new":[2,3,4,7,8,9,13,14,15],"null":[2,3,7],"return":[2,3,4,5,6,7,8,9,10,11,13,14,15],"short":2,"static":4,"switch":[2,5],"true":[5,10,11],"try":[2,3],"void":[2,3,7,8,13,14],"while":6,Added:4,For:[2,3,4,7,8,10,13,14],Its:[2,3],Not:3,One:[2,3,8,9,14,15],That:2,The:[2,3,4,5,6,7,8,9,10,11,13,14,15],Then:[2,7,13],There:[7,13],These:[2,7,13],Use:[8,14],Used:[2,3],Useful:[10,11],Using:4,With:[2,3],_64:4,__fp16:2,__int64:4,aah:6,abl:[2,3],about:[2,3,4,5,7,9,13,15],abov:4,abs:[6,11],absolut:[2,3,5],acceler:[2,3,4,5,7,10,11,13],accept:[5,6],access:2,account:2,accur:[2,4,11],accuraci:[13,14,15],achiev:[3,11,13,14,15],aci:4,acm:[4,10],across:4,act:[2,3],action:4,actual:[2,3,7,13],adapt:2,add:4,added:[2,3,4,10,11],addit:[2,5,7,10,13],adiag:10,advanc:[4,7,13],after:[2,3,4,5,7,8,9,13,14,15],afun:[5,6],again:2,against:2,aha:6,aka:4,alcald:4,algebra:[2,5,10],algorithm:[2,3,4],all:[2,3,4,5,6,7,8,9,13,14,15],alloc:[2,3,7,8,9,13,14,15],allow:[2,3,9,15],along:3,alreadi:[2,3],also:[2,3,4,5,6,7,8,9,10,13],altern:[2,5,6,7,13],although:[7,8,9,13],amatmat:10,among:[7,13],andrea:[4,10],ani:[2,3,5],anjuta:4,anorm:[2,3,5,6,7,9,13,15],anoth:[2,3,5,6],append:[2,4],appli:[2,3,5,6],applic:[2,3,6,7,11,13],applyprecon:[9,15],applyprecondition:[2,3,4,7,8,9,13,14,15],applypreconditioner_typ:[2,3,4,7,13],approx:[3,5],approxim:[2,3,5,6,7,10,11,13,14,15],april:4,arang:[10,11],architectur:[2,3,4],argument:[2,3,7,13],arithmet:4,arnoldi:[2,5],around:2,arpack:2,arrai:[2,3,5,7,8,9,10,11,13,14,15],arxiv:11,asarrai:10,ascend:2,assign:4,associ:[2,3,7,9,13,15],astyp:11,attribut:10,aug:6,augment:[3,6,11,13,14,15],avail:[2,3,4,6,7,13,14,15],avoid:[2,3,5,10,11],awk:[2,3],ax_i:2,axi:11,base:[2,3],basi:[2,3,6,10,11],basic:[7,13],basisev:[2,3],basisflag:[2,3],basisnorm:[2,3],basiss:[2,3],basissv:3,bdiag:11,bdiagr:11,becaus:[2,3],becom:2,been:[2,3,4],befor:[2,3,7,13],begin:[3,13,14,15],being:3,below:[2,3],besid:4,best:[2,3,5,10],better:[2,4],between:[2,10],bfun:5,bibtex:4,binari:4,bit:[2,4,8],bla:4,blk:[2,3],block:[2,3,4,5,6],blocksiz:[2,3,9,15],bmatmat:11,bnorm:[2,4,7],bool:[10,11],both:[3,4,6,11],bracket:[2,3,5,6],brmatmat:11,broadcast:[2,3,4,7],broadcastfordoubl:[2,3],broadcastr:[2,3,4,7,8,9,13,14,15],broadcastreal_typ:[2,3,4,7,13],bsd:4,buckl:10,buffer:[2,3],bug:[2,3,4],build:4,built:[4,7,13],bx_i:2,c99:4,c_doubl:[9,15],c_f_pointer:[8,9,14],c_funloc:[9,15],c_funptr:[9,15],c_int64:[9,15],c_int64_t:[9,15],c_int:[9,15],c_ptr:[8,9,14,15],call:[2,3,4,5,6,7,8,9,10,11,13,14,15],callabl:[10,11],callback:[4,7,8,9,13,14,15],can:[2,3,4,5,6,7,8,9,10,11,13],caylei:10,ccf:4,cento:4,certain:[2,3,4],cflag:4,cgt:[5,10],chang:[2,3,4,7,8,9,13],changelog:12,cheap:2,cheaper:2,check:[4,7,13],choic:[2,3,7,13],choleski:2,choos:10,cite:12,clang:4,classic:[2,5],claus:4,clean:4,clock:[2,3],close:[2,3,11],closer:2,closest:[2,3,5,6,10,11],clt:[5,10],code:[0,1,7,8,9,10,12,13,14,15],coher:[2,3],colleg:4,column:[2,3,5,6,7,8,9,10,11,13,14,15],com:[10,11],combin:3,comm:[8,14],command:4,comminfo:[2,3,7,13],common:4,commonsrc:2,commun:[2,3],compat:4,compil:[2,3,4,7,8,13],complet:4,complex:[2,4,5,6,7,8,9,10,11,13,14,15],compos:[7,13],comput:[2,3,4,5,6,7,8,9,10,11,13,14,15],concaten:11,condit:2,configur:[2,4,7,8,9,13,14,15],consecut:3,consid:[2,3,4,5,6,10,11],consider:[2,3],constant:[2,4],constrain:[7,11,13],constraint:[2,3,5,6],contact:12,contain:[2,3],content:[4,7,8,9,13,14,15],contributor:12,control:[2,5,6],conv:[2,3],converg:[2,3,4,5,6,7,10,11,13],convtest:[2,3,5,7,10,11,13],convtestfun:[2,3,4,5,6,7,8,9,13,14,15],convtestfun_typ:[2,3,4],coordin:4,copi:4,copyright:4,core:4,correct:[2,3],correction_param:7,correctionparam:[2,7],correspond:[2,3,4,5,6,10],cost:[2,5],could:[2,3],count:[2,3,6],counter:[2,3,4],coupl:4,cprimm:[2,7,8],cprimme_norm:7,cprimme_svd:[3,13],cpu:[2,3,7,8,9,13,14,15],crai:4,creat:[4,7,9,13,15],creator:4,criteria:[2,3,4],criterion:[2,3,4,5,6,7,10,13],critic:4,ctr:4,cumul:11,current:[2,3,9,13,14,15],custom:[2,3,4,7,13],cygwin:4,daniel:2,data:[2,3,7,10,13],datatyp:[8,9],davidson:[2,4,5],deal:[8,14],decemb:4,decis:4,declar:[7,8,9,13,14,15],decomposit:[10,11],def:[10,11],default_min_matvec:10,default_min_tim:[5,6,10],defin:[2,3,4,7,10,11,13],definit:4,delet:[8,14],delta:2,delta_:2,depart:4,depend:[3,7,13,14,15],descend:2,descent:2,describ:4,descript:[0,1,4,10,12],descriptor:[7,13,14],detail:[4,7,8,9,10,13,14,15],develop:4,deviat:2,df77underscor:4,diag:[5,6,10,11],diagon:[2,5,6],dict:[10,11],didact:4,differ:[2,3,4,5],difficult:4,dim:5,dimens:[2,3,4,5,7,8,9,13,15],dimension:[2,3],directli:2,directori:[7,12],disp:[5,6],displac:2,displai:[5,7,13,14],distribut:3,divid:2,dlarnv:[2,3],doc:[4,10],document:[4,9,15],doe:[2,3,4],doesn:4,don:[8,14],done:[2,3,4,8,9],dot:10,doubl:[2,3,4,5,6,7,8,13,14],down:[2,3],dprimm:[2,7,8],dprimme_blas_suffix:4,dprimme_blasint_s:4,dprimme_magma:2,dprimme_svd:[3,4,13],dprimme_svds_magma:3,driver:4,dtest:4,dtype:11,durat:[2,3],dure:[2,3,10],dynam:[2,4,5,10],dynamicmethodswitch:[2,7],each:[2,3,6],easier:3,eclips:4,edu:[4,10],effici:[2,5],eig:[4,5,10,11],eigenpair:[2,5,7,8,9,10,13,14,15],eigenproblem:[2,4,6,7,8,9,10],eigensolv:[2,3,5,6,10,12],eigenvalu:[2,3,4,5,7,8,9,10,11,12,13],eigenvector:[2,4,5,7,8,9,10,11,13,14,15],eigsh:[10,11],either:[2,3,5],elaps:[2,3,5,6],elapsedtim:[2,3,10,11],element:[2,3],eloi:4,els:[2,3,6],elsewher:3,email:4,empti:5,enabl:[2,3],end:[2,3,13,14,15],energi:4,enough:2,enumer:[7,8,9,13,14,15],environ:[2,3,4],epair:2,eps:[2,3,5,6,7,13],epsilon:[3,11],equal:[2,3],equat:[2,3,4,6,11],equival:[2,3,5,6,10,11],err:10,error:[0,1,4,7,8,9,10,12,13,14,15],especi:4,essl:4,estim:[2,3,5,6],estimatebnorm:4,estimateinvbnorm:4,estimatelargestsv:[2,10],estimatemaxev:[2,10],estimateminev:[2,10],etc:[2,3,7,13],eval:[2,5,7,8,9,10],evalu:[2,3],evec:[2,3,4,5,7,8,9,10],even:[2,4],event:[2,3],eventu:3,everi:[2,3,4,5,6,10,11],ex_eigs_dmagma:2,ex_svds_dmagma:3,ex_zseq:2,exact:5,exampl:[2,3,4,5,6,7,9,10,11,13,15],exascal:4,except:10,exclus:[8,14],execut:[2,3,4],exit:[2,3],expect:[3,4],expens:2,expert:2,exsvd_zseq:3,extens:[8,14],extern:[2,3,4,5,6],extra:[4,5,6,10,11],extract:[2,4],extrem:4,eye:5,f77:4,f77underscor:4,factor:[2,3,6],fail:[2,4],failur:[2,3],fals:[5,10,11],farthest:[5,10],fashion:2,faster:2,fastest:2,featur:[2,3],few:[4,5,6],fewer:2,field:[2,3,6,7,8,9,13,14,15],fifth:5,file:[2,3,4,7,13,14],find:[2,3,4,5,6,7,10,11,13],first:[2,3,5,6,7,8,9,10,11,13,14,15],fix:[2,4],flag:[2,4,15],flat:11,float32:11,flop:2,flopsdens:4,follow:[2,3,4,6,7,8,9,13,14,15],forc:2,format:4,fortran:[0,1,3,4,12],found:[4,7,10,13],foundat:4,four:6,frac:2,framework:4,free:[2,7,8,9,13,14,15],freebsd:4,from:[2,3,4,5,6,8,10,14],full:[2,3,4],fun:[5,6],further:[2,3,4],furthest:2,futur:2,galerkin:2,gcc:4,gdk:2,gener:[2,3,4,5,7,8,9,10,11],get:[2,8,9,14,15],gettimeofdai:2,gfortran:4,github:[4,10,11],give:[10,11],given:[2,3,5],global:[2,3],globalsumr:[2,3,4,7,8,9,13,14,15],globalsumreal_typ:[2,3,4,7,13],gnu:4,gnuplot:[2,3],going:[2,7,13],good:2,gpu:[2,3,4,7,8,9,13,14,15],gpuarrai:5,gram:2,grant:4,granular:[5,6],greater:[2,5,10],grep:[2,3],guess:[2,3,5,6,10,11],half:[2,3,4,7,13],handi:[2,3],handl:[5,6],handler:[5,6],hard:[2,3,5,6],harmon:[2,4],has:[2,3,4,5,6,7,8,9,13,14,15],have:[2,3,4,6,7,9,11,13,15],header:[4,7,13],heavi:5,help:[7,13],hermitian:[4,5,7,8,9,10,11],high:[4,5,11],higher:2,hist:[5,6,10,11],histori:[2,3,4,5,6,7,13],hold:[2,3],honor:4,host:[7,8,9,13,14,15],how:[2,3,5,6,7,13],howev:[2,3,11],hprimm:[2,4,7],hprimme_svd:13,hsprimm:7,hsprimme_svd:13,html:[4,10],http:[4,10,11],hybrid:[4,11],hypr:4,iblock:[2,3],icc:4,ident:[2,3],identifi:2,ierr:[2,3,8,9,14,15],ignor:[2,3,10,11],ilp64:4,ilu:5,implement:[2,4,5],implic:[2,3],implicit:[8,14],improv:[2,3,4],inc:[9,15],includ:[4,5,7,13],incompat:12,incomplet:6,independ:[2,6],index:[2,3,5,6,7,8,9,12],indic:[2,3,4,5,6,7,8,9,13,14,15],inexpens:2,inf:[5,6],info:[2,3],inform:[2,3,5,10,11,12],initbasismod:[2,7],initi:[2,3,4,5,6,7,8,9,10,11,13,14,15],inits:[2,3,5,6,7,8,9,13,14,15],inn:[2,3],inner:[2,3,4,5],inner_it:[2,3],input:[2,3,4,7,8,9,13,14,15],insid:[8,14],instal:4,instanc:[2,4,8,14],instead:[3,4,5,6],int32_t:4,int64_t:4,int_max:[2,3],integ:[2,3,4,8,9,14,15],interfac:[0,1,3,4,12],interg:4,interior:[2,4,5,7,13],intern:[2,3,5,6,7,8,9,13,14,15],internalprecis:[2,3,4,7,8,9,13,14,15],introduct:[7,13],intwork:4,intworks:4,invbnorm:[2,4,7],invers:[2,10,11],invert:2,invit:[2,5],involv:2,isconv:[2,3],isdoubl:[5,6],ise:[2,3,4,5,6,7,13],isgpu:5,ishermitian:5,isn:[2,3],iso_c_bind:[8,9,14],isreal:[5,6],issu:[2,4],iter:[2,3,5,6,10,11,12],its:[2,7,13],jacobi:[2,4,5,6],jame:4,jdcg:[2,5],jdqmr:[2,3,5,10],jdqr:[2,5],juli:4,karg:[10,11],kcprimme_norm:7,kdevelop:4,keep:[2,3,5],kei:[2,3],kept:[2,5,10],kind:[4,9,15],knowledg:[2,3],known:[2,3],kprimm:[4,7],kprimme_norm:7,kprimme_svd:13,krylov:2,ksprimm:7,ksprimme_svd:13,label:[8,9,14,15],lamba:10,lambda:[2,4,7,10],lambda_:2,lambda_i:2,languag:3,lapack:[2,3,4],laplacianmatrixmatvec:7,larg:[2,4,6,11],larger:[2,3,4],largest:[2,3,4,5,6,10,11],last:[2,3],later:[4,11],lbla:4,ldevec:[2,4,7,8,9],ldflag:4,ldop:[2,4,7],ldx:[2,3,9,15],ldy:[2,3,9,15],lead:[2,3,4,7,8,9,15],least:[2,3,7,8,9,13,14,15],led:4,left:[2,3,5,6,10,11,13,14,15],leftmost:10,leftq:[2,5],leftsvec:3,leftx:[2,5],legaci:[2,5],len:[10,11],length:[2,3],less:[2,3,5,11],level:[2,3,5,6],lgfortran:4,lgplv3:4,lib:4,libdprimm:4,libprimm:4,librari:[0,1,4,12],libzprimm:4,licens:12,like:[3,4],limit:4,lin:[2,3],linalg:[10,11],line:4,linear:[2,3,4],linearoper:[10,11],lingfei:4,link:[2,12],link_flag:4,linker:4,llapack:4,lobpcg:2,local:[2,3,7,8,9,13,14,15],locat:4,lock:[2,3,4,5,6,7,10,13],lockedev:[2,3],lockedflag:[2,3],lockednorm:[2,3],lockedsv:3,lockingissu:[2,3,4],log2:2,longer:4,low:5,lower:2,lp64:4,lprimm:4,lsre:[2,3],lsvec:6,machin:[2,3,5,10,11],maco:4,macro:[3,4],made:4,magma_cprimm:[7,8],magma_cprimme_norm:7,magma_cprimme_svd:13,magma_dprimm:[2,4,7,8],magma_dprimme_svd:[4,13],magma_hprimm:7,magma_hprimme_svd:13,magma_hsprimm:7,magma_hsprimme_svd:13,magma_kcprimme_norm:7,magma_kprimm:7,magma_kprimme_norm:7,magma_kprimme_svd:13,magma_ksprimm:7,magma_ksprimme_svd:13,magma_queue_t:[2,3],magma_sprimm:[7,8],magma_sprimme_svd:13,magma_zprimm:[7,8],magma_zprimme_norm:[4,7],magma_zprimme_svd:13,magnitud:[2,5,10],mai:[2,3,4,5,7,8,9,11,13],main:[2,3,8,12,14],major:[2,3,9,15],make:[2,3,7,12,13],make_flag:4,make_link:4,makefil:4,manag:4,mani:[2,3,4,6,7,13],mari:4,mark:[2,3,10,11],mass:7,massmatrix:[2,4,7],massmatrixmatvec:[2,4,7,8,9],massmatrixmatvec_typ:[2,4,7],match:[2,3],mathcal:2,mathemat:[4,10],matlab:[0,1,4,12],matmat:[10,11],matric:[2,4,5,7],matrix:[2,3,4,5,6,7,9,10,11,13,14,15],matrixmarket:4,matrixmatvec:[2,3,4,7,8,9,13,14,15],matrixmatvec_typ:[2,3,4,7,13],matvec:[2,3,5,6,10,11],max:10,maxbasiss:[2,3,5,6,7,13],maxblocks:[2,3,5,6,7,10,11,13],maxconvtol:2,maximum:[2,3,5,6,10,11],maxinneriter:[2,5],maxit:[5,6,10,11],maxmatvec:[2,3,4,5,6,7,13],maxouteriter:[2,5,7],maxprevretain:[2,5,10],mccomb:[4,10],mean:[2,11,15],member:4,memori:[2,3,4,7,8,9,13,14,15],messag:[2,3],method:[0,1,4,5,6,7,8,9,10,11,12,13,14,15],methodstage1:[11,13,14,15],methodstage2:[3,11,13,14,15],min:[3,10,11],mingw:4,minim:2,minimum:[2,3,5,11],minor:[2,4],minrestarts:[2,5,7,10,13],minv:10,misconverg:[2,5],mlocal:[3,13,14,15],mode:[3,10,15],modif:5,modifi:2,modul:4,monitor:[2,3,4,7,13],monitorfun:[2,3,4,7,13],monitorfun_typ:[2,3,4],monoton:[2,3],more:[2,3,4,6,7,9,13,15],most:[2,3,7,8,9,13,14,15],mpi:[2,3,4],mpi_allreduc:[2,3,8,14],mpi_bcast:[2,3],mpi_comm:[2,3,8,14],mpi_comm_world:[8,14],mpi_doubl:[2,3,8,14],mpi_float:[2,3],mpi_in_plac:[2,3],mpi_success:[2,3],mpi_sum:[2,3,8,14],mpiu_real:[2,3],msg:[2,3],multimethod:[10,12],multipl:[2,3,4,5],multipli:11,multivector:[2,3],must:[2,3,5,10,11],mvec:[2,3],name:[2,3,4],nation:4,nconv:[10,11],ncv:[10,11],ndarrai:[10,11],nearli:4,necessarili:7,need:[2,3,4,8,14],neg:[8,14,15],nev:5,new_ev:10,new_evec:10,newli:[2,3],next:[2,3,4,5,7,8,9,10,13,14,15],nlocal:[2,3,4,7,8,9,13,14,15],nofil:5,non:[2,3,9,15],none:[8,10,11,14],nonempti:6,nonsymmetr:[10,11],nonzero:[2,3,5,6,7,9,13,15],norm:[2,3,5,6,7,8,9,10,11,13,14,15],normal:[3,4,5,6,7,8,9,10,11],notai:2,note:[2,3,10,11],notransp:6,now:[2,3,4,10,11],nsci:4,num_ibm:4,num_sum:4,number:[2,3,4,5,6,7,9,10,11,13,15],numbroadcast:[2,3,4],numconverg:[2,3],numev:[2,7,8,9],numglobalsum:[2,3,4],numlock:[2,3],nummatvec:[2,3,4,10,11],numorthoconst:[2,3,5,6,7,8,9,13,14,15],numorthoinnerprod:[2,3],numouteriter:[2,3,4,10,11],numpi:[4,10,11],numprecond:[2,3,4,10,11],numproc:[2,3,7,13],numrestart:[2,3,4,10,11],numsval:[3,13,14,15],numtargetshift:[2,3,7,9,13,15],object:10,obtain:[2,10],occur:[2,3],octav:4,octob:4,olsen:[2,5],one:[2,3,4,5,6,7,8,9,10,13,14,15],ones:[2,4,5,6,10],onli:[2,3,5,6,7,8,9,10,11,13,14,15],open:[2,3],openbla:4,oper:[2,3,4,7,8,9,10,13,14,15],opinv:10,opt:[5,6],optim:[2,4],option:[2,3,4,6,7,8,10,11,13],order:[2,3,4,9,10,15],org:11,origin:5,orth:[2,4,7],orthoconst:[5,6],orthogon:[2,3,4,5,6,7,10,11,13],orthonorm:[2,3,6,10,11],orthou0:11,orthov0:11,other:[3,4,7,8,10,11,13,14],otherwis:[2,3,5,6,7,8,9,13,14,15],our:5,out:[2,3,4,5,9,15],outer:[2,3,5,6,10,11],outit:2,outpufil:[2,3],output:[2,3,4,5,6,8,9,14,15],outputfil:[2,3,7,13,14],over:[2,3],overal:[2,3],p_q:2,p_x:2,packag:4,page:12,pair:[2,3,5,10],paper:4,par_globalsumdoubl:[8,14],par_globalsumfordoubl:[2,3],parallel:[2,3,4,7,8,9,13,14,15],param:7,paramet:[0,1,4,5,6,8,9,10,11,12,14,15],part:[4,7,8,9,13,14,15],particular:2,pass:[2,3,4,5],pcomm:[8,14],pdf:4,per:[2,4,5,6],perform:[2,3,4,6,7,8,9,10,11,13,14,15],perp:2,petsc:4,pfun:[5,6],platform:4,pleas:[2,3,4],plot:[2,3],plu:[2,3,6],pointer:[2,3,7,8,9,14,15],posit:[2,8],possibl:[2,3,10],practic:2,prec:11,precaah:11,precaha:11,precaug:11,precis:[2,3,4,5,6,7,8,9,10,11,13,14,15],precond:[5,6],precondit:[2,3,5,10,11,12],precondition:[2,3,4,5,6,7,10,11,13],prefer:[4,7,13],prefix:4,preset:[0,1,4,7,8,9,10,12,13,14,15],previou:[2,3,5,10,13],previous:[10,11],primari:4,prime:4,primm:[2,3,5,6,8,9,10,11,13,14,15],primme_:4,primme_adapt:[2,3],primme_adaptive_etoler:[2,3],primme_anorm:[8,9],primme_applyprecondition:[8,9],primme_applypreconditioner_typ:[8,9],primme_arnoldi:[2,5,7,8,9],primme_blas_suffix:4,primme_bnorm:[8,9],primme_broadcastr:[8,9],primme_broadcastreal_typ:[8,9],primme_closest_ab:[2,9],primme_closest_geq:2,primme_closest_leq:2,primme_comminfo:[8,9],primme_complex_doubl:[2,7,13],primme_complex_float:[2,7,13],primme_complex_half:[2,7,13],primme_convergencetest:2,primme_convtest:[8,9],primme_convtestfun:[8,9],primme_convtestfun_typ:[8,9],primme_correctionparams_convtest:[8,9],primme_correctionparams_maxinneriter:[8,9],primme_correctionparams_precondit:[8,9,15],primme_correctionparams_projectors_leftq:[8,9],primme_correctionparams_projectors_leftx:[8,9],primme_correctionparams_projectors_rightq:[8,9],primme_correctionparams_projectors_rightx:[8,9],primme_correctionparams_projectors_skewq:[8,9],primme_correctionparams_projectors_skewx:[8,9],primme_correctionparams_reltolbas:[8,9],primme_correctionparams_robustshift:[8,9],primme_decreasing_ltoler:2,primme_default_method:13,primme_default_min_matvec:[2,5,7,8,9],primme_default_min_tim:[2,4,5,7,8,9],primme_display_param:2,primme_display_stats_f77:4,primme_doubl:[2,3],primme_dtr:4,primme_dynam:[2,3,4,5,7,8,9],primme_dynamicmethodswitch:[8,9],primme_eig:[5,6],primme_eigs_matvec:9,primme_ep:[8,9],primme_ev:[2,3],primme_event_converg:[2,3],primme_event_inner_iter:[2,3],primme_event_lock:[2,3],primme_event_messag:[2,3],primme_event_outer_iter:[2,3],primme_f77:8,primme_f90:[9,15],primme_float:[2,3],primme_fre:4,primme_full_ltoler:2,primme_function_unavail:[2,3],primme_gd:[2,5,7,8,9],primme_gd_olsen_plusk:[2,5,7,8,9],primme_gd_plusk:[2,5,7,8,9],primme_get_member_f77:4,primme_globalsumr:[8,9],primme_globalsumreal_typ:[8,9],primme_half:[2,3,7,13],primme_init:[2,7],primme_init_krylov:2,primme_init_random:2,primme_init_us:2,primme_initbasismod:[8,9],primme_initi:2,primme_inits:[8,9],primme_int:[2,3,4,7,8,13],primme_int_p:4,primme_int_s:[2,4],primme_internalprecis:[8,9],primme_invbnorm:[8,9],primme_ise:[8,9],primme_jd_olsen_plusk:[2,5,7,8,9],primme_jdqmr:[2,4,5,7,8,9],primme_jdqmr_etol:[2,4,5,7,8,9],primme_jdqr:[2,5,7,8,9],primme_lapack_failur:[2,3],primme_largest:2,primme_largest_ab:2,primme_ldevec:[8,9],primme_ldop:[8,9],primme_lobpcg_orthobasi:[2,5,7,8,9],primme_lobpcg_orthobasis_window:[2,5,7,8,9],primme_lock:[8,9],primme_main_iter_failur:[2,3],primme_malloc_failur:[2,3],primme_massmatrix:[8,9],primme_massmatrixmatvec:[8,9],primme_massmatrixmatvec_typ:[8,9],primme_matrix:[8,9],primme_matrixmatvec:[8,9],primme_matrixmatvec_typ:[8,9],primme_maxbasiss:[8,9],primme_maxblocks:[8,9],primme_maxmatvec:[8,9],primme_maxouteriter:[8,9],primme_minrestarts:[8,9],primme_monitor:[8,9],primme_monitorfun:[8,9],primme_monitorfun_typ:[8,9],primme_n:[8,9],primme_nloc:[8,9],primme_numev:[8,9],primme_numorthoconst:[8,9],primme_numproc:[8,9],primme_numtargetshift:[8,9],primme_op_datatyp:[2,3,7,13],primme_op_default:[2,3],primme_op_half:2,primme_op_singl:2,primme_orth:[2,7,8,9],primme_orth_default:2,primme_orth_explicit_i:2,primme_orth_implicit_i:2,primme_ortho_const_failur:[2,3],primme_outputfil:[8,9],primme_parallel_failur:[2,3],primme_param:[3,4,7,13],primme_params_cr:4,primme_params_create_svd:15,primme_params_destroi:4,primme_precondition:[8,9],primme_preset_method:[2,4,7,8,9,13,14,15],primme_printlevel:[8,9],primme_procid:[8,9],primme_proj_default:2,primme_proj_harmon:2,primme_proj_refin:2,primme_proj_rr:2,primme_project:2,primme_projectionparams_project:[8,9],primme_queu:[8,9],primme_restartingparams_maxprevretain:[8,9],primme_rqi:[2,5,7,8,9],primme_set_memb:15,primme_set_member_f77:4,primme_set_method:[2,4,13,15],primme_set_method_f77:14,primme_shiftsforprecondition:9,primme_smallest:2,primme_stat:[4,7],primme_stats_elapsedtim:[8,9],primme_stats_estimatebnorm:[8,9],primme_stats_estimateinvbnorm:[8,9],primme_stats_estimatelargestsv:[8,9],primme_stats_estimatemaxev:[8,9],primme_stats_estimateminev:[8,9],primme_stats_flopsdens:[8,9],primme_stats_lockingissu:[8,9],primme_stats_maxconvtol:[8,9],primme_stats_numbroadcast:[8,9],primme_stats_numglobalsum:[8,9],primme_stats_nummatvec:[8,9],primme_stats_numorthoinnerprod:[8,9],primme_stats_numouteriter:[8,9],primme_stats_numprecond:[8,9],primme_stats_numrestart:[8,9],primme_stats_timebroadcast:[8,9],primme_stats_timedens:[8,9],primme_stats_timeglobalsum:[8,9],primme_stats_timematvec:[8,9],primme_stats_timeortho:[8,9],primme_stats_timeprecond:[8,9],primme_stats_volumebroadcast:[8,9],primme_stats_volumeglobalsum:[8,9],primme_steepest_desc:[2,4,5,7,8,9],primme_subspace_iter:4,primme_sv:13,primme_svd:[3,4,5,6,11,14,15],primme_svds_anorm:[14,15],primme_svds_applyprecondition:[14,15],primme_svds_applypreconditioner_typ:[14,15],primme_svds_aug:[3,6,13,14,15],primme_svds_broadcastr:[14,15],primme_svds_broadcastreal_typ:[14,15],primme_svds_closest_ab:[3,15],primme_svds_comminfo:[14,15],primme_svds_convtest:[14,15],primme_svds_convtestfun:[14,15],primme_svds_convtestfun_typ:[14,15],primme_svds_default:[3,13,14,15],primme_svds_display_param:3,primme_svds_ep:[14,15],primme_svds_f77:14,primme_svds_get_memb:15,primme_svds_get_member_f77:4,primme_svds_globalsumr:[14,15],primme_svds_globalsumreal_typ:[14,15],primme_svds_hybrid:[3,6,13,14,15],primme_svds_initi:3,primme_svds_inits:[14,15],primme_svds_internalprecis:[14,15],primme_svds_intwork:14,primme_svds_ise:[14,15],primme_svds_largest:3,primme_svds_lock:[14,15],primme_svds_m:[14,15],primme_svds_matrix:[14,15],primme_svds_matrixmatvec:[14,15],primme_svds_matrixmatvec_typ:[14,15],primme_svds_matvec:15,primme_svds_maxbasiss:[14,15],primme_svds_maxblocks:[14,15],primme_svds_maxmatvec:[14,15],primme_svds_method:[14,15],primme_svds_methodstage2:[14,15],primme_svds_mloc:[14,15],primme_svds_monitor:[14,15],primme_svds_monitorfun:[14,15],primme_svds_monitorfun_typ:[14,15],primme_svds_n:[14,15],primme_svds_nloc:[14,15],primme_svds_normalequ:[3,6,13,14,15],primme_svds_numorthoconst:[14,15],primme_svds_numproc:[14,15],primme_svds_numsv:[14,15],primme_svds_numtargetshift:[14,15],primme_svds_op_aat:3,primme_svds_op_ata:3,primme_svds_op_aug:3,primme_svds_op_non:3,primme_svds_op_oper:3,primme_svds_oper:13,primme_svds_outputfil:[14,15],primme_svds_param:[4,13],primme_svds_params_cr:[4,13],primme_svds_params_destroi:4,primme_svds_precondit:[14,15],primme_svds_precondition:[14,15],primme_svds_preset_method:[3,13],primme_svds_primm:[14,15],primme_svds_primmestage2:[14,15],primme_svds_printlevel:[14,15],primme_svds_procid:[14,15],primme_svds_queu:[14,15],primme_svds_realwork:14,primme_svds_set_member_f77:4,primme_svds_set_method:3,primme_svds_smallest:3,primme_svds_stats_elapsedtim:[14,15],primme_svds_stats_lockingissu:[14,15],primme_svds_stats_numbroadcast:[14,15],primme_svds_stats_numglobalsum:[14,15],primme_svds_stats_nummatvec:[14,15],primme_svds_stats_numouteriter:[14,15],primme_svds_stats_numprecond:[14,15],primme_svds_stats_numrestart:[14,15],primme_svds_stats_timebroadcast:[14,15],primme_svds_stats_timeglobalsum:[14,15],primme_svds_stats_timematvec:[14,15],primme_svds_stats_timeortho:[14,15],primme_svds_stats_timeprecond:[14,15],primme_svds_stats_volumebroadcast:[14,15],primme_svds_stats_volumeglobalsum:[14,15],primme_svds_target:[3,13,14,15],primme_svds_targetshift:[14,15],primme_svdstop_set_member_f77:14,primme_target:[2,7,8,9],primme_targetshift:[8,9],primme_thick:4,primme_unexpected_failur:[2,3],primme_user_failur:[2,3],primme_version_major:2,primme_version_minor:2,primmeerror:10,primmef77_:4,primmesrc:2,primmestage2:[3,6,13],primmesvds_set_method:13,primmesvds_top_set_member_f77:14,primmetop_get_member_f77:4,primmetop_set_member_f77:[4,8],print:[2,3,4,5,6,7,13],printabl:[7,13,14],printlevel:[2,3,7,13],prior:[7,13],priori:[2,3],problem:[2,3,4,5,7,10,11,12,13,14,15],procedur:[9,15],process:[2,3,4,7,8,9,13,14,15],procid:[2,3,7,13],produc:[2,3],product:[2,3,5,6,7,13],profil:4,program:[2,3,4,7,8,13,14],project:[2,4],projection_param:7,projectionparam:[2,7],projector:[2,5],pronounc:4,proper:4,properli:2,prototyp:4,provid:[2,3,4,5,7,10,11,13],pseudorandom:[2,3],pshift:9,ptr:[8,14,15],purpos:4,python:[0,1,4,12],python_instal:4,qmr:[2,3,4,5,6],quasi:2,question:4,queue:[2,3,4],quotient:[2,5],r_instal:4,rais:10,rand:11,random:[2,4,5,6],random_st:11,rang:[10,11],rank:[2,3,7,13],ratio:[2,3],rayleigh:[2,5],reach:[2,3],read:[2,3,4],readm:[4,10],real:[2,3,4,5,6,7,8,9,10,13,14,15],realwork:4,realworks:4,recent:[2,3],reciproc:11,recombin:2,recomend:2,recommend:[2,5],record:[5,6],rect:11,rectangular:6,recurr:5,recvbuf:[2,3],reduc:[2,3],reduct:[2,3,7,13],refer:[3,4,10,11],refin:[2,3,4,11],regardless:2,regular:4,reimplement:4,releas:[4,7,8,9,13,14,15],reliabl:4,reltolbas:[2,5],remain:[2,3],remov:4,renam:4,reorthogon:2,replac:[2,3,4,6],replic:4,repmat:6,report:[2,3,4,5,6,7,10,11,13],repres:[5,10],request:[2,3,10],requir:[2,3,4,7,13,14,15],research:4,reserv:4,reset:2,reshap:[10,11],residu:[2,3,5,6,7,8,9,10,11,13,14,15],resnorm:[2,3,7,8,9,10,11,13,14,15],resolut:4,resourc:[7,8,9,13,14,15],respect:[2,3,6,13],rest:[2,3,4],restart:[2,3,5,10,11],restarting_param:[4,7],restartingparam:[2,7],result:[2,4,10,13,14,15],ret:[7,13],retain:2,retriev:[8,14],rettolbas:2,return_eigenvector:10,return_histori:[10,11],return_singular_vector:11,return_stat:[10,11],rif:6,right:[2,3,4,5,6,7,11,13,14,15],rightmost:10,rightq:[2,5],rightsvec:3,rightx:[2,5],ritz:[2,3,4,5,10],rmatvec:11,rnorm:[3,5,6,7,10,11,13],robust:[2,4],robustshift:[2,5],romero:[4,11],root:[2,3],row:[2,3,5,6,7,11,13],rqi:2,rsvec:6,run:[2,4,9,14,15],s248:4,s271:4,s365:4,s388:4,same:[2,3,4,6,7,8,9,10,11,13,14,15],sampl:4,satisfi:10,scalar:[5,6],scale:[4,11],scheme:4,schmidt:2,sci:4,scienc:4,scipi:[4,10,11],search:[2,5,12],sec:[2,3],second:[3,6,13,14,15],see:[2,3,4,5,6,7,8,9,10,11,13,14,15],seed:[2,3,4,5,6],seek:[4,10,11],seen:[2,3,10],select:[2,3,4],sendbuf:[2,3],sens:5,septemb:4,sequenc:[2,3],sequenti:[2,3,4],set:[2,3,4,5,6,7,8,9,13,14,15],seven:6,sever:[2,4],shape:[9,10,11],share:4,shift:[2,3,5,6,9],shiftsforprecondition:[2,7,8],shiftsforpreconditioner_i:2,should:[2,3,4,5,7,8,9,10,11,13,14,15],show:[2,3],shown:[2,3],si2:4,siam:4,sigma:[2,3,5,6,10,11],silent:[2,3],similar:5,simpl:4,simpli:[2,3],simplifi:4,simultan:4,sinc:[2,3],singl:[2,3,4,5,6,7,13,14],singular:[2,3,4,6,10,11,12,13,14,15],six:5,sixth:5,size:[2,3,4,5,6,7,8,9,10,11,13,14,15],size_t:[4,8],skewq:[2,5],skewx:[2,5],slide:2,slight:5,small:4,smaller:[2,3,11],smallest:[2,3,4,5,6,10,11],soft:[2,3,5,6],softwar:[4,10,11],solib:4,solut:[3,7,10,11,13],solv:[2,3,6,7,8,9,10,11,13,14,15],solver:[2,3,4,5,6,7,11],some:[2,3,4,5,6,8,9,14,15],someth:[8,14,15],sometim:[7,13],sourc:4,spars:[5,6,10,11],spdiag:[10,11],specif:[2,3],specifi:[4,5,6,7,10,13],spectrum:2,spent:[2,3,10,11],sphinx:4,sprimm:[2,7,8],sprimme_svd:[3,13],sqrt:[2,3,10],squar:[10,11],src:4,sse:4,stabil:4,stack:[2,3],stage:[3,6,13,14,15],stagnat:[2,5],standard:[2,3,4,7,8,9,10],start:[2,3,7,8,9,13,14,15],stat:[2,3,4,5,6,7,10,11],state:[2,3],stathopoulo:[4,10,11],statist:5,std:2,steepest:2,step:[2,5,7,13],still:4,stop:[2,3,4,5,9,10,15],store:[2,3,7,8,9,13,14,15],str:[10,11],string:[5,10],striplet:3,strongli:2,struct:[2,5,6,7],structur:[2,3,7,8,9,12,13,14,15],studi:2,studio:4,subroutin:[8,9,14,15],subspac:[2,5],success:[2,3,7,8,9,13,14,15],suffix:4,sum:[2,3,6,7,11,13],support:[2,3,7,10,12,13],sure:[2,3,4],suse:4,sval:[3,6,11,13,14,15],svd:[3,4,6,10,11,13,14,15],svds_primme_initi:3,svec:[3,13,14,15],svecleft:11,svecright:11,svecs_left:11,svecs_right:11,svqb:2,symbol:4,symmetr:[4,5,7,8,9,10],symmetrix:11,synchron:4,system:[2,3,12],take:4,taken:[2,4],target:[2,3,5,7,13],targetshift:[2,3,5,7,9,13,15],tau:2,tech:4,techniqu:2,test:[2,3,12],text:[2,4],than:[2,3,4,5,7,8,9,10,11,13,14,15],thei:[2,3,7,13],them:[2,4,7,13],therefor:2,thi:[2,3,4,7,8,9,10,11,13,14,15],those:[2,3,8,14],thread:4,three:[2,5,10,11],through:[2,4],time:[2,3,4,5,6,7,8,9,10,11,13,14,15],timebroadcast:[2,3,4],timedens:4,timeglobalsum:[2,3,4],timematvec:[2,3],timeortho:[2,3,4],timeprecond:[2,3],timer:2,togeth:5,toggl:5,tol:[5,6,9,10,11,15],toler:[2,3,5,6,7,10,11,13],too:[2,3],took:[10,11],tool:4,top:4,transact:[4,10],transp:6,transpos:3,treat:10,tri:2,trillion:4,triplet:[3,4,6,11,13,14,15],two:5,txt:4,type:[3,4,5,7,8,9,10,13,14,15],typic:[5,6],ubuntu:4,uncommon:4,unconverg:[2,3,10,11],under:4,underneath:3,underscor:4,unexpect:[2,3],uninstal:4,uniqu:4,unitari:11,unix:2,unless:[2,3,7,8,9,13,14,15],updat:[2,3,4],usag:[4,7],use:[2,3,4,5,7,8,13,14,15],used:[2,3,4,6,7,11,13],useful:[4,5,7,13],user:[2,3,4,7,8,9,10,11,13,14,15],uses:[2,3,4,5],using:[3,5,6,7,8,9,11,13,14,15],usual:[2,3,4,10,11],util:2,valid:[2,3,4],valu:[2,3,4,5,6,7,8,9,10,11,12,13,14,15],varargin:[5,6],varargout:[5,6],variabl:4,variant:[2,3,4,7,8,9,10,13,14,15],vector:[2,3,4,5,6,7,8,9,10,11,13,14,15],verbos:[2,3],version:[2,3,4,7,8,9,13,14,15],visual:4,vol:[4,10],volumebroadcast:[2,3,4],volumeglobalsum:[2,3,4],vstack:11,wall:[2,3],want:[2,3,5,7,13],webpag:4,well:[2,3],went:[8,14,15],were:[4,6],whatev:[2,3],when:[2,3,4,8,10,11,14],where:[2,3,4,8,9,10,11,14,15],whether:5,which:[2,3,4,6,7,8,9,10,11,13],whose:5,william:4,window:2,wise:[7,8,9,13,14,15],within:[2,3],without:[2,3,4],work:[2,3,4,7,13],would:[7,8,13,14],wrapper:[2,3,10,11],write:[2,3],written:[2,3,4],wrong:[3,4,8,14,15],wtime:2,www:[4,10],x_i:2,xc30:4,xcode:4,xhegv:4,xhegvx:4,yet:10,yield:[2,3],you:[2,4],your:4,zero:[2,3,6,9,10,11,15],zlarnv:[2,3],zprimm:[2,7,8],zprimme_norm:[4,7],zprimme_svd:[3,13],ztest:4},titles:["Eigenvalue Problems","Singular Value Problems","Parameters Description","Parameter Description","PRIMME: PReconditioned Iterative MultiMethod Eigensolver","MATLAB Interface","MATLAB Interface","C Library Interface","FORTRAN 77 Library Interface","FORTRAN 90 Library Interface","Python Interface","Python Interface","PRIMME Documentation","C Library Interface","FORTRAN Library Interface","FORTRAN 90 Library Interface"],titleterms:{IDE:4,changelog:4,cite:4,code:[2,3,4],consider:4,contact:4,contributor:4,cprimme_f77:8,cprimme_normal_f77:8,cprimme_svds_f77:14,descript:[2,3,7,13],directori:4,document:12,dprimme_f77:8,dprimme_svds_f77:14,eigensolv:4,eigenvalu:0,error:[2,3],fortran:[8,9,14,15],guid:[7,13],incompat:4,indic:12,inform:4,interfac:[5,6,7,8,9,10,11,13,14,15],iter:4,librari:[7,8,9,13,14,15],licens:4,link:4,macro:2,magma_:[7,13],magma_cprimme_f77:8,magma_cprimme_normal_f77:8,magma_cprimme_svds_f77:14,magma_dprimme_f77:8,magma_dprimme_svds_f77:14,magma_sprimme_f77:8,magma_sprimme_svds_f77:14,magma_xprimm:9,magma_xprimme_norm:9,magma_xprimme_svd:15,magma_zprimme_f77:8,magma_zprimme_normal_f77:8,magma_zprimme_svds_f77:14,main:4,make:4,matlab:[5,6],method:[2,3],multimethod:4,other:2,paramet:[2,3,7,13],precondit:4,preset:[2,3],primm:[4,7,12],primme_display_param:7,primme_fre:7,primme_free_f77:8,primme_get_memb:[9,15],primme_get_member_f77:8,primme_get_prec_shift_f77:8,primme_initi:7,primme_initialize_f77:8,primme_norm:7,primme_param:2,primme_params_cr:[7,9],primme_params_destroi:[7,9],primme_set_memb:9,primme_set_member_f77:8,primme_set_method:[7,9],primme_set_method_f77:8,primme_svd:13,primme_svds_cr:13,primme_svds_display_param:13,primme_svds_display_params_f77:14,primme_svds_fre:13,primme_svds_free_f77:14,primme_svds_get_member_f77:14,primme_svds_initi:13,primme_svds_initialize_f77:14,primme_svds_param:3,primme_svds_params_cr:15,primme_svds_params_destroi:[13,15],primme_svds_set_memb:15,primme_svds_set_member_f77:14,primme_svds_set_method:[13,15],primme_svds_set_method_f77:14,primme_svdstop_get_member_f77:14,primmetop_get_member_f77:8,primmetop_get_prec_shift_f77:8,problem:[0,1],python:[10,11],run:[7,13],singular:1,sprimme_f77:8,sprimme_svds_f77:14,structur:4,support:4,system:4,test:4,type:2,using:4,valu:1,xprimm:9,xprimme_norm:9,xprimme_svd:15,zprimme_f77:8,zprimme_normal_f77:8,zprimme_svds_f77:14}}) \ No newline at end of file +Search.setIndex({docnames:["apieigs","apisvds","appendix","appendixsvds","intro","mateigs","matsvds","primmec","primmef77","primmef90","pyeigsh","pysvds","readme","svdsc","svdsf77","svdsf90"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,sphinx:54},filenames:["apieigs.rst","apisvds.rst","appendix.rst","appendixsvds.rst","intro.rst","mateigs.rst","matsvds.rst","primmec.rst","primmef77.rst","primmef90.rst","pyeigsh.rst","pysvds.rst","readme.rst","svdsc.rst","svdsf77.rst","svdsf90.rst"],objects:{"":{"f/_/primme_eigs_matvec":[9,4,1,""],"f/_/primme_svds_matvec":[15,4,1,""],"f/iso_c_binding/c_ptr":[9,5,1,""],PRIMME_COMPLEX_DOUBLE:[2,0,1,"c.PRIMME_COMPLEX_DOUBLE"],PRIMME_COMPLEX_FLOAT:[2,0,1,"c.PRIMME_COMPLEX_FLOAT"],PRIMME_COMPLEX_HALF:[2,0,1,"c.PRIMME_COMPLEX_HALF"],PRIMME_HALF:[2,0,1,"c.PRIMME_HALF"],PRIMME_INT:[2,0,1,"c.PRIMME_INT"],PRIMME_VERSION_MAJOR:[2,1,1,"c.PRIMME_VERSION_MAJOR"],PRIMME_VERSION_MINOR:[2,1,1,"c.PRIMME_VERSION_MINOR"],cprimme:[7,2,1,"c.cprimme"],cprimme_f77:[8,2,1,"c.cprimme_f77"],cprimme_normal:[7,2,1,"c.cprimme_normal"],cprimme_normal_f77:[8,2,1,"c.cprimme_normal_f77"],cprimme_svds:[13,2,1,"c.cprimme_svds"],cprimme_svds_f77:[14,2,1,"c.cprimme_svds_f77"],dprimme:[7,2,1,"c.dprimme"],dprimme_f77:[8,2,1,"c.dprimme_f77"],dprimme_svds:[13,2,1,"c.dprimme_svds"],dprimme_svds_f77:[14,2,1,"c.dprimme_svds_f77"],hprimme:[7,2,1,"c.hprimme"],hprimme_svds:[13,2,1,"c.hprimme_svds"],hsprimme:[7,2,1,"c.hsprimme"],hsprimme_svds:[13,2,1,"c.hsprimme_svds"],kcprimme_normal:[7,2,1,"c.kcprimme_normal"],kprimme:[7,2,1,"c.kprimme"],kprimme_normal:[7,2,1,"c.kprimme_normal"],kprimme_svds:[13,2,1,"c.kprimme_svds"],ksprimme:[7,2,1,"c.ksprimme"],ksprimme_svds:[13,2,1,"c.ksprimme_svds"],magma_cprimme:[7,2,1,"c.magma_cprimme"],magma_cprimme_f77:[8,2,1,"c.magma_cprimme_f77"],magma_cprimme_normal:[7,2,1,"c.magma_cprimme_normal"],magma_cprimme_normal_f77:[8,2,1,"c.magma_cprimme_normal_f77"],magma_cprimme_svds:[13,2,1,"c.magma_cprimme_svds"],magma_cprimme_svds_f77:[14,2,1,"c.magma_cprimme_svds_f77"],magma_dprimme:[7,2,1,"c.magma_dprimme"],magma_dprimme_f77:[8,2,1,"c.magma_dprimme_f77"],magma_dprimme_svds:[13,2,1,"c.magma_dprimme_svds"],magma_dprimme_svds_f77:[14,2,1,"c.magma_dprimme_svds_f77"],magma_hprimme:[7,2,1,"c.magma_hprimme"],magma_hprimme_svds:[13,2,1,"c.magma_hprimme_svds"],magma_hsprimme:[7,2,1,"c.magma_hsprimme"],magma_hsprimme_svds:[13,2,1,"c.magma_hsprimme_svds"],magma_kcprimme_normal:[7,2,1,"c.magma_kcprimme_normal"],magma_kprimme:[7,2,1,"c.magma_kprimme"],magma_kprimme_normal:[7,2,1,"c.magma_kprimme_normal"],magma_kprimme_svds:[13,2,1,"c.magma_kprimme_svds"],magma_ksprimme:[7,2,1,"c.magma_ksprimme"],magma_ksprimme_svds:[13,2,1,"c.magma_ksprimme_svds"],magma_sprimme:[7,2,1,"c.magma_sprimme"],magma_sprimme_f77:[8,2,1,"c.magma_sprimme_f77"],magma_sprimme_svds:[13,2,1,"c.magma_sprimme_svds"],magma_sprimme_svds_f77:[14,2,1,"c.magma_sprimme_svds_f77"],magma_zprimme:[7,2,1,"c.magma_zprimme"],magma_zprimme_f77:[8,2,1,"c.magma_zprimme_f77"],magma_zprimme_normal:[7,2,1,"c.magma_zprimme_normal"],magma_zprimme_normal_f77:[8,2,1,"c.magma_zprimme_normal_f77"],magma_zprimme_svds:[13,2,1,"c.magma_zprimme_svds"],magma_zprimme_svds_f77:[14,2,1,"c.magma_zprimme_svds_f77"],primme_display_params:[7,2,1,"c.primme_display_params"],primme_free:[7,2,1,"c.primme_free"],primme_free_f77:[8,2,1,"c.primme_free_f77"],primme_get_member_f77:[8,2,1,"c.primme_get_member_f77"],primme_get_prec_shift_f77:[8,2,1,"c.primme_get_prec_shift_f77"],primme_initialize:[7,2,1,"c.primme_initialize"],primme_initialize_f77:[8,2,1,"c.primme_initialize_f77"],primme_params:[2,0,1,"c.primme_params"],primme_params_create:[7,2,1,"c.primme_params_create"],primme_params_destroy:[7,2,1,"c.primme_params_destroy"],primme_preset_method:[2,0,1,"c.primme_preset_method"],primme_set_member_f77:[8,2,1,"c.primme_set_member_f77"],primme_set_method:[7,2,1,"c.primme_set_method"],primme_set_method_f77:[8,2,1,"c.primme_set_method_f77"],primme_svds_display_params:[13,2,1,"c.primme_svds_display_params"],primme_svds_display_params_f77:[14,2,1,"c.primme_svds_display_params_f77"],primme_svds_free:[13,2,1,"c.primme_svds_free"],primme_svds_free_f77:[14,2,1,"c.primme_svds_free_f77"],primme_svds_get_member_f77:[14,2,1,"c.primme_svds_get_member_f77"],primme_svds_initialize:[13,2,1,"c.primme_svds_initialize"],primme_svds_initialize_f77:[14,2,1,"c.primme_svds_initialize_f77"],primme_svds_params:[3,0,1,"c.primme_svds_params"],primme_svds_params_create:[13,2,1,"c.primme_svds_params_create"],primme_svds_params_destroy:[13,2,1,"c.primme_svds_params_destroy"],primme_svds_preset_method:[3,0,1,"c.primme_svds_preset_method"],primme_svds_set_member_f77:[14,2,1,"c.primme_svds_set_member_f77"],primme_svds_set_method:[13,2,1,"c.primme_svds_set_method"],primme_svds_set_method_f77:[14,2,1,"c.primme_svds_set_method_f77"],primme_svdstop_get_member_f77:[14,2,1,"c.primme_svdstop_get_member_f77"],primmetop_get_member_f77:[8,2,1,"c.primmetop_get_member_f77"],primmetop_get_prec_shift_f77:[8,2,1,"c.primmetop_get_prec_shift_f77"],ptr:[8,0,1,"c.ptr"],sprimme:[7,2,1,"c.sprimme"],sprimme_f77:[8,2,1,"c.sprimme_f77"],sprimme_svds:[13,2,1,"c.sprimme_svds"],sprimme_svds_f77:[14,2,1,"c.sprimme_svds_f77"],zprimme:[7,2,1,"c.zprimme"],zprimme_f77:[8,2,1,"c.zprimme_f77"],zprimme_normal:[7,2,1,"c.zprimme_normal"],zprimme_normal_f77:[8,2,1,"c.zprimme_normal_f77"],zprimme_svds:[13,2,1,"c.zprimme_svds"],zprimme_svds_f77:[14,2,1,"c.zprimme_svds_f77"]},"primme_params.correctionParams":{convTest:[2,3,1,"c.primme_params.correctionParams.convTest"],maxInnerIterations:[2,3,1,"c.primme_params.correctionParams.maxInnerIterations"],precondition:[2,3,1,"c.primme_params.correctionParams.precondition"],relTolBase:[2,3,1,"c.primme_params.correctionParams.relTolBase"],robustShifts:[2,3,1,"c.primme_params.correctionParams.robustShifts"]},"primme_params.correctionParams.projectors":{LeftQ:[2,3,1,"c.primme_params.correctionParams.projectors.LeftQ"],LeftX:[2,3,1,"c.primme_params.correctionParams.projectors.LeftX"],RightQ:[2,3,1,"c.primme_params.correctionParams.projectors.RightQ"],RightX:[2,3,1,"c.primme_params.correctionParams.projectors.RightX"],SkewQ:[2,3,1,"c.primme_params.correctionParams.projectors.SkewQ"],SkewX:[2,3,1,"c.primme_params.correctionParams.projectors.SkewX"]},"primme_params.projectionParams":{projection:[2,3,1,"c.primme_params.projectionParams.projection"]},"primme_params.restartingParams":{maxPrevRetain:[2,3,1,"c.primme_params.restartingParams.maxPrevRetain"]},"primme_params.stats":{elapsedTime:[2,3,1,"c.primme_params.stats.elapsedTime"],estimateLargestSVal:[2,3,1,"c.primme_params.stats.estimateLargestSVal"],estimateMaxEVal:[2,3,1,"c.primme_params.stats.estimateMaxEVal"],estimateMinEVal:[2,3,1,"c.primme_params.stats.estimateMinEVal"],lockingIssue:[2,3,1,"c.primme_params.stats.lockingIssue"],maxConvTol:[2,3,1,"c.primme_params.stats.maxConvTol"],numBroadcast:[2,3,1,"c.primme_params.stats.numBroadcast"],numGlobalSum:[2,3,1,"c.primme_params.stats.numGlobalSum"],numMatvecs:[2,3,1,"c.primme_params.stats.numMatvecs"],numOrthoInnerProds:[2,3,1,"c.primme_params.stats.numOrthoInnerProds"],numOuterIterations:[2,3,1,"c.primme_params.stats.numOuterIterations"],numPreconds:[2,3,1,"c.primme_params.stats.numPreconds"],numRestarts:[2,3,1,"c.primme_params.stats.numRestarts"],timeBroadcast:[2,3,1,"c.primme_params.stats.timeBroadcast"],timeGlobalSum:[2,3,1,"c.primme_params.stats.timeGlobalSum"],timeMatvec:[2,3,1,"c.primme_params.stats.timeMatvec"],timeOrtho:[2,3,1,"c.primme_params.stats.timeOrtho"],timePrecond:[2,3,1,"c.primme_params.stats.timePrecond"],volumeBroadcast:[2,3,1,"c.primme_params.stats.volumeBroadcast"],volumeGlobalSum:[2,3,1,"c.primme_params.stats.volumeGlobalSum"]},"primme_svds_params.stats":{elapsedTime:[3,3,1,"c.primme_svds_params.stats.elapsedTime"],lockingIssue:[3,3,1,"c.primme_svds_params.stats.lockingIssue"],numBroadcast:[3,3,1,"c.primme_svds_params.stats.numBroadcast"],numGlobalSum:[3,3,1,"c.primme_svds_params.stats.numGlobalSum"],numMatvecs:[3,3,1,"c.primme_svds_params.stats.numMatvecs"],numOrthoInnerProds:[3,3,1,"c.primme_svds_params.stats.numOrthoInnerProds"],numOuterIterations:[3,3,1,"c.primme_svds_params.stats.numOuterIterations"],numPreconds:[3,3,1,"c.primme_svds_params.stats.numPreconds"],numRestarts:[3,3,1,"c.primme_svds_params.stats.numRestarts"],timeBroadcast:[3,3,1,"c.primme_svds_params.stats.timeBroadcast"],timeGlobalSum:[3,3,1,"c.primme_svds_params.stats.timeGlobalSum"],timeMatvec:[3,3,1,"c.primme_svds_params.stats.timeMatvec"],timeOrtho:[3,3,1,"c.primme_svds_params.stats.timeOrtho"],timePrecond:[3,3,1,"c.primme_svds_params.stats.timePrecond"],volumeBroadcast:[3,3,1,"c.primme_svds_params.stats.volumeBroadcast"],volumeGlobalSum:[3,3,1,"c.primme_svds_params.stats.volumeGlobalSum"]},primme:{eigsh:[10,6,1,""],svds:[11,6,1,""]},primme_params:{BNorm:[2,3,1,"c.primme_params.BNorm"],ShiftsForPreconditioner:[2,3,1,"c.primme_params.ShiftsForPreconditioner"],aNorm:[2,3,1,"c.primme_params.aNorm"],applyPreconditioner:[2,3,1,"c.primme_params.applyPreconditioner"],applyPreconditioner_type:[2,3,1,"c.primme_params.applyPreconditioner_type"],broadcastReal:[2,3,1,"c.primme_params.broadcastReal"],broadcastReal_type:[2,3,1,"c.primme_params.broadcastReal_type"],commInfo:[2,3,1,"c.primme_params.commInfo"],convTestFun:[2,3,1,"c.primme_params.convTestFun"],convTestFun_type:[2,3,1,"c.primme_params.convTestFun_type"],convtest:[2,3,1,"c.primme_params.convtest"],dynamicMethodSwitch:[2,3,1,"c.primme_params.dynamicMethodSwitch"],eps:[2,3,1,"c.primme_params.eps"],globalSumReal:[2,3,1,"c.primme_params.globalSumReal"],globalSumReal_type:[2,3,1,"c.primme_params.globalSumReal_type"],initBasisMode:[2,3,1,"c.primme_params.initBasisMode"],initSize:[2,3,1,"c.primme_params.initSize"],internalPrecision:[2,3,1,"c.primme_params.internalPrecision"],invBNorm:[2,3,1,"c.primme_params.invBNorm"],iseed:[2,3,1,"c.primme_params.iseed"],ldOPs:[2,3,1,"c.primme_params.ldOPs"],ldevecs:[2,3,1,"c.primme_params.ldevecs"],locking:[2,3,1,"c.primme_params.locking"],massMatrix:[2,3,1,"c.primme_params.massMatrix"],massMatrixMatvec:[2,3,1,"c.primme_params.massMatrixMatvec"],massMatrixMatvec_type:[2,3,1,"c.primme_params.massMatrixMatvec_type"],matrix:[2,3,1,"c.primme_params.matrix"],matrixMatvec:[2,3,1,"c.primme_params.matrixMatvec"],matrixMatvec_type:[2,3,1,"c.primme_params.matrixMatvec_type"],maxBasisSize:[2,3,1,"c.primme_params.maxBasisSize"],maxBlockSize:[2,3,1,"c.primme_params.maxBlockSize"],maxMatvecs:[2,3,1,"c.primme_params.maxMatvecs"],maxOuterIterations:[2,3,1,"c.primme_params.maxOuterIterations"],minRestartSize:[2,3,1,"c.primme_params.minRestartSize"],monitor:[2,3,1,"c.primme_params.monitor"],monitorFun:[2,3,1,"c.primme_params.monitorFun"],monitorFun_type:[2,3,1,"c.primme_params.monitorFun_type"],n:[2,3,1,"c.primme_params.n"],nLocal:[2,3,1,"c.primme_params.nLocal"],numEvals:[2,3,1,"c.primme_params.numEvals"],numOrthoConst:[2,3,1,"c.primme_params.numOrthoConst"],numProcs:[2,3,1,"c.primme_params.numProcs"],numTargetShifts:[2,3,1,"c.primme_params.numTargetShifts"],orth:[2,3,1,"c.primme_params.orth"],outputFile:[2,3,1,"c.primme_params.outputFile"],preconditioner:[2,3,1,"c.primme_params.preconditioner"],printLevel:[2,3,1,"c.primme_params.printLevel"],procID:[2,3,1,"c.primme_params.procID"],queue:[2,3,1,"c.primme_params.queue"],target:[2,3,1,"c.primme_params.target"],targetShifts:[2,3,1,"c.primme_params.targetShifts"]},primme_preset_method:{PRIMME_Arnoldi:[2,3,1,"c.primme_preset_method.PRIMME_Arnoldi"],PRIMME_DEFAULT_MIN_MATVECS:[2,3,1,"c.primme_preset_method.PRIMME_DEFAULT_MIN_MATVECS"],PRIMME_DEFAULT_MIN_TIME:[2,3,1,"c.primme_preset_method.PRIMME_DEFAULT_MIN_TIME"],PRIMME_DYNAMIC:[2,3,1,"c.primme_preset_method.PRIMME_DYNAMIC"],PRIMME_GD:[2,3,1,"c.primme_preset_method.PRIMME_GD"],PRIMME_GD_Olsen_plusK:[2,3,1,"c.primme_preset_method.PRIMME_GD_Olsen_plusK"],PRIMME_GD_plusK:[2,3,1,"c.primme_preset_method.PRIMME_GD_plusK"],PRIMME_JDQMR:[2,3,1,"c.primme_preset_method.PRIMME_JDQMR"],PRIMME_JDQMR_ETol:[2,3,1,"c.primme_preset_method.PRIMME_JDQMR_ETol"],PRIMME_JDQR:[2,3,1,"c.primme_preset_method.PRIMME_JDQR"],PRIMME_JD_Olsen_plusK:[2,3,1,"c.primme_preset_method.PRIMME_JD_Olsen_plusK"],PRIMME_LOBPCG_OrthoBasis:[2,3,1,"c.primme_preset_method.PRIMME_LOBPCG_OrthoBasis"],PRIMME_LOBPCG_OrthoBasis_Window:[2,3,1,"c.primme_preset_method.PRIMME_LOBPCG_OrthoBasis_Window"],PRIMME_RQI:[2,3,1,"c.primme_preset_method.PRIMME_RQI"],PRIMME_STEEPEST_DESCENT:[2,3,1,"c.primme_preset_method.PRIMME_STEEPEST_DESCENT"]},primme_svds_params:{aNorm:[3,3,1,"c.primme_svds_params.aNorm"],applyPreconditioner:[3,3,1,"c.primme_svds_params.applyPreconditioner"],applyPreconditioner_type:[3,3,1,"c.primme_svds_params.applyPreconditioner_type"],broadcastReal:[3,3,1,"c.primme_svds_params.broadcastReal"],broadcastReal_type:[3,3,1,"c.primme_svds_params.broadcastReal_type"],commInfo:[3,3,1,"c.primme_svds_params.commInfo"],convTestFun:[3,3,1,"c.primme_svds_params.convTestFun"],convTestFun_type:[3,3,1,"c.primme_svds_params.convTestFun_type"],convtest:[3,3,1,"c.primme_svds_params.convtest"],eps:[3,3,1,"c.primme_svds_params.eps"],globalSumReal:[3,3,1,"c.primme_svds_params.globalSumReal"],globalSumReal_type:[3,3,1,"c.primme_svds_params.globalSumReal_type"],initSize:[3,3,1,"c.primme_svds_params.initSize"],internalPrecision:[3,3,1,"c.primme_svds_params.internalPrecision"],iseed:[3,3,1,"c.primme_svds_params.iseed"],locking:[3,3,1,"c.primme_svds_params.locking"],m:[3,3,1,"c.primme_svds_params.m"],mLocal:[3,3,1,"c.primme_svds_params.mLocal"],matrix:[3,3,1,"c.primme_svds_params.matrix"],matrixMatvec:[3,3,1,"c.primme_svds_params.matrixMatvec"],matrixMatvec_type:[3,3,1,"c.primme_svds_params.matrixMatvec_type"],maxBasisSize:[3,3,1,"c.primme_svds_params.maxBasisSize"],maxBlockSize:[3,3,1,"c.primme_svds_params.maxBlockSize"],maxMatvecs:[3,3,1,"c.primme_svds_params.maxMatvecs"],method:[3,3,1,"c.primme_svds_params.method"],methodStage2:[3,3,1,"c.primme_svds_params.methodStage2"],monitor:[3,3,1,"c.primme_svds_params.monitor"],monitorFun:[3,3,1,"c.primme_svds_params.monitorFun"],monitorFun_type:[3,3,1,"c.primme_svds_params.monitorFun_type"],n:[3,3,1,"c.primme_svds_params.n"],nLocal:[3,3,1,"c.primme_svds_params.nLocal"],numOrthoConst:[3,3,1,"c.primme_svds_params.numOrthoConst"],numProcs:[3,3,1,"c.primme_svds_params.numProcs"],numSvals:[3,3,1,"c.primme_svds_params.numSvals"],numTargetShifts:[3,3,1,"c.primme_svds_params.numTargetShifts"],outputFile:[3,3,1,"c.primme_svds_params.outputFile"],precondition:[3,3,1,"c.primme_svds_params.precondition"],preconditioner:[3,3,1,"c.primme_svds_params.preconditioner"],primme:[3,3,1,"c.primme_svds_params.primme"],primmeStage2:[3,3,1,"c.primme_svds_params.primmeStage2"],printLevel:[3,3,1,"c.primme_svds_params.printLevel"],procID:[3,3,1,"c.primme_svds_params.procID"],queue:[3,3,1,"c.primme_svds_params.queue"],target:[3,3,1,"c.primme_svds_params.target"],targetShifts:[3,3,1,"c.primme_svds_params.targetShifts"]},primme_svds_preset_method:{primme_svds_augmented:[3,3,1,"c.primme_svds_preset_method.primme_svds_augmented"],primme_svds_default:[3,3,1,"c.primme_svds_preset_method.primme_svds_default"],primme_svds_hybrid:[3,3,1,"c.primme_svds_preset_method.primme_svds_hybrid"],primme_svds_normalequations:[3,3,1,"c.primme_svds_preset_method.primme_svds_normalequations"]}},objnames:{"0":["c","type","C type"],"1":["c","macro","C macro"],"2":["c","function","C function"],"3":["c","member","C member"],"4":["f","subroutine","Fortran subroutine"],"5":["f","type","Fortran type"],"6":["py","function","Python function"]},objtypes:{"0":"c:type","1":"c:macro","2":"c:function","3":"c:member","4":"f:subroutine","5":"f:type","6":"py:function"},terms:{"0035e":10,"0204e":10,"0618e":10,"0d0":[9,15],"1_c_int64_t":[9,15],"1d0":[9,15],"200x50":6,"64bit":4,"abstract":[9,15],"case":[2,3,4,8,14],"char":[2,3],"class":5,"const":[2,3],"default":[2,3,4,5,6,7,8,9,10,11,13,14,15],"enum":4,"float":[2,3,4,7,10,11,13],"function":[2,3,4,5,6,7,8,9,10,11,13,14,15],"import":[10,11],"int":[2,3,4,7,8,10,11,13],"long":8,"new":[2,3,4,7,8,9,13,14,15],"null":[2,3,7],"return":[2,3,4,5,6,7,8,9,10,11,13,14,15],"short":2,"static":4,"switch":[2,5],"true":[5,10,11],"try":[2,3],"void":[2,3,7,8,13,14],"while":6,Added:4,For:[2,3,4,7,8,10,13,14],Its:[2,3],Not:3,One:[2,3,8,9,14,15],That:2,The:[2,3,4,5,6,7,8,9,10,11,13,14,15],Then:[2,7,13],There:[7,13],These:[2,7,13],Use:[8,14],Used:[2,3],Useful:[10,11],Using:4,With:[2,3],_64:4,__fp16:2,__int64:4,aah:6,abl:[2,3],about:[2,3,4,5,7,9,13,15],abov:4,abs:[6,11],absolut:[2,3,5],acceler:[2,3,4,5,7,10,11,13],accept:[5,6],access:2,account:2,accur:[2,4,11],accuraci:[13,14,15],achiev:[3,11,13,14,15],aci:4,acm:[4,10],across:4,act:[2,3],action:4,actual:[2,3,7,13],adapt:2,add:4,added:[2,3,4,10,11],addit:[2,5,7,10,13],adiag:10,advanc:[4,7,13],after:[2,3,4,5,7,8,9,13,14,15],afun:[5,6],again:2,against:2,aha:6,aka:4,alcald:4,algebra:[2,5,10],algorithm:[2,3,4],all:[2,3,4,5,6,7,8,9,13,14,15],alloc:[2,3,7,8,9,13,14,15],allow:[2,3,9,15],along:3,alreadi:[2,3],also:[2,3,4,5,6,7,8,9,10,13],altern:[2,5,6,7,13],although:[7,8,9,13],amatmat:10,among:[7,13],andrea:[4,10],ani:[2,3,5],anjuta:4,anorm:[2,3,5,6,7,9,13,15],anoth:[2,3,5,6],append:[2,4],appli:[2,3,5,6],applic:[2,3,6,7,11,13],applyprecon:[9,15],applyprecondition:[2,3,4,7,8,9,13,14,15],applypreconditioner_typ:[2,3,4,7,13],approx:[3,5],approxim:[2,3,5,6,7,10,11,13,14,15],april:4,arang:[10,11],architectur:[2,3,4],argument:[2,3,7,13],arithmet:4,arnoldi:[2,5],around:2,arpack:2,arrai:[2,3,5,7,8,9,10,11,13,14,15],arxiv:11,asarrai:10,ascend:2,assign:4,associ:[2,3,7,9,13,15],astyp:11,attribut:10,aug:6,augment:[3,6,11,13,14,15],avail:[2,3,4,6,7,13,14,15],avoid:[2,3,5,10,11],awk:[2,3],ax_i:2,axi:11,base:[2,3],basi:[2,3,6,10,11],basic:[7,13],basisev:[2,3],basisflag:[2,3],basisnorm:[2,3],basiss:[2,3],basissv:3,bdiag:11,bdiagr:11,becaus:[2,3],becom:2,been:[2,3,4],befor:[2,3,7,13],begin:[3,13,14,15],being:3,below:[2,3],besid:4,best:[2,3,5,10],better:[2,4],between:[2,10],bfun:5,bibtex:4,binari:4,bit:[2,4,8],bla:4,blk:[2,3],block:[2,3,4,5,6],blocksiz:[2,3,9,15],bmatmat:11,bnorm:[2,4,7],bool:[10,11],both:[3,4,6,11],bracket:[2,3,5,6],brmatmat:11,broadcast:[2,3,4,7],broadcastfordoubl:[2,3],broadcastr:[2,3,4,7,8,9,13,14,15],broadcastreal_typ:[2,3,4,7,13],bsd:4,buckl:10,buffer:[2,3],bug:[2,3,4],build:4,built:[4,7,13],bx_i:2,c99:4,c_doubl:[9,15],c_f_pointer:[8,9,14],c_funloc:[9,15],c_funptr:[9,15],c_int64:[9,15],c_int64_t:[9,15],c_int:[9,15],c_ptr:[8,9,14,15],call:[2,3,4,5,6,7,8,9,10,11,13,14,15],callabl:[10,11],callback:[4,7,8,9,13,14,15],can:[2,3,4,5,6,7,8,9,10,11,13],caylei:10,ccf:4,cento:4,certain:[2,3,4],cflag:4,cgt:[5,10],chang:[2,3,4,7,8,9,13],changelog:12,cheap:2,cheaper:2,check:[4,7,13],choic:[2,3,7,13],choleski:2,choos:10,cite:12,clang:4,classic:[2,5],claus:4,clean:4,clock:[2,3],close:[2,3,11],closer:2,closest:[2,3,5,6,10,11],clt:[5,10],code:[0,1,7,8,9,10,12,13,14,15],coher:[2,3],colleg:4,column:[2,3,5,6,7,8,9,10,11,13,14,15],com:[10,11],combin:3,comm:[8,14],command:4,comminfo:[2,3,7,13],common:4,commonsrc:2,commun:[2,3],compat:4,compil:[2,3,4,7,8,13],complet:4,complex:[2,4,5,6,7,8,9,10,11,13,14,15],compos:[7,13],comput:[2,3,4,5,6,7,8,9,10,11,13,14,15],concaten:11,condit:2,configur:[2,4,7,8,9,13,14,15],consecut:3,consid:[2,3,4,5,6,10,11],consider:[2,3],constant:[2,4],constrain:[7,11,13],constraint:[2,3,5,6],contact:12,contain:[2,3],content:[4,7,8,9,13,14,15],contributor:12,control:[2,5,6],conv:[2,3],converg:[2,3,4,5,6,7,10,11,13],convtest:[2,3,5,7,10,11,13],convtestfun:[2,3,4,5,6,7,8,9,13,14,15],convtestfun_typ:[2,3,4],coordin:4,copi:4,copyright:4,core:4,correct:[2,3],correction_param:7,correctionparam:[2,7],correspond:[2,3,4,5,6,10],cost:[2,5],could:[2,3],count:[2,3,6],counter:[2,3,4],coupl:4,cprimm:[2,7,8],cprimme_norm:7,cprimme_svd:[3,13],cpu:[2,3,7,8,9,13,14,15],crai:4,creat:[4,7,9,13,15],creator:4,criteria:[2,3,4],criterion:[2,3,4,5,6,7,10,13],critic:4,ctr:4,cumul:11,current:[2,3,9,13,14,15],custom:[2,3,4,7,13],cygwin:4,daniel:2,data:[2,3,7,10,13],datatyp:[8,9],davidson:[2,4,5],deal:[8,14],decemb:4,decis:4,declar:[7,8,9,13,14,15],decomposit:[10,11],def:[10,11],default_min_matvec:10,default_min_tim:[5,6,10],defin:[2,3,4,7,10,11,13],definit:4,delet:[8,14],delta:2,delta_:2,depart:4,depend:[3,7,13,14,15],descend:2,descent:2,describ:4,descript:[0,1,4,10,12],descriptor:[7,13,14],detail:[4,7,8,9,10,13,14,15],develop:4,deviat:2,df77underscor:4,diag:[5,6,10,11],diagon:[2,5,6],dict:[10,11],didact:4,differ:[2,3,4,5],difficult:4,dim:5,dimens:[2,3,4,5,7,8,9,13,15],dimension:[2,3],directli:2,directori:[7,12],disp:[5,6],displac:2,displai:[5,7,13,14],distribut:3,divid:2,dlarnv:[2,3],doc:[4,10],doctest:[10,11],document:[4,9,15],doe:[2,3,4],doesn:4,don:[8,14],done:[2,3,4,8,9],dot:10,doubl:[2,3,4,5,6,7,8,13,14],down:[2,3],dprimm:[2,7,8],dprimme_blas_suffix:4,dprimme_blasint_s:4,dprimme_magma:2,dprimme_svd:[3,4,13],dprimme_svds_magma:3,driver:4,dtest:4,dtype:11,durat:[2,3],dure:[2,3,10],dynam:[2,4,5,10],dynamicmethodswitch:[2,7],each:[2,3,6],easier:3,eclips:4,edu:[4,10],effici:[2,5],eig:[4,5,10,11],eigenpair:[2,5,7,8,9,10,13,14,15],eigenproblem:[2,4,6,7,8,9,10],eigensolv:[2,3,5,6,10,12],eigenvalu:[2,3,4,5,7,8,9,10,11,12,13],eigenvector:[2,4,5,7,8,9,10,11,13,14,15],eigsh:[10,11],either:[2,3,5],elaps:[2,3,5,6],elapsedtim:[2,3,10,11],element:[2,3],eloi:4,els:[2,3,6],elsewher:3,email:4,empti:5,enabl:[2,3],end:[2,3,13,14,15],energi:4,enough:2,enumer:[7,8,9,13,14,15],environ:[2,3,4],epair:2,eps:[2,3,5,6,7,13],epsilon:[3,11],equal:[2,3],equat:[2,3,4,6,11],equival:[2,3,5,6,10,11],err:10,error:[0,1,4,7,8,9,10,12,13,14,15],especi:4,essl:4,estim:[2,3,5,6],estimatebnorm:4,estimateinvbnorm:4,estimatelargestsv:[2,10],estimatemaxev:[2,10],estimateminev:[2,10],etc:[2,3,7,13],eval:[2,5,7,8,9,10],evalu:[2,3],evec:[2,3,4,5,7,8,9,10],even:[2,4],event:[2,3],eventu:3,everi:[2,3,4,5,6,10,11],ex_eigs_dmagma:2,ex_svds_dmagma:3,ex_zseq:2,exact:5,exampl:[2,3,4,5,6,7,9,10,11,13,15],exascal:4,except:10,exclus:[8,14],execut:[2,3,4],exit:[2,3],expect:[3,4],expens:2,expert:2,exsvd_zseq:3,extens:[8,14],extern:[2,3,4,5,6],extra:[4,5,6,10,11],extract:[2,4],extrem:4,eye:5,f77:4,f77underscor:4,f90:4,factor:[2,3,6],fail:[2,4],failur:[2,3],fals:[5,10,11],farthest:[5,10],fashion:2,faster:2,fastest:2,featur:[2,3],few:[4,5,6],fewer:2,field:[2,3,6,7,8,9,13,14,15],fifth:5,file:[2,3,4,7,13,14],find:[2,3,4,5,6,7,10,11,13],first:[2,3,5,6,7,8,9,10,11,13,14,15],fix:[2,4],flag:[2,4,15],flat:11,float32:11,flop:2,flopsdens:4,follow:[2,3,4,6,7,8,9,13,14,15],forc:2,format:4,fortran:[0,1,3,4,12],found:[4,7,10,13],foundat:4,four:6,frac:2,framework:4,free:[2,7,8,9,13,14,15],freebsd:4,from:[2,3,4,5,6,8,10,14],full:[2,3,4],fun:[5,6],further:[2,3,4],furthest:2,futur:2,galerkin:2,gcc:4,gdk:2,gener:[2,3,4,5,7,8,9,10,11],get:[2,8,9,14,15],gettimeofdai:2,gfortran:4,github:[4,10,11],give:[10,11],given:[2,3,5],global:[2,3],globalsumr:[2,3,4,7,8,9,13,14,15],globalsumreal_typ:[2,3,4,7,13],gnu:4,gnuplot:[2,3],going:[2,7,13],good:2,gpu:[2,3,4,7,8,9,13,14,15],gpuarrai:5,gram:2,grant:4,granular:[5,6],greater:[2,5,10],grep:[2,3],guess:[2,3,5,6,10,11],half:[2,3,4,7,13],handi:[2,3],handl:[5,6],handler:[5,6],hard:[2,3,5,6],harmon:[2,4],has:[2,3,4,5,6,7,8,9,13,14,15],have:[2,3,4,6,7,9,11,13,15],header:[4,7,13],heavi:5,help:[7,13],hermitian:[4,5,7,8,9,10,11],high:[4,5,11],higher:2,hist:[5,6,10,11],histori:[2,3,4,5,6,7,13],hold:[2,3],honor:4,host:[7,8,9,13,14,15],how:[2,3,5,6,7,13],howev:[2,3,11],hprimm:[2,4,7],hprimme_svd:13,hsprimm:7,hsprimme_svd:13,html:[4,10],http:[4,10,11],hybrid:[4,11],hypr:4,iblock:[2,3],icc:4,ident:[2,3],identifi:2,ierr:[2,3,8,9,14,15],ignor:[2,3,10,11],ilp64:4,ilu:5,implement:[2,4,5],implic:[2,3],implicit:[8,14],improv:[2,3,4],inc:[9,15],includ:[4,5,7,13],incompat:12,incomplet:6,independ:[2,6],index:[2,3,5,6,7,8,9,12],indic:[2,3,4,5,6,7,8,9,13,14,15],inexpens:2,inf:[5,6],info:[2,3],inform:[2,3,5,10,11,12],initbasismod:[2,7],initi:[2,3,4,5,6,7,8,9,10,11,13,14,15],inits:[2,3,5,6,7,8,9,13,14,15],inn:[2,3],inner:[2,3,4,5],inner_it:[2,3],input:[2,3,4,7,8,9,13,14,15],insid:[8,14],instal:4,instanc:[2,4,8,14],instead:[3,4,5,6],int32_t:4,int64_t:4,int_max:[2,3],integ:[2,3,4,8,9,14,15],interfac:[0,1,3,4,12],interg:4,interior:[2,4,5,7,13],intern:[2,3,5,6,7,8,9,13,14,15],internalprecis:[2,3,4,7,8,9,13,14,15],introduct:[7,13],intwork:4,intworks:4,invbnorm:[2,4,7],invers:[2,10,11],invert:2,invit:[2,5],involv:2,isconv:[2,3],isdoubl:[5,6],ise:[2,3,4,5,6,7,13],isgpu:5,ishermitian:5,isn:[2,3],iso_c_bind:[8,9,14],isreal:[5,6],issu:[2,4],iter:[2,3,5,6,10,11,12],its:[2,7,13],jacobi:[2,4,5,6],jame:4,jdcg:[2,5],jdqmr:[2,3,5,10],jdqr:[2,5],juli:4,karg:[10,11],kcprimme_norm:7,kdevelop:4,keep:[2,3,5],kei:[2,3],kept:[2,5,10],kind:[4,9,15],knowledg:[2,3],known:[2,3],kprimm:[4,7],kprimme_norm:7,kprimme_svd:13,krylov:2,ksprimm:7,ksprimme_svd:13,label:[8,9,14,15],lamba:10,lambda:[2,4,7,10],lambda_:2,lambda_i:2,languag:3,lapack:[2,3,4],laplacianmatrixmatvec:7,larg:[2,4,6,11],larger:[2,3,4],largest:[2,3,4,5,6,10,11],last:[2,3],later:[4,11],lbla:4,ldevec:[2,4,7,8,9],ldflag:4,ldop:[2,4,7],ldx:[2,3,9,15],ldy:[2,3,9,15],lead:[2,3,4,7,8,9,15],least:[2,3,7,8,9,13,14,15],led:4,left:[2,3,5,6,10,11,13,14,15],leftmost:10,leftq:[2,5],leftsvec:3,leftx:[2,5],legaci:[2,5],len:[10,11],length:[2,3],less:[2,3,5,11],level:[2,3,5,6],lgfortran:4,lgplv3:4,lib:4,libdprimm:4,libprimm:4,librari:[0,1,4,12],libzprimm:4,licens:12,like:[3,4],limit:4,lin:[2,3],linalg:[10,11],line:4,linear:[2,3,4],linearoper:[10,11],lingfei:4,link:[2,12],link_flag:4,linker:4,llapack:4,lobpcg:2,local:[2,3,7,8,9,13,14,15],locat:4,lock:[2,3,4,5,6,7,10,13],lockedev:[2,3],lockedflag:[2,3],lockednorm:[2,3],lockedsv:3,lockingissu:[2,3,4],log2:2,longer:4,low:5,lower:2,lp64:4,lprimm:4,lsre:[2,3],lsvec:6,machin:[2,3,5,10,11],maco:4,macro:[3,4],made:4,magma_cprimm:[7,8],magma_cprimme_norm:7,magma_cprimme_svd:13,magma_dprimm:[2,4,7,8],magma_dprimme_svd:[4,13],magma_hprimm:7,magma_hprimme_svd:13,magma_hsprimm:7,magma_hsprimme_svd:13,magma_kcprimme_norm:7,magma_kprimm:7,magma_kprimme_norm:7,magma_kprimme_svd:13,magma_ksprimm:7,magma_ksprimme_svd:13,magma_queue_t:[2,3],magma_sprimm:[7,8],magma_sprimme_svd:13,magma_zprimm:[7,8],magma_zprimme_norm:[4,7],magma_zprimme_svd:13,magnitud:[2,5,10],mai:[2,3,4,5,7,8,9,11,13],main:[2,3,8,12,14],major:[2,3,9,15],make:[2,3,7,12,13],make_flag:4,make_link:4,makefil:4,manag:4,mani:[2,3,4,6,7,13],mari:4,mark:[2,3,10,11],mass:7,massmatrix:[2,4,7],massmatrixmatvec:[2,4,7,8,9],massmatrixmatvec_typ:[2,4,7],match:[2,3],mathcal:2,mathemat:[4,10],matlab:[0,1,4,12],matmat:[10,11],matric:[2,4,5,7],matrix:[2,3,4,5,6,7,9,10,11,13,14,15],matrixmarket:4,matrixmatvec:[2,3,4,7,8,9,13,14,15],matrixmatvec_typ:[2,3,4,7,13],matvec:[2,3,5,6,10,11],max:10,maxbasiss:[2,3,5,6,7,13],maxblocks:[2,3,5,6,7,10,11,13],maxconvtol:2,maximum:[2,3,5,6,10,11],maxinneriter:[2,5],maxit:[5,6,10,11],maxmatvec:[2,3,4,5,6,7,13],maxouteriter:[2,5,7],maxprevretain:[2,5,10],mccomb:[4,10],mean:[2,11,15],member:4,memori:[2,3,4,7,8,9,13,14,15],messag:[2,3],method:[0,1,4,5,6,7,8,9,10,11,12,13,14,15],methodstage1:[11,13,14,15],methodstage2:[3,11,13,14,15],min:[3,10,11],mingw:4,minim:2,minimum:[2,3,5,11],minor:[2,4],minrestarts:[2,5,7,10,13],minv:10,misconverg:[2,5],mlocal:[3,13,14,15],mode:[3,10,15],modif:5,modifi:2,modul:4,monitor:[2,3,4,7,13],monitorfun:[2,3,4,7,13],monitorfun_typ:[2,3,4],monoton:[2,3],more:[2,3,4,6,7,9,13,15],most:[2,3,7,8,9,13,14,15],mpi:[2,3,4],mpi_allreduc:[2,3,8,14],mpi_bcast:[2,3],mpi_comm:[2,3,8,14],mpi_comm_world:[8,14],mpi_doubl:[2,3,8,14],mpi_float:[2,3],mpi_in_plac:[2,3],mpi_success:[2,3],mpi_sum:[2,3,8,14],mpiu_real:[2,3],msg:[2,3],multimethod:[10,12],multipl:[2,3,4,5],multipli:11,multivector:[2,3],must:[2,3,5,10,11],mvec:[2,3],name:[2,3,4],nation:4,nconv:[10,11],ncv:[10,11],ndarrai:[10,11],nearli:4,necessarili:7,need:[2,3,4,8,14],neg:[8,14,15],nev:5,new_ev:10,new_evec:10,newli:[2,3],next:[2,3,4,5,7,8,9,10,13,14,15],nlocal:[2,3,4,7,8,9,13,14,15],nofil:5,non:[2,3,9,15],none:[8,10,11,14],nonempti:6,nonsymmetr:[10,11],nonzero:[2,3,5,6,7,9,13,15],norm:[2,3,5,6,7,8,9,10,11,13,14,15],normal:[3,4,5,6,7,8,9,10,11],notai:2,note:[2,3,10,11],notransp:6,now:[2,3,4,10,11],nsci:4,num_ibm:4,num_sum:4,number:[2,3,4,5,6,7,9,10,11,13,15],numbroadcast:[2,3,4],numconverg:[2,3],numev:[2,7,8,9],numglobalsum:[2,3,4],numlock:[2,3],nummatvec:[2,3,4,10,11],numorthoconst:[2,3,5,6,7,8,9,13,14,15],numorthoinnerprod:[2,3],numouteriter:[2,3,4,10,11],numpi:[4,10,11],numprecond:[2,3,4,10,11],numproc:[2,3,7,13],numrestart:[2,3,4,10,11],numsval:[3,13,14,15],numtargetshift:[2,3,7,9,13,15],object:10,obtain:[2,10],occur:[2,3],octav:4,octob:4,olsen:[2,5],one:[2,3,4,5,6,7,8,9,10,13,14,15],ones:[2,4,5,6,10],onli:[2,3,5,6,7,8,9,10,11,13,14,15],open:[2,3],openbla:4,oper:[2,3,4,7,8,9,10,13,14,15],opinv:10,opt:[5,6],optim:[2,4],option:[2,3,4,6,7,8,10,11,13],order:[2,3,4,9,10,15],org:11,origin:5,orth:[2,4,7],orthoconst:[5,6],orthogon:[2,3,4,5,6,7,10,11,13],orthonorm:[2,3,6,10,11],orthou0:11,orthov0:11,other:[3,4,7,8,10,11,13,14],otherwis:[2,3,5,6,7,8,9,13,14,15],our:5,out:[2,3,4,5,9,15],outer:[2,3,5,6,10,11],outit:2,outpufil:[2,3],output:[2,3,4,5,6,8,9,14,15],outputfil:[2,3,7,13,14],over:[2,3],overal:[2,3],p_q:2,p_x:2,packag:4,page:12,pair:[2,3,5,10],paper:4,par_globalsumdoubl:[8,14],par_globalsumfordoubl:[2,3],parallel:[2,3,4,7,8,9,13,14,15],param:7,paramet:[0,1,4,5,6,8,9,10,11,12,14,15],part:[4,7,8,9,13,14,15],particular:2,pass:[2,3,4,5],pcomm:[8,14],pdf:4,per:[2,4,5,6],perform:[2,3,4,6,7,8,9,10,11,13,14,15],perp:2,petsc:4,pfun:[5,6],platform:4,pleas:[2,3,4],plot:[2,3],plu:[2,3,6],pointer:[2,3,7,8,9,14,15],posit:[2,8],possibl:[2,3,10],practic:2,prec:11,precaah:11,precaha:11,precaug:11,precis:[2,3,4,5,6,7,8,9,10,11,13,14,15],precond:[5,6],precondit:[2,3,5,10,11,12],precondition:[2,3,4,5,6,7,10,11,13],prefer:[4,7,13],prefix:4,preset:[0,1,4,7,8,9,10,12,13,14,15],previou:[2,3,5,10,13],previous:[10,11],primari:4,prime:4,primm:[2,3,5,6,8,9,10,11,13,14,15],primme_:4,primme_adapt:[2,3],primme_adaptive_etoler:[2,3],primme_anorm:[8,9],primme_applyprecondition:[8,9],primme_applypreconditioner_typ:[8,9],primme_arnoldi:[2,5,7,8,9],primme_blas_suffix:4,primme_bnorm:[8,9],primme_broadcastr:[8,9],primme_broadcastreal_typ:[8,9],primme_closest_ab:[2,9],primme_closest_geq:2,primme_closest_leq:2,primme_comminfo:[8,9],primme_complex_doubl:[2,7,13],primme_complex_float:[2,7,13],primme_complex_half:[2,7,13],primme_convergencetest:2,primme_convtest:[8,9],primme_convtestfun:[8,9],primme_convtestfun_typ:[8,9],primme_correctionparams_convtest:[8,9],primme_correctionparams_maxinneriter:[8,9],primme_correctionparams_precondit:[8,9,15],primme_correctionparams_projectors_leftq:[8,9],primme_correctionparams_projectors_leftx:[8,9],primme_correctionparams_projectors_rightq:[8,9],primme_correctionparams_projectors_rightx:[8,9],primme_correctionparams_projectors_skewq:[8,9],primme_correctionparams_projectors_skewx:[8,9],primme_correctionparams_reltolbas:[8,9],primme_correctionparams_robustshift:[8,9],primme_decreasing_ltoler:2,primme_default_method:13,primme_default_min_matvec:[2,5,7,8,9],primme_default_min_tim:[2,4,5,7,8,9],primme_display_param:2,primme_display_stats_f77:4,primme_doubl:[2,3],primme_dtr:4,primme_dynam:[2,3,4,5,7,8,9],primme_dynamicmethodswitch:[8,9],primme_eig:[5,6],primme_eigs_matvec:9,primme_ep:[8,9],primme_ev:[2,3],primme_event_converg:[2,3],primme_event_inner_iter:[2,3],primme_event_lock:[2,3],primme_event_messag:[2,3],primme_event_outer_iter:[2,3],primme_f77:8,primme_f90:[9,15],primme_float:[2,3],primme_fre:4,primme_full_ltoler:2,primme_function_unavail:[2,3],primme_gd:[2,5,7,8,9],primme_gd_olsen_plusk:[2,5,7,8,9],primme_gd_plusk:[2,5,7,8,9],primme_get_member_f77:4,primme_globalsumr:[8,9],primme_globalsumreal_typ:[8,9],primme_half:[2,3,7,13],primme_init:[2,7],primme_init_krylov:2,primme_init_random:2,primme_init_us:2,primme_initbasismod:[8,9],primme_initi:2,primme_inits:[8,9],primme_int:[2,3,4,7,8,13],primme_int_p:4,primme_int_s:[2,4],primme_internalprecis:[8,9],primme_invbnorm:[8,9],primme_ise:[8,9],primme_jd_olsen_plusk:[2,5,7,8,9],primme_jdqmr:[2,4,5,7,8,9],primme_jdqmr_etol:[2,4,5,7,8,9],primme_jdqr:[2,5,7,8,9],primme_lapack_failur:[2,3],primme_largest:2,primme_largest_ab:2,primme_ldevec:[8,9],primme_ldop:[8,9],primme_lobpcg_orthobasi:[2,5,7,8,9],primme_lobpcg_orthobasis_window:[2,5,7,8,9],primme_lock:[8,9],primme_main_iter_failur:[2,3],primme_malloc_failur:[2,3],primme_massmatrix:[8,9],primme_massmatrixmatvec:[8,9],primme_massmatrixmatvec_typ:[8,9],primme_matrix:[8,9],primme_matrixmatvec:[8,9],primme_matrixmatvec_typ:[8,9],primme_maxbasiss:[8,9],primme_maxblocks:[8,9],primme_maxmatvec:[8,9],primme_maxouteriter:[8,9],primme_minrestarts:[8,9],primme_monitor:[8,9],primme_monitorfun:[8,9],primme_monitorfun_typ:[8,9],primme_n:[8,9],primme_nloc:[8,9],primme_numev:[8,9],primme_numorthoconst:[8,9],primme_numproc:[8,9],primme_numtargetshift:[8,9],primme_op_datatyp:[2,3,7,13],primme_op_default:[2,3],primme_op_half:2,primme_op_singl:2,primme_orth:[2,7,8,9],primme_orth_default:2,primme_orth_explicit_i:2,primme_orth_implicit_i:2,primme_ortho_const_failur:[2,3],primme_outputfil:[8,9],primme_parallel_failur:[2,3],primme_param:[3,4,7,13],primme_params_cr:4,primme_params_create_svd:15,primme_params_destroi:4,primme_precondition:[8,9],primme_preset_method:[2,4,7,8,9,13,14,15],primme_printlevel:[8,9],primme_procid:[8,9],primme_proj_default:2,primme_proj_harmon:2,primme_proj_refin:2,primme_proj_rr:2,primme_project:2,primme_projectionparams_project:[8,9],primme_queu:[8,9],primme_restartingparams_maxprevretain:[8,9],primme_rqi:[2,5,7,8,9],primme_set_memb:15,primme_set_member_f77:4,primme_set_method:[2,4,13,15],primme_set_method_f77:14,primme_shiftsforprecondition:9,primme_smallest:2,primme_stat:[4,7],primme_stats_elapsedtim:[8,9],primme_stats_estimatebnorm:[8,9],primme_stats_estimateinvbnorm:[8,9],primme_stats_estimatelargestsv:[8,9],primme_stats_estimatemaxev:[8,9],primme_stats_estimateminev:[8,9],primme_stats_flopsdens:[8,9],primme_stats_lockingissu:[8,9],primme_stats_maxconvtol:[8,9],primme_stats_numbroadcast:[8,9],primme_stats_numglobalsum:[8,9],primme_stats_nummatvec:[8,9],primme_stats_numorthoinnerprod:[8,9],primme_stats_numouteriter:[8,9],primme_stats_numprecond:[8,9],primme_stats_numrestart:[8,9],primme_stats_timebroadcast:[8,9],primme_stats_timedens:[8,9],primme_stats_timeglobalsum:[8,9],primme_stats_timematvec:[8,9],primme_stats_timeortho:[8,9],primme_stats_timeprecond:[8,9],primme_stats_volumebroadcast:[8,9],primme_stats_volumeglobalsum:[8,9],primme_steepest_desc:[2,4,5,7,8,9],primme_subspace_iter:4,primme_sv:13,primme_svd:[3,4,5,6,11,14,15],primme_svds_anorm:[14,15],primme_svds_applyprecondition:[14,15],primme_svds_applypreconditioner_typ:[14,15],primme_svds_aug:[3,6,13,14,15],primme_svds_broadcastr:[14,15],primme_svds_broadcastreal_typ:[14,15],primme_svds_closest_ab:[3,15],primme_svds_comminfo:[14,15],primme_svds_convtest:[14,15],primme_svds_convtestfun:[14,15],primme_svds_convtestfun_typ:[14,15],primme_svds_default:[3,13,14,15],primme_svds_display_param:3,primme_svds_ep:[14,15],primme_svds_f77:14,primme_svds_get_memb:15,primme_svds_get_member_f77:4,primme_svds_globalsumr:[14,15],primme_svds_globalsumreal_typ:[14,15],primme_svds_hybrid:[3,6,13,14,15],primme_svds_initi:3,primme_svds_inits:[14,15],primme_svds_internalprecis:[14,15],primme_svds_intwork:14,primme_svds_ise:[14,15],primme_svds_largest:3,primme_svds_lock:[14,15],primme_svds_m:[14,15],primme_svds_matrix:[14,15],primme_svds_matrixmatvec:[14,15],primme_svds_matrixmatvec_typ:[14,15],primme_svds_matvec:15,primme_svds_maxbasiss:[14,15],primme_svds_maxblocks:[14,15],primme_svds_maxmatvec:[14,15],primme_svds_method:[14,15],primme_svds_methodstage2:[14,15],primme_svds_mloc:[14,15],primme_svds_monitor:[14,15],primme_svds_monitorfun:[14,15],primme_svds_monitorfun_typ:[14,15],primme_svds_n:[14,15],primme_svds_nloc:[14,15],primme_svds_normalequ:[3,6,13,14,15],primme_svds_numorthoconst:[14,15],primme_svds_numproc:[14,15],primme_svds_numsv:[14,15],primme_svds_numtargetshift:[14,15],primme_svds_op_aat:3,primme_svds_op_ata:3,primme_svds_op_aug:3,primme_svds_op_non:3,primme_svds_op_oper:3,primme_svds_oper:13,primme_svds_outputfil:[14,15],primme_svds_param:[4,13],primme_svds_params_cr:[4,13],primme_svds_params_destroi:4,primme_svds_precondit:[14,15],primme_svds_precondition:[14,15],primme_svds_preset_method:[3,13],primme_svds_primm:[14,15],primme_svds_primmestage2:[14,15],primme_svds_printlevel:[14,15],primme_svds_procid:[14,15],primme_svds_queu:[14,15],primme_svds_realwork:14,primme_svds_set_member_f77:4,primme_svds_set_method:3,primme_svds_smallest:3,primme_svds_stats_elapsedtim:[14,15],primme_svds_stats_lockingissu:[14,15],primme_svds_stats_numbroadcast:[14,15],primme_svds_stats_numglobalsum:[14,15],primme_svds_stats_nummatvec:[14,15],primme_svds_stats_numouteriter:[14,15],primme_svds_stats_numprecond:[14,15],primme_svds_stats_numrestart:[14,15],primme_svds_stats_timebroadcast:[14,15],primme_svds_stats_timeglobalsum:[14,15],primme_svds_stats_timematvec:[14,15],primme_svds_stats_timeortho:[14,15],primme_svds_stats_timeprecond:[14,15],primme_svds_stats_volumebroadcast:[14,15],primme_svds_stats_volumeglobalsum:[14,15],primme_svds_target:[3,13,14,15],primme_svds_targetshift:[14,15],primme_svdstop_set_member_f77:14,primme_target:[2,7,8,9],primme_targetshift:[8,9],primme_thick:4,primme_unexpected_failur:[2,3],primme_user_failur:[2,3],primme_version_major:2,primme_version_minor:2,primmeerror:10,primmef77_:4,primmesrc:2,primmestage2:[3,6,13],primmesvds_set_method:13,primmesvds_top_set_member_f77:14,primmetop_get_member_f77:4,primmetop_set_member_f77:[4,8],print:[2,3,4,5,6,7,13],printabl:[7,13,14],printlevel:[2,3,7,13],prior:[7,13],priori:[2,3],problem:[2,3,4,5,7,10,11,12,13,14,15],procedur:[9,15],process:[2,3,4,7,8,9,13,14,15],procid:[2,3,7,13],produc:[2,3],product:[2,3,5,6,7,13],profil:4,program:[2,3,4,7,8,13,14],project:[2,4],projection_param:7,projectionparam:[2,7],projector:[2,5],pronounc:4,proper:4,properli:2,prototyp:4,provid:[2,3,4,5,7,10,11,13],pseudorandom:[2,3],pshift:9,ptr:[8,14,15],purpos:4,python:[0,1,4,12],python_instal:4,qmr:[2,3,4,5,6],quasi:2,question:4,queue:[2,3,4],quotient:[2,5],r_instal:4,rais:10,rand:11,random:[2,4,5,6],random_st:11,rang:[10,11],rank:[2,3,7,13],ratio:[2,3],rayleigh:[2,5],reach:[2,3],read:[2,3,4],readm:[4,10],real:[2,3,4,5,6,7,8,9,10,13,14,15],realwork:4,realworks:4,recent:[2,3],reciproc:11,recombin:2,recomend:2,recommend:[2,5],record:[5,6],rect:11,rectangular:6,recurr:5,recvbuf:[2,3],reduc:[2,3],reduct:[2,3,7,13],refer:[3,4,10,11],refin:[2,3,4,11],regardless:2,regular:4,reimplement:4,releas:[4,7,8,9,13,14,15],reliabl:4,reltolbas:[2,5],remain:[2,3],remov:4,renam:4,reorthogon:2,replac:[2,3,4,6],replic:4,repmat:6,report:[2,3,4,5,6,7,10,11,13],repres:[5,10],request:[2,3,10],requir:[2,3,4,7,13,14,15],research:4,reserv:4,reset:2,reshap:[10,11],residu:[2,3,5,6,7,8,9,10,11,13,14,15],resnorm:[2,3,7,8,9,10,11,13,14,15],resolut:4,resourc:[7,8,9,13,14,15],respect:[2,3,6,13],rest:[2,3,4],restart:[2,3,5,10,11],restarting_param:[4,7],restartingparam:[2,7],result:[2,4,10,13,14,15],ret:[7,13],retain:2,retriev:[8,14],rettolbas:2,return_eigenvector:10,return_histori:[10,11],return_singular_vector:11,return_stat:[10,11],rif:6,right:[2,3,4,5,6,7,11,13,14,15],rightmost:10,rightq:[2,5],rightsvec:3,rightx:[2,5],ritz:[2,3,4,5,10],rmatvec:11,rnorm:[3,5,6,7,10,11,13],robust:[2,4],robustshift:[2,5],romero:[4,11],root:[2,3],row:[2,3,5,6,7,11,13],rqi:2,rsvec:6,run:[2,4,9,14,15],s248:4,s271:4,s365:4,s388:4,same:[2,3,4,6,7,8,9,10,11,13,14,15],sampl:4,satisfi:10,scalar:[5,6],scale:[4,11],scheme:4,schmidt:2,sci:4,scienc:4,scipi:[4,10,11],search:[2,5,12],sec:[2,3],second:[3,6,13,14,15],see:[2,3,4,5,6,7,8,9,10,11,13,14,15],seed:[2,3,4,5,6],seek:[4,10,11],seen:[2,3,10],select:[2,3,4],sendbuf:[2,3],sens:5,septemb:4,sequenc:[2,3],sequenti:[2,3,4],set:[2,3,4,5,6,7,8,9,13,14,15],seven:6,sever:[2,4],shape:[9,10,11],share:4,shift:[2,3,5,6,9],shiftsforprecondition:[2,7,8],shiftsforpreconditioner_i:2,should:[2,3,4,5,7,8,9,10,11,13,14,15],show:[2,3],shown:[2,3],si2:4,siam:4,sigma:[2,3,5,6,10,11],silent:[2,3],similar:5,simpl:4,simpli:[2,3],simplifi:4,simultan:4,sinc:[2,3],singl:[2,3,4,5,6,7,13,14],singular:[2,3,4,6,10,11,12,13,14,15],six:5,sixth:5,size:[2,3,4,5,6,7,8,9,10,11,13,14,15],size_t:[4,8],skewq:[2,5],skewx:[2,5],skip:[10,11],slide:2,slight:5,small:4,smaller:[2,3,11],smallest:[2,3,4,5,6,10,11],soft:[2,3,5,6],softwar:[4,10,11],solib:4,solut:[3,7,10,11,13],solv:[2,3,6,7,8,9,10,11,13,14,15],solver:[2,3,4,5,6,7,11],some:[2,3,4,5,6,8,9,14,15],someth:[8,14,15],sometim:[7,13],sourc:4,spars:[5,6,10,11],spdiag:[10,11],specif:[2,3],specifi:[4,5,6,7,10,13],spectrum:2,spent:[2,3,10,11],sphinx:4,sprimm:[2,7,8],sprimme_svd:[3,13],sqrt:[2,3,10],squar:[10,11],src:4,sse:4,stabil:4,stack:[2,3],stage:[3,6,13,14,15],stagnat:[2,5],standard:[2,3,4,7,8,9,10],start:[2,3,7,8,9,13,14,15],stat:[2,3,4,5,6,7,10,11],state:[2,3],stathopoulo:[4,10,11],statist:5,std:2,steepest:2,step:[2,5,7,13],still:4,stop:[2,3,4,5,9,10,15],store:[2,3,7,8,9,13,14,15],str:[10,11],string:[5,10],striplet:3,strongli:2,struct:[2,5,6,7],structur:[2,3,7,8,9,12,13,14,15],studi:2,studio:4,subroutin:[8,9,14,15],subspac:[2,5],success:[2,3,7,8,9,13,14,15],suffix:4,sum:[2,3,6,7,11,13],support:[2,3,7,10,12,13],sure:[2,3,4],suse:4,sval:[3,6,11,13,14,15],svd:[3,4,6,10,11,13,14,15],svds_primme_initi:3,svec:[3,13,14,15],svecleft:11,svecright:11,svecs_left:11,svecs_right:11,svqb:2,symbol:4,symmetr:[4,5,7,8,9,10],symmetrix:11,synchron:4,system:[2,3,12],take:4,taken:[2,4],target:[2,3,5,7,13],targetshift:[2,3,5,7,9,13,15],tau:2,tech:4,techniqu:2,test:[2,3,12],text:[2,4],than:[2,3,4,5,7,8,9,10,11,13,14,15],thei:[2,3,7,13],them:[2,4,7,13],therefor:2,thi:[2,3,4,7,8,9,10,11,13,14,15],those:[2,3,8,14],thread:4,three:[2,5,10,11],through:[2,4],time:[2,3,4,5,6,7,8,9,10,11,13,14,15],timebroadcast:[2,3,4],timedens:4,timeglobalsum:[2,3,4],timematvec:[2,3],timeortho:[2,3,4],timeprecond:[2,3],timer:2,togeth:5,toggl:5,tol:[5,6,9,10,11,15],toler:[2,3,5,6,7,10,11,13],too:[2,3],took:[10,11],tool:4,top:4,transact:[4,10],transp:6,transpos:3,treat:10,tri:2,trillion:4,triplet:[3,4,6,11,13,14,15],two:5,txt:4,type:[3,4,5,7,8,9,10,13,14,15],typic:[5,6],ubuntu:4,uncommon:4,unconverg:[2,3,10,11],under:4,underneath:3,underscor:4,unexpect:[2,3],uninstal:4,uniqu:4,unitari:11,unix:2,unless:[2,3,7,8,9,13,14,15],updat:[2,3,4],usag:[4,7],use:[2,3,4,5,7,8,13,14,15],used:[2,3,4,6,7,11,13],useful:[4,5,7,13],user:[2,3,4,7,8,9,10,11,13,14,15],uses:[2,3,4,5],using:[3,5,6,7,8,9,11,13,14,15],usual:[2,3,4,10,11],util:2,valid:[2,3,4],valu:[2,3,4,5,6,7,8,9,10,11,12,13,14,15],varargin:[5,6],varargout:[5,6],variabl:4,variant:[2,3,4,7,8,9,10,13,14,15],vector:[2,3,4,5,6,7,8,9,10,11,13,14,15],verbos:[2,3],version:[2,3,4,7,8,9,13,14,15],visual:4,vol:[4,10],volumebroadcast:[2,3,4],volumeglobalsum:[2,3,4],vstack:11,wall:[2,3],want:[2,3,5,7,13],webpag:4,well:[2,3],went:[8,14,15],were:[4,6],whatev:[2,3],when:[2,3,4,8,10,11,14],where:[2,3,4,8,9,10,11,14,15],whether:5,which:[2,3,4,6,7,8,9,10,11,13],whose:5,william:4,window:2,wise:[7,8,9,13,14,15],within:[2,3],without:[2,3,4],work:[2,3,4,7,13],would:[7,8,13,14],wrapper:[2,3,10,11],write:[2,3],written:[2,3,4],wrong:[3,4,8,14,15],wtime:2,www:[4,10],x_i:2,xc30:4,xcode:4,xhegv:4,xhegvx:4,yet:10,yield:[2,3],you:[2,4],your:4,zero:[2,3,6,9,10,11,15],zlarnv:[2,3],zprimm:[2,7,8],zprimme_norm:[4,7],zprimme_svd:[3,13],ztest:4},titles:["Eigenvalue Problems","Singular Value Problems","Parameters Description","Parameter Description","PRIMME: PReconditioned Iterative MultiMethod Eigensolver","MATLAB Interface","MATLAB Interface","C Library Interface","FORTRAN 77 Library Interface","FORTRAN 90 Library Interface","Python Interface","Python Interface","PRIMME Documentation","C Library Interface","FORTRAN Library Interface","FORTRAN 90 Library Interface"],titleterms:{IDE:4,changelog:4,cite:4,code:[2,3,4],consider:4,contact:4,contributor:4,cprimme_f77:8,cprimme_normal_f77:8,cprimme_svds_f77:14,descript:[2,3,7,13],directori:4,document:12,dprimme_f77:8,dprimme_svds_f77:14,eigensolv:4,eigenvalu:0,error:[2,3],fortran:[8,9,14,15],guid:[7,13],incompat:4,indic:12,inform:4,interfac:[5,6,7,8,9,10,11,13,14,15],iter:4,librari:[7,8,9,13,14,15],licens:4,link:4,macro:2,magma_:[7,13],magma_cprimme_f77:8,magma_cprimme_normal_f77:8,magma_cprimme_svds_f77:14,magma_dprimme_f77:8,magma_dprimme_svds_f77:14,magma_sprimme_f77:8,magma_sprimme_svds_f77:14,magma_xprimm:9,magma_xprimme_norm:9,magma_xprimme_svd:15,magma_zprimme_f77:8,magma_zprimme_normal_f77:8,magma_zprimme_svds_f77:14,main:4,make:4,matlab:[5,6],method:[2,3],multimethod:4,other:2,paramet:[2,3,7,13],precondit:4,preset:[2,3],primm:[4,7,12],primme_display_param:7,primme_fre:7,primme_free_f77:8,primme_get_memb:[9,15],primme_get_member_f77:8,primme_get_prec_shift_f77:8,primme_initi:7,primme_initialize_f77:8,primme_norm:7,primme_param:2,primme_params_cr:[7,9],primme_params_destroi:[7,9],primme_set_memb:9,primme_set_member_f77:8,primme_set_method:[7,9],primme_set_method_f77:8,primme_svd:13,primme_svds_cr:13,primme_svds_display_param:13,primme_svds_display_params_f77:14,primme_svds_fre:13,primme_svds_free_f77:14,primme_svds_get_member_f77:14,primme_svds_initi:13,primme_svds_initialize_f77:14,primme_svds_param:3,primme_svds_params_cr:15,primme_svds_params_destroi:[13,15],primme_svds_set_memb:15,primme_svds_set_member_f77:14,primme_svds_set_method:[13,15],primme_svds_set_method_f77:14,primme_svdstop_get_member_f77:14,primmetop_get_member_f77:8,primmetop_get_prec_shift_f77:8,problem:[0,1],python:[10,11],run:[7,13],singular:1,sprimme_f77:8,sprimme_svds_f77:14,structur:4,support:4,system:4,test:4,type:2,using:4,valu:1,xprimm:9,xprimme_norm:9,xprimme_svd:15,zprimme_f77:8,zprimme_normal_f77:8,zprimme_svds_f77:14}}) \ No newline at end of file diff --git a/doc/html/svdsc.html b/doc/html/svdsc.html index dab3f3ff..af416b75 100644 --- a/doc/html/svdsc.html +++ b/doc/html/svdsc.html @@ -8,7 +8,7 @@ - C Library Interface — PRIMME 3.0 documentation + C Library Interface — PRIMME 3.1 documentation @@ -25,7 +25,6 @@ - @@ -64,7 +63,7 @@
                  - 3.0 + 3.1
                  @@ -196,93 +195,107 @@

                  C Library Interface

                  -

                  New in version 2.0.

                  +

                  New in version 2.0.

                  The PRIMME SVDS interface is composed of the following functions. To solve real and complex singular value problems call respectively:

                  -
                  int dprimme_svds (double *svals, double *svecs, double *resNorms,
                  +
                  +int dprimme_svds (double *svals, double *svecs, double *resNorms,
                                          primme_svds_params *primme_svds)
                   int zprimme_svds (double *svals, PRIMME_COMPLEX_DOUBLE *svecs,
                  -                 double *resNorms, primme_svds_params *primme_svds)
                  + double *resNorms, primme_svds_params *primme_svds) +

                  There are more versions for matrix problems working in other precisions:

                  - +
                  ---+++ - - - - + + + + - - - - + + + + - - - + + + - - - + + +

                  Precision

                  Real

                  Complex

                  PrecisionRealComplex

                  half

                  hprimme_svds() -hsprimme_svds()

                  kprimme_svds() -ksprimme_svds()

                  halfhprimme_svds() +hsprimme_svds()kprimme_svds() +ksprimme_svds()

                  single

                  sprimme_svds()

                  cprimme_svds()

                  singlesprimme_svds()cprimme_svds()

                  double

                  dprimme_svds()

                  zprimme_svds()

                  doubledprimme_svds()zprimme_svds()

                  Other useful functions:

                  -
                  void primme_svds_initialize (primme_svds_params *primme_svds)
                  +
                  +void primme_svds_initialize (primme_svds_params *primme_svds)
                   int primme_svds_set_method (primme_svds_preset_method method,
                      primme_preset_method methodStage1,
                      primme_preset_method methodStage2, primme_svds_params *primme_svds)
                   void primme_svds_display_params (primme_svds_params primme_svds)
                  -void primme_svds_free (primme_svds_params *primme_svds)
                  +void primme_svds_free (primme_svds_params *primme_svds) +

                  PRIMME SVDS stores its data on the structure primme_svds_params. See Parameters Guide for an introduction about its fields.

                  Running

                  To use PRIMME SVDS, follow these basic steps.

                    -
                  1. Include:

                    +
                  2. Include:

                    #include "primme.h"   /* header file is required to run primme */
                     
                  3. -
                  4. Initialize a PRIMME SVDS parameters structure for default settings:

                    -
                    primme_svds_params primme_svds;
                    -primme_svds_initialize (&primme_svds);
                    +
                  5. Initialize a PRIMME SVDS parameters structure for default settings:

                    +
                    +primme_svds_params primme_svds;
                    +primme_svds_initialize (&primme_svds);
                    +
                  6. -
                  7. Set problem parameters (see also Parameters Guide), and, +

                  8. Set problem parameters (see also Parameters Guide), and, optionally, set one of the preset methods:

                    -
                    primme_svds.matrixMatvec = matrixMatvec; /* MV product */
                    +
                    +primme_svds.matrixMatvec = matrixMatvec; /* MV product */
                     primme_svds.m = 1000;     /* set the matrix dimensions */
                     primme_svds.n = 100;
                     primme_svds.numSvals = 10; /* Number of singular values */
                     primmesvds_set_method (primme_svds_hybrid, PRIMME_DEFAULT_METHOD,
                                              PRIMME_DEFAULT_METHOD, &primme_svds);
                    -...
                    +... +
                  9. -
                  10. Then to solve a real singular value problem call:

                    -
                    ret = dprimme_svds (svals, svecs, resNorms, &primme_svds);
                    +
                  11. Then to solve a real singular value problem call:

                    +
                    +ret = dprimme_svds (svals, svecs, resNorms, &primme_svds);
                    +

                    The previous is the double precision call. There is available calls for complex double, single and complex single; check zprimme_svds(), sprimme_svds() and cprimme_svds().

                    To solve complex singular value problems call:

                    -
                    ret = zprimme_svds (svals, svecs, resNorms, &primme_svds);
                    +
                    +ret = zprimme_svds (svals, svecs, resNorms, &primme_svds);
                    +

                    The call arguments are:

                      -
                    • svals, array to return the found singular values;

                    • -
                    • svecs, array to return the found left and right singular vectors;

                    • -
                    • resNorms, array to return the residual norms of the found triplets; and

                    • -
                    • ret, returned error code.

                    • +
                    • svals, array to return the found singular values;
                    • +
                    • svecs, array to return the found left and right singular vectors;
                    • +
                    • resNorms, array to return the residual norms of the found triplets; and
                    • +
                    • ret, returned error code.
                  12. -
                  13. To free the work arrays in PRIMME SVDS:

                    -
                    primme_svds_free (&primme_svds);
                    +
                  14. To free the work arrays in PRIMME SVDS:

                    +
                    +primme_svds_free (&primme_svds);
                    +
                  @@ -361,68 +374,72 @@

                  Interface Description?primme_svds

                  -int hprimme_svds(PRIMME_HALF *svals, PRIMME_HALF *svecs, PRIMME_HALF *resNorms, primme_svds_params *primme_svds)
                  +int hprimme_svds(PRIMME_HALF *svals, PRIMME_HALF *svecs, PRIMME_HALF *resNorms, primme_svds_params *primme_svds)
                  -int hsprimme_svds(float *svals, PRIMME_HALF *svecs, float *resNorms, primme_svds_params *primme_svds)
                  +int hsprimme_svds(float *svals, PRIMME_HALF *svecs, float *resNorms, primme_svds_params *primme_svds)
                  -int kprimme_svds(PRIMME_HALF *svals, PRIMME_COMPLEX_HALF *svecs, PRIMME_HALF *resNorms, primme_svds_params *primme_svds)
                  +int kprimme_svds(PRIMME_HALF *svals, PRIMME_COMPLEX_HALF *svecs, PRIMME_HALF *resNorms, primme_svds_params *primme_svds)
                  -int ksprimme_svds(float *svals, PRIMME_COMPLEX_HALF *svecs, float *resNorms, primme_svds_params *primme_svds)
                  +int ksprimme_svds(float *svals, PRIMME_COMPLEX_HALF *svecs, float *resNorms, primme_svds_params *primme_svds)
                  -

                  New in version 3.0.

                  +

                  New in version 3.0.

                  -int sprimme_svds(float *svals, float *svecs, float *resNorms, primme_svds_params *primme_svds)
                  +int sprimme_svds(float *svals, float *svecs, float *resNorms, primme_svds_params *primme_svds)
                  -int cprimme_svds(float *svals, PRIMME_COMPLEX_FLOAT *svecs, float *resNorms, primme_svds_params *primme_svds)
                  +int cprimme_svds(float *svals, PRIMME_COMPLEX_FLOAT *svecs, float *resNorms, primme_svds_params *primme_svds)
                  -

                  New in version 2.0.

                  +

                  New in version 2.0.

                  -int dprimme_svds(double *svals, double *svecs, double *resNorms, primme_svds_params *primme_svds)
                  +int dprimme_svds(double *svals, double *svecs, double *resNorms, primme_svds_params *primme_svds)
                  -int zprimme_svds(double *svals, PRIMME_COMPLEX_DOUBLE *svecs, double *resNorms, primme_svds_params *primme_svds)
                  +int zprimme_svds(double *svals, PRIMME_COMPLEX_DOUBLE *svecs, double *resNorms, primme_svds_params *primme_svds)

                  Solve a real singular value problem.

                  All arrays should be hosted on CPU. The computations are performed on CPU (see magma_dprimme_svds() for using GPUs).

                  -
                  -
                  Parameters
                  -
                    -
                  • svals – array at least of size numSvals to store the -computed singular values; all processes in a parallel run return this local array with the same values.

                  • -
                  • svecs – array at least of size (mLocal + nLocal) times (numOrthoConst + numSvals) + +++ + + + + + +
                    Parameters:
                      +
                    • svals – array at least of size numSvals to store the +computed singular values; all processes in a parallel run return this local array with the same values.
                    • +
                    • svecs – array at least of size (mLocal + nLocal) times (numOrthoConst + numSvals) to store column-wise the (local part for this process of the) computed left singular vectors -and the right singular vectors.

                    • -
                    • resNorms – array at least of size numSvals to store the +and the right singular vectors.

                    • +
                    • resNorms – array at least of size numSvals to store the residual norms of the computed triplets; all processes in parallel run return this local array with -the same values.

                    • -
                    • primme_svds – parameters structure.

                    • +the same values. +
                    • primme_svds – parameters structure.
                    - -
                    Returns
                    -

                    error indicator; see Error Codes.

                    -
                    - +
                    Returns:

                    error indicator; see Error Codes.

                    +

                    On input, svecs should start with the content of the numOrthoConst left vectors, followed by the initSize left vectors, followed by the numOrthoConst right vectors, and followed by the initSize right vectors.

                    @@ -439,62 +456,66 @@

                    ?primme_svds

                    -int magma_hprimme_svds(PRIMME_HALF *svals, PRIMME_HALF *svecs, PRIMME_HALF *resNorms, primme_svds_params *primme_svds)
                    +int magma_hprimme_svds(PRIMME_HALF *svals, PRIMME_HALF *svecs, PRIMME_HALF *resNorms, primme_svds_params *primme_svds)
                    -int magma_hsprimme_svds(float *svals, PRIMME_HALF *svecs, float *resNorms, primme_svds_params *primme_svds)
                    +int magma_hsprimme_svds(float *svals, PRIMME_HALF *svecs, float *resNorms, primme_svds_params *primme_svds)
                    -int magma_kprimme_svds(PRIMME_HALF *svals, PRIMME_COMPLEX_HALF *svecs, PRIMME_HALF *resNorms, primme_svds_params *primme_svds)
                    +int magma_kprimme_svds(PRIMME_HALF *svals, PRIMME_COMPLEX_HALF *svecs, PRIMME_HALF *resNorms, primme_svds_params *primme_svds)
                    -int magma_ksprimme_svds(float *svals, PRIMME_COMPLEX_HALF *svecs, float *resNorms, primme_svds_params *primme_svds)
                    +int magma_ksprimme_svds(float *svals, PRIMME_COMPLEX_HALF *svecs, float *resNorms, primme_svds_params *primme_svds)
                    -int magma_sprimme_svds(float *svals, float *svecs, float *resNorms, primme_svds_params *primme_svds)
                    +int magma_sprimme_svds(float *svals, float *svecs, float *resNorms, primme_svds_params *primme_svds)
                    -int magma_cprimme_svds(float *svals, PRIMME_COMPLEX_FLOAT *svecs, float *resNorms, primme_svds_params *primme_svds)
                    +int magma_cprimme_svds(float *svals, PRIMME_COMPLEX_FLOAT *svecs, float *resNorms, primme_svds_params *primme_svds)
                    -int magma_dprimme_svds(double *svals, double *svecs, double *resNorms, primme_svds_params *primme_svds)
                    +int magma_dprimme_svds(double *svals, double *svecs, double *resNorms, primme_svds_params *primme_svds)
                    -int magma_zprimme_svds(double *svals, PRIMME_COMPLEX_DOUBLE *svecs, double *resNorms, primme_svds_params *primme_svds)
                    +int magma_zprimme_svds(double *svals, PRIMME_COMPLEX_DOUBLE *svecs, double *resNorms, primme_svds_params *primme_svds)

                    Solve a real singular value problem.

                    Most of the computations are performed on GPU (see dprimme_svds() for using only the CPU).

                    -
                    -
                    Parameters
                    -
                      -
                    • svals – CPU array at least of size numSvals to store the -computed singular values; all processes in a parallel run return this local array with the same values.

                    • -
                    • svecs – GPU array at least of size (mLocal + nLocal) times (numOrthoConst + numSvals) + +++ + + + + + +
                      Parameters:
                        +
                      • svals – CPU array at least of size numSvals to store the +computed singular values; all processes in a parallel run return this local array with the same values.
                      • +
                      • svecs – GPU array at least of size (mLocal + nLocal) times (numOrthoConst + numSvals) to store column-wise the (local part for this process of the) computed left singular vectors -and the right singular vectors.

                      • -
                      • resNorms – CPU array at least of size numSvals to store the +and the right singular vectors.

                      • +
                      • resNorms – CPU array at least of size numSvals to store the residual norms of the computed triplets; all processes in parallel run return this local array with -the same values.

                      • -
                      • primme_svds – parameters structure.

                      • +the same values. +
                      • primme_svds – parameters structure.
                      - -
                      Returns
                      -

                      error indicator; see Error Codes.

                      -
                      - +
                      Returns:

                      error indicator; see Error Codes.

                      +

                      On input, svecs should start with the content of the numOrthoConst left vectors, followed by the initSize left vectors, followed by the numOrthoConst right vectors, and followed by the initSize right vectors.

                      @@ -505,7 +526,7 @@

                      magma_?primme_svdsmagma_hsprimme_svds() and magma_ksprimme_svds() perform all computations in half precision by default and report the eigenvalues and the residual norms in single precision. These functions may help in applications that may be not built with a compiler supporting half precision.

                      The type and precision of the callbacks depends on the type and precision of svecs. Although this can be changed. See details for matrixMatvec, applyPreconditioner, globalSumReal, broadcastReal, and convTestFun.

                      -

                      New in version 3.0.

                      +

                      New in version 3.0.

                    @@ -514,16 +535,20 @@

                    magma_?primme_svds

                    -void primme_svds_initialize(primme_svds_params *primme_svds)
                    +void primme_svds_initialize(primme_svds_params *primme_svds)

                    Initialize PRIMME SVDS parameters structure to the default values.

                    After calling dprimme_svds() (or a variant), call primme_svds_free() to release allocated resources by PRIMME.

                    -
                    -
                    Parameters
                    -
                      -
                    • primme_svds – parameters structure.

                    • + +++ + + + +
                      Parameters:
                        +
                      • primme_svds – parameters structure.
                      - - +

                      Example:

                      primme_svds_params primme_svds;
                       primme_svds_initialize(&primme_svds);
                      @@ -544,16 +569,20 @@ 

                      primme_svds_initializeprimme_svds_create

                      -primme_svds_params* primme_svds_params_create(void)
                      +primme_svds_params* primme_svds_params_create(void)

                      Allocate and initialize a parameters structure to the default values.

                      After calling dprimme_svds() (or a variant), call primme_svds_params_destroy() to release allocated resources by PRIMME.

                      -
                      -
                      Parameters
                      -
                        -
                      • primme_sv – parameters structure.

                      • + +++ + + + +
                        Parameters:
                          +
                        • primme_sv – parameters structure.
                        - - +

                        Example:

                        primme_svds_params *primme_svds = primme_svds_params_create();
                         
                        @@ -567,7 +596,7 @@ 

                        primme_svds_createprimme_svds_initialize() that only initializes the structure.

                        -

                        New in version 3.0.

                        +

                        New in version 3.0.

                      @@ -576,28 +605,32 @@

                      primme_svds_create

                      -int primme_svds_set_method(primme_svds_preset_method method, primme_preset_method methodStage1, primme_preset_method methodStage2, primme_svds_params *primme_svds)
                      +int primme_svds_set_method(primme_svds_preset_method method, primme_preset_method methodStage1, primme_preset_method methodStage2, primme_svds_params *primme_svds)

                      Set PRIMME SVDS parameters to one of the preset configurations.

                      -
                      -
                      Parameters
                      -
                      @@ -606,15 +639,19 @@

                      primme_svds_set_methodprimme_svds_display_params

                      -void primme_svds_display_params(primme_svds_params primme_svds)
                      +void primme_svds_display_params(primme_svds_params primme_svds)

                      Display all printable settings of primme_svds into the file descriptor outputFile.

                      -
                      -
                      Parameters
                      -
                        -
                      • primme_svds – parameters structure.

                      • + +++ + + + +
                        Parameters:
                          +
                        • primme_svds – parameters structure.
                        - - +
                      @@ -622,15 +659,19 @@

                      primme_svds_display_params

                      -void primme_svds_free(primme_svds_params *primme_svds)
                      +void primme_svds_free(primme_svds_params *primme_svds)

                      Free memory allocated by PRIMME SVDS.

                      -
                      -
                      Parameters
                      -
                        -
                      • primme_svds – parameters structure.

                      • + +++ + + + +
                        Parameters:
                          +
                        • primme_svds – parameters structure.
                        - - +
                      @@ -638,21 +679,25 @@

                      primme_svds_free

                      -int primme_svds_params_destroy(primme_svds_params *primme)
                      +int primme_svds_params_destroy(primme_svds_params *primme)

                      Free memory allocated by PRIMME associated to a parameters structure created with primme_svds_params_create().

                      -
                      -
                      Parameters
                      -
                        -
                      • primme_svds – parameters structure.

                      • + +++ + + + + + +
                        Parameters:
                          +
                        • primme_svds – parameters structure.
                        - -
                        Returns
                        -

                        nonzero value if the call is not successful.

                        -
                        - +
                        Returns:

                        nonzero value if the call is not successful.

                        +
                        -

                        New in version 3.0.

                        +

                        New in version 3.0.

                      diff --git a/doc/html/svdsf77.html b/doc/html/svdsf77.html index f95b1c0f..6a83ca11 100644 --- a/doc/html/svdsf77.html +++ b/doc/html/svdsf77.html @@ -8,7 +8,7 @@ - FORTRAN Library Interface — PRIMME 3.0 documentation + FORTRAN Library Interface — PRIMME 3.1 documentation @@ -25,7 +25,6 @@ - @@ -64,7 +63,7 @@
                      - 3.0 + 3.1
                      @@ -198,34 +197,38 @@

                      FORTRAN Library Interface

                      -

                      New in version 2.0.

                      +

                      New in version 2.0.

                      The next enumerations and functions are declared in primme_svds_f77.h.

                      sprimme_svds_f77

                      -sprimme_svds_f77(svals, svecs, resNorms, primme_svds)
                      +sprimme_svds_f77(svals, svecs, resNorms, primme_svds)

                      Solve a real singular value problem using single precision.

                      All arrays should be hosted on CPU. The computations are performed on CPU (see magma_sprimme_svds_f77() for using GPUs).

                      -
                      -
                      Parameters
                      -
                        -
                      • svals(*) (real) – (output) array at least of size numSvals to store the -computed singular values; all processes in a parallel run return this local array with the same values.

                      • -
                      • svecs(*) (real) – array at least of size (mLocal + nLocal) times (numOrthoConst + numSvals) + +++ + + + + + +
                        Parameters:
                          +
                        • svals(*) (real) – (output) array at least of size numSvals to store the +computed singular values; all processes in a parallel run return this local array with the same values.
                        • +
                        • svecs(*) (real) – array at least of size (mLocal + nLocal) times (numOrthoConst + numSvals) to store column-wise the (local part for this process of the) computed left singular vectors -and the right singular vectors.

                        • -
                        • resNorms(*) (real) – array at least of size numSvals to store the +and the right singular vectors.

                        • +
                        • resNorms(*) (real) – array at least of size numSvals to store the residual norms of the computed triplets; all processes in parallel run return this local array with -the same values.

                        • -
                        • primme_svds (ptr) – parameters structure.

                        • +the same values. +
                        • primme_svds (ptr) – parameters structure.
                        - -
                        Returns
                        -

                        error indicator; see Error Codes.

                        -
                        - +
                        Returns:

                        error indicator; see Error Codes.

                        +

                        On input, svecs should start with the content of the numOrthoConst left vectors, followed by the initSize left vectors, followed by the numOrthoConst right vectors and followed by the initSize right vectors.

                        @@ -241,27 +244,31 @@

                        sprimme_svds_f77

                        -cprimme_svds_f77(svals, svecs, resNorms, primme_svds)
                        +cprimme_svds_f77(svals, svecs, resNorms, primme_svds)

                        Solve a complex singular value problem using single precision.

                        All arrays should be hosted on CPU. The computations are performed on CPU (see magma_cprimme_svds_f77() for using GPUs).

                        -
                        -
                        Parameters
                        -
                          -
                        • svals(*) (real) – (output) array at least of size numSvals to store the -computed singular values; all processes in a parallel run return this local array with the same values.

                        • -
                        • svecs(*) (complex) – array at least of size (mLocal + nLocal) times (numOrthoConst + numSvals) + +++ + + + + + +
                          Parameters:
                            +
                          • svals(*) (real) – (output) array at least of size numSvals to store the +computed singular values; all processes in a parallel run return this local array with the same values.
                          • +
                          • svecs(*) (complex) – array at least of size (mLocal + nLocal) times (numOrthoConst + numSvals) to store column-wise the (local part for this process of the) computed left singular vectors -and the right singular vectors.

                          • -
                          • resNorms(*) (real) – array at least of size numSvals to store the +and the right singular vectors.

                          • +
                          • resNorms(*) (real) – array at least of size numSvals to store the residual norms of the computed triplets; all processes in parallel run return this local array with -the same values.

                          • -
                          • primme_svds (ptr) – parameters structure.

                          • +the same values. +
                          • primme_svds (ptr) – parameters structure.
                          - -
                          Returns
                          -

                          error indicator; see Error Codes.

                          -
                          - +
                          Returns:

                          error indicator; see Error Codes.

                          +

                          On input, svecs should start with the content of the numOrthoConst left vectors, followed by the initSize left vectors, followed by the numOrthoConst right vectors and followed by the initSize right vectors.

                          @@ -277,27 +284,31 @@

                          cprimme_svds_f77

                          -dprimme_svds_f77(svals, svecs, resNorms, primme_svds)
                          +dprimme_svds_f77(svals, svecs, resNorms, primme_svds)

                          Solve a real singular value problem using double precision.

                          All arrays should be hosted on CPU. The computations are performed on CPU (see magma_dprimme_svds_f77() for using GPUs).

                          -
                          -
                          Parameters
                          -
                            -
                          • svals(*) (double precision) – (output) array at least of size numSvals to store the -computed singular values; all processes in a parallel run return this local array with the same values.

                          • -
                          • svecs(*) (double precision) – array at least of size (mLocal + nLocal) times (numOrthoConst + numSvals) + +++ + + + + + +
                            Parameters:
                              +
                            • svals(*) (double precision) – (output) array at least of size numSvals to store the +computed singular values; all processes in a parallel run return this local array with the same values.
                            • +
                            • svecs(*) (double precision) – array at least of size (mLocal + nLocal) times (numOrthoConst + numSvals) to store column-wise the (local part for this process of the) computed left singular vectors -and the right singular vectors.

                            • -
                            • resNorms(*) (double precision) – array at least of size numSvals to store the +and the right singular vectors.

                            • +
                            • resNorms(*) (double precision) – array at least of size numSvals to store the residual norms of the computed triplets; all processes in parallel run return this local array with -the same values.

                            • -
                            • primme_svds (ptr) – parameters structure.

                            • +the same values. +
                            • primme_svds (ptr) – parameters structure.
                            - -
                            Returns
                            -

                            error indicator; see Error Codes.

                            -
                            - +
                            Returns:

                            error indicator; see Error Codes.

                            +

                            On input, svecs should start with the content of the numOrthoConst left vectors, followed by the initSize left vectors, followed by the numOrthoConst right vectors and followed by the initSize right vectors.

                            @@ -313,27 +324,31 @@

                            dprimme_svds_f77

                            -zprimme_svds_f77(svals, svecs, resNorms, primme_svds)
                            +zprimme_svds_f77(svals, svecs, resNorms, primme_svds)

                            Solve a complex singular value problem using double precision.

                            All arrays should be hosted on CPU. The computations are performed on CPU (see magma_zprimme_svds_f77() for using GPUs).

                            -
                            -
                            Parameters
                            -
                              -
                            • svals(*) (double precision) – (output) array at least of size numSvals to store the -computed singular values; all processes in a parallel run return this local array with the same values.

                            • -
                            • svecs(*) (complex*16) – array at least of size (mLocal + nLocal) times (numOrthoConst + numSvals) + +++ + + + + + +
                              Parameters:
                                +
                              • svals(*) (double precision) – (output) array at least of size numSvals to store the +computed singular values; all processes in a parallel run return this local array with the same values.
                              • +
                              • svecs(*) (complex*16) – array at least of size (mLocal + nLocal) times (numOrthoConst + numSvals) to store column-wise the (local part for this process of the) computed left singular vectors -and the right singular vectors.

                              • -
                              • resNorms(*) (double precision) – array at least of size numSvals to store the +and the right singular vectors.

                              • +
                              • resNorms(*) (double precision) – array at least of size numSvals to store the residual norms of the computed triplets; all processes in parallel run return this local array with -the same values.

                              • -
                              • primme_svds (ptr) – parameters structure.

                              • +the same values. +
                              • primme_svds (ptr) – parameters structure.
                              - -
                              Returns
                              -

                              error indicator; see Error Codes.

                              -
                              - +
                              Returns:

                              error indicator; see Error Codes.

                              +

                              On input, svecs should start with the content of the numOrthoConst left vectors, followed by the initSize left vectors, followed by the numOrthoConst right vectors and followed by the initSize right vectors.

                              @@ -349,27 +364,31 @@

                              zprimme_svds_f77

                              -magma_sprimme_svds_f77(svals, svecs, resNorms, primme_svds)
                              +magma_sprimme_svds_f77(svals, svecs, resNorms, primme_svds)

                              Solve a real singular value problem using single precision.

                              Most of the computations are performed on GPU (see sprimme_svds_f77() for using only the CPU).

                              -
                              -
                              Parameters
                              -
                                -
                              • svals(*) (real) – (output) CPU array at least of size numSvals to store the -computed singular values; all processes in a parallel run return this local array with the same values.

                              • -
                              • svecs(*) (real) – GPU array at least of size (mLocal + nLocal) times (numOrthoConst + numSvals) + +++ + + + + + +
                                Parameters:
                                  +
                                • svals(*) (real) – (output) CPU array at least of size numSvals to store the +computed singular values; all processes in a parallel run return this local array with the same values.
                                • +
                                • svecs(*) (real) – GPU array at least of size (mLocal + nLocal) times (numOrthoConst + numSvals) to store column-wise the (local part for this process of the) computed left singular vectors -and the right singular vectors.

                                • -
                                • resNorms(*) (real) – CPU array at least of size numSvals to store the +and the right singular vectors.

                                • +
                                • resNorms(*) (real) – CPU array at least of size numSvals to store the residual norms of the computed triplets; all processes in parallel run return this local array with -the same values.

                                • -
                                • primme_svds (ptr) – parameters structure.

                                • +the same values. +
                                • primme_svds (ptr) – parameters structure.
                                - -
                                Returns
                                -

                                error indicator; see Error Codes.

                                -
                                - +
                                Returns:

                                error indicator; see Error Codes.

                                +

                                On input, svecs should start with the content of the numOrthoConst left vectors, followed by the initSize left vectors, followed by the numOrthoConst right vectors and followed by the initSize right vectors.

                                @@ -379,7 +398,7 @@

                                magma_sprimme_svds_f77All internal operations are performed at the same precision than svecs unless the user sets internalPrecision otherwise.

                                The type and precision of the callbacks depends on the type and precision of svecs. See details for matrixMatvec, applyPreconditioner, globalSumReal, broadcastReal, and convTestFun.

                                -

                                New in version 3.0.

                                +

                                New in version 3.0.

                              @@ -388,27 +407,31 @@

                              magma_sprimme_svds_f77magma_cprimme_svds_f77

                              -magma_cprimme_svds_f77(svals, svecs, resNorms, primme_svds)
                              +magma_cprimme_svds_f77(svals, svecs, resNorms, primme_svds)

                              Solve a complex singular value problem using single precision.

                              Most of the computations are performed on GPU (see cprimme_svds_f77() for using only the CPU).

                              -
                              -
                              Parameters
                              -
                                -
                              • svals(*) (real) – (output) CPU array at least of size numSvals to store the -computed singular values; all processes in a parallel run return this local array with the same values.

                              • -
                              • svecs(*) (complex) – GPU array at least of size (mLocal + nLocal) times (numOrthoConst + numSvals) + +++ + + + + + +
                                Parameters:
                                  +
                                • svals(*) (real) – (output) CPU array at least of size numSvals to store the +computed singular values; all processes in a parallel run return this local array with the same values.
                                • +
                                • svecs(*) (complex) – GPU array at least of size (mLocal + nLocal) times (numOrthoConst + numSvals) to store column-wise the (local part for this process of the) computed left singular vectors -and the right singular vectors.

                                • -
                                • resNorms(*) (real) – CPU array at least of size numSvals to store the +and the right singular vectors.

                                • +
                                • resNorms(*) (real) – CPU array at least of size numSvals to store the residual norms of the computed triplets; all processes in parallel run return this local array with -the same values.

                                • -
                                • primme_svds (ptr) – parameters structure.

                                • +the same values. +
                                • primme_svds (ptr) – parameters structure.
                                - -
                                Returns
                                -

                                error indicator; see Error Codes.

                                -
                                - +
                                Returns:

                                error indicator; see Error Codes.

                                +

                                On input, svecs should start with the content of the numOrthoConst left vectors, followed by the initSize left vectors, followed by the numOrthoConst right vectors and followed by the initSize right vectors.

                                @@ -418,7 +441,7 @@

                                magma_cprimme_svds_f77All internal operations are performed at the same precision than svecs unless the user sets internalPrecision otherwise.

                                The type and precision of the callbacks depends on the type and precision of svecs. See details for matrixMatvec, applyPreconditioner, globalSumReal, broadcastReal, and convTestFun.

                                -

                                New in version 3.0.

                                +

                                New in version 3.0.

                              @@ -427,27 +450,31 @@

                              magma_cprimme_svds_f77magma_dprimme_svds_f77

                              -magma_dprimme_svds_f77(svals, svecs, resNorms, primme_svds)
                              +magma_dprimme_svds_f77(svals, svecs, resNorms, primme_svds)

                              Solve a real singular value problem using double precision.

                              Most of the computations are performed on GPU (see dprimme_svds_f77() for using only the CPU).

                              -
                              -
                              Parameters
                              -
                                -
                              • svals(*) (double precision) – (output) CPU array at least of size numSvals to store the -computed singular values; all processes in a parallel run return this local array with the same values.

                              • -
                              • svecs(*) (double precision) – GPU array at least of size (mLocal + nLocal) times (numOrthoConst + numSvals) + +++ + + + + + +
                                Parameters:
                                  +
                                • svals(*) (double precision) – (output) CPU array at least of size numSvals to store the +computed singular values; all processes in a parallel run return this local array with the same values.
                                • +
                                • svecs(*) (double precision) – GPU array at least of size (mLocal + nLocal) times (numOrthoConst + numSvals) to store column-wise the (local part for this process of the) computed left singular vectors -and the right singular vectors.

                                • -
                                • resNorms(*) (double precision) – CPU array at least of size numSvals to store the +and the right singular vectors.

                                • +
                                • resNorms(*) (double precision) – CPU array at least of size numSvals to store the residual norms of the computed triplets; all processes in parallel run return this local array with -the same values.

                                • -
                                • primme_svds (ptr) – parameters structure.

                                • +the same values. +
                                • primme_svds (ptr) – parameters structure.
                                - -
                                Returns
                                -

                                error indicator; see Error Codes.

                                -
                                - +
                                Returns:

                                error indicator; see Error Codes.

                                +

                                On input, svecs should start with the content of the numOrthoConst left vectors, followed by the initSize left vectors, followed by the numOrthoConst right vectors and followed by the initSize right vectors.

                                @@ -457,7 +484,7 @@

                                magma_dprimme_svds_f77All internal operations are performed at the same precision than svecs unless the user sets internalPrecision otherwise.

                                The type and precision of the callbacks depends on the type and precision of svecs. See details for matrixMatvec, applyPreconditioner, globalSumReal, broadcastReal, and convTestFun.

                                -

                                New in version 3.0.

                                +

                                New in version 3.0.

                              @@ -466,27 +493,31 @@

                              magma_dprimme_svds_f77magma_zprimme_svds_f77

                              -magma_zprimme_svds_f77(svals, svecs, resNorms, primme_svds)
                              +magma_zprimme_svds_f77(svals, svecs, resNorms, primme_svds)

                              Solve a complex singular value problem using double precision.

                              Most of the computations are performed on GPU (see zprimme_svds_f77() for using only the CPU).

                              -
                              -
                              Parameters
                              -
                                -
                              • svals(*) (double precision) – (output) CPU array at least of size numSvals to store the -computed singular values; all processes in a parallel run return this local array with the same values.

                              • -
                              • svecs(*) (complex*16) – GPU array at least of size (mLocal + nLocal) times (numOrthoConst + numSvals) + +++ + + + + + +
                                Parameters:
                                  +
                                • svals(*) (double precision) – (output) CPU array at least of size numSvals to store the +computed singular values; all processes in a parallel run return this local array with the same values.
                                • +
                                • svecs(*) (complex*16) – GPU array at least of size (mLocal + nLocal) times (numOrthoConst + numSvals) to store column-wise the (local part for this process of the) computed left singular vectors -and the right singular vectors.

                                • -
                                • resNorms(*) (double precision) – CPU array at least of size numSvals to store the +and the right singular vectors.

                                • +
                                • resNorms(*) (double precision) – CPU array at least of size numSvals to store the residual norms of the computed triplets; all processes in parallel run return this local array with -the same values.

                                • -
                                • primme_svds (ptr) – parameters structure.

                                • +the same values. +
                                • primme_svds (ptr) – parameters structure.
                                - -
                                Returns
                                -

                                error indicator; see Error Codes.

                                -
                                - +
                                Returns:

                                error indicator; see Error Codes.

                                +

                                On input, svecs should start with the content of the numOrthoConst left vectors, followed by the initSize left vectors, followed by the numOrthoConst right vectors and followed by the initSize right vectors.

                                @@ -496,7 +527,7 @@

                                magma_zprimme_svds_f77All internal operations are performed at the same precision than svecs unless the user sets internalPrecision otherwise.

                                The type and precision of the callbacks depends on the type and precision of svecs. See details for matrixMatvec, applyPreconditioner, globalSumReal, broadcastReal, and convTestFun.

                                -

                                New in version 3.0.

                                +

                                New in version 3.0.

                              @@ -505,16 +536,20 @@

                              magma_zprimme_svds_f77primme_svds_initialize_f77

                              -primme_svds_initialize_f77(primme_svds)
                              +primme_svds_initialize_f77(primme_svds)

                              Set PRIMME SVDS parameters structure to the default values.

                              After calling dprimme_svds_f77() (or a variant), call primme_svds_free_f77() to release allocated resources by PRIMME.

                              -
                              -
                              Parameters
                              -
                                -
                              • primme_svds (ptr) – (output) parameters structure.

                              • + +++ + + + +
                                Parameters:
                                  +
                                • primme_svds (ptr) – (output) parameters structure.
                                - - +
                      @@ -522,29 +557,33 @@

                      primme_svds_initialize_f77

                      -primme_svds_set_method_f77(method, methodStage1, methodStage2, primme_svds, ierr)
                      +primme_svds_set_method_f77(method, methodStage1, methodStage2, primme_svds, ierr)

                      Set PRIMME SVDS parameters to one of the preset configurations.

                      -
                      -
                      Parameters
                      -
                      @@ -552,15 +591,19 @@

                      primme_svds_set_method_f77

                      -primme_svds_display_params_f77(primme_svds)
                      +primme_svds_display_params_f77(primme_svds)

                      Display all printable settings of primme_svds into the file descriptor outputFile.

                      -
                      -
                      Parameters
                      -
                        -
                      • primme_svds (ptr) – (input) parameters structure.

                      • + +++ + + + +
                        Parameters:
                          +
                        • primme_svds (ptr) – (input) parameters structure.
                        - - +
                  @@ -568,15 +611,19 @@

                  primme_svds_display_params_f77

                  -primme_svds_free_f77(primme_svds)
                  +primme_svds_free_f77(primme_svds)

                  Free memory allocated by PRIMME SVDS and delete all values set.

                  -
                  -
                  Parameters
                  -
                    -
                  • primme_svds (ptr) – (input/output) parameters structure.

                  • + +++ + + + +
                    Parameters:
                      +
                    • primme_svds (ptr) – (input/output) parameters structure.
                    - - +
                  @@ -584,13 +631,15 @@

                  primme_svds_free_f77primme_svds_set_member_f77

                  -primme_svds_set_member_f77(primme_svds, label, value)
                  +primme_svds_set_member_f77(primme_svds, label, value)

                  Set a value in some field of the parameter structure.

                  -
                  -
                  Parameters
                  -
                  @@ -670,26 +721,30 @@

                  primme_svds_set_member_f77

                  -primme_svdstop_get_member_f77(primme_svds, label, value)
                  +primme_svdstop_get_member_f77(primme_svds, label, value)

                  Get the value in some field of the parameter structure.

                  -
                  -
                  Parameters
                  -
                  @@ -721,26 +776,30 @@

                  primme_svdstop_get_member_f77

                  -primme_svds_get_member_f77(primme_svds, label, value)
                  +primme_svds_get_member_f77(primme_svds, label, value)

                  Get the value in some field of the parameter structure.

                  -
                  -
                  Parameters
                  -
                  diff --git a/doc/html/svdsf90.html b/doc/html/svdsf90.html index d1a319fd..a153bc9e 100644 --- a/doc/html/svdsf90.html +++ b/doc/html/svdsf90.html @@ -8,7 +8,7 @@ - FORTRAN 90 Library Interface — PRIMME 3.0 documentation + FORTRAN 90 Library Interface — PRIMME 3.1 documentation @@ -25,7 +25,6 @@ - @@ -64,7 +63,7 @@
                  - 3.0 + 3.1
                  @@ -190,27 +189,31 @@

                  FORTRAN 90 Library Interface

                  -

                  New in version 3.0.

                  +

                  New in version 3.0.

                  The next enumerations and functions are declared in primme_f90.inc.

                  -subroutine primme_svds_matvec(x, ldx, y, ldy, blockSize, mode, primme_svds, ierr)
                  +subroutine primme_svds_matvec(x, ldx, y, ldy, blockSize, mode, primme_svds, ierr)

                  Abstract interface for the callbacks matrixMatvec and applyPreconditioner.

                  -
                  -
                  Parameters
                  -
                    -
                  • x (ldx,*) [type(*),in] :: matrix with blockSize columns in column-major order with leading dimension ldx.

                  • -
                  • ldx [c_int64_t] :: the leading dimension of the array x.

                  • -
                  • y (ldy,*) [type(*),out] :: matrix with blockSize columns in column-major order with leading dimension ldy.

                  • -
                  • ldy [c_int64_t] :: the leading dimension of the array y.

                  • -
                  • blockSize [c_int,in] :: number of columns in x and y.

                  • -
                  • mode [c_int,in] :: a flag.

                  • -
                  • primme_svds [c_ptr,in] :: parameters structure created by primme_svds_params_create().

                  • -
                  • ierr [c_int,out] :: output error code; if it is set to non-zero, the current call to PRIMME will stop.

                  • + +++ + + + +
                    Parameters:
                      +
                    • x (ldx,*) [type(*),in] :: matrix with blockSize columns in column-major order with leading dimension ldx.
                    • +
                    • ldx [c_int64_t] :: the leading dimension of the array x.
                    • +
                    • y (ldy,*) [type(*),out] :: matrix with blockSize columns in column-major order with leading dimension ldy.
                    • +
                    • ldy [c_int64_t] :: the leading dimension of the array y.
                    • +
                    • blockSize [c_int,in] :: number of columns in x and y.
                    • +
                    • mode [c_int,in] :: a flag.
                    • +
                    • primme_svds [c_ptr,in] :: parameters structure created by primme_svds_params_create().
                    • +
                    • ierr [c_int,out] :: output error code; if it is set to non-zero, the current call to PRIMME will stop.
                    - - +

                    See more details about the precision and type and dimension for x and y, and the meaning of mode in the documentation of the callbacks.

                  @@ -218,14 +221,17 @@

                  FORTRAN 90 Library Interface

                  -c_ptr primme_svds_params_create()
                  +c_ptr primme_svds_params_create()

                  Allocate and initialize a parameters structure to the default values.

                  After calling xprimme_svds() (or a variant), call primme_svds_params_destroy() to release allocated resources by PRIMME.

                  -
                  -
                  Return
                  -

                  primme_svds_params_create [c_ptr] :: pointer to a parameters structure.

                  -
                  -
                  + +++ + + + +
                  Return:primme_svds_params_create [c_ptr] :: pointer to a parameters structure.
                  @@ -233,29 +239,33 @@

                  primme_svds_params_create

                  -c_int primme_svds_set_method(method, methodStage1, methodStage2, primme_svds)
                  +c_int primme_svds_set_method(method, methodStage1, methodStage2, primme_svds)

                  Set PRIMME SVDS parameters to one of the preset configurations.

                  -
                  -
                  Parameters
                  -
                    -
                  • method [integer] ::

                    (input) preset configuration to compute the singular triplets; one of

                    + +++ + + + +
                    Parameters:
                      +
                    • method [integer] ::

                      (input) preset configuration to compute the singular triplets; one of

                      -

                    • -
                    • methodStage1 [primme_preset_method] :: (input) preset method to compute the eigenpairs at the first stage; see available values at primme_set_method().

                    • -
                    • methodStage2 [primme_preset_method] :: (input) preset method to compute the eigenpairs with -the second stage of PRIMME_SVDS_hybrid; see available values at primme_set_method().

                    • -
                    • primme_svds [ptr] :: (input/output) parameters structure.

                    • -
                    • ierr [integer] :: (output) if 0, successful; if negative, something went wrong.

                    • + +
                    • methodStage1 [primme_preset_method] :: (input) preset method to compute the eigenpairs at the first stage; see available values at primme_set_method().
                    • +
                    • methodStage2 [primme_preset_method] :: (input) preset method to compute the eigenpairs with +the second stage of PRIMME_SVDS_hybrid; see available values at primme_set_method().
                    • +
                    • primme_svds [ptr] :: (input/output) parameters structure.
                    • +
                    • ierr [integer] :: (output) if 0, successful; if negative, something went wrong.
                    - - +
                  @@ -263,27 +273,31 @@

                  primme_svds_set_methodxprimme_svds

                  -c_int xprimme_svds(svals, svecs, resNorms, primme_svds)
                  +c_int xprimme_svds(svals, svecs, resNorms, primme_svds)

                  Solve a real or complex singular value problem.

                  All arrays should be hosted on CPU. The computations are performed on CPU (see magma_xprimme_svds() for using GPUs).

                  -
                  -
                  Parameters
                  -
                    -
                  • svals (*) [out] :: array at least of size numSvals to store the -computed singular values; all processes in a parallel run return this local array with the same values.

                  • -
                  • svecs (*) :: array at least of size (mLocal + nLocal) times (numOrthoConst + numSvals) + +++ + + + + + +
                    Parameters:
                      +
                    • svals (*) [out] :: array at least of size numSvals to store the +computed singular values; all processes in a parallel run return this local array with the same values.
                    • +
                    • svecs (*) :: array at least of size (mLocal + nLocal) times (numOrthoConst + numSvals) to store column-wise the (local part for this process of the) computed left singular vectors -and the right singular vectors.

                    • -
                    • resNorms (*) [out] :: array at least of size numSvals to store the +and the right singular vectors.

                    • +
                    • resNorms (*) [out] :: array at least of size numSvals to store the residual norms of the computed triplets; all processes in parallel run return this local array with -the same values.

                    • -
                    • primme [c_ptr,in] :: parameters structure created by primme_params_create_svds().

                    • +the same values. +
                    • primme [c_ptr,in] :: parameters structure created by primme_params_create_svds().
                    - -
                    Return
                    -

                    xprimme_svds [c_int] :: error indicator; see Error Codes.

                    -
                    - +
                    Return:

                    xprimme_svds [c_int] :: error indicator; see Error Codes.

                    +

                    The arrays svals, svecs, and resNorms should have the same kind.

                    On input, svecs should start with the content of the numOrthoConst left vectors, followed by the initSize left vectors, followed by the numOrthoConst right vectors and @@ -300,27 +314,31 @@

                    xprimme_svds

                    -c_int magma_xprimme_svds(svals, svecs, resNorms, primme_svds)
                    +c_int magma_xprimme_svds(svals, svecs, resNorms, primme_svds)

                    Solve a real or complex singular value problem.

                    Most of the computations are performed on GPU (see xprimme_svds() for using only the CPU).

                    -
                    -
                    Parameters
                    -
                      -
                    • svals (*) [out] :: CPU array at least of size numSvals to store the -computed singular values; all processes in a parallel run return this local array with the same values.

                    • -
                    • svecs (*) :: GPU array at least of size (mLocal + nLocal) times (numOrthoConst + numSvals) + +++ + + + + + +
                      Parameters:
                        +
                      • svals (*) [out] :: CPU array at least of size numSvals to store the +computed singular values; all processes in a parallel run return this local array with the same values.
                      • +
                      • svecs (*) :: GPU array at least of size (mLocal + nLocal) times (numOrthoConst + numSvals) to store column-wise the (local part for this process of the) computed left singular vectors -and the right singular vectors.

                      • -
                      • resNorms (*) [out] :: CPU array at least of size numSvals to store the +and the right singular vectors.

                      • +
                      • resNorms (*) [out] :: CPU array at least of size numSvals to store the residual norms of the computed triplets; all processes in parallel run return this local array with -the same values.

                      • -
                      • primme [c_ptr,in] :: parameters structure created by primme_params_create_svds().

                      • +the same values. +
                      • primme [c_ptr,in] :: parameters structure created by primme_params_create_svds().
                      - -
                      Return
                      -

                      magma_xprimme_svds [c_int] :: error indicator; see Error Codes.

                      -
                      - +
                      Return:

                      magma_xprimme_svds [c_int] :: error indicator; see Error Codes.

                      +

                      The arrays svals, svecs, and resNorms should have the same kind.

                      On input, svecs should start with the content of the numOrthoConst left vectors, followed by the initSize left vectors, followed by the numOrthoConst right vectors and @@ -337,17 +355,19 @@

                      magma_xprimme_svds

                      -c_int primme_svds_params_destroy(primme_svds)
                      +c_int primme_svds_params_destroy(primme_svds)

                      Free memory allocated by PRIMME associated to a parameters structure created with primme_svds_params_create().

                      -
                      -
                      Parameters
                      -

                      primme_svds [c_ptr] :: parameters structure.

                      -
                      -
                      Return
                      -

                      primme_svds_params_destroy :: nonzero value if the call is not successful.

                      -
                      -
                      + +++ + + + + + +
                      Parameters:primme_svds [c_ptr] :: parameters structure.
                      Return:primme_svds_params_destroy :: nonzero value if the call is not successful.
                      @@ -355,13 +375,15 @@

                      primme_svds_params_destroy

                      -c_int primme_svds_set_member(primme_svds, label, value)
                      +c_int primme_svds_set_member(primme_svds, label, value)

                      Set a value in some field of the parameter structure.

                      -
                      -
                      Parameters
                      -
                        -
                      • primme_svds [ptr] :: (input) parameters structure.

                      • -
                      • label [integer] ::

                        field where to set value. One of:

                        + +++ + + + + + +
                        Parameters: - -
                        Return
                        -

                        primme_svds_set_member [c_int] ::

                        nonzero value if the call is not successful.

                        +
                        Return:

                        primme_svds_set_member [c_int] ::

                        nonzero value if the call is not successful.

                        Examples:

                        type(c_ptr) :: primme_svds
                         integer :: ierr
                        @@ -463,8 +485,10 @@ 

                        primme_svds_set_member

                        - - +
                      @@ -472,20 +496,24 @@

                      primme_svds_set_memberprimme_get_member

                      -c_int primme_svds_get_member(primme, label, value)
                      +c_int primme_svds_get_member(primme, label, value)

                      Get the value in some field of the parameter structure.

                      -
                      -
                      Parameters
                      -
                        -
                      • primme [c_ptr,in] :: parameters structure created by primme_svds_params_create().

                      • -
                      • label [integer,in] :: field where to get value. One of the detailed in function primme_svds_set_member().

                      • -
                      • value [out] :: value of the field. The allowed types are c_int64, c_double, and c_ptr.

                      • + +++ + + + + + +
                        Parameters:
                          +
                        • primme [c_ptr,in] :: parameters structure created by primme_svds_params_create().
                        • +
                        • label [integer,in] :: field where to get value. One of the detailed in function primme_svds_set_member().
                        • +
                        • value [out] :: value of the field. The allowed types are c_int64, c_double, and c_ptr.
                        - -
                        Return
                        -

                        primme_svds_get_member [c_int] :: nonzero value if the call is not successful.

                        -
                        - +
                        Return:

                        primme_svds_get_member [c_int] :: nonzero value if the call is not successful.

                        +

                        Examples:

                        type(c_ptr) :: primme_svds
                         integer :: ierr
                        diff --git a/doc/readme.pdf b/doc/readme.pdf
                        new file mode 100644
                        index 00000000..7fb96707
                        Binary files /dev/null and b/doc/readme.pdf differ
                        diff --git a/examples/Makefile b/examples/Makefile
                        index 8e080af4..352c497a 100644
                        --- a/examples/Makefile
                        +++ b/examples/Makefile
                        @@ -24,7 +24,7 @@ ifeq ($(USE_PETSC), yes)
                           LIBDIRS += $(PETSC_C_SH_LIB_PATH)
                           LIBS += $(PETSC_LIB)
                           EXAMPLES_C += ex_eigs_petsc ex_svds_petsc ex_eigs_mpi
                        -  EXAMPLES_F77 += ex_eigs_petscf77 ex_eigs_petscf77ptr ex_svds_petscf77 ex_svds_petscf77ptr
                        +  EXAMPLES_F += ex_eigs_petscf77 ex_eigs_petscf77ptr ex_svds_petscf77 ex_svds_petscf77ptr
                           MPIRUN ?= mpirun -np 4
                         else ifeq ($(USE_MPI),yes)
                           EXAMPLES_C +=  ex_eigs_mpi
                        @@ -54,20 +54,20 @@ $(EXAMPLES_F): % : %.o
                         	$(CXX) $(CXXFLAGS) $(DEFINES) $(INCLUDE) -c $< -o $@
                         
                         .f.o .F.o:
                        -	$(F77) $(FFLAGS) $(FINCLUDE) $(COMMON_INCLUDE) -c $< -o $@
                        +	$(F77) $(FFLAGS) $(FINCLUDE) -c $< -o $@
                         
                         %.o: %.f90
                        -	$(FC) $(FFLAGS) $(FINCLUDE) $(COMMON_INCLUDE) -c $< -o $@
                        +	$(FC) $(FFLAGS) $(FINCLUDE) -c $< -o $@
                         
                         all: examples
                         
                        -examples: examples_C examples_CXX examples_F77
                        +examples: examples_C examples_CXX examples_F
                         examples_C: $(EXAMPLES_C)
                         examples_CXX: $(EXAMPLES_CXX)
                        -examples_F77: $(EXAMPLES_F77)
                        +examples_F: $(EXAMPLES_F)
                         
                        -test_examples: test_examples_C test_examples_F77 test_examples_CXX
                        -test_examples_C test_examples_F77 test_examples_CXX: test_examples% : examples%
                        +test_examples: test_examples_C test_examples_F test_examples_CXX
                        +test_examples_C test_examples_F test_examples_CXX: test_examples% : examples%
                         	@ok="0";for ex in $(EXAMPLES$*); do \
                         		echo "=========== Executing ./$$ex"; \
                         	        case $$ex in \
                        @@ -88,7 +88,7 @@ clean:
                         	@rm -f *.o tests.log
                         
                         veryclean: clean
                        -	@rm -f $(EXAMPLES_C) $(EXAMPLES_F77) $(EXAMPLES_CXX)
                        +	@rm -f $(EXAMPLES_C) $(EXAMPLES_F) $(EXAMPLES_CXX)
                         
                         ifeq ($(UNAME), FreeBSD)
                           M4 ?= m4 -g
                        diff --git a/examples/ex_eigs_dseqf90.f90 b/examples/ex_eigs_dseqf90.f90
                        index 2873664b..ad36f7cf 100644
                        --- a/examples/ex_eigs_dseqf90.f90
                        +++ b/examples/ex_eigs_dseqf90.f90
                        @@ -33,7 +33,6 @@
                         !******************************************************************************
                         
                         Program primmeF90Example
                        -
                            use iso_c_binding, only: c_ptr, c_int64_t, c_double, c_funloc
                            implicit none
                         
                        @@ -57,23 +56,18 @@ Program primmeF90Example
                            integer(c_int64_t), parameter :: numTargetShifts = 2
                            real(c_double) :: TargetShifts(numTargetShifts) = (/3.0D0, 5.1D0/)
                            
                        -   procedure(primme_eigs_matvec) :: MV, ApplyPrecon
                        -   
                            ! Eigenvalues, eigenvectors, and their residual norms
                        -   
                            double precision, allocatable :: evals(:)
                            double precision, allocatable :: rnorms(:)
                            double precision, allocatable :: evecs(:,:)
                            
                            ! Other vars
                        -   
                            integer :: ierr
                            integer(c_int64_t) :: i
                            real(c_double) :: epsil, aNorm
                            integer(c_int64_t) :: numIts, numMatvecs
                            
                            ! Initialize PRIMME
                        -   
                            primme = primme_params_create()
                            
                            ! Set a few basic solver parameters
                        @@ -85,14 +79,13 @@ Program primmeF90Example
                            ierr = primme_set_member(primme, PRIMME_targetShifts, TargetShifts)
                            
                            ! Set matvec 
                        -   ierr = primme_set_member(primme, PRIMME_matrixMatvec, MV)
                        +   ierr = primme_set_member_matvec_double(primme, PRIMME_matrixMatvec, MV)
                            
                            ! Set preconditioner  (optional)
                            ierr = primme_set_member(primme, PRIMME_applyPreconditioner, c_funloc(ApplyPrecon))
                            ierr = primme_set_member(primme, PRIMME_correctionParams_precondition, 1_c_int64_t)
                            
                        -   !       Set a few other solver parameters (optional) 
                        -   
                        +   ! Set a few other solver parameters (optional)
                            ierr = primme_set_member(primme, PRIMME_maxBasisSize, BASISmax)
                            ierr = primme_set_member(primme, PRIMME_maxBlockSize, BLOCKmax)
                            ierr = primme_set_member(primme, PRIMME_printLevel, printLevel)
                        @@ -100,7 +93,6 @@ Program primmeF90Example
                            
                            ! Set the method to be used (after n, numEvals, and precondition have
                            ! been set. Also after basisSize is set, if desired.)
                        -   
                            ierr = primme_set_method(PRIMME_DYNAMIC, primme)
                            if (ierr .lt. 0) print *, 'No preset method. Using custom settings'
                            
                        @@ -108,20 +100,17 @@ Program primmeF90Example
                            call primme_display_params_f77(primme)
                            
                            ! Allocate arrays
                        -   
                            allocate(evals(NUMEmax))
                            allocate(rnorms(NUMEmax))
                            allocate(evecs(n,NUMEmax))
                            
                            ! Calling the PRIMME solver
                        -   
                            ierr = dprimme(evals, evecs, rnorms, primme)
                            if (ierr.ne.0) then
                              stop 1
                            endif
                            
                            ! Reporting results
                        -   
                            if (ierr.eq.0) then
                               print *, 'PRIMME has returned successfully'
                            else 
                        @@ -132,93 +121,96 @@ Program primmeF90Example
                            ierr = primme_get_member(primme, PRIMME_aNorm, aNorm)
                            ierr = primme_get_member(primme, PRIMME_stats_numOuterIterations, numIts)
                            ierr = primme_get_member(primme, PRIMME_stats_numMatvecs, numMatvecs)
                        -   print '(A,E8.2,/,A,e12.5,/,A,I8,/,A,I8)',                  &
                        +   print '(A,E9.2,/,A,e12.5,/,A,I8,/,A,I8)',                  &
                                                       'Tolerance used:   ',epsil,     &
                                                       'Estimated norm(A):',aNorm,     &
                                                       'Iterations:       ',numIts,    &
                                                       'Matvecs:          ',numMatvecs 
                         
                            ! Reporting of evals and residuals
                        -
                            do i = 1, numemax
                               print '(a,i1,a,G24.16,a,E12.4)',' eval(', i, ') = ', evals(i), '    residual norm =', rnorms(i)
                            end do
                            ierr = primme_params_destroy(primme)
                        -   stop
                        -end
                        -
                        -!-----------------------------------------------------------------------
                        -! Supporting subroutines
                        -!-----------------------------------------------------------------------
                        -
                        -! ----------------------------------------------------------------
                        -! 1-D Laplacian block matrix-vector product, Y = A * X, where
                        -!
                        -! - X, input dense matrix of size primme.n x blockSize;
                        -! - Y, output dense matrix of size primme.n x blockSize;
                        -! - A, tridiagonal square matrix of dimension primme.n with this form:
                        -!
                        -!       2 -1  0  0  0 ... 
                        -!      -1  2 -1  0  0 ... 
                        -!       0 -1  2 -1  0 ... 
                        -!       ...
                        -!
                        -subroutine MV(x,ldx,y,ldy,k,primme,ierr)
                        -   use iso_c_binding, only: c_ptr, c_int, c_int64_t, c_double
                        -   implicit none
                         
                        -   include 'primme_f90.inc'
                        -   integer(c_int64_t) ldx, ldy
                        -   real(c_double) x(ldx,*), y(ldy,*)
                        -   type(c_ptr), value :: primme
                        -   integer(c_int64_t) n, i
                        -   integer(c_int) :: k,ierr
                        -   integer :: j
                        +contains
                         
                        -   ierr = primme_get_member(primme, PRIMME_n, n)
                        -   do j=1,k
                        -      do i=1,n
                        -         y(i,j) = 0
                        -         if (i.ge.2) then
                        -            y(i,j) = y(i,j) - x(i-1,j)
                        -         endif
                        -         y(i,j) = y(i,j) + 2.*x(i,j)
                        -         if (i.le.n-1) then
                        -            y(i,j) = y(i,j) - x(i+1,j)
                        -         endif
                        +   !-----------------------------------------------------------------------
                        +   ! Supporting subroutines
                        +   !-----------------------------------------------------------------------
                        +   
                        +   ! ----------------------------------------------------------------
                        +   ! 1-D Laplacian block matrix-vector product, Y = A * X, where
                        +   !
                        +   ! - X, input dense matrix of size primme.n x blockSize;
                        +   ! - Y, output dense matrix of size primme.n x blockSize;
                        +   ! - A, tridiagonal square matrix of dimension primme.n with this form:
                        +   !
                        +   !       2 -1  0  0  0 ... 
                        +   !      -1  2 -1  0  0 ... 
                        +   !       0 -1  2 -1  0 ... 
                        +   !       ...
                        +   !
                        +   subroutine MV(x,ldx,y,ldy,k,primme,ierr) bind(c)
                        +      use iso_c_binding, only: c_ptr, c_int, c_int64_t, c_double
                        +      implicit none
                        +   
                        +      integer(c_int64_t) ldx, ldy
                        +      real(c_double) x(ldx,*), y(ldy,*)
                        +      type(c_ptr), value :: primme
                        +      integer(c_int64_t) n, i
                        +      integer(c_int), intent(in) :: k
                        +      integer(c_int) :: ierr
                        +      integer :: j
                        +   
                        +      ierr = primme_get_member(primme, PRIMME_n, n)
                        +      do j=1,k
                        +         do i=1,n
                        +            y(i,j) = 0
                        +            if (i.ge.2) then
                        +               y(i,j) = y(i,j) - x(i-1,j)
                        +            endif
                        +            y(i,j) = y(i,j) + 2.*x(i,j)
                        +            if (i.le.n-1) then
                        +               y(i,j) = y(i,j) - x(i+1,j)
                        +            endif
                        +         enddo
                               enddo
                        -   enddo
                        -   ierr = 0
                        -end
                        +      ierr = 0
                        +   end
                        +   
                        +   ! ----------------------------------------------------------------
                        +   ! This performs Y = M^{-1} * X, where
                        +   !
                        +   ! - X, input dense matrix of size primme.n x blockSize;
                        +   ! - Y, output dense matrix of size primme.n x blockSize;
                        +   ! - M, diagonal square matrix of dimension primme.n with 2 in the diagonal.
                        +   !
                        +   subroutine ApplyPrecon(x,ldx,y,ldy,k,primme, ierr) bind(c)
                        +      use iso_c_binding, only: c_ptr, c_int, c_int64_t, c_double, c_f_pointer
                        +      implicit none
                        +      integer(c_int64_t) ldx, ldy
                        +      real(c_double) x(ldx,*), y(ldy,*)
                        +      type(c_ptr), value :: primme
                        +      integer(c_int64_t) n, i
                        +     integer(c_int), intent(in) :: k
                        +     integer(c_int) :: ierr
                        +      integer :: j
                        +   
                        +      real(c_double), pointer :: shifts(:)
                        +      type(c_ptr) :: pshifts
                        +   
                        +      ierr = primme_get_member(primme, PRIMME_n, n)
                        +      ierr = primme_get_member(primme, PRIMME_ShiftsForPreconditioner, pshifts)
                        +      call c_f_pointer(pshifts, shifts, shape=[k])
                        +      do j=1,k
                        +         do i=1,n
                        +            y(i,j) = x(i,j)/(2.0 - shifts(j))
                        +         enddo
                        +      enddo
                        +      ierr = 0
                        +   end
                         
                        -! ----------------------------------------------------------------
                        -! This performs Y = M^{-1} * X, where
                        -!
                        -! - X, input dense matrix of size primme.n x blockSize;
                        -! - Y, output dense matrix of size primme.n x blockSize;
                        -! - M, diagonal square matrix of dimension primme.n with 2 in the diagonal.
                        -!
                        -subroutine ApplyPrecon(x,ldx,y,ldy,k,primme, ierr)
                        -   use iso_c_binding, only: c_ptr, c_int, c_int64_t, c_double, c_f_pointer
                        -   implicit none
                        -   include 'primme_f90.inc'
                        -   integer(c_int64_t) ldx, ldy
                        -   real(c_double) x(ldx,*), y(ldy,*)
                        -   type(c_ptr), value :: primme
                        -   integer(c_int64_t) n, i
                        -   integer(c_int) :: k,ierr
                        -   integer :: j
                        +end
                         
                        -   real(c_double), pointer :: shifts(:)
                        -   type(c_ptr) :: pshifts
                         
                        -   ierr = primme_get_member(primme, PRIMME_n, n)
                        -   ierr = primme_get_member(primme, PRIMME_ShiftsForPreconditioner, pshifts)
                        -   call c_f_pointer(pshifts, shifts, shape=[k])
                        -   do j=1,k
                        -      do i=1,n
                        -         y(i,j) = x(i,j)/(2.0 - shifts(j))
                        -      enddo
                        -   enddo
                        -   ierr = 0
                        -end
                        diff --git a/examples/ex_svds_dseqf90.f90 b/examples/ex_svds_dseqf90.f90
                        index 6f156162..5e7a895f 100644
                        --- a/examples/ex_svds_dseqf90.f90
                        +++ b/examples/ex_svds_dseqf90.f90
                        @@ -60,7 +60,6 @@ Program primmeSvdsF77Example
                            double precision :: c
                         
                            common c
                        -   procedure(primme_svds_matvec) MV, ApplyPrecon
                         
                            ! Singular values, vectors and their residual norms
                         
                        @@ -89,10 +88,10 @@ Program primmeSvdsF77Example
                            ierr = primme_svds_set_member(primme_svds, PRIMME_SVDS_targetShifts, TargetShifts)
                         
                            ! Set matvec 
                        -   ierr = primme_svds_set_member(primme_svds, PRIMME_SVDS_matrixMatvec, MV)
                        +   ierr = primme_svds_set_member_matvec_double(primme_svds, PRIMME_SVDS_matrixMatvec, MV)
                         
                            ! Set preconditioner based on A^H*A (optional)
                        -   ierr = primme_svds_set_member(primme_svds, PRIMME_SVDS_applyPreconditioner, ApplyPrecon)
                        +   ierr = primme_svds_set_member_matvec_double(primme_svds, PRIMME_SVDS_applyPreconditioner, ApplyPrecon)
                         
                            ! Set a few other solver parameters (optional) 
                         
                        @@ -140,133 +139,135 @@ Program primmeSvdsF77Example
                            do i = 1, NUMSmax
                               print '(a,i1,a,G24.16,a,E12.4)',' sval(', i, ') = ', svals(i), '    residual norm =', rnorms(i)
                            enddo
                        -   stop
                        -end
                        -
                        -!-----------------------------------------------------------------------
                        -! Supporting subroutines
                        -!-----------------------------------------------------------------------
                        -
                        -
                        -! ----------------------------------------------------------------
                        -! Lauchli-like block matrix-vector products, Y = A * X or Y = A' * X, where
                        -! 
                        -! - X, input dense matrix of size primme.n x blockSize or primme.m x blockSize;
                        -! - Y, output dense matrix of size primme.m x blockSize or primme.n x blockSize;
                        -! - A, rectangular matrix of size primme.m x primme.n with this form:
                        -! 
                        -!       1  1  1  1  1 ... ,  ei = 1 - (1 - c)*i/(min(m,n) - 1)
                        -!      e0  0  0  0  0 ... 
                        -!       0 e1  0  0  0 ... 
                        -!       0  0 e2  0  0 ... 
                        -!       ...
                        -!      
                        -subroutine MV(x,ldx,y,ldy,k,transpose,primme_svds,ierr)
                        -   use iso_c_binding, only: c_ptr, c_int, c_int64_t, c_double
                        -   implicit none
                        -
                        -   intrinsic min
                        -   include 'primme_f90.inc'
                        -   integer(c_int64_t) :: ldx,ldy
                        -   real(c_double) :: x(ldx,*), y(ldy,*)
                        -   type(c_ptr), value :: primme_svds
                        -   integer(c_int) :: k, transpose, ierr
                        -
                        -   integer(c_int64_t) :: m, n, i
                        -   integer j
                        -
                        -   double precision :: c
                        -   common c
                         
                        -   ierr = primme_svds_get_member(primme_svds, PRIMME_SVDS_m, m)
                        -   ierr = primme_svds_get_member(primme_svds, PRIMME_SVDS_n, n)
                        +contains
                         
                        -   if (transpose.eq.0) then
                        -      do j=1,k
                        -         y(1,j) = 0
                        -         do i=1,n
                        -            y(1,j) = y(1,j) + x(i,j)
                        -         enddo
                        -         do i=2,m
                        -            if (i-1.le.n) then
                        -               y(i,j) = x(i-1,j)*(1.0 - (1.0-c)*(i-2)/(min(m,n)-1))
                        -            else
                        -               y(i,j) = 0
                        -            endif
                        +   !-----------------------------------------------------------------------
                        +   ! Supporting subroutines
                        +   !-----------------------------------------------------------------------
                        +   
                        +   
                        +   ! ----------------------------------------------------------------
                        +   ! Lauchli-like block matrix-vector products, Y = A * X or Y = A' * X, where
                        +   ! 
                        +   ! - X, input dense matrix of size primme.n x blockSize or primme.m x blockSize;
                        +   ! - Y, output dense matrix of size primme.m x blockSize or primme.n x blockSize;
                        +   ! - A, rectangular matrix of size primme.m x primme.n with this form:
                        +   ! 
                        +   !       1  1  1  1  1 ... ,  ei = 1 - (1 - c)*i/(min(m,n) - 1)
                        +   !      e0  0  0  0  0 ... 
                        +   !       0 e1  0  0  0 ... 
                        +   !       0  0 e2  0  0 ... 
                        +   !       ...
                        +   !      
                        +   subroutine MV(x,ldx,y,ldy,k,transpose,primme_svds,ierr) bind(c)
                        +      use iso_c_binding, only: c_ptr, c_int, c_int64_t, c_double
                        +      implicit none
                        +   
                        +      intrinsic min
                        +      integer(c_int64_t) :: ldx,ldy
                        +      real(c_double) :: x(ldx,*), y(ldy,*)
                        +      type(c_ptr), value :: primme_svds
                        +      integer(c_int), intent(in) :: k, transpose
                        +      integer(c_int) :: ierr
                        +   
                        +      integer(c_int64_t) :: m, n, i
                        +      integer j
                        +   
                        +      double precision :: c
                        +      common c
                        +   
                        +      ierr = primme_svds_get_member(primme_svds, PRIMME_SVDS_m, m)
                        +      ierr = primme_svds_get_member(primme_svds, PRIMME_SVDS_n, n)
                        +   
                        +      if (transpose.eq.0) then
                        +         do j=1,k
                        +            y(1,j) = 0
                        +            do i=1,n
                        +               y(1,j) = y(1,j) + x(i,j)
                        +            enddo
                        +            do i=2,m
                        +               if (i-1.le.n) then
                        +                  y(i,j) = x(i-1,j)*(1.0 - (1.0-c)*(i-2)/(min(m,n)-1))
                        +               else
                        +                  y(i,j) = 0
                        +               endif
                        +            enddo
                                  enddo
                        -      enddo
                        -   else
                        -      do j=1,k
                        -         do i=1,n
                        -            if (i+1.le.m) then
                        -               y(i,j) = x(1,j) + x(i+1,j) * (1.0-(1.0-c)*(i-1)/(min(m,n)-1))
                        -            else
                        -               y(i,j) = x(1,j)
                        -            endif
                        +      else
                        +         do j=1,k
                        +            do i=1,n
                        +               if (i+1.le.m) then
                        +                  y(i,j) = x(1,j) + x(i+1,j) * (1.0-(1.0-c)*(i-1)/(min(m,n)-1))
                        +               else
                        +                  y(i,j) = x(1,j)
                        +               endif
                        +            enddo
                                  enddo
                        -      enddo
                        -   endif
                        -   ierr = 0
                        -end
                        -
                        -! ----------------------------------------------------------------
                        -! This performs Y = M^{-1} * X, where
                        -!
                        -! - X, input dense matrix of size primme.n x blockSize;
                        -! - Y, output dense matrix of size primme.n x blockSize;
                        -! - M, diagonal square matrix of dimension primme.n with 2 in the diagonal.
                        -!      
                        -subroutine ApplyPrecon(x,ldx,y,ldy,k,mode,primme_svds,ierr)
                        -   use iso_c_binding, only: c_ptr, c_int, c_int64_t, c_double, c_f_pointer
                        -   implicit none
                        -
                        -   intrinsic min
                        -   include 'primme_f90.inc'
                        -   integer(c_int64_t) :: ldx,ldy,m,n
                        -   real(c_double) :: x(ldx,*), y(ldy,*)
                        -   type(c_ptr), value :: primme_svds
                        -   integer(c_int) :: k,mode,ierr
                        -   integer(c_int64_t) i
                        -   integer j
                        -
                        -   double precision :: c, ei
                        -   common c
                        -   real(c_double), pointer :: shifts(:)
                        -   type(c_ptr) :: pshifts
                        -   integer(c_int64_t) :: numTargetShifts
                        -
                        -   ierr = primme_svds_get_member(primme_svds, PRIMME_SVDS_m, m)
                        -   ierr = primme_svds_get_member(primme_svds, PRIMME_SVDS_n, n)
                        -   ierr = primme_svds_get_member(primme_svds, PRIMME_SVDS_targetShifts, pshifts)
                        -   ierr = primme_svds_get_member(primme_svds, PRIMME_SVDS_numTargetShifts, numTargetShifts)
                        -   call c_f_pointer(pshifts, shifts, shape=[numTargetShifts])
                        -
                        -   if (mode.eq.PRIMME_SVDS_op_AtA) then
                        -      do j=1,k
                        -         do i=1,n
                        -            if (i-1.le.m) then
                        -               ei = 1.0 - (1.0 - c)*(i-1)/(min(m,n) - 1)
                        -            else
                        -               ei = 0
                        -            endif
                        -            y(i,j) = x(i,j)/(1.0 + ei*ei - shifts(1)*shifts(1))
                        +      endif
                        +      ierr = 0
                        +   end
                        +   
                        +   ! ----------------------------------------------------------------
                        +   ! This performs Y = M^{-1} * X, where
                        +   !
                        +   ! - X, input dense matrix of size primme.n x blockSize;
                        +   ! - Y, output dense matrix of size primme.n x blockSize;
                        +   ! - M, diagonal square matrix of dimension primme.n with 2 in the diagonal.
                        +   !      
                        +   subroutine ApplyPrecon(x,ldx,y,ldy,k,mode,primme_svds,ierr) bind(c)
                        +      use iso_c_binding, only: c_ptr, c_int, c_int64_t, c_double, c_f_pointer
                        +      implicit none
                        +   
                        +      intrinsic min
                        +      integer(c_int64_t) :: ldx,ldy,m,n
                        +      real(c_double) :: x(ldx,*), y(ldy,*)
                        +      type(c_ptr), value :: primme_svds
                        +      integer(c_int), intent(in) :: k,mode
                        +      integer(c_int) :: ierr
                        +      integer(c_int64_t) i
                        +      integer j
                        +   
                        +      double precision :: c, ei
                        +      common c
                        +      real(c_double), pointer :: shifts(:)
                        +      type(c_ptr) :: pshifts
                        +      integer(c_int64_t) :: numTargetShifts
                        +   
                        +      ierr = primme_svds_get_member(primme_svds, PRIMME_SVDS_m, m)
                        +      ierr = primme_svds_get_member(primme_svds, PRIMME_SVDS_n, n)
                        +      ierr = primme_svds_get_member(primme_svds, PRIMME_SVDS_targetShifts, pshifts)
                        +      ierr = primme_svds_get_member(primme_svds, PRIMME_SVDS_numTargetShifts, numTargetShifts)
                        +      call c_f_pointer(pshifts, shifts, shape=[numTargetShifts])
                        +   
                        +      if (mode.eq.PRIMME_SVDS_op_AtA) then
                        +         do j=1,k
                        +            do i=1,n
                        +               if (i-1.le.m) then
                        +                  ei = 1.0 - (1.0 - c)*(i-1)/(min(m,n) - 1)
                        +               else
                        +                  ei = 0
                        +               endif
                        +               y(i,j) = x(i,j)/(1.0 + ei*ei - shifts(1)*shifts(1))
                        +            enddo
                                  enddo
                        -      enddo
                        -   else if (mode.eq.PRIMME_SVDS_op_AAt) then
                        -      do j=1,k
                        -         y(1,j) = x(1,j)/m
                        -         do i=2,m
                        -            if (i-2.le.n) then
                        -               ei = 1.0 - (1.0 - c)*(i-2)/(min(m,n) - 1)
                        -            else
                        -               ei = 0.0
                        -            endif
                        -            y(i,j) = x(i,j)/(ei*ei - shifts(1)*shifts(1))
                        +      else if (mode.eq.PRIMME_SVDS_op_AAt) then
                        +         do j=1,k
                        +            y(1,j) = x(1,j)/m
                        +            do i=2,m
                        +               if (i-2.le.n) then
                        +                  ei = 1.0 - (1.0 - c)*(i-2)/(min(m,n) - 1)
                        +               else
                        +                  ei = 0.0
                        +               endif
                        +               y(i,j) = x(i,j)/(ei*ei - shifts(1)*shifts(1))
                        +            enddo
                                  enddo
                        -      enddo
                        -   else if (mode.eq.PRIMME_SVDS_op_augmented) then
                        -      ! If any preconditioner is available, just y = x
                        -      y(1:m+n,1:k) = x(1:m+n,1:k)
                        -   endif
                        -   ierr = 0
                        +      else if (mode.eq.PRIMME_SVDS_op_augmented) then
                        +         ! If any preconditioner is available, just y = x
                        +         y(1:m+n,1:k) = x(1:m+n,1:k)
                        +      endif
                        +      ierr = 0
                        +   end
                        +
                         end
                        diff --git a/include/primme.h b/include/primme.h
                        index 250fb7df..71926ac5 100644
                        --- a/include/primme.h
                        +++ b/include/primme.h
                        @@ -39,7 +39,7 @@
                         /* Define version */
                         
                         #define PRIMME_VERSION_MAJOR      3
                        -#define PRIMME_VERSION_MINOR      0
                        +#define PRIMME_VERSION_MINOR      1
                         
                         #if defined(__clang__) && defined(__FLT16_EPSILON__)
                         #  define PRIMME_HALF __fp16
                        diff --git a/include/primme_eigs_f90.inc b/include/primme_eigs_f90.inc
                        index a0d3382d..056395fb 100644
                        --- a/include/primme_eigs_f90.inc
                        +++ b/include/primme_eigs_f90.inc
                        @@ -189,10 +189,37 @@ integer(kind=c_int64_t), parameter :: primme_op_int = 5
                         !-------------------------------------------------------
                         
                         abstract interface
                        -   subroutine primme_eigs_matvec(x, ldx, y, ldy, blockSize, primme, ierr) bind(c)
                        +   subroutine primme_eigs_matvec_double(x, ldx, y, ldy, blockSize, primme, ierr) bind(c)
                               use iso_c_binding, only: c_ptr, c_int, c_int64_t, c_double
                               integer(c_int64_t) :: ldx, ldy
                        -      type(*) :: x(ldx,*), y(ldy,*)
                        +      real(c_double) :: x(ldx,*), y(ldy,*)
                        +      type(c_ptr), value :: primme
                        +      integer(c_int), intent(in) :: blockSize
                        +      integer(c_int) :: ierr
                        +   end subroutine
                        +
                        +   subroutine primme_eigs_matvec_complexdouble(x, ldx, y, ldy, blockSize, primme, ierr) bind(c)
                        +      use iso_c_binding, only: c_ptr, c_int, c_int64_t, c_double
                        +      integer(c_int64_t) :: ldx, ldy
                        +      complex(c_double) :: x(ldx,*), y(ldy,*)
                        +      type(c_ptr), value :: primme
                        +      integer(c_int), intent(in) :: blockSize
                        +      integer(c_int) :: ierr
                        +   end subroutine
                        +
                        +   subroutine primme_eigs_matvec_single(x, ldx, y, ldy, blockSize, primme, ierr) bind(c)
                        +      use iso_c_binding, only: c_ptr, c_int, c_int64_t, c_float
                        +      integer(c_int64_t) :: ldx, ldy
                        +      real(c_float) :: x(ldx,*), y(ldy,*)
                        +      type(c_ptr), value :: primme
                        +      integer(c_int), intent(in) :: blockSize
                        +      integer(c_int) :: ierr
                        +   end subroutine
                        +
                        +   subroutine primme_eigs_matvec_complexsingle(x, ldx, y, ldy, blockSize, primme, ierr) bind(c)
                        +      use iso_c_binding, only: c_ptr, c_int, c_int64_t, c_float
                        +      integer(c_int64_t) :: ldx, ldy
                        +      complex(c_float) :: x(ldx,*), y(ldy,*)
                               type(c_ptr), value :: primme
                               integer(c_int), intent(in) :: blockSize
                               integer(c_int) :: ierr
                        @@ -286,15 +313,47 @@ interface primme_set_member
                               type(c_funptr), intent(in), value :: value
                               integer(c_int) :: primme_set_member_fun
                            end function
                        +end interface primme_set_member
                         
                        -   function primme_set_member_matvec(primme, label, value) bind(c, name="primme_set_member")
                        +! NOTE: The following functions will be part of the interface primme_set_member as soon as
                        +!       gfortran supports it
                        +interface
                        +   function primme_set_member_matvec_double(primme, label, value) bind(c, name="primme_set_member")
                               use iso_c_binding, only: c_ptr, c_funptr, c_int, c_int64_t
                        +      import :: primme_eigs_matvec_double
                               type(c_ptr), value :: primme
                               integer(c_int), value :: label
                        -      procedure(primme_eigs_matvec) :: value
                        -      integer(c_int) :: primme_set_member_matvec
                        +      procedure(primme_eigs_matvec_double) :: value
                        +      integer(c_int) :: primme_set_member_matvec_double
                            end function
                        -end interface primme_set_member
                        +
                        +   function primme_set_member_matvec_complexdouble(primme, label, value) bind(c, name="primme_set_member")
                        +      use iso_c_binding, only: c_ptr, c_funptr, c_int, c_int64_t
                        +      import :: primme_eigs_matvec_complexdouble
                        +      type(c_ptr), value :: primme
                        +      integer(c_int), value :: label
                        +      procedure(primme_eigs_matvec_complexdouble) :: value
                        +      integer(c_int) :: primme_set_member_matvec_complexdouble
                        +   end function
                        +
                        +   function primme_set_member_matvec_single(primme, label, value) bind(c, name="primme_set_member")
                        +      use iso_c_binding, only: c_ptr, c_funptr, c_int, c_int64_t
                        +      import :: primme_eigs_matvec_single
                        +      type(c_ptr), value :: primme
                        +      integer(c_int), value :: label
                        +      procedure(primme_eigs_matvec_single) :: value
                        +      integer(c_int) :: primme_set_member_matvec_single
                        +   end function
                        +
                        +   function primme_set_member_matvec_complexsingle(primme, label, value) bind(c, name="primme_set_member")
                        +      use iso_c_binding, only: c_ptr, c_funptr, c_int, c_int64_t
                        +      import :: primme_eigs_matvec_complexsingle
                        +      type(c_ptr), value :: primme
                        +      integer(c_int), value :: label
                        +      procedure(primme_eigs_matvec_complexsingle) :: value
                        +      integer(c_int) :: primme_set_member_matvec_complexsingle
                        +   end function
                        +end interface
                         
                         interface
                            function primme_set_method(method, primme) bind(c)
                        @@ -386,12 +445,12 @@ interface xprimme_normal
                            function cprimme_normal(evals, evecs, rnorms, primme) bind(c)
                               use iso_c_binding, only: c_ptr, c_funptr, c_int, c_int64_t, c_float
                               real(c_float), dimension(*), intent(out) :: rnorms
                        -      complex(c_real), dimension(*), intent(out) :: evals
                        +      complex(c_float), dimension(*), intent(out) :: evals
                               complex(c_float), dimension(*) :: evecs
                               type(c_ptr), value :: primme
                               integer(c_int) :: cprimme_normal
                            end function
                        -end interface xprimme
                        +end interface xprimme_normal
                         
                         interface magma_xprimme_normal
                            function magma_zprimme_normal(evals, evecs, rnorms, primme) bind(c)
                        @@ -411,6 +470,6 @@ interface magma_xprimme_normal
                               type(c_ptr), value :: primme
                               integer(c_int) :: magma_cprimme_normal
                            end function
                        -end interface magma_xprimme
                        +end interface magma_xprimme_normal
                         
                         
                        diff --git a/include/primme_svds_f90.inc b/include/primme_svds_f90.inc
                        index 1e99392e..e29243bd 100644
                        --- a/include/primme_svds_f90.inc
                        +++ b/include/primme_svds_f90.inc
                        @@ -130,12 +130,40 @@ integer(kind=c_int64_t), parameter ::  primme_svds_op_augmented = 3
                         !-------------------------------------------------------
                         
                         abstract interface
                        -   subroutine primme_svds_matvec(x, ldx, y, ldy, blockSize, mode, primme_svds, ierr) bind(c)
                        -      use iso_c_binding, only: c_ptr, c_int, c_int64_t
                        +   subroutine primme_svds_matvec_double(x, ldx, y, ldy, blockSize, mode, primme_svds, ierr) bind(c)
                        +      use iso_c_binding, only: c_ptr, c_int, c_int64_t, c_double
                               integer(c_int64_t) :: ldx, ldy
                        -      type(*) :: x(ldx,*), y(ldy,*)
                        +      real(c_double) :: x(ldx,*), y(ldy,*)
                               type(c_ptr), value :: primme_svds
                        -      integer(c_int) :: blockSize, mode, ierr
                        +      integer(c_int), intent(in) :: blockSize, mode
                        +      integer(c_int) :: ierr
                        +   end subroutine
                        +
                        +   subroutine primme_svds_matvec_complexdouble(x, ldx, y, ldy, blockSize, mode, primme_svds, ierr) bind(c)
                        +      use iso_c_binding, only: c_ptr, c_int, c_int64_t, c_double
                        +      integer(c_int64_t) :: ldx, ldy
                        +      complex(c_double) :: x(ldx,*), y(ldy,*)
                        +      type(c_ptr), value :: primme_svds
                        +      integer(c_int), intent(in) :: blockSize, mode
                        +      integer(c_int) :: ierr
                        +   end subroutine
                        +
                        +   subroutine primme_svds_matvec_single(x, ldx, y, ldy, blockSize, mode, primme_svds, ierr) bind(c)
                        +      use iso_c_binding, only: c_ptr, c_int, c_int64_t, c_float
                        +      integer(c_int64_t) :: ldx, ldy
                        +      real(c_float) :: x(ldx,*), y(ldy,*)
                        +      type(c_ptr), value :: primme_svds
                        +      integer(c_int), intent(in) :: blockSize, mode
                        +      integer(c_int) :: ierr
                        +   end subroutine
                        +
                        +   subroutine primme_svds_matvec_complexsingle(x, ldx, y, ldy, blockSize, mode, primme_svds, ierr) bind(c)
                        +      use iso_c_binding, only: c_ptr, c_int, c_int64_t, c_float
                        +      integer(c_int64_t) :: ldx, ldy
                        +      complex(c_float) :: x(ldx,*), y(ldy,*)
                        +      type(c_ptr), value :: primme_svds
                        +      integer(c_int), intent(in) :: blockSize, mode
                        +      integer(c_int) :: ierr
                            end subroutine
                         end interface
                         
                        @@ -212,22 +240,52 @@ interface primme_svds_set_member
                            end function
                         
                            function primme_svds_set_member_fun(primme_svds, label, value) bind(c, name="primme_svds_set_member")
                        -      use iso_c_binding, only: c_ptr, c_funptr, c_int, c_int64_t, c_double
                        +      use iso_c_binding, only: c_ptr, c_funptr, c_int, c_int64_t
                               type(c_ptr), value :: primme_svds
                               integer(c_int), value :: label
                               type(c_funptr), intent(in), value :: value
                               integer(c_int) :: primme_svds_set_member_fun
                            end function
                        +end interface primme_svds_set_member
                         
                        -   function primme_svds_set_member_matvec(primme_svds, label, value) bind(c, name="primme_svds_set_member")
                        -      use iso_c_binding, only: c_ptr, c_funptr, c_int, c_int64_t, c_double
                        +! NOTE: The following functions will be part of the interface primme_set_member as soon as
                        +!       gfortran supports it
                        +interface
                        +    function primme_svds_set_member_matvec_double(primme_svds, label, value) bind(c, name="primme_svds_set_member")
                        +      use iso_c_binding, only: c_ptr, c_funptr, c_int, c_int64_t
                        +      import :: primme_svds_matvec_double
                               type(c_ptr), value :: primme_svds
                               integer(c_int), value :: label
                        -      procedure(primme_svds_matvec) :: value
                        -      integer(c_int) :: primme_svds_set_member_matvec
                        +      procedure(primme_svds_matvec_double) :: value
                        +      integer(c_int) :: primme_svds_set_member_matvec_double
                            end function
                        -end interface primme_svds_set_member
                        - 
                        +
                        +   function primme_svds_set_member_matvec_complexdouble(primme_svds, label, value) bind(c, name="primme_svds_set_member")
                        +      use iso_c_binding, only: c_ptr, c_funptr, c_int, c_int64_t
                        +      import :: primme_svds_matvec_complexdouble
                        +      type(c_ptr), value :: primme_svds
                        +      integer(c_int), value :: label
                        +      procedure(primme_svds_matvec_complexdouble) :: value
                        +      integer(c_int) :: primme_svds_set_member_matvec_complexdouble
                        +   end function
                        +    function primme_svds_set_member_matvec_single(primme_svds, label, value) bind(c, name="primme_svds_set_member")
                        +      use iso_c_binding, only: c_ptr, c_funptr, c_int, c_int64_t
                        +      import :: primme_svds_matvec_single
                        +      type(c_ptr), value :: primme_svds
                        +      integer(c_int), value :: label
                        +      procedure(primme_svds_matvec_single) :: value
                        +      integer(c_int) :: primme_svds_set_member_matvec_single
                        +   end function
                        +    function primme_svds_set_member_matvec_complexsingle(primme_svds, label, value) bind(c, name="primme_svds_set_member")
                        +      use iso_c_binding, only: c_ptr, c_funptr, c_int, c_int64_t
                        +      import :: primme_svds_matvec_complexsingle
                        +      type(c_ptr), value :: primme_svds
                        +      integer(c_int), value :: label
                        +      procedure(primme_svds_matvec_complexsingle) :: value
                        +      integer(c_int) :: primme_svds_set_member_matvec_complexsingle
                        +   end function
                        +end interface
                        +
                         interface
                            function primme_svds_set_method(method, methodStage1, methodStage2, primme_svds) bind(c)
                               use iso_c_binding, only: c_ptr, c_int
                        diff --git a/readme.txt b/readme.txt
                        index 97274d05..f721c0eb 100644
                        --- a/readme.txt
                        +++ b/readme.txt
                        @@ -145,6 +145,14 @@ From PRIMME 1.x to 2.0:
                         Changelog
                         =========
                         
                        +Changes in PRIMME 3.1 (released on May 2, 2020):
                        +
                        +* Fixed compilation issues in F90 interface and examples.
                        +
                        +* Fixed bug in block orthogonalization.
                        +
                        +* Updated Python interface to Python version 3.8.
                        +
                         Changes in PRIMME 3.0 (released on December 14, 2019):
                         
                         * Added support for the generalized Hermitian eigenvalue problem
                        @@ -647,7 +655,7 @@ precisions:
                         
                         +-------------+----------------------+----------------------+
                         | Precision   | Real                 | Complex              |
                        -|=============|======================|======================|
                        ++=============+======================+======================+
                         | half        | "hprimme()"          | "kprimme()"          |
                         |             | "hsprimme()"         | "ksprimme()"         |
                         +-------------+----------------------+----------------------+
                        @@ -667,7 +675,7 @@ precisions:
                         
                         +-------------+-----------------------------+
                         | Precision   | Complex                     |
                        -|=============|=============================|
                        ++=============+=============================+
                         | half        | "kprimme_normal()"          |
                         |             | "kcprimme_normal()"         |
                         +-------------+-----------------------------+
                        @@ -3693,7 +3701,7 @@ primme_params
                         
                               +----------+---------+------------------------------------------------------------+
                               | RightX   | SkewX   | D                                                          |
                        -      |==========|=========|============================================================|
                        +      +==========+=========+============================================================+
                               | 0        | 0       | M^{-1}R (Classic GD)                                       |
                               +----------+---------+------------------------------------------------------------+
                               | 1        | 0       | M^{-1}(R-Delta X) (cheap Olsen’s Method)                   |
                        @@ -3730,7 +3738,7 @@ primme_params
                         
                               +----------+---------+---------------------------------+
                               | RightQ   | SkewQ   | P_Q^r                           |
                        -      |==========|=========|=================================|
                        +      +==========+=========+=================================+
                               | 0        | 0       | I                               |
                               +----------+---------+---------------------------------+
                               | 1        | 0       | I - QQ^*                        |
                        @@ -3744,7 +3752,7 @@ primme_params
                         
                               +----------+---------+---------------------------------+
                               | RightX   | SkewX   | P_X^r                           |
                        -      |==========|=========|=================================|
                        +      +==========+=========+=================================+
                               | 0        | 0       | I                               |
                               +----------+---------+---------------------------------+
                               | 1        | 0       | I - XX^*                        |
                        @@ -4863,7 +4871,7 @@ primme.eigsh(A, k=6, M=None, sigma=None, which='LM', v0=None, ncv=None, maxiter=
                            >>> M = scipy.sparse.spdiags(np.asarray(range(99,-1,-1)), [0], 100, 100)
                            >>> # the smallest eigenvalues of the eigenproblem (A,M)
                            >>> evals, evecs = primme.eigsh(A, 3, M=M, tol=1e-6, which='SA')
                        -   >>> evals 
                        +   >>> evals # doctest: +SKIP
                            array([1.0035e-07, 1.0204e-02, 2.0618e-02])
                         
                            >>> # Giving the matvec as a function
                        @@ -5188,7 +5196,7 @@ precisions:
                         
                         +-------------+---------------------------+---------------------------+
                         | Precision   | Real                      | Complex                   |
                        -|=============|===========================|===========================|
                        ++=============+===========================+===========================+
                         | half        | "hprimme_svds()"          | "kprimme_svds()"          |
                         |             | "hsprimme_svds()"         | "ksprimme_svds()"         |
                         +-------------+---------------------------+---------------------------+
                        @@ -8182,7 +8190,7 @@ primme.svds(A, k=6, ncv=None, tol=0, which='LM', v0=None, maxiter=None, return_s
                            ...           [0], 100, 100) # square diag. preconditioner
                            >>> # the three smallest singular values of A, using preconditioning
                            >>> svecs_left, svals, svecs_right = primme.svds(A, 3, which='SM', tol=1e-6, precAHA=prec)
                        -   >>> ["%.5f" % x for x in svals.flat] 
                        +   >>> ["%.5f" % x for x in svals.flat] # doctest: +SKIP
                            ['4.57263', '4.78752', '4.82229']
                         
                            >>> # Giving the matvecs as functions
                        @@ -8199,7 +8207,7 @@ primme.svds(A, k=6, ncv=None, tol=0, which='LM', v0=None, maxiter=None, return_s
                            ...
                            >>> B = scipy.sparse.linalg.LinearOperator((200,100), matvec=Bmatmat, matmat=Bmatmat, rmatvec=Brmatmat, dtype=np.float32)
                            >>> svecs_left, svals, svecs_right = primme.svds(B, 5, which='LM', tol=1e-6)
                        -   >>> svals 
                        +   >>> svals # doctest: +SKIP
                            array([99., 98., 97., 96., 95.])
                         
                         MATLAB Interface
                        diff --git a/src/deps b/src/deps
                        index b9e571a5..f6201a23 100644
                        --- a/src/deps
                        +++ b/src/deps
                        @@ -8,9 +8,9 @@ eigs/init.o : ../include/primme.h ../include/primme_eigs.h ../include/primme_svd
                         eigs/inner_solve.o : ../include/primme.h ../include/primme_eigs.h ../include/primme_svds.h eigs/auxiliary_eigs.h eigs/auxiliary_eigs_normal.h eigs/common_eigs.h eigs/factorize.h eigs/inner_solve.h eigs/template_normal.h eigs/update_W.h include/auxiliary.h include/blaslapack.h include/common.h include/magma_wrapper.h include/memman.h include/numerical.h include/template.h include/template_types.h include/template_undef.h include/wtime.h
                         eigs/main_iter.o : ../include/primme.h ../include/primme_eigs.h ../include/primme_svds.h eigs/auxiliary_eigs.h eigs/auxiliary_eigs_normal.h eigs/common_eigs.h eigs/convergence.h eigs/correction.h eigs/init.h eigs/main_iter.h eigs/ortho.h eigs/restart.h eigs/solve_projection.h eigs/template_normal.h eigs/update_W.h eigs/update_projection.h include/auxiliary.h include/blaslapack.h include/common.h include/magma_wrapper.h include/memman.h include/numerical.h include/template.h include/template_types.h include/template_undef.h include/wtime.h
                         eigs/ortho.o : ../include/primme.h ../include/primme_eigs.h ../include/primme_svds.h eigs/auxiliary_eigs.h eigs/common_eigs.h eigs/factorize.h eigs/ortho.h include/auxiliary.h include/blaslapack.h include/common.h include/magma_wrapper.h include/memman.h include/numerical.h include/template.h include/template_types.h include/template_undef.h include/wtime.h
                        -eigs/primme_c.o : ../include/primme.h ../include/primme_eigs.h ../include/primme_svds.h eigs/../eigs/primme_c.h eigs/auxiliary_eigs.h eigs/common_eigs.h eigs/main_iter.h eigs/primme_c.h eigs/template_normal.h include/auxiliary.h include/blaslapack.h include/common.h include/magma_wrapper.h include/memman.h include/numerical.h include/primme_interface.h include/template.h include/template_types.h include/template_undef.h include/wtime.h
                        -eigs/primme_f77.o : ../include/primme.h ../include/primme_eigs.h ../include/primme_svds.h eigs/../eigs/primme_c.h eigs/common_eigs.h eigs/template_normal.h include/auxiliary.h include/blaslapack.h include/common.h include/magma_wrapper.h include/memman.h include/numerical.h include/primme_interface.h include/template.h include/template_types.h include/template_undef.h include/wtime.h
                        -eigs/primme_interface.o : ../include/primme.h ../include/primme_eigs.h ../include/primme_svds.h eigs/../eigs/primme_c.h include/auxiliary.h include/blaslapack.h include/common.h include/magma_wrapper.h include/memman.h include/notemplate.h include/numerical.h include/primme_interface.h include/template.h include/template_types.h include/template_undef.h include/wtime.h
                        +eigs/primme_c.o : ../include/primme.h ../include/primme_eigs.h ../include/primme_svds.h eigs/auxiliary_eigs.h eigs/common_eigs.h eigs/main_iter.h eigs/primme_c.h eigs/template_normal.h include/auxiliary.h include/blaslapack.h include/common.h include/magma_wrapper.h include/memman.h include/numerical.h include/primme_interface.h include/template.h include/template_types.h include/template_undef.h include/wtime.h
                        +eigs/primme_f77.o : ../include/primme.h ../include/primme_eigs.h ../include/primme_svds.h eigs/common_eigs.h eigs/primme_c.h eigs/template_normal.h include/auxiliary.h include/blaslapack.h include/common.h include/magma_wrapper.h include/memman.h include/numerical.h include/primme_interface.h include/template.h include/template_types.h include/template_undef.h include/wtime.h
                        +eigs/primme_interface.o : ../include/primme.h ../include/primme_eigs.h ../include/primme_svds.h eigs/primme_c.h include/auxiliary.h include/blaslapack.h include/common.h include/magma_wrapper.h include/memman.h include/notemplate.h include/numerical.h include/primme_interface.h include/template.h include/template_types.h include/template_undef.h include/wtime.h
                         eigs/restart.o : ../include/primme.h ../include/primme_eigs.h ../include/primme_svds.h eigs/auxiliary_eigs.h eigs/auxiliary_eigs_normal.h eigs/common_eigs.h eigs/convergence.h eigs/factorize.h eigs/ortho.h eigs/restart.h eigs/solve_projection.h eigs/template_normal.h eigs/update_W.h eigs/update_projection.h include/auxiliary.h include/blaslapack.h include/common.h include/magma_wrapper.h include/memman.h include/numerical.h include/template.h include/template_types.h include/template_undef.h include/wtime.h
                         eigs/solve_projection.o : ../include/primme.h ../include/primme_eigs.h ../include/primme_svds.h eigs/auxiliary_eigs.h eigs/auxiliary_eigs_normal.h eigs/common_eigs.h eigs/ortho.h eigs/solve_projection.h eigs/template_normal.h include/auxiliary.h include/blaslapack.h include/common.h include/magma_wrapper.h include/memman.h include/numerical.h include/template.h include/template_types.h include/template_undef.h include/wtime.h
                         eigs/update_projection.o : ../include/primme.h ../include/primme_eigs.h ../include/primme_svds.h eigs/auxiliary_eigs.h eigs/common_eigs.h eigs/update_projection.h include/auxiliary.h include/blaslapack.h include/common.h include/magma_wrapper.h include/memman.h include/numerical.h include/template.h include/template_types.h include/template_undef.h include/wtime.h
                        @@ -20,6 +20,6 @@ linalg/blaslapack.o : ../include/primme.h ../include/primme_eigs.h ../include/pr
                         linalg/magma_wrapper.o : ../include/primme.h ../include/primme_eigs.h ../include/primme_svds.h include/auxiliary.h include/blaslapack.h include/common.h include/magma_wrapper.h include/memman.h include/numerical.h include/template.h include/template_types.h include/template_undef.h include/wtime.h
                         linalg/memman.o : ../include/primme.h ../include/primme_eigs.h ../include/primme_svds.h include/common.h include/memman.h include/wtime.h
                         linalg/wtime.o : include/wtime.h
                        -svds/primme_svds_c.o : ../include/primme.h ../include/primme_eigs.h ../include/primme_svds.h include/../eigs/common_eigs.h include/../eigs/primme_c.h include/auxiliary.h include/blaslapack.h include/common.h include/magma_wrapper.h include/memman.h include/numerical.h include/primme_interface.h include/template.h include/template_types.h include/template_undef.h include/wtime.h svds/primme_svds_c.h svds/primme_svds_interface.h
                        +svds/primme_svds_c.o : ../include/primme.h ../include/primme_eigs.h ../include/primme_svds.h eigs/common_eigs.h eigs/primme_c.h include/auxiliary.h include/blaslapack.h include/common.h include/magma_wrapper.h include/memman.h include/numerical.h include/primme_interface.h include/template.h include/template_types.h include/template_undef.h include/wtime.h svds/primme_svds_c.h svds/primme_svds_interface.h
                         svds/primme_svds_f77.o : ../include/primme.h ../include/primme_eigs.h ../include/primme_svds.h include/auxiliary.h include/blaslapack.h include/common.h include/magma_wrapper.h include/memman.h include/numerical.h include/template.h include/template_types.h include/template_undef.h include/wtime.h svds/primme_svds_interface.h
                        -svds/primme_svds_interface.o : ../include/primme.h ../include/primme_eigs.h ../include/primme_svds.h include/../eigs/primme_c.h include/auxiliary.h include/blaslapack.h include/common.h include/magma_wrapper.h include/memman.h include/notemplate.h include/numerical.h include/primme_interface.h include/template.h include/template_types.h include/template_undef.h include/wtime.h svds/primme_svds_interface.h
                        +svds/primme_svds_interface.o : ../include/primme.h ../include/primme_eigs.h ../include/primme_svds.h eigs/primme_c.h include/auxiliary.h include/blaslapack.h include/common.h include/magma_wrapper.h include/memman.h include/notemplate.h include/numerical.h include/primme_interface.h include/template.h include/template_types.h include/template_undef.h include/wtime.h svds/primme_svds_interface.h
                        diff --git a/src/eigs/ortho.c b/src/eigs/ortho.c
                        index f2b83b53..66c0a8ce 100644
                        --- a/src/eigs/ortho.c
                        +++ b/src/eigs/ortho.c
                        @@ -1207,9 +1207,8 @@ int update_cholesky_Sprimme(HSCALAR *VtV, int ldVtV, HSCALAR *fVtV, int ldfVtV,
                                     n - n0, ldVtV, A, n, ctx));
                               CHKERR(Num_trsm_SHprimme("L", "U", "C", "N", n0, n - n0, 1.0, fVtV,
                                     ldfVtV, A, n, ctx));
                        -      CHKERR(Num_gemm_SHprimme("C", "N", n - n0, n - n0, n, -1.0,
                        -            A, n, A, n, 1.0, &fVtV[ldfVtV * n0 + n0], ldfVtV,
                        -            ctx));
                        +      CHKERR(Num_gemm_SHprimme("C", "N", n - n0, n - n0, n0, -1.0, A, n, A, n,
                        +            1.0, &A[n0], n, ctx));
                               CHKERR(Num_potrf_SHprimme("U", n - n0, &A[n0], n, NULL, ctx));
                            }
                            CHKERR(broadcast_SHprimme(A, n * (n - n0), ctx));
                        diff --git a/src/include/common.h b/src/include/common.h
                        index 289c7425..ed25c7c9 100644
                        --- a/src/include/common.h
                        +++ b/src/include/common.h
                        @@ -381,9 +381,11 @@ static inline uint32_t hash_call(const char *str, double value) {
                            uint32_t hash = 5381;
                            int c;
                         
                        +   union { double d; uint32_t i[2]; } t;
                        +   t.d = value;
                            while ((c = *str++)) hash = hash * 33 + c;
                        -   hash = hash * 33 + ((uint32_t *)&value)[0];
                        -   hash = hash * 33 + ((uint32_t *)&value)[1];
                        +   hash = hash * 33 + t.i[0];
                        +   hash = hash * 33 + t.i[1];
                         
                            return hash;
                         }
                        diff --git a/src/linalg/blaslapack.c b/src/linalg/blaslapack.c
                        index 4b04c68b..1740854f 100644
                        --- a/src/linalg/blaslapack.c
                        +++ b/src/linalg/blaslapack.c
                        @@ -1026,6 +1026,8 @@ int Num_heev_Sprimme(const char *jobz, const char *uplo, int n, SCALAR *a,
                         #  endif
                                  iwork, ifail, &linfo);
                            lldwork = REAL_PART(lwork0);
                        +   // ATLAS LAPACK and MacOS LAPACK may suggest a wrong value to lwork for n=1
                        +   if (lldwork < 2 * ln) lldwork = 2 * ln;
                         
                            if (linfo == 0) {
                               SCALAR *work = NULL;
                        diff --git a/src/tools/dependencies b/src/tools/dependencies
                        index 4b4af5b7..f6de678b 100755
                        --- a/src/tools/dependencies
                        +++ b/src/tools/dependencies
                        @@ -131,6 +131,7 @@ def find_deps(filename, include_paths, ignore_patterns, ignore_paths=set()):
                         			continue
                         
                         		# Otherwise, add path to deps
                        +		path = os.path.normpath(path)    
                         		deps.add(path)
                         
                         		# Add also includes in path