[Scipy-svn] r4028 - in trunk/scipy/sparse: . linalg/dsolve/umfpack/tests sparsetools tests
scipy-svn at scipy.org
scipy-svn at scipy.org
Mon Mar 17 09:38:28 EDT 2008
Author: wnbell
Date: 2008-03-17 08:38:19 -0500 (Mon, 17 Mar 2008)
New Revision: 4028
Modified:
trunk/scipy/sparse/dia.py
trunk/scipy/sparse/linalg/dsolve/umfpack/tests/test_umfpack.py
trunk/scipy/sparse/sparsetools/sparsetools.h
trunk/scipy/sparse/sparsetools/sparsetools.i
trunk/scipy/sparse/sparsetools/sparsetools.py
trunk/scipy/sparse/sparsetools/sparsetools_wrap.cxx
trunk/scipy/sparse/tests/bench_sparse.py
Log:
added DIA matrix vector product
Modified: trunk/scipy/sparse/dia.py
===================================================================
--- trunk/scipy/sparse/dia.py 2008-03-16 03:59:16 UTC (rev 4027)
+++ trunk/scipy/sparse/dia.py 2008-03-17 13:38:19 UTC (rev 4028)
@@ -12,6 +12,8 @@
from data import _data_matrix
from sputils import isscalarlike, isshape, upcast, getdtype, isdense
+from sparsetools import dia_matvec
+
class dia_matrix(_data_matrix):
"""Sparse matrix with DIAgonal storage
@@ -157,14 +159,13 @@
raise ValueError, "shape mismatch error"
return self.tocsr() * other
- #TODO handle sparse matmat here
+ #TODO handle sparse/sparse matmat here
else:
- # matvec handles multiple columns
- return self.matvec(other)
+ return self.tocsr() * other
+ #TODO handle sparse/dense matmat here
def matvec(self,other):
- # can we do the multiply add faster?
x = asarray(other)
if x.ndim == 1:
@@ -177,21 +178,8 @@
L = self.data.shape[1]
M,N = self.shape
-
- for diag,k in zip(self.data,self.diags):
- j_start = max(0,k)
- j_end = min(M+k,N,L)
-
- i_start = max(0,-k)
- i_end = i_start + (j_end - j_start)
-
- #we'd prefer a fused multiply add here
- multiply(diag[j_start:j_end].reshape(-1,1), x[j_start:j_end], temp[i_start:i_end])
- add(y[i_start:i_end],temp[i_start:i_end],y[i_start:i_end])
-
- #slower version of two steps above
- #y[i_start:i_end] += diag[j_start:j_end].reshape(-1,1) * x[j_start:j_end]
-
+
+ dia_matvec(M,N, len(self.diags), L, self.diags, self.data, x.ravel(), y.ravel())
if isinstance(other, matrix):
y = asmatrix(y)
Modified: trunk/scipy/sparse/linalg/dsolve/umfpack/tests/test_umfpack.py
===================================================================
--- trunk/scipy/sparse/linalg/dsolve/umfpack/tests/test_umfpack.py 2008-03-16 03:59:16 UTC (rev 4027)
+++ trunk/scipy/sparse/linalg/dsolve/umfpack/tests/test_umfpack.py 2008-03-17 13:38:19 UTC (rev 4028)
@@ -42,7 +42,7 @@
x = linsolve.spsolve(a, b)
#print x
#print "Error: ", a*x-b
- assert_array_almost_equal(a*x, b)
+ assert_array_almost_equal(a*x, b, decimal=4)
def test_solve_without_umfpack(self):
@@ -53,7 +53,7 @@
x = linsolve.spsolve(a, b.astype('f'))
#print x
#print "Error: ", a*x-b
- assert_array_almost_equal(a*x, b)
+ assert_array_almost_equal(a*x, b, decimal=4)
def test_solve_complex_umfpack(self):
Modified: trunk/scipy/sparse/sparsetools/sparsetools.h
===================================================================
--- trunk/scipy/sparse/sparsetools/sparsetools.h 2008-03-16 03:59:16 UTC (rev 4027)
+++ trunk/scipy/sparse/sparsetools/sparsetools.h 2008-03-17 13:38:19 UTC (rev 4028)
@@ -1438,6 +1438,58 @@
}
+
+/*
+ * Compute Y += A*X for DIA matrix A and dense vectors X,Y
+ *
+ *
+ * Input Arguments:
+ * I n_row - number of rows in A
+ * I n_col - number of columns in A
+ * I n_diags - number of diagonals
+ * I L - length of each diagonal
+ * I offsets[n_diags] - diagonal offsets
+ * T diags[n_diags,L] - nonzeros
+ * T Xx[n_col] - input vector
+ *
+ * Output Arguments:
+ * T Yx[n_row] - output vector
+ *
+ * Note:
+ * Output array Yx must be preallocated
+ * Negative offsets correspond to lower diagonals
+ * Positive offsets correspond to upper diagonals
+ *
+ */
+template <class I, class T>
+void dia_matvec(const I n_row,
+ const I n_col,
+ const I n_diags,
+ const I L,
+ const I offsets[],
+ const T diags[],
+ const T Xx[],
+ T Yx[])
+{
+ for(I i = 0; i < n_diags; i++){
+ const I k = offsets[i]; //diagonal offset
+
+ const I i_start = std::max(0,-k);
+ const I j_start = std::max(0, k);
+ const I j_end = std::min(std::min(n_row + k, n_col),L);
+
+ const I N = j_end - j_start; //number of elements to process
+
+ const T * diag = diags + i*L + j_start;
+ const T * x = Xx + j_start;
+ T * y = Yx + i_start;
+
+ for(I n = 0; n < N; n++){
+ y[n] += diag[n] * x[n];
+ }
+ }
+}
+
//template <class I, class T>
//void bsr_tocsr(const I n_brow,
// const I n_bcol,
Modified: trunk/scipy/sparse/sparsetools/sparsetools.i
===================================================================
--- trunk/scipy/sparse/sparsetools/sparsetools.i 2008-03-16 03:59:16 UTC (rev 4027)
+++ trunk/scipy/sparse/sparsetools/sparsetools.i 2008-03-17 13:38:19 UTC (rev 4028)
@@ -238,14 +238,15 @@
/*
- * CSR*x and CSC*x
+ * A*x
*/
INSTANTIATE_ALL(csr_matvec)
INSTANTIATE_ALL(csc_matvec)
INSTANTIATE_ALL(bsr_matvec)
+INSTANTIATE_ALL(dia_matvec)
/*
- * CSR (binary op) CSR and CSC (binary op) CSC
+ * A (binary op) B
*/
INSTANTIATE_ALL(csr_elmul_csr)
INSTANTIATE_ALL(csr_eldiv_csr)
Modified: trunk/scipy/sparse/sparsetools/sparsetools.py
===================================================================
--- trunk/scipy/sparse/sparsetools/sparsetools.py 2008-03-16 03:59:16 UTC (rev 4027)
+++ trunk/scipy/sparse/sparsetools/sparsetools.py 2008-03-17 13:38:19 UTC (rev 4028)
@@ -695,6 +695,44 @@
"""
return _sparsetools.bsr_matvec(*args)
+def dia_matvec(*args):
+ """
+ dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets,
+ signed char diags, signed char Xx, signed char Yx)
+ dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets,
+ unsigned char diags, unsigned char Xx, unsigned char Yx)
+ dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets,
+ short diags, short Xx, short Yx)
+ dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets,
+ unsigned short diags, unsigned short Xx,
+ unsigned short Yx)
+ dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets,
+ int diags, int Xx, int Yx)
+ dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets,
+ unsigned int diags, unsigned int Xx, unsigned int Yx)
+ dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets,
+ long long diags, long long Xx, long long Yx)
+ dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets,
+ unsigned long long diags, unsigned long long Xx,
+ unsigned long long Yx)
+ dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets,
+ float diags, float Xx, float Yx)
+ dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets,
+ double diags, double Xx, double Yx)
+ dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets,
+ long double diags, long double Xx, long double Yx)
+ dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets,
+ npy_cfloat_wrapper diags, npy_cfloat_wrapper Xx,
+ npy_cfloat_wrapper Yx)
+ dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets,
+ npy_cdouble_wrapper diags, npy_cdouble_wrapper Xx,
+ npy_cdouble_wrapper Yx)
+ dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets,
+ npy_clongdouble_wrapper diags, npy_clongdouble_wrapper Xx,
+ npy_clongdouble_wrapper Yx)
+ """
+ return _sparsetools.dia_matvec(*args)
+
def csr_elmul_csr(*args):
"""
csr_elmul_csr(int n_row, int n_col, int Ap, int Aj, signed char Ax,
Modified: trunk/scipy/sparse/sparsetools/sparsetools_wrap.cxx
===================================================================
--- trunk/scipy/sparse/sparsetools/sparsetools_wrap.cxx 2008-03-16 03:59:16 UTC (rev 4027)
+++ trunk/scipy/sparse/sparsetools/sparsetools_wrap.cxx 2008-03-17 13:38:19 UTC (rev 4028)
@@ -48100,6 +48100,2320 @@
}
+SWIGINTERN PyObject *_wrap_dia_matvec__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ int arg1 ;
+ int arg2 ;
+ int arg3 ;
+ int arg4 ;
+ int *arg5 ;
+ signed char *arg6 ;
+ signed char *arg7 ;
+ signed char *arg8 ;
+ int val1 ;
+ int ecode1 = 0 ;
+ int val2 ;
+ int ecode2 = 0 ;
+ int val3 ;
+ int ecode3 = 0 ;
+ int val4 ;
+ int ecode4 = 0 ;
+ PyArrayObject *array5 = NULL ;
+ int is_new_object5 ;
+ PyArrayObject *array6 = NULL ;
+ int is_new_object6 ;
+ PyArrayObject *array7 = NULL ;
+ int is_new_object7 ;
+ PyArrayObject *temp8 = NULL ;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+ PyObject * obj2 = 0 ;
+ PyObject * obj3 = 0 ;
+ PyObject * obj4 = 0 ;
+ PyObject * obj5 = 0 ;
+ PyObject * obj6 = 0 ;
+ PyObject * obj7 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"OOOOOOOO:dia_matvec",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7)) SWIG_fail;
+ ecode1 = SWIG_AsVal_int(obj0, &val1);
+ if (!SWIG_IsOK(ecode1)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "dia_matvec" "', argument " "1"" of type '" "int""'");
+ }
+ arg1 = static_cast< int >(val1);
+ ecode2 = SWIG_AsVal_int(obj1, &val2);
+ if (!SWIG_IsOK(ecode2)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "dia_matvec" "', argument " "2"" of type '" "int""'");
+ }
+ arg2 = static_cast< int >(val2);
+ ecode3 = SWIG_AsVal_int(obj2, &val3);
+ if (!SWIG_IsOK(ecode3)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "dia_matvec" "', argument " "3"" of type '" "int""'");
+ }
+ arg3 = static_cast< int >(val3);
+ ecode4 = SWIG_AsVal_int(obj3, &val4);
+ if (!SWIG_IsOK(ecode4)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "dia_matvec" "', argument " "4"" of type '" "int""'");
+ }
+ arg4 = static_cast< int >(val4);
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array5 = obj_to_array_contiguous_allow_conversion(obj4, PyArray_INT, &is_new_object5);
+ if (!array5 || !require_dimensions(array5,1) || !require_size(array5,size,1)
+ || !require_contiguous(array5) || !require_native(array5)) SWIG_fail;
+
+ arg5 = (int*) array5->data;
+ }
+ {
+ npy_intp size[2] = {
+ -1,-1
+ };
+ array6 = obj_to_array_contiguous_allow_conversion(obj5, PyArray_BYTE, &is_new_object6);
+ if (!array6 || !require_dimensions(array6,2) || !require_size(array6,size,1)
+ || !require_contiguous(array6) || !require_native(array6)) SWIG_fail;
+ arg6 = (signed char*) array6->data;
+ }
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array7 = obj_to_array_contiguous_allow_conversion(obj6, PyArray_BYTE, &is_new_object7);
+ if (!array7 || !require_dimensions(array7,1) || !require_size(array7,size,1)
+ || !require_contiguous(array7) || !require_native(array7)) SWIG_fail;
+
+ arg7 = (signed char*) array7->data;
+ }
+ {
+ temp8 = obj_to_array_no_conversion(obj7,PyArray_BYTE);
+ if (!temp8 || !require_contiguous(temp8) || !require_native(temp8)) SWIG_fail;
+ arg8 = (signed char*) array_data(temp8);
+ }
+ dia_matvec< int,signed char >(arg1,arg2,arg3,arg4,(int const (*))arg5,(signed char const (*))arg6,(signed char const (*))arg7,arg8);
+ resultobj = SWIG_Py_Void();
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return resultobj;
+fail:
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_dia_matvec__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ int arg1 ;
+ int arg2 ;
+ int arg3 ;
+ int arg4 ;
+ int *arg5 ;
+ unsigned char *arg6 ;
+ unsigned char *arg7 ;
+ unsigned char *arg8 ;
+ int val1 ;
+ int ecode1 = 0 ;
+ int val2 ;
+ int ecode2 = 0 ;
+ int val3 ;
+ int ecode3 = 0 ;
+ int val4 ;
+ int ecode4 = 0 ;
+ PyArrayObject *array5 = NULL ;
+ int is_new_object5 ;
+ PyArrayObject *array6 = NULL ;
+ int is_new_object6 ;
+ PyArrayObject *array7 = NULL ;
+ int is_new_object7 ;
+ PyArrayObject *temp8 = NULL ;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+ PyObject * obj2 = 0 ;
+ PyObject * obj3 = 0 ;
+ PyObject * obj4 = 0 ;
+ PyObject * obj5 = 0 ;
+ PyObject * obj6 = 0 ;
+ PyObject * obj7 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"OOOOOOOO:dia_matvec",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7)) SWIG_fail;
+ ecode1 = SWIG_AsVal_int(obj0, &val1);
+ if (!SWIG_IsOK(ecode1)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "dia_matvec" "', argument " "1"" of type '" "int""'");
+ }
+ arg1 = static_cast< int >(val1);
+ ecode2 = SWIG_AsVal_int(obj1, &val2);
+ if (!SWIG_IsOK(ecode2)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "dia_matvec" "', argument " "2"" of type '" "int""'");
+ }
+ arg2 = static_cast< int >(val2);
+ ecode3 = SWIG_AsVal_int(obj2, &val3);
+ if (!SWIG_IsOK(ecode3)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "dia_matvec" "', argument " "3"" of type '" "int""'");
+ }
+ arg3 = static_cast< int >(val3);
+ ecode4 = SWIG_AsVal_int(obj3, &val4);
+ if (!SWIG_IsOK(ecode4)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "dia_matvec" "', argument " "4"" of type '" "int""'");
+ }
+ arg4 = static_cast< int >(val4);
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array5 = obj_to_array_contiguous_allow_conversion(obj4, PyArray_INT, &is_new_object5);
+ if (!array5 || !require_dimensions(array5,1) || !require_size(array5,size,1)
+ || !require_contiguous(array5) || !require_native(array5)) SWIG_fail;
+
+ arg5 = (int*) array5->data;
+ }
+ {
+ npy_intp size[2] = {
+ -1,-1
+ };
+ array6 = obj_to_array_contiguous_allow_conversion(obj5, PyArray_UBYTE, &is_new_object6);
+ if (!array6 || !require_dimensions(array6,2) || !require_size(array6,size,1)
+ || !require_contiguous(array6) || !require_native(array6)) SWIG_fail;
+ arg6 = (unsigned char*) array6->data;
+ }
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array7 = obj_to_array_contiguous_allow_conversion(obj6, PyArray_UBYTE, &is_new_object7);
+ if (!array7 || !require_dimensions(array7,1) || !require_size(array7,size,1)
+ || !require_contiguous(array7) || !require_native(array7)) SWIG_fail;
+
+ arg7 = (unsigned char*) array7->data;
+ }
+ {
+ temp8 = obj_to_array_no_conversion(obj7,PyArray_UBYTE);
+ if (!temp8 || !require_contiguous(temp8) || !require_native(temp8)) SWIG_fail;
+ arg8 = (unsigned char*) array_data(temp8);
+ }
+ dia_matvec< int,unsigned char >(arg1,arg2,arg3,arg4,(int const (*))arg5,(unsigned char const (*))arg6,(unsigned char const (*))arg7,arg8);
+ resultobj = SWIG_Py_Void();
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return resultobj;
+fail:
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_dia_matvec__SWIG_3(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ int arg1 ;
+ int arg2 ;
+ int arg3 ;
+ int arg4 ;
+ int *arg5 ;
+ short *arg6 ;
+ short *arg7 ;
+ short *arg8 ;
+ int val1 ;
+ int ecode1 = 0 ;
+ int val2 ;
+ int ecode2 = 0 ;
+ int val3 ;
+ int ecode3 = 0 ;
+ int val4 ;
+ int ecode4 = 0 ;
+ PyArrayObject *array5 = NULL ;
+ int is_new_object5 ;
+ PyArrayObject *array6 = NULL ;
+ int is_new_object6 ;
+ PyArrayObject *array7 = NULL ;
+ int is_new_object7 ;
+ PyArrayObject *temp8 = NULL ;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+ PyObject * obj2 = 0 ;
+ PyObject * obj3 = 0 ;
+ PyObject * obj4 = 0 ;
+ PyObject * obj5 = 0 ;
+ PyObject * obj6 = 0 ;
+ PyObject * obj7 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"OOOOOOOO:dia_matvec",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7)) SWIG_fail;
+ ecode1 = SWIG_AsVal_int(obj0, &val1);
+ if (!SWIG_IsOK(ecode1)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "dia_matvec" "', argument " "1"" of type '" "int""'");
+ }
+ arg1 = static_cast< int >(val1);
+ ecode2 = SWIG_AsVal_int(obj1, &val2);
+ if (!SWIG_IsOK(ecode2)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "dia_matvec" "', argument " "2"" of type '" "int""'");
+ }
+ arg2 = static_cast< int >(val2);
+ ecode3 = SWIG_AsVal_int(obj2, &val3);
+ if (!SWIG_IsOK(ecode3)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "dia_matvec" "', argument " "3"" of type '" "int""'");
+ }
+ arg3 = static_cast< int >(val3);
+ ecode4 = SWIG_AsVal_int(obj3, &val4);
+ if (!SWIG_IsOK(ecode4)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "dia_matvec" "', argument " "4"" of type '" "int""'");
+ }
+ arg4 = static_cast< int >(val4);
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array5 = obj_to_array_contiguous_allow_conversion(obj4, PyArray_INT, &is_new_object5);
+ if (!array5 || !require_dimensions(array5,1) || !require_size(array5,size,1)
+ || !require_contiguous(array5) || !require_native(array5)) SWIG_fail;
+
+ arg5 = (int*) array5->data;
+ }
+ {
+ npy_intp size[2] = {
+ -1,-1
+ };
+ array6 = obj_to_array_contiguous_allow_conversion(obj5, PyArray_SHORT, &is_new_object6);
+ if (!array6 || !require_dimensions(array6,2) || !require_size(array6,size,1)
+ || !require_contiguous(array6) || !require_native(array6)) SWIG_fail;
+ arg6 = (short*) array6->data;
+ }
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array7 = obj_to_array_contiguous_allow_conversion(obj6, PyArray_SHORT, &is_new_object7);
+ if (!array7 || !require_dimensions(array7,1) || !require_size(array7,size,1)
+ || !require_contiguous(array7) || !require_native(array7)) SWIG_fail;
+
+ arg7 = (short*) array7->data;
+ }
+ {
+ temp8 = obj_to_array_no_conversion(obj7,PyArray_SHORT);
+ if (!temp8 || !require_contiguous(temp8) || !require_native(temp8)) SWIG_fail;
+ arg8 = (short*) array_data(temp8);
+ }
+ dia_matvec< int,short >(arg1,arg2,arg3,arg4,(int const (*))arg5,(short const (*))arg6,(short const (*))arg7,arg8);
+ resultobj = SWIG_Py_Void();
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return resultobj;
+fail:
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_dia_matvec__SWIG_4(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ int arg1 ;
+ int arg2 ;
+ int arg3 ;
+ int arg4 ;
+ int *arg5 ;
+ unsigned short *arg6 ;
+ unsigned short *arg7 ;
+ unsigned short *arg8 ;
+ int val1 ;
+ int ecode1 = 0 ;
+ int val2 ;
+ int ecode2 = 0 ;
+ int val3 ;
+ int ecode3 = 0 ;
+ int val4 ;
+ int ecode4 = 0 ;
+ PyArrayObject *array5 = NULL ;
+ int is_new_object5 ;
+ PyArrayObject *array6 = NULL ;
+ int is_new_object6 ;
+ PyArrayObject *array7 = NULL ;
+ int is_new_object7 ;
+ PyArrayObject *temp8 = NULL ;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+ PyObject * obj2 = 0 ;
+ PyObject * obj3 = 0 ;
+ PyObject * obj4 = 0 ;
+ PyObject * obj5 = 0 ;
+ PyObject * obj6 = 0 ;
+ PyObject * obj7 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"OOOOOOOO:dia_matvec",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7)) SWIG_fail;
+ ecode1 = SWIG_AsVal_int(obj0, &val1);
+ if (!SWIG_IsOK(ecode1)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "dia_matvec" "', argument " "1"" of type '" "int""'");
+ }
+ arg1 = static_cast< int >(val1);
+ ecode2 = SWIG_AsVal_int(obj1, &val2);
+ if (!SWIG_IsOK(ecode2)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "dia_matvec" "', argument " "2"" of type '" "int""'");
+ }
+ arg2 = static_cast< int >(val2);
+ ecode3 = SWIG_AsVal_int(obj2, &val3);
+ if (!SWIG_IsOK(ecode3)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "dia_matvec" "', argument " "3"" of type '" "int""'");
+ }
+ arg3 = static_cast< int >(val3);
+ ecode4 = SWIG_AsVal_int(obj3, &val4);
+ if (!SWIG_IsOK(ecode4)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "dia_matvec" "', argument " "4"" of type '" "int""'");
+ }
+ arg4 = static_cast< int >(val4);
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array5 = obj_to_array_contiguous_allow_conversion(obj4, PyArray_INT, &is_new_object5);
+ if (!array5 || !require_dimensions(array5,1) || !require_size(array5,size,1)
+ || !require_contiguous(array5) || !require_native(array5)) SWIG_fail;
+
+ arg5 = (int*) array5->data;
+ }
+ {
+ npy_intp size[2] = {
+ -1,-1
+ };
+ array6 = obj_to_array_contiguous_allow_conversion(obj5, PyArray_USHORT, &is_new_object6);
+ if (!array6 || !require_dimensions(array6,2) || !require_size(array6,size,1)
+ || !require_contiguous(array6) || !require_native(array6)) SWIG_fail;
+ arg6 = (unsigned short*) array6->data;
+ }
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array7 = obj_to_array_contiguous_allow_conversion(obj6, PyArray_USHORT, &is_new_object7);
+ if (!array7 || !require_dimensions(array7,1) || !require_size(array7,size,1)
+ || !require_contiguous(array7) || !require_native(array7)) SWIG_fail;
+
+ arg7 = (unsigned short*) array7->data;
+ }
+ {
+ temp8 = obj_to_array_no_conversion(obj7,PyArray_USHORT);
+ if (!temp8 || !require_contiguous(temp8) || !require_native(temp8)) SWIG_fail;
+ arg8 = (unsigned short*) array_data(temp8);
+ }
+ dia_matvec< int,unsigned short >(arg1,arg2,arg3,arg4,(int const (*))arg5,(unsigned short const (*))arg6,(unsigned short const (*))arg7,arg8);
+ resultobj = SWIG_Py_Void();
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return resultobj;
+fail:
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_dia_matvec__SWIG_5(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ int arg1 ;
+ int arg2 ;
+ int arg3 ;
+ int arg4 ;
+ int *arg5 ;
+ int *arg6 ;
+ int *arg7 ;
+ int *arg8 ;
+ int val1 ;
+ int ecode1 = 0 ;
+ int val2 ;
+ int ecode2 = 0 ;
+ int val3 ;
+ int ecode3 = 0 ;
+ int val4 ;
+ int ecode4 = 0 ;
+ PyArrayObject *array5 = NULL ;
+ int is_new_object5 ;
+ PyArrayObject *array6 = NULL ;
+ int is_new_object6 ;
+ PyArrayObject *array7 = NULL ;
+ int is_new_object7 ;
+ PyArrayObject *temp8 = NULL ;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+ PyObject * obj2 = 0 ;
+ PyObject * obj3 = 0 ;
+ PyObject * obj4 = 0 ;
+ PyObject * obj5 = 0 ;
+ PyObject * obj6 = 0 ;
+ PyObject * obj7 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"OOOOOOOO:dia_matvec",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7)) SWIG_fail;
+ ecode1 = SWIG_AsVal_int(obj0, &val1);
+ if (!SWIG_IsOK(ecode1)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "dia_matvec" "', argument " "1"" of type '" "int""'");
+ }
+ arg1 = static_cast< int >(val1);
+ ecode2 = SWIG_AsVal_int(obj1, &val2);
+ if (!SWIG_IsOK(ecode2)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "dia_matvec" "', argument " "2"" of type '" "int""'");
+ }
+ arg2 = static_cast< int >(val2);
+ ecode3 = SWIG_AsVal_int(obj2, &val3);
+ if (!SWIG_IsOK(ecode3)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "dia_matvec" "', argument " "3"" of type '" "int""'");
+ }
+ arg3 = static_cast< int >(val3);
+ ecode4 = SWIG_AsVal_int(obj3, &val4);
+ if (!SWIG_IsOK(ecode4)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "dia_matvec" "', argument " "4"" of type '" "int""'");
+ }
+ arg4 = static_cast< int >(val4);
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array5 = obj_to_array_contiguous_allow_conversion(obj4, PyArray_INT, &is_new_object5);
+ if (!array5 || !require_dimensions(array5,1) || !require_size(array5,size,1)
+ || !require_contiguous(array5) || !require_native(array5)) SWIG_fail;
+
+ arg5 = (int*) array5->data;
+ }
+ {
+ npy_intp size[2] = {
+ -1,-1
+ };
+ array6 = obj_to_array_contiguous_allow_conversion(obj5, PyArray_INT, &is_new_object6);
+ if (!array6 || !require_dimensions(array6,2) || !require_size(array6,size,1)
+ || !require_contiguous(array6) || !require_native(array6)) SWIG_fail;
+ arg6 = (int*) array6->data;
+ }
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array7 = obj_to_array_contiguous_allow_conversion(obj6, PyArray_INT, &is_new_object7);
+ if (!array7 || !require_dimensions(array7,1) || !require_size(array7,size,1)
+ || !require_contiguous(array7) || !require_native(array7)) SWIG_fail;
+
+ arg7 = (int*) array7->data;
+ }
+ {
+ temp8 = obj_to_array_no_conversion(obj7,PyArray_INT);
+ if (!temp8 || !require_contiguous(temp8) || !require_native(temp8)) SWIG_fail;
+ arg8 = (int*) array_data(temp8);
+ }
+ dia_matvec< int,int >(arg1,arg2,arg3,arg4,(int const (*))arg5,(int const (*))arg6,(int const (*))arg7,arg8);
+ resultobj = SWIG_Py_Void();
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return resultobj;
+fail:
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_dia_matvec__SWIG_6(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ int arg1 ;
+ int arg2 ;
+ int arg3 ;
+ int arg4 ;
+ int *arg5 ;
+ unsigned int *arg6 ;
+ unsigned int *arg7 ;
+ unsigned int *arg8 ;
+ int val1 ;
+ int ecode1 = 0 ;
+ int val2 ;
+ int ecode2 = 0 ;
+ int val3 ;
+ int ecode3 = 0 ;
+ int val4 ;
+ int ecode4 = 0 ;
+ PyArrayObject *array5 = NULL ;
+ int is_new_object5 ;
+ PyArrayObject *array6 = NULL ;
+ int is_new_object6 ;
+ PyArrayObject *array7 = NULL ;
+ int is_new_object7 ;
+ PyArrayObject *temp8 = NULL ;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+ PyObject * obj2 = 0 ;
+ PyObject * obj3 = 0 ;
+ PyObject * obj4 = 0 ;
+ PyObject * obj5 = 0 ;
+ PyObject * obj6 = 0 ;
+ PyObject * obj7 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"OOOOOOOO:dia_matvec",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7)) SWIG_fail;
+ ecode1 = SWIG_AsVal_int(obj0, &val1);
+ if (!SWIG_IsOK(ecode1)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "dia_matvec" "', argument " "1"" of type '" "int""'");
+ }
+ arg1 = static_cast< int >(val1);
+ ecode2 = SWIG_AsVal_int(obj1, &val2);
+ if (!SWIG_IsOK(ecode2)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "dia_matvec" "', argument " "2"" of type '" "int""'");
+ }
+ arg2 = static_cast< int >(val2);
+ ecode3 = SWIG_AsVal_int(obj2, &val3);
+ if (!SWIG_IsOK(ecode3)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "dia_matvec" "', argument " "3"" of type '" "int""'");
+ }
+ arg3 = static_cast< int >(val3);
+ ecode4 = SWIG_AsVal_int(obj3, &val4);
+ if (!SWIG_IsOK(ecode4)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "dia_matvec" "', argument " "4"" of type '" "int""'");
+ }
+ arg4 = static_cast< int >(val4);
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array5 = obj_to_array_contiguous_allow_conversion(obj4, PyArray_INT, &is_new_object5);
+ if (!array5 || !require_dimensions(array5,1) || !require_size(array5,size,1)
+ || !require_contiguous(array5) || !require_native(array5)) SWIG_fail;
+
+ arg5 = (int*) array5->data;
+ }
+ {
+ npy_intp size[2] = {
+ -1,-1
+ };
+ array6 = obj_to_array_contiguous_allow_conversion(obj5, PyArray_UINT, &is_new_object6);
+ if (!array6 || !require_dimensions(array6,2) || !require_size(array6,size,1)
+ || !require_contiguous(array6) || !require_native(array6)) SWIG_fail;
+ arg6 = (unsigned int*) array6->data;
+ }
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array7 = obj_to_array_contiguous_allow_conversion(obj6, PyArray_UINT, &is_new_object7);
+ if (!array7 || !require_dimensions(array7,1) || !require_size(array7,size,1)
+ || !require_contiguous(array7) || !require_native(array7)) SWIG_fail;
+
+ arg7 = (unsigned int*) array7->data;
+ }
+ {
+ temp8 = obj_to_array_no_conversion(obj7,PyArray_UINT);
+ if (!temp8 || !require_contiguous(temp8) || !require_native(temp8)) SWIG_fail;
+ arg8 = (unsigned int*) array_data(temp8);
+ }
+ dia_matvec< int,unsigned int >(arg1,arg2,arg3,arg4,(int const (*))arg5,(unsigned int const (*))arg6,(unsigned int const (*))arg7,arg8);
+ resultobj = SWIG_Py_Void();
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return resultobj;
+fail:
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_dia_matvec__SWIG_7(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ int arg1 ;
+ int arg2 ;
+ int arg3 ;
+ int arg4 ;
+ int *arg5 ;
+ long long *arg6 ;
+ long long *arg7 ;
+ long long *arg8 ;
+ int val1 ;
+ int ecode1 = 0 ;
+ int val2 ;
+ int ecode2 = 0 ;
+ int val3 ;
+ int ecode3 = 0 ;
+ int val4 ;
+ int ecode4 = 0 ;
+ PyArrayObject *array5 = NULL ;
+ int is_new_object5 ;
+ PyArrayObject *array6 = NULL ;
+ int is_new_object6 ;
+ PyArrayObject *array7 = NULL ;
+ int is_new_object7 ;
+ PyArrayObject *temp8 = NULL ;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+ PyObject * obj2 = 0 ;
+ PyObject * obj3 = 0 ;
+ PyObject * obj4 = 0 ;
+ PyObject * obj5 = 0 ;
+ PyObject * obj6 = 0 ;
+ PyObject * obj7 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"OOOOOOOO:dia_matvec",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7)) SWIG_fail;
+ ecode1 = SWIG_AsVal_int(obj0, &val1);
+ if (!SWIG_IsOK(ecode1)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "dia_matvec" "', argument " "1"" of type '" "int""'");
+ }
+ arg1 = static_cast< int >(val1);
+ ecode2 = SWIG_AsVal_int(obj1, &val2);
+ if (!SWIG_IsOK(ecode2)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "dia_matvec" "', argument " "2"" of type '" "int""'");
+ }
+ arg2 = static_cast< int >(val2);
+ ecode3 = SWIG_AsVal_int(obj2, &val3);
+ if (!SWIG_IsOK(ecode3)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "dia_matvec" "', argument " "3"" of type '" "int""'");
+ }
+ arg3 = static_cast< int >(val3);
+ ecode4 = SWIG_AsVal_int(obj3, &val4);
+ if (!SWIG_IsOK(ecode4)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "dia_matvec" "', argument " "4"" of type '" "int""'");
+ }
+ arg4 = static_cast< int >(val4);
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array5 = obj_to_array_contiguous_allow_conversion(obj4, PyArray_INT, &is_new_object5);
+ if (!array5 || !require_dimensions(array5,1) || !require_size(array5,size,1)
+ || !require_contiguous(array5) || !require_native(array5)) SWIG_fail;
+
+ arg5 = (int*) array5->data;
+ }
+ {
+ npy_intp size[2] = {
+ -1,-1
+ };
+ array6 = obj_to_array_contiguous_allow_conversion(obj5, PyArray_LONGLONG, &is_new_object6);
+ if (!array6 || !require_dimensions(array6,2) || !require_size(array6,size,1)
+ || !require_contiguous(array6) || !require_native(array6)) SWIG_fail;
+ arg6 = (long long*) array6->data;
+ }
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array7 = obj_to_array_contiguous_allow_conversion(obj6, PyArray_LONGLONG, &is_new_object7);
+ if (!array7 || !require_dimensions(array7,1) || !require_size(array7,size,1)
+ || !require_contiguous(array7) || !require_native(array7)) SWIG_fail;
+
+ arg7 = (long long*) array7->data;
+ }
+ {
+ temp8 = obj_to_array_no_conversion(obj7,PyArray_LONGLONG);
+ if (!temp8 || !require_contiguous(temp8) || !require_native(temp8)) SWIG_fail;
+ arg8 = (long long*) array_data(temp8);
+ }
+ dia_matvec< int,long long >(arg1,arg2,arg3,arg4,(int const (*))arg5,(long long const (*))arg6,(long long const (*))arg7,arg8);
+ resultobj = SWIG_Py_Void();
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return resultobj;
+fail:
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_dia_matvec__SWIG_8(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ int arg1 ;
+ int arg2 ;
+ int arg3 ;
+ int arg4 ;
+ int *arg5 ;
+ unsigned long long *arg6 ;
+ unsigned long long *arg7 ;
+ unsigned long long *arg8 ;
+ int val1 ;
+ int ecode1 = 0 ;
+ int val2 ;
+ int ecode2 = 0 ;
+ int val3 ;
+ int ecode3 = 0 ;
+ int val4 ;
+ int ecode4 = 0 ;
+ PyArrayObject *array5 = NULL ;
+ int is_new_object5 ;
+ PyArrayObject *array6 = NULL ;
+ int is_new_object6 ;
+ PyArrayObject *array7 = NULL ;
+ int is_new_object7 ;
+ PyArrayObject *temp8 = NULL ;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+ PyObject * obj2 = 0 ;
+ PyObject * obj3 = 0 ;
+ PyObject * obj4 = 0 ;
+ PyObject * obj5 = 0 ;
+ PyObject * obj6 = 0 ;
+ PyObject * obj7 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"OOOOOOOO:dia_matvec",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7)) SWIG_fail;
+ ecode1 = SWIG_AsVal_int(obj0, &val1);
+ if (!SWIG_IsOK(ecode1)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "dia_matvec" "', argument " "1"" of type '" "int""'");
+ }
+ arg1 = static_cast< int >(val1);
+ ecode2 = SWIG_AsVal_int(obj1, &val2);
+ if (!SWIG_IsOK(ecode2)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "dia_matvec" "', argument " "2"" of type '" "int""'");
+ }
+ arg2 = static_cast< int >(val2);
+ ecode3 = SWIG_AsVal_int(obj2, &val3);
+ if (!SWIG_IsOK(ecode3)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "dia_matvec" "', argument " "3"" of type '" "int""'");
+ }
+ arg3 = static_cast< int >(val3);
+ ecode4 = SWIG_AsVal_int(obj3, &val4);
+ if (!SWIG_IsOK(ecode4)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "dia_matvec" "', argument " "4"" of type '" "int""'");
+ }
+ arg4 = static_cast< int >(val4);
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array5 = obj_to_array_contiguous_allow_conversion(obj4, PyArray_INT, &is_new_object5);
+ if (!array5 || !require_dimensions(array5,1) || !require_size(array5,size,1)
+ || !require_contiguous(array5) || !require_native(array5)) SWIG_fail;
+
+ arg5 = (int*) array5->data;
+ }
+ {
+ npy_intp size[2] = {
+ -1,-1
+ };
+ array6 = obj_to_array_contiguous_allow_conversion(obj5, PyArray_ULONGLONG, &is_new_object6);
+ if (!array6 || !require_dimensions(array6,2) || !require_size(array6,size,1)
+ || !require_contiguous(array6) || !require_native(array6)) SWIG_fail;
+ arg6 = (unsigned long long*) array6->data;
+ }
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array7 = obj_to_array_contiguous_allow_conversion(obj6, PyArray_ULONGLONG, &is_new_object7);
+ if (!array7 || !require_dimensions(array7,1) || !require_size(array7,size,1)
+ || !require_contiguous(array7) || !require_native(array7)) SWIG_fail;
+
+ arg7 = (unsigned long long*) array7->data;
+ }
+ {
+ temp8 = obj_to_array_no_conversion(obj7,PyArray_ULONGLONG);
+ if (!temp8 || !require_contiguous(temp8) || !require_native(temp8)) SWIG_fail;
+ arg8 = (unsigned long long*) array_data(temp8);
+ }
+ dia_matvec< int,unsigned long long >(arg1,arg2,arg3,arg4,(int const (*))arg5,(unsigned long long const (*))arg6,(unsigned long long const (*))arg7,arg8);
+ resultobj = SWIG_Py_Void();
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return resultobj;
+fail:
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_dia_matvec__SWIG_9(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ int arg1 ;
+ int arg2 ;
+ int arg3 ;
+ int arg4 ;
+ int *arg5 ;
+ float *arg6 ;
+ float *arg7 ;
+ float *arg8 ;
+ int val1 ;
+ int ecode1 = 0 ;
+ int val2 ;
+ int ecode2 = 0 ;
+ int val3 ;
+ int ecode3 = 0 ;
+ int val4 ;
+ int ecode4 = 0 ;
+ PyArrayObject *array5 = NULL ;
+ int is_new_object5 ;
+ PyArrayObject *array6 = NULL ;
+ int is_new_object6 ;
+ PyArrayObject *array7 = NULL ;
+ int is_new_object7 ;
+ PyArrayObject *temp8 = NULL ;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+ PyObject * obj2 = 0 ;
+ PyObject * obj3 = 0 ;
+ PyObject * obj4 = 0 ;
+ PyObject * obj5 = 0 ;
+ PyObject * obj6 = 0 ;
+ PyObject * obj7 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"OOOOOOOO:dia_matvec",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7)) SWIG_fail;
+ ecode1 = SWIG_AsVal_int(obj0, &val1);
+ if (!SWIG_IsOK(ecode1)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "dia_matvec" "', argument " "1"" of type '" "int""'");
+ }
+ arg1 = static_cast< int >(val1);
+ ecode2 = SWIG_AsVal_int(obj1, &val2);
+ if (!SWIG_IsOK(ecode2)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "dia_matvec" "', argument " "2"" of type '" "int""'");
+ }
+ arg2 = static_cast< int >(val2);
+ ecode3 = SWIG_AsVal_int(obj2, &val3);
+ if (!SWIG_IsOK(ecode3)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "dia_matvec" "', argument " "3"" of type '" "int""'");
+ }
+ arg3 = static_cast< int >(val3);
+ ecode4 = SWIG_AsVal_int(obj3, &val4);
+ if (!SWIG_IsOK(ecode4)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "dia_matvec" "', argument " "4"" of type '" "int""'");
+ }
+ arg4 = static_cast< int >(val4);
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array5 = obj_to_array_contiguous_allow_conversion(obj4, PyArray_INT, &is_new_object5);
+ if (!array5 || !require_dimensions(array5,1) || !require_size(array5,size,1)
+ || !require_contiguous(array5) || !require_native(array5)) SWIG_fail;
+
+ arg5 = (int*) array5->data;
+ }
+ {
+ npy_intp size[2] = {
+ -1,-1
+ };
+ array6 = obj_to_array_contiguous_allow_conversion(obj5, PyArray_FLOAT, &is_new_object6);
+ if (!array6 || !require_dimensions(array6,2) || !require_size(array6,size,1)
+ || !require_contiguous(array6) || !require_native(array6)) SWIG_fail;
+ arg6 = (float*) array6->data;
+ }
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array7 = obj_to_array_contiguous_allow_conversion(obj6, PyArray_FLOAT, &is_new_object7);
+ if (!array7 || !require_dimensions(array7,1) || !require_size(array7,size,1)
+ || !require_contiguous(array7) || !require_native(array7)) SWIG_fail;
+
+ arg7 = (float*) array7->data;
+ }
+ {
+ temp8 = obj_to_array_no_conversion(obj7,PyArray_FLOAT);
+ if (!temp8 || !require_contiguous(temp8) || !require_native(temp8)) SWIG_fail;
+ arg8 = (float*) array_data(temp8);
+ }
+ dia_matvec< int,float >(arg1,arg2,arg3,arg4,(int const (*))arg5,(float const (*))arg6,(float const (*))arg7,arg8);
+ resultobj = SWIG_Py_Void();
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return resultobj;
+fail:
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_dia_matvec__SWIG_10(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ int arg1 ;
+ int arg2 ;
+ int arg3 ;
+ int arg4 ;
+ int *arg5 ;
+ double *arg6 ;
+ double *arg7 ;
+ double *arg8 ;
+ int val1 ;
+ int ecode1 = 0 ;
+ int val2 ;
+ int ecode2 = 0 ;
+ int val3 ;
+ int ecode3 = 0 ;
+ int val4 ;
+ int ecode4 = 0 ;
+ PyArrayObject *array5 = NULL ;
+ int is_new_object5 ;
+ PyArrayObject *array6 = NULL ;
+ int is_new_object6 ;
+ PyArrayObject *array7 = NULL ;
+ int is_new_object7 ;
+ PyArrayObject *temp8 = NULL ;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+ PyObject * obj2 = 0 ;
+ PyObject * obj3 = 0 ;
+ PyObject * obj4 = 0 ;
+ PyObject * obj5 = 0 ;
+ PyObject * obj6 = 0 ;
+ PyObject * obj7 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"OOOOOOOO:dia_matvec",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7)) SWIG_fail;
+ ecode1 = SWIG_AsVal_int(obj0, &val1);
+ if (!SWIG_IsOK(ecode1)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "dia_matvec" "', argument " "1"" of type '" "int""'");
+ }
+ arg1 = static_cast< int >(val1);
+ ecode2 = SWIG_AsVal_int(obj1, &val2);
+ if (!SWIG_IsOK(ecode2)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "dia_matvec" "', argument " "2"" of type '" "int""'");
+ }
+ arg2 = static_cast< int >(val2);
+ ecode3 = SWIG_AsVal_int(obj2, &val3);
+ if (!SWIG_IsOK(ecode3)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "dia_matvec" "', argument " "3"" of type '" "int""'");
+ }
+ arg3 = static_cast< int >(val3);
+ ecode4 = SWIG_AsVal_int(obj3, &val4);
+ if (!SWIG_IsOK(ecode4)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "dia_matvec" "', argument " "4"" of type '" "int""'");
+ }
+ arg4 = static_cast< int >(val4);
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array5 = obj_to_array_contiguous_allow_conversion(obj4, PyArray_INT, &is_new_object5);
+ if (!array5 || !require_dimensions(array5,1) || !require_size(array5,size,1)
+ || !require_contiguous(array5) || !require_native(array5)) SWIG_fail;
+
+ arg5 = (int*) array5->data;
+ }
+ {
+ npy_intp size[2] = {
+ -1,-1
+ };
+ array6 = obj_to_array_contiguous_allow_conversion(obj5, PyArray_DOUBLE, &is_new_object6);
+ if (!array6 || !require_dimensions(array6,2) || !require_size(array6,size,1)
+ || !require_contiguous(array6) || !require_native(array6)) SWIG_fail;
+ arg6 = (double*) array6->data;
+ }
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array7 = obj_to_array_contiguous_allow_conversion(obj6, PyArray_DOUBLE, &is_new_object7);
+ if (!array7 || !require_dimensions(array7,1) || !require_size(array7,size,1)
+ || !require_contiguous(array7) || !require_native(array7)) SWIG_fail;
+
+ arg7 = (double*) array7->data;
+ }
+ {
+ temp8 = obj_to_array_no_conversion(obj7,PyArray_DOUBLE);
+ if (!temp8 || !require_contiguous(temp8) || !require_native(temp8)) SWIG_fail;
+ arg8 = (double*) array_data(temp8);
+ }
+ dia_matvec< int,double >(arg1,arg2,arg3,arg4,(int const (*))arg5,(double const (*))arg6,(double const (*))arg7,arg8);
+ resultobj = SWIG_Py_Void();
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return resultobj;
+fail:
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_dia_matvec__SWIG_11(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ int arg1 ;
+ int arg2 ;
+ int arg3 ;
+ int arg4 ;
+ int *arg5 ;
+ long double *arg6 ;
+ long double *arg7 ;
+ long double *arg8 ;
+ int val1 ;
+ int ecode1 = 0 ;
+ int val2 ;
+ int ecode2 = 0 ;
+ int val3 ;
+ int ecode3 = 0 ;
+ int val4 ;
+ int ecode4 = 0 ;
+ PyArrayObject *array5 = NULL ;
+ int is_new_object5 ;
+ PyArrayObject *array6 = NULL ;
+ int is_new_object6 ;
+ PyArrayObject *array7 = NULL ;
+ int is_new_object7 ;
+ PyArrayObject *temp8 = NULL ;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+ PyObject * obj2 = 0 ;
+ PyObject * obj3 = 0 ;
+ PyObject * obj4 = 0 ;
+ PyObject * obj5 = 0 ;
+ PyObject * obj6 = 0 ;
+ PyObject * obj7 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"OOOOOOOO:dia_matvec",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7)) SWIG_fail;
+ ecode1 = SWIG_AsVal_int(obj0, &val1);
+ if (!SWIG_IsOK(ecode1)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "dia_matvec" "', argument " "1"" of type '" "int""'");
+ }
+ arg1 = static_cast< int >(val1);
+ ecode2 = SWIG_AsVal_int(obj1, &val2);
+ if (!SWIG_IsOK(ecode2)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "dia_matvec" "', argument " "2"" of type '" "int""'");
+ }
+ arg2 = static_cast< int >(val2);
+ ecode3 = SWIG_AsVal_int(obj2, &val3);
+ if (!SWIG_IsOK(ecode3)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "dia_matvec" "', argument " "3"" of type '" "int""'");
+ }
+ arg3 = static_cast< int >(val3);
+ ecode4 = SWIG_AsVal_int(obj3, &val4);
+ if (!SWIG_IsOK(ecode4)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "dia_matvec" "', argument " "4"" of type '" "int""'");
+ }
+ arg4 = static_cast< int >(val4);
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array5 = obj_to_array_contiguous_allow_conversion(obj4, PyArray_INT, &is_new_object5);
+ if (!array5 || !require_dimensions(array5,1) || !require_size(array5,size,1)
+ || !require_contiguous(array5) || !require_native(array5)) SWIG_fail;
+
+ arg5 = (int*) array5->data;
+ }
+ {
+ npy_intp size[2] = {
+ -1,-1
+ };
+ array6 = obj_to_array_contiguous_allow_conversion(obj5, PyArray_LONGDOUBLE, &is_new_object6);
+ if (!array6 || !require_dimensions(array6,2) || !require_size(array6,size,1)
+ || !require_contiguous(array6) || !require_native(array6)) SWIG_fail;
+ arg6 = (long double*) array6->data;
+ }
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array7 = obj_to_array_contiguous_allow_conversion(obj6, PyArray_LONGDOUBLE, &is_new_object7);
+ if (!array7 || !require_dimensions(array7,1) || !require_size(array7,size,1)
+ || !require_contiguous(array7) || !require_native(array7)) SWIG_fail;
+
+ arg7 = (long double*) array7->data;
+ }
+ {
+ temp8 = obj_to_array_no_conversion(obj7,PyArray_LONGDOUBLE);
+ if (!temp8 || !require_contiguous(temp8) || !require_native(temp8)) SWIG_fail;
+ arg8 = (long double*) array_data(temp8);
+ }
+ dia_matvec< int,long double >(arg1,arg2,arg3,arg4,(int const (*))arg5,(long double const (*))arg6,(long double const (*))arg7,arg8);
+ resultobj = SWIG_Py_Void();
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return resultobj;
+fail:
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_dia_matvec__SWIG_12(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ int arg1 ;
+ int arg2 ;
+ int arg3 ;
+ int arg4 ;
+ int *arg5 ;
+ npy_cfloat_wrapper *arg6 ;
+ npy_cfloat_wrapper *arg7 ;
+ npy_cfloat_wrapper *arg8 ;
+ int val1 ;
+ int ecode1 = 0 ;
+ int val2 ;
+ int ecode2 = 0 ;
+ int val3 ;
+ int ecode3 = 0 ;
+ int val4 ;
+ int ecode4 = 0 ;
+ PyArrayObject *array5 = NULL ;
+ int is_new_object5 ;
+ PyArrayObject *array6 = NULL ;
+ int is_new_object6 ;
+ PyArrayObject *array7 = NULL ;
+ int is_new_object7 ;
+ PyArrayObject *temp8 = NULL ;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+ PyObject * obj2 = 0 ;
+ PyObject * obj3 = 0 ;
+ PyObject * obj4 = 0 ;
+ PyObject * obj5 = 0 ;
+ PyObject * obj6 = 0 ;
+ PyObject * obj7 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"OOOOOOOO:dia_matvec",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7)) SWIG_fail;
+ ecode1 = SWIG_AsVal_int(obj0, &val1);
+ if (!SWIG_IsOK(ecode1)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "dia_matvec" "', argument " "1"" of type '" "int""'");
+ }
+ arg1 = static_cast< int >(val1);
+ ecode2 = SWIG_AsVal_int(obj1, &val2);
+ if (!SWIG_IsOK(ecode2)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "dia_matvec" "', argument " "2"" of type '" "int""'");
+ }
+ arg2 = static_cast< int >(val2);
+ ecode3 = SWIG_AsVal_int(obj2, &val3);
+ if (!SWIG_IsOK(ecode3)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "dia_matvec" "', argument " "3"" of type '" "int""'");
+ }
+ arg3 = static_cast< int >(val3);
+ ecode4 = SWIG_AsVal_int(obj3, &val4);
+ if (!SWIG_IsOK(ecode4)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "dia_matvec" "', argument " "4"" of type '" "int""'");
+ }
+ arg4 = static_cast< int >(val4);
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array5 = obj_to_array_contiguous_allow_conversion(obj4, PyArray_INT, &is_new_object5);
+ if (!array5 || !require_dimensions(array5,1) || !require_size(array5,size,1)
+ || !require_contiguous(array5) || !require_native(array5)) SWIG_fail;
+
+ arg5 = (int*) array5->data;
+ }
+ {
+ npy_intp size[2] = {
+ -1,-1
+ };
+ array6 = obj_to_array_contiguous_allow_conversion(obj5, PyArray_CFLOAT, &is_new_object6);
+ if (!array6 || !require_dimensions(array6,2) || !require_size(array6,size,1)
+ || !require_contiguous(array6) || !require_native(array6)) SWIG_fail;
+ arg6 = (npy_cfloat_wrapper*) array6->data;
+ }
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array7 = obj_to_array_contiguous_allow_conversion(obj6, PyArray_CFLOAT, &is_new_object7);
+ if (!array7 || !require_dimensions(array7,1) || !require_size(array7,size,1)
+ || !require_contiguous(array7) || !require_native(array7)) SWIG_fail;
+
+ arg7 = (npy_cfloat_wrapper*) array7->data;
+ }
+ {
+ temp8 = obj_to_array_no_conversion(obj7,PyArray_CFLOAT);
+ if (!temp8 || !require_contiguous(temp8) || !require_native(temp8)) SWIG_fail;
+ arg8 = (npy_cfloat_wrapper*) array_data(temp8);
+ }
+ dia_matvec< int,npy_cfloat_wrapper >(arg1,arg2,arg3,arg4,(int const (*))arg5,(npy_cfloat_wrapper const (*))arg6,(npy_cfloat_wrapper const (*))arg7,arg8);
+ resultobj = SWIG_Py_Void();
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return resultobj;
+fail:
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_dia_matvec__SWIG_13(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ int arg1 ;
+ int arg2 ;
+ int arg3 ;
+ int arg4 ;
+ int *arg5 ;
+ npy_cdouble_wrapper *arg6 ;
+ npy_cdouble_wrapper *arg7 ;
+ npy_cdouble_wrapper *arg8 ;
+ int val1 ;
+ int ecode1 = 0 ;
+ int val2 ;
+ int ecode2 = 0 ;
+ int val3 ;
+ int ecode3 = 0 ;
+ int val4 ;
+ int ecode4 = 0 ;
+ PyArrayObject *array5 = NULL ;
+ int is_new_object5 ;
+ PyArrayObject *array6 = NULL ;
+ int is_new_object6 ;
+ PyArrayObject *array7 = NULL ;
+ int is_new_object7 ;
+ PyArrayObject *temp8 = NULL ;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+ PyObject * obj2 = 0 ;
+ PyObject * obj3 = 0 ;
+ PyObject * obj4 = 0 ;
+ PyObject * obj5 = 0 ;
+ PyObject * obj6 = 0 ;
+ PyObject * obj7 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"OOOOOOOO:dia_matvec",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7)) SWIG_fail;
+ ecode1 = SWIG_AsVal_int(obj0, &val1);
+ if (!SWIG_IsOK(ecode1)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "dia_matvec" "', argument " "1"" of type '" "int""'");
+ }
+ arg1 = static_cast< int >(val1);
+ ecode2 = SWIG_AsVal_int(obj1, &val2);
+ if (!SWIG_IsOK(ecode2)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "dia_matvec" "', argument " "2"" of type '" "int""'");
+ }
+ arg2 = static_cast< int >(val2);
+ ecode3 = SWIG_AsVal_int(obj2, &val3);
+ if (!SWIG_IsOK(ecode3)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "dia_matvec" "', argument " "3"" of type '" "int""'");
+ }
+ arg3 = static_cast< int >(val3);
+ ecode4 = SWIG_AsVal_int(obj3, &val4);
+ if (!SWIG_IsOK(ecode4)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "dia_matvec" "', argument " "4"" of type '" "int""'");
+ }
+ arg4 = static_cast< int >(val4);
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array5 = obj_to_array_contiguous_allow_conversion(obj4, PyArray_INT, &is_new_object5);
+ if (!array5 || !require_dimensions(array5,1) || !require_size(array5,size,1)
+ || !require_contiguous(array5) || !require_native(array5)) SWIG_fail;
+
+ arg5 = (int*) array5->data;
+ }
+ {
+ npy_intp size[2] = {
+ -1,-1
+ };
+ array6 = obj_to_array_contiguous_allow_conversion(obj5, PyArray_CDOUBLE, &is_new_object6);
+ if (!array6 || !require_dimensions(array6,2) || !require_size(array6,size,1)
+ || !require_contiguous(array6) || !require_native(array6)) SWIG_fail;
+ arg6 = (npy_cdouble_wrapper*) array6->data;
+ }
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array7 = obj_to_array_contiguous_allow_conversion(obj6, PyArray_CDOUBLE, &is_new_object7);
+ if (!array7 || !require_dimensions(array7,1) || !require_size(array7,size,1)
+ || !require_contiguous(array7) || !require_native(array7)) SWIG_fail;
+
+ arg7 = (npy_cdouble_wrapper*) array7->data;
+ }
+ {
+ temp8 = obj_to_array_no_conversion(obj7,PyArray_CDOUBLE);
+ if (!temp8 || !require_contiguous(temp8) || !require_native(temp8)) SWIG_fail;
+ arg8 = (npy_cdouble_wrapper*) array_data(temp8);
+ }
+ dia_matvec< int,npy_cdouble_wrapper >(arg1,arg2,arg3,arg4,(int const (*))arg5,(npy_cdouble_wrapper const (*))arg6,(npy_cdouble_wrapper const (*))arg7,arg8);
+ resultobj = SWIG_Py_Void();
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return resultobj;
+fail:
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_dia_matvec__SWIG_14(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ int arg1 ;
+ int arg2 ;
+ int arg3 ;
+ int arg4 ;
+ int *arg5 ;
+ npy_clongdouble_wrapper *arg6 ;
+ npy_clongdouble_wrapper *arg7 ;
+ npy_clongdouble_wrapper *arg8 ;
+ int val1 ;
+ int ecode1 = 0 ;
+ int val2 ;
+ int ecode2 = 0 ;
+ int val3 ;
+ int ecode3 = 0 ;
+ int val4 ;
+ int ecode4 = 0 ;
+ PyArrayObject *array5 = NULL ;
+ int is_new_object5 ;
+ PyArrayObject *array6 = NULL ;
+ int is_new_object6 ;
+ PyArrayObject *array7 = NULL ;
+ int is_new_object7 ;
+ PyArrayObject *temp8 = NULL ;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+ PyObject * obj2 = 0 ;
+ PyObject * obj3 = 0 ;
+ PyObject * obj4 = 0 ;
+ PyObject * obj5 = 0 ;
+ PyObject * obj6 = 0 ;
+ PyObject * obj7 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"OOOOOOOO:dia_matvec",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7)) SWIG_fail;
+ ecode1 = SWIG_AsVal_int(obj0, &val1);
+ if (!SWIG_IsOK(ecode1)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "dia_matvec" "', argument " "1"" of type '" "int""'");
+ }
+ arg1 = static_cast< int >(val1);
+ ecode2 = SWIG_AsVal_int(obj1, &val2);
+ if (!SWIG_IsOK(ecode2)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "dia_matvec" "', argument " "2"" of type '" "int""'");
+ }
+ arg2 = static_cast< int >(val2);
+ ecode3 = SWIG_AsVal_int(obj2, &val3);
+ if (!SWIG_IsOK(ecode3)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "dia_matvec" "', argument " "3"" of type '" "int""'");
+ }
+ arg3 = static_cast< int >(val3);
+ ecode4 = SWIG_AsVal_int(obj3, &val4);
+ if (!SWIG_IsOK(ecode4)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "dia_matvec" "', argument " "4"" of type '" "int""'");
+ }
+ arg4 = static_cast< int >(val4);
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array5 = obj_to_array_contiguous_allow_conversion(obj4, PyArray_INT, &is_new_object5);
+ if (!array5 || !require_dimensions(array5,1) || !require_size(array5,size,1)
+ || !require_contiguous(array5) || !require_native(array5)) SWIG_fail;
+
+ arg5 = (int*) array5->data;
+ }
+ {
+ npy_intp size[2] = {
+ -1,-1
+ };
+ array6 = obj_to_array_contiguous_allow_conversion(obj5, PyArray_CLONGDOUBLE, &is_new_object6);
+ if (!array6 || !require_dimensions(array6,2) || !require_size(array6,size,1)
+ || !require_contiguous(array6) || !require_native(array6)) SWIG_fail;
+ arg6 = (npy_clongdouble_wrapper*) array6->data;
+ }
+ {
+ npy_intp size[1] = {
+ -1
+ };
+ array7 = obj_to_array_contiguous_allow_conversion(obj6, PyArray_CLONGDOUBLE, &is_new_object7);
+ if (!array7 || !require_dimensions(array7,1) || !require_size(array7,size,1)
+ || !require_contiguous(array7) || !require_native(array7)) SWIG_fail;
+
+ arg7 = (npy_clongdouble_wrapper*) array7->data;
+ }
+ {
+ temp8 = obj_to_array_no_conversion(obj7,PyArray_CLONGDOUBLE);
+ if (!temp8 || !require_contiguous(temp8) || !require_native(temp8)) SWIG_fail;
+ arg8 = (npy_clongdouble_wrapper*) array_data(temp8);
+ }
+ dia_matvec< int,npy_clongdouble_wrapper >(arg1,arg2,arg3,arg4,(int const (*))arg5,(npy_clongdouble_wrapper const (*))arg6,(npy_clongdouble_wrapper const (*))arg7,arg8);
+ resultobj = SWIG_Py_Void();
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return resultobj;
+fail:
+ {
+ if (is_new_object5 && array5) Py_DECREF(array5);
+ }
+ {
+ if (is_new_object6 && array6) Py_DECREF(array6);
+ }
+ {
+ if (is_new_object7 && array7) Py_DECREF(array7);
+ }
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_dia_matvec(PyObject *self, PyObject *args) {
+ int argc;
+ PyObject *argv[9];
+ int ii;
+
+ if (!PyTuple_Check(args)) SWIG_fail;
+ argc = (int)PyObject_Length(args);
+ for (ii = 0; (ii < argc) && (ii < 8); ii++) {
+ argv[ii] = PyTuple_GET_ITEM(args,ii);
+ }
+ if (argc == 8) {
+ int _v;
+ {
+ int res = SWIG_AsVal_int(argv[0], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[1], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[2], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[3], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[4]) && PyArray_CanCastSafely(PyArray_TYPE(argv[4]),PyArray_INT)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[5]) && PyArray_CanCastSafely(PyArray_TYPE(argv[5]),PyArray_BYTE)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[6]) && PyArray_CanCastSafely(PyArray_TYPE(argv[6]),PyArray_BYTE)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[7]) && PyArray_CanCastSafely(PyArray_TYPE(argv[7]),PyArray_BYTE)) ? 1 : 0;
+ }
+ if (_v) {
+ return _wrap_dia_matvec__SWIG_1(self, args);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ if (argc == 8) {
+ int _v;
+ {
+ int res = SWIG_AsVal_int(argv[0], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[1], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[2], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[3], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[4]) && PyArray_CanCastSafely(PyArray_TYPE(argv[4]),PyArray_INT)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[5]) && PyArray_CanCastSafely(PyArray_TYPE(argv[5]),PyArray_UBYTE)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[6]) && PyArray_CanCastSafely(PyArray_TYPE(argv[6]),PyArray_UBYTE)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[7]) && PyArray_CanCastSafely(PyArray_TYPE(argv[7]),PyArray_UBYTE)) ? 1 : 0;
+ }
+ if (_v) {
+ return _wrap_dia_matvec__SWIG_2(self, args);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ if (argc == 8) {
+ int _v;
+ {
+ int res = SWIG_AsVal_int(argv[0], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[1], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[2], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[3], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[4]) && PyArray_CanCastSafely(PyArray_TYPE(argv[4]),PyArray_INT)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[5]) && PyArray_CanCastSafely(PyArray_TYPE(argv[5]),PyArray_SHORT)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[6]) && PyArray_CanCastSafely(PyArray_TYPE(argv[6]),PyArray_SHORT)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[7]) && PyArray_CanCastSafely(PyArray_TYPE(argv[7]),PyArray_SHORT)) ? 1 : 0;
+ }
+ if (_v) {
+ return _wrap_dia_matvec__SWIG_3(self, args);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ if (argc == 8) {
+ int _v;
+ {
+ int res = SWIG_AsVal_int(argv[0], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[1], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[2], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[3], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[4]) && PyArray_CanCastSafely(PyArray_TYPE(argv[4]),PyArray_INT)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[5]) && PyArray_CanCastSafely(PyArray_TYPE(argv[5]),PyArray_USHORT)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[6]) && PyArray_CanCastSafely(PyArray_TYPE(argv[6]),PyArray_USHORT)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[7]) && PyArray_CanCastSafely(PyArray_TYPE(argv[7]),PyArray_USHORT)) ? 1 : 0;
+ }
+ if (_v) {
+ return _wrap_dia_matvec__SWIG_4(self, args);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ if (argc == 8) {
+ int _v;
+ {
+ int res = SWIG_AsVal_int(argv[0], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[1], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[2], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[3], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[4]) && PyArray_CanCastSafely(PyArray_TYPE(argv[4]),PyArray_INT)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[5]) && PyArray_CanCastSafely(PyArray_TYPE(argv[5]),PyArray_INT)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[6]) && PyArray_CanCastSafely(PyArray_TYPE(argv[6]),PyArray_INT)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[7]) && PyArray_CanCastSafely(PyArray_TYPE(argv[7]),PyArray_INT)) ? 1 : 0;
+ }
+ if (_v) {
+ return _wrap_dia_matvec__SWIG_5(self, args);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ if (argc == 8) {
+ int _v;
+ {
+ int res = SWIG_AsVal_int(argv[0], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[1], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[2], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[3], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[4]) && PyArray_CanCastSafely(PyArray_TYPE(argv[4]),PyArray_INT)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[5]) && PyArray_CanCastSafely(PyArray_TYPE(argv[5]),PyArray_UINT)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[6]) && PyArray_CanCastSafely(PyArray_TYPE(argv[6]),PyArray_UINT)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[7]) && PyArray_CanCastSafely(PyArray_TYPE(argv[7]),PyArray_UINT)) ? 1 : 0;
+ }
+ if (_v) {
+ return _wrap_dia_matvec__SWIG_6(self, args);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ if (argc == 8) {
+ int _v;
+ {
+ int res = SWIG_AsVal_int(argv[0], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[1], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[2], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[3], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[4]) && PyArray_CanCastSafely(PyArray_TYPE(argv[4]),PyArray_INT)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[5]) && PyArray_CanCastSafely(PyArray_TYPE(argv[5]),PyArray_LONGLONG)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[6]) && PyArray_CanCastSafely(PyArray_TYPE(argv[6]),PyArray_LONGLONG)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[7]) && PyArray_CanCastSafely(PyArray_TYPE(argv[7]),PyArray_LONGLONG)) ? 1 : 0;
+ }
+ if (_v) {
+ return _wrap_dia_matvec__SWIG_7(self, args);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ if (argc == 8) {
+ int _v;
+ {
+ int res = SWIG_AsVal_int(argv[0], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[1], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[2], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[3], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[4]) && PyArray_CanCastSafely(PyArray_TYPE(argv[4]),PyArray_INT)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[5]) && PyArray_CanCastSafely(PyArray_TYPE(argv[5]),PyArray_ULONGLONG)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[6]) && PyArray_CanCastSafely(PyArray_TYPE(argv[6]),PyArray_ULONGLONG)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[7]) && PyArray_CanCastSafely(PyArray_TYPE(argv[7]),PyArray_ULONGLONG)) ? 1 : 0;
+ }
+ if (_v) {
+ return _wrap_dia_matvec__SWIG_8(self, args);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ if (argc == 8) {
+ int _v;
+ {
+ int res = SWIG_AsVal_int(argv[0], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[1], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[2], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[3], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[4]) && PyArray_CanCastSafely(PyArray_TYPE(argv[4]),PyArray_INT)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[5]) && PyArray_CanCastSafely(PyArray_TYPE(argv[5]),PyArray_FLOAT)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[6]) && PyArray_CanCastSafely(PyArray_TYPE(argv[6]),PyArray_FLOAT)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[7]) && PyArray_CanCastSafely(PyArray_TYPE(argv[7]),PyArray_FLOAT)) ? 1 : 0;
+ }
+ if (_v) {
+ return _wrap_dia_matvec__SWIG_9(self, args);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ if (argc == 8) {
+ int _v;
+ {
+ int res = SWIG_AsVal_int(argv[0], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[1], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[2], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[3], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[4]) && PyArray_CanCastSafely(PyArray_TYPE(argv[4]),PyArray_INT)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[5]) && PyArray_CanCastSafely(PyArray_TYPE(argv[5]),PyArray_DOUBLE)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[6]) && PyArray_CanCastSafely(PyArray_TYPE(argv[6]),PyArray_DOUBLE)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[7]) && PyArray_CanCastSafely(PyArray_TYPE(argv[7]),PyArray_DOUBLE)) ? 1 : 0;
+ }
+ if (_v) {
+ return _wrap_dia_matvec__SWIG_10(self, args);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ if (argc == 8) {
+ int _v;
+ {
+ int res = SWIG_AsVal_int(argv[0], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[1], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[2], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[3], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[4]) && PyArray_CanCastSafely(PyArray_TYPE(argv[4]),PyArray_INT)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[5]) && PyArray_CanCastSafely(PyArray_TYPE(argv[5]),PyArray_LONGDOUBLE)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[6]) && PyArray_CanCastSafely(PyArray_TYPE(argv[6]),PyArray_LONGDOUBLE)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[7]) && PyArray_CanCastSafely(PyArray_TYPE(argv[7]),PyArray_LONGDOUBLE)) ? 1 : 0;
+ }
+ if (_v) {
+ return _wrap_dia_matvec__SWIG_11(self, args);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ if (argc == 8) {
+ int _v;
+ {
+ int res = SWIG_AsVal_int(argv[0], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[1], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[2], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[3], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[4]) && PyArray_CanCastSafely(PyArray_TYPE(argv[4]),PyArray_INT)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[5]) && PyArray_CanCastSafely(PyArray_TYPE(argv[5]),PyArray_CFLOAT)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[6]) && PyArray_CanCastSafely(PyArray_TYPE(argv[6]),PyArray_CFLOAT)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[7]) && PyArray_CanCastSafely(PyArray_TYPE(argv[7]),PyArray_CFLOAT)) ? 1 : 0;
+ }
+ if (_v) {
+ return _wrap_dia_matvec__SWIG_12(self, args);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ if (argc == 8) {
+ int _v;
+ {
+ int res = SWIG_AsVal_int(argv[0], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[1], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[2], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[3], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[4]) && PyArray_CanCastSafely(PyArray_TYPE(argv[4]),PyArray_INT)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[5]) && PyArray_CanCastSafely(PyArray_TYPE(argv[5]),PyArray_CDOUBLE)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[6]) && PyArray_CanCastSafely(PyArray_TYPE(argv[6]),PyArray_CDOUBLE)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[7]) && PyArray_CanCastSafely(PyArray_TYPE(argv[7]),PyArray_CDOUBLE)) ? 1 : 0;
+ }
+ if (_v) {
+ return _wrap_dia_matvec__SWIG_13(self, args);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ if (argc == 8) {
+ int _v;
+ {
+ int res = SWIG_AsVal_int(argv[0], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[1], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[2], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ int res = SWIG_AsVal_int(argv[3], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[4]) && PyArray_CanCastSafely(PyArray_TYPE(argv[4]),PyArray_INT)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[5]) && PyArray_CanCastSafely(PyArray_TYPE(argv[5]),PyArray_CLONGDOUBLE)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[6]) && PyArray_CanCastSafely(PyArray_TYPE(argv[6]),PyArray_CLONGDOUBLE)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = (is_array(argv[7]) && PyArray_CanCastSafely(PyArray_TYPE(argv[7]),PyArray_CLONGDOUBLE)) ? 1 : 0;
+ }
+ if (_v) {
+ return _wrap_dia_matvec__SWIG_14(self, args);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+fail:
+ SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'dia_matvec'.\n"
+ " Possible C/C++ prototypes are:\n"
+ " dia_matvec< int,signed char >(int const,int const,int const,int const,int const [],signed char const [],signed char const [],signed char [])\n"
+ " dia_matvec< int,unsigned char >(int const,int const,int const,int const,int const [],unsigned char const [],unsigned char const [],unsigned char [])\n"
+ " dia_matvec< int,short >(int const,int const,int const,int const,int const [],short const [],short const [],short [])\n"
+ " dia_matvec< int,unsigned short >(int const,int const,int const,int const,int const [],unsigned short const [],unsigned short const [],unsigned short [])\n"
+ " dia_matvec< int,int >(int const,int const,int const,int const,int const [],int const [],int const [],int [])\n"
+ " dia_matvec< int,unsigned int >(int const,int const,int const,int const,int const [],unsigned int const [],unsigned int const [],unsigned int [])\n"
+ " dia_matvec< int,long long >(int const,int const,int const,int const,int const [],long long const [],long long const [],long long [])\n"
+ " dia_matvec< int,unsigned long long >(int const,int const,int const,int const,int const [],unsigned long long const [],unsigned long long const [],unsigned long long [])\n"
+ " dia_matvec< int,float >(int const,int const,int const,int const,int const [],float const [],float const [],float [])\n"
+ " dia_matvec< int,double >(int const,int const,int const,int const,int const [],double const [],double const [],double [])\n"
+ " dia_matvec< int,long double >(int const,int const,int const,int const,int const [],long double const [],long double const [],long double [])\n"
+ " dia_matvec< int,npy_cfloat_wrapper >(int const,int const,int const,int const,int const [],npy_cfloat_wrapper const [],npy_cfloat_wrapper const [],npy_cfloat_wrapper [])\n"
+ " dia_matvec< int,npy_cdouble_wrapper >(int const,int const,int const,int const,int const [],npy_cdouble_wrapper const [],npy_cdouble_wrapper const [],npy_cdouble_wrapper [])\n"
+ " dia_matvec< int,npy_clongdouble_wrapper >(int const,int const,int const,int const,int const [],npy_clongdouble_wrapper const [],npy_clongdouble_wrapper const [],npy_clongdouble_wrapper [])\n");
+ return NULL;
+}
+
+
SWIGINTERN PyObject *_wrap_csr_elmul_csr__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
PyObject *resultobj = 0;
int arg1 ;
@@ -99136,6 +101450,41 @@
" npy_clongdouble_wrapper Ax, npy_clongdouble_wrapper Xx, \n"
" npy_clongdouble_wrapper Yx)\n"
""},
+ { (char *)"dia_matvec", _wrap_dia_matvec, METH_VARARGS, (char *)"\n"
+ "dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets, \n"
+ " signed char diags, signed char Xx, signed char Yx)\n"
+ "dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets, \n"
+ " unsigned char diags, unsigned char Xx, unsigned char Yx)\n"
+ "dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets, \n"
+ " short diags, short Xx, short Yx)\n"
+ "dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets, \n"
+ " unsigned short diags, unsigned short Xx, \n"
+ " unsigned short Yx)\n"
+ "dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets, \n"
+ " int diags, int Xx, int Yx)\n"
+ "dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets, \n"
+ " unsigned int diags, unsigned int Xx, unsigned int Yx)\n"
+ "dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets, \n"
+ " long long diags, long long Xx, long long Yx)\n"
+ "dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets, \n"
+ " unsigned long long diags, unsigned long long Xx, \n"
+ " unsigned long long Yx)\n"
+ "dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets, \n"
+ " float diags, float Xx, float Yx)\n"
+ "dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets, \n"
+ " double diags, double Xx, double Yx)\n"
+ "dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets, \n"
+ " long double diags, long double Xx, long double Yx)\n"
+ "dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets, \n"
+ " npy_cfloat_wrapper diags, npy_cfloat_wrapper Xx, \n"
+ " npy_cfloat_wrapper Yx)\n"
+ "dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets, \n"
+ " npy_cdouble_wrapper diags, npy_cdouble_wrapper Xx, \n"
+ " npy_cdouble_wrapper Yx)\n"
+ "dia_matvec(int n_row, int n_col, int n_diags, int L, int offsets, \n"
+ " npy_clongdouble_wrapper diags, npy_clongdouble_wrapper Xx, \n"
+ " npy_clongdouble_wrapper Yx)\n"
+ ""},
{ (char *)"csr_elmul_csr", _wrap_csr_elmul_csr, METH_VARARGS, (char *)"\n"
"csr_elmul_csr(int n_row, int n_col, int Ap, int Aj, signed char Ax, \n"
" int Bp, int Bj, signed char Bx, int Cp, int Cj, \n"
Modified: trunk/scipy/sparse/tests/bench_sparse.py
===================================================================
--- trunk/scipy/sparse/tests/bench_sparse.py 2008-03-16 03:59:16 UTC (rev 4027)
+++ trunk/scipy/sparse/tests/bench_sparse.py 2008-03-17 13:38:19 UTC (rev 4028)
@@ -1,15 +1,15 @@
"""general tests and simple benchmarks for the sparse module"""
+import time
+
import numpy
from numpy import ones, array, asarray, empty
-import random
from scipy.testing import *
+from scipy import sparse
from scipy.sparse import csc_matrix, csr_matrix, dok_matrix, \
- coo_matrix, lil_matrix, dia_matrix, spidentity, spdiags, \
- spkron
-from scipy.linsolve import splu
+ coo_matrix, lil_matrix, dia_matrix, spdiags
def random_sparse(m,n,nnz_per_row):
@@ -38,17 +38,16 @@
diags[1:] = -1 #all offdiagonals
diags[3,N-1::N] = 0 #first lower diagonal
- diags[4,N::N] = 0 #first upper diagonal
+ diags[4,N::N] = 0 #first upper diagonal
return dia_matrix((diags,offsets),shape=(N**2,N**2)).asformat(format)
-import time
-class TestSparseTools(TestCase):
+class BenchmarkSparse(TestCase):
"""Simple benchmarks for sparse matrix module"""
def bench_arithmetic(self):
matrices = []
- #matrices.append( ('A','Identity', spidentity(500**2,format='csr')) )
+ #matrices.append( ('A','Identity', sparse.identity(500**2,format='csr')) )
matrices.append( ('A','Poisson5pt', poisson2d(500,format='csr')) )
matrices.append( ('B','Poisson5pt^2', poisson2d(500,format='csr')**2) )
@@ -116,7 +115,7 @@
start = time.clock()
iter = 0
while iter < 5 and time.clock() - start < 1:
- A._has_sorted_indices = False
+ A.has_sorted_indices = False
A.sort_indices()
iter += 1
end = time.clock()
@@ -128,17 +127,17 @@
def bench_matvec(self):
matrices = []
- matrices.append(('Identity', spidentity(10**4,format='dia')))
- matrices.append(('Identity', spidentity(10**4,format='csr')))
+ matrices.append(('Identity', sparse.identity(10**4,format='dia')))
+ matrices.append(('Identity', sparse.identity(10**4,format='csr')))
matrices.append(('Poisson5pt', poisson2d(300,format='dia')))
matrices.append(('Poisson5pt', poisson2d(300,format='csr')))
matrices.append(('Poisson5pt', poisson2d(300,format='bsr')))
- A = spkron(poisson2d(150),ones((2,2))).tobsr(blocksize=(2,2))
+ A = sparse.kron(poisson2d(150),ones((2,2))).tobsr(blocksize=(2,2))
matrices.append( ('Block2x2', A.tocsr()) )
matrices.append( ('Block2x2', A) )
- A = spkron(poisson2d(100),ones((3,3))).tobsr(blocksize=(3,3))
+ A = sparse.kron(poisson2d(100),ones((3,3))).tobsr(blocksize=(3,3))
matrices.append( ('Block3x3', A.tocsr()) )
matrices.append( ('Block3x3', A) )
@@ -178,7 +177,7 @@
"""build matrices by inserting single values"""
matrices = []
matrices.append( ('Empty',csr_matrix((10000,10000))) )
- matrices.append( ('Identity',spidentity(10000)) )
+ matrices.append( ('Identity',sparse.identity(10000)) )
matrices.append( ('Poisson5pt', poisson2d(100)) )
print
@@ -250,31 +249,31 @@
print output
-class TestLarge(TestCase):
- def bench_large(self):
- # Create a 100x100 matrix with 100 non-zero elements
- # and play around with it
- #TODO move this out of Common since it doesn't use spmatrix
- random.seed(0)
- A = dok_matrix((100,100))
- for k in range(100):
- i = random.randrange(100)
- j = random.randrange(100)
- A[i,j] = 1.
- csr = A.tocsr()
- csc = A.tocsc()
- csc2 = csr.tocsc()
- coo = A.tocoo()
- csr2 = coo.tocsr()
- assert_array_equal(A.transpose().todense(), csr.transpose().todense())
- assert_array_equal(csc.todense(), csr.todense())
- assert_array_equal(csr.todense(), csr2.todense())
- assert_array_equal(csr2.todense().transpose(), coo.transpose().todense())
- assert_array_equal(csr2.todense(), csc2.todense())
- csr_plus_csc = csr + csc
- csc_plus_csr = csc + csr
- assert_array_equal(csr_plus_csc.todense(), (2*A).todense())
- assert_array_equal(csr_plus_csc.todense(), csc_plus_csr.todense())
+#class TestLarge(TestCase):
+# def bench_large(self):
+# # Create a 100x100 matrix with 100 non-zero elements
+# # and play around with it
+# #TODO move this out of Common since it doesn't use spmatrix
+# random.seed(0)
+# A = dok_matrix((100,100))
+# for k in range(100):
+# i = random.randrange(100)
+# j = random.randrange(100)
+# A[i,j] = 1.
+# csr = A.tocsr()
+# csc = A.tocsc()
+# csc2 = csr.tocsc()
+# coo = A.tocoo()
+# csr2 = coo.tocsr()
+# assert_array_equal(A.transpose().todense(), csr.transpose().todense())
+# assert_array_equal(csc.todense(), csr.todense())
+# assert_array_equal(csr.todense(), csr2.todense())
+# assert_array_equal(csr2.todense().transpose(), coo.transpose().todense())
+# assert_array_equal(csr2.todense(), csc2.todense())
+# csr_plus_csc = csr + csc
+# csc_plus_csr = csc + csr
+# assert_array_equal(csr_plus_csc.todense(), (2*A).todense())
+# assert_array_equal(csr_plus_csc.todense(), csc_plus_csr.todense())
if __name__ == "__main__":
More information about the Scipy-svn
mailing list