static PyObject * Py_gstrf(PyObject *self, PyObject *args, PyObject *keywds) { /* default value for SuperLU parameters*/ int N, nnz; PyArrayObject *rowind, *colptr, *nzvals; SuperMatrix A; PyObject *result; PyObject *option_dict = NULL; int type; int ilu = 0; static char *kwlist[] = {"N","nnz","nzvals","colind","rowptr", "options", "ilu", NULL}; int res = PyArg_ParseTupleAndKeywords( args, keywds, "iiO!O!O!|Oi", kwlist, &N, &nnz, &PyArray_Type, &nzvals, &PyArray_Type, &rowind, &PyArray_Type, &colptr, &option_dict, &ilu); if (!res) return NULL; if (!_CHECK_INTEGER(colptr) || !_CHECK_INTEGER(rowind)) { PyErr_SetString(PyExc_TypeError, "rowind and colptr must be of type cint"); return NULL; } type = PyArray_TYPE(nzvals); if (!CHECK_SLU_TYPE(type)) { PyErr_SetString(PyExc_TypeError, "nzvals is not of a type supported by SuperLU"); return NULL; } if (NCFormat_from_spMatrix(&A, N, N, nnz, nzvals, rowind, colptr, type)) { goto fail; } result = newSciPyLUObject(&A, option_dict, type, ilu); if (result == NULL) { goto fail; } /* arrays of input matrix will not be freed */ Destroy_SuperMatrix_Store(&A); return result; fail: /* arrays of input matrix will not be freed */ Destroy_SuperMatrix_Store(&A); return NULL; }
static PyObject * Py_sgstrf(PyObject *self, PyObject *args, PyObject *keywds) { /* default value for SuperLU parameters*/ double diag_pivot_thresh = 1.0; double drop_tol = 0.0; int relax = 1; int panel_size = 10; int permc_spec = 2; int N, nnz; PyArrayObject *rowind, *colptr, *nzvals; SuperMatrix A; PyObject *result; static char *kwlist[] = {"N","nnz","nzvals","rowind","colptr","permc_spec","diag_pivot_thresh", "drop_tol", "relax", "panel_size", NULL}; int res = PyArg_ParseTupleAndKeywords(args, keywds, "iiO!O!O!|iddii", kwlist, &N, &nnz, &PyArray_Type, &nzvals, &PyArray_Type, &rowind, &PyArray_Type, &colptr, &permc_spec, &diag_pivot_thresh, &drop_tol, &relax, &panel_size); if (!res) return NULL; if (!_CHECK_INTEGER(colptr) || !_CHECK_INTEGER(rowind)) { PyErr_SetString(PyExc_TypeError, "colptr and rowind must be of type cint"); return NULL; } if (NCFormat_from_spMatrix(&A, N, N, nnz, nzvals, rowind, colptr, PyArray_FLOAT)) goto fail; result = newSciPyLUObject(&A, diag_pivot_thresh, drop_tol, relax, panel_size,\ permc_spec, PyArray_FLOAT); if (result == NULL) goto fail; Destroy_SuperMatrix_Store(&A); /* arrays of input matrix will not be freed */ return result; fail: Destroy_SuperMatrix_Store(&A); /* arrays of input matrix will not be freed */ return NULL; }