diff options
author | Pauli Virtanen <pav@iki.fi> | 2014-01-12 16:24:18 +0200 |
---|---|---|
committer | Pauli Virtanen <pav@iki.fi> | 2014-01-12 16:35:49 +0200 |
commit | 38d9c26373fed5b54e4b5bba20b14840eb409190 (patch) | |
tree | e416467acf4d42756052122876f2a8f70dffcc87 /numpy/linalg/lapack_litemodule.c | |
parent | 4b4796a35dfafbc4e037a5f1cd4a26d6a2e17f41 (diff) | |
download | numpy-38d9c26373fed5b54e4b5bba20b14840eb409190.tar.gz |
MAINT: linalg: prune unused routines from lapack_lite
Diffstat (limited to 'numpy/linalg/lapack_litemodule.c')
-rw-r--r-- | numpy/linalg/lapack_litemodule.c | 591 |
1 files changed, 1 insertions, 590 deletions
diff --git a/numpy/linalg/lapack_litemodule.c b/numpy/linalg/lapack_litemodule.c index 5a5c6f010..f9f515bb7 100644 --- a/numpy/linalg/lapack_litemodule.c +++ b/numpy/linalg/lapack_litemodule.c @@ -17,31 +17,11 @@ typedef struct { float r, i; } f2c_complex; typedef struct { double r, i; } f2c_doublecomplex; /* typedef long int (*L_fp)(); */ -extern int FNAME(dgeev)(char *jobvl, char *jobvr, int *n, - double a[], int *lda, double wr[], double wi[], - double vl[], int *ldvl, double vr[], int *ldvr, - double work[], int lwork[], int *info); -extern int FNAME(zgeev)(char *jobvl, char *jobvr, int *n, - f2c_doublecomplex a[], int *lda, - f2c_doublecomplex w[], - f2c_doublecomplex vl[], int *ldvl, - f2c_doublecomplex vr[], int *ldvr, - f2c_doublecomplex work[], int *lwork, - double rwork[], int *info); - -extern int FNAME(dsyevd)(char *jobz, char *uplo, int *n, - double a[], int *lda, double w[], double work[], - int *lwork, int iwork[], int *liwork, int *info); -extern int FNAME(zheevd)(char *jobz, char *uplo, int *n, - f2c_doublecomplex a[], int *lda, - double w[], f2c_doublecomplex work[], - int *lwork, double rwork[], int *lrwork, int iwork[], - int *liwork, int *info); - extern int FNAME(dgelsd)(int *m, int *n, int *nrhs, double a[], int *lda, double b[], int *ldb, double s[], double *rcond, int *rank, double work[], int *lwork, int iwork[], int *info); + extern int FNAME(zgelsd)(int *m, int *n, int *nrhs, f2c_doublecomplex a[], int *lda, f2c_doublecomplex b[], int *ldb, @@ -49,34 +29,6 @@ extern int FNAME(zgelsd)(int *m, int *n, int *nrhs, f2c_doublecomplex work[], int *lwork, double rwork[], int iwork[], int *info); -extern int FNAME(dgesv)(int *n, int *nrhs, - double a[], int *lda, int ipiv[], - double b[], int *ldb, int *info); -extern int FNAME(zgesv)(int *n, int *nrhs, - f2c_doublecomplex a[], int *lda, int ipiv[], - f2c_doublecomplex b[], int *ldb, int *info); - -extern int FNAME(dgetrf)(int *m, int *n, - double a[], int *lda, int ipiv[], int *info); -extern int FNAME(zgetrf)(int *m, int *n, - f2c_doublecomplex a[], int *lda, int ipiv[], - int *info); - -extern int FNAME(dpotrf)(char *uplo, int *n, double a[], int *lda, int *info); -extern int FNAME(zpotrf)(char *uplo, int *n, - f2c_doublecomplex a[], int *lda, int *info); - -extern int FNAME(dgesdd)(char *jobz, int *m, int *n, - double a[], int *lda, double s[], double u[], - int *ldu, double vt[], int *ldvt, double work[], - int *lwork, int iwork[], int *info); -extern int FNAME(zgesdd)(char *jobz, int *m, int *n, - f2c_doublecomplex a[], int *lda, - double s[], f2c_doublecomplex u[], int *ldu, - f2c_doublecomplex vt[], int *ldvt, - f2c_doublecomplex work[], int *lwork, - double rwork[], int iwork[], int *info); - extern int FNAME(dgeqrf)(int *m, int *n, double a[], int *lda, double tau[], double work[], int *lwork, int *info); @@ -141,225 +93,6 @@ check_object(PyObject *ob, int t, char *obname, #define IDATA(p) ((int *) PyArray_DATA((PyArrayObject *)p)) static PyObject * -lapack_lite_dgeev(PyObject *NPY_UNUSED(self), PyObject *args) -{ - int lapack_lite_status; - char jobvl; - char jobvr; - int n; - PyObject *a; - int lda; - PyObject *wr; - PyObject *wi; - PyObject *vl; - int ldvl; - PyObject *vr; - int ldvr; - PyObject *work; - int lwork; - int info; - TRY(PyArg_ParseTuple(args,"cciOiOOOiOiOii", - &jobvl,&jobvr,&n,&a,&lda,&wr,&wi,&vl,&ldvl, - &vr,&ldvr,&work,&lwork,&info)); - - TRY(check_object(a,NPY_DOUBLE,"a","NPY_DOUBLE","dgeev")); - TRY(check_object(wr,NPY_DOUBLE,"wr","NPY_DOUBLE","dgeev")); - TRY(check_object(wi,NPY_DOUBLE,"wi","NPY_DOUBLE","dgeev")); - TRY(check_object(vl,NPY_DOUBLE,"vl","NPY_DOUBLE","dgeev")); - TRY(check_object(vr,NPY_DOUBLE,"vr","NPY_DOUBLE","dgeev")); - TRY(check_object(work,NPY_DOUBLE,"work","NPY_DOUBLE","dgeev")); - - lapack_lite_status = - FNAME(dgeev)(&jobvl,&jobvr,&n,DDATA(a),&lda,DDATA(wr),DDATA(wi), - DDATA(vl),&ldvl,DDATA(vr),&ldvr,DDATA(work),&lwork, - &info); - if (PyErr_Occurred()) { - return NULL; - } - - return Py_BuildValue("{s:i,s:c,s:c,s:i,s:i,s:i,s:i,s:i,s:i}","dgeev_", - lapack_lite_status,"jobvl",jobvl,"jobvr",jobvr, - "n",n,"lda",lda,"ldvl",ldvl,"ldvr",ldvr, - "lwork",lwork,"info",info); -} - -static PyObject * -lapack_lite_dsyevd(PyObject *NPY_UNUSED(self), PyObject *args) -{ - /* Arguments */ - /* ========= */ - - char jobz; - /* JOBZ (input) CHARACTER*1 */ - /* = 'N': Compute eigenvalues only; */ - /* = 'V': Compute eigenvalues and eigenvectors. */ - - char uplo; - /* UPLO (input) CHARACTER*1 */ - /* = 'U': Upper triangle of A is stored; */ - /* = 'L': Lower triangle of A is stored. */ - - int n; - /* N (input) INTEGER */ - /* The order of the matrix A. N >= 0. */ - - PyObject *a; - /* A (input/output) DOUBLE PRECISION array, dimension (LDA, N) */ - /* On entry, the symmetric matrix A. If UPLO = 'U', the */ - /* leading N-by-N upper triangular part of A contains the */ - /* upper triangular part of the matrix A. If UPLO = 'L', */ - /* the leading N-by-N lower triangular part of A contains */ - /* the lower triangular part of the matrix A. */ - /* On exit, if JOBZ = 'V', then if INFO = 0, A contains the */ - /* orthonormal eigenvectors of the matrix A. */ - /* If JOBZ = 'N', then on exit the lower triangle (if UPLO='L') */ - /* or the upper triangle (if UPLO='U') of A, including the */ - /* diagonal, is destroyed. */ - - int lda; - /* LDA (input) INTEGER */ - /* The leading dimension of the array A. LDA >= max(1,N). */ - - PyObject *w; - /* W (output) DOUBLE PRECISION array, dimension (N) */ - /* If INFO = 0, the eigenvalues in ascending order. */ - - PyObject *work; - /* WORK (workspace/output) DOUBLE PRECISION array, dimension (LWORK) */ - /* On exit, if INFO = 0, WORK(1) returns the optimal LWORK. */ - - int lwork; - /* LWORK (input) INTEGER */ - /* The length of the array WORK. LWORK >= max(1,3*N-1). */ - /* For optimal efficiency, LWORK >= (NB+2)*N, */ - /* where NB is the blocksize for DSYTRD returned by ILAENV. */ - - PyObject *iwork; - int liwork; - - int info; - /* INFO (output) INTEGER */ - /* = 0: successful exit */ - /* < 0: if INFO = -i, the i-th argument had an illegal value */ - /* > 0: if INFO = i, the algorithm failed to converge; i */ - /* off-diagonal elements of an intermediate tridiagonal */ - /* form did not converge to zero. */ - - int lapack_lite_status; - - TRY(PyArg_ParseTuple(args,"cciOiOOiOii", - &jobz,&uplo,&n,&a,&lda,&w,&work,&lwork, - &iwork,&liwork,&info)); - - TRY(check_object(a,NPY_DOUBLE,"a","NPY_DOUBLE","dsyevd")); - TRY(check_object(w,NPY_DOUBLE,"w","NPY_DOUBLE","dsyevd")); - TRY(check_object(work,NPY_DOUBLE,"work","NPY_DOUBLE","dsyevd")); - TRY(check_object(iwork,NPY_INT,"iwork","NPY_INT","dsyevd")); - - lapack_lite_status = - FNAME(dsyevd)(&jobz,&uplo,&n,DDATA(a),&lda,DDATA(w),DDATA(work), - &lwork,IDATA(iwork),&liwork,&info); - if (PyErr_Occurred()) { - return NULL; - } - - return Py_BuildValue("{s:i,s:c,s:c,s:i,s:i,s:i,s:i,s:i}","dsyevd_", - lapack_lite_status,"jobz",jobz,"uplo",uplo, - "n",n,"lda",lda,"lwork",lwork,"liwork",liwork,"info",info); -} - -static PyObject * -lapack_lite_zheevd(PyObject *NPY_UNUSED(self), PyObject *args) -{ - /* Arguments */ - /* ========= */ - - char jobz; - /* JOBZ (input) CHARACTER*1 */ - /* = 'N': Compute eigenvalues only; */ - /* = 'V': Compute eigenvalues and eigenvectors. */ - - char uplo; - /* UPLO (input) CHARACTER*1 */ - /* = 'U': Upper triangle of A is stored; */ - /* = 'L': Lower triangle of A is stored. */ - - int n; - /* N (input) INTEGER */ - /* The order of the matrix A. N >= 0. */ - - PyObject *a; - /* A (input/output) COMPLEX*16 array, dimension (LDA, N) */ - /* On entry, the Hermitian matrix A. If UPLO = 'U', the */ - /* leading N-by-N upper triangular part of A contains the */ - /* upper triangular part of the matrix A. If UPLO = 'L', */ - /* the leading N-by-N lower triangular part of A contains */ - /* the lower triangular part of the matrix A. */ - /* On exit, if JOBZ = 'V', then if INFO = 0, A contains the */ - /* orthonormal eigenvectors of the matrix A. */ - /* If JOBZ = 'N', then on exit the lower triangle (if UPLO='L') */ - /* or the upper triangle (if UPLO='U') of A, including the */ - /* diagonal, is destroyed. */ - - int lda; - /* LDA (input) INTEGER */ - /* The leading dimension of the array A. LDA >= max(1,N). */ - - PyObject *w; - /* W (output) DOUBLE PRECISION array, dimension (N) */ - /* If INFO = 0, the eigenvalues in ascending order. */ - - PyObject *work; - /* WORK (workspace/output) COMPLEX*16 array, dimension (LWORK) */ - /* On exit, if INFO = 0, WORK(1) returns the optimal LWORK. */ - - int lwork; - /* LWORK (input) INTEGER */ - /* The length of the array WORK. LWORK >= max(1,3*N-1). */ - /* For optimal efficiency, LWORK >= (NB+2)*N, */ - /* where NB is the blocksize for DSYTRD returned by ILAENV. */ - - PyObject *rwork; - /* RWORK (workspace) DOUBLE PRECISION array, dimension (max(1, 3*N-2)) */ - int lrwork; - - PyObject *iwork; - int liwork; - - int info; - /* INFO (output) INTEGER */ - /* = 0: successful exit */ - /* < 0: if INFO = -i, the i-th argument had an illegal value */ - /* > 0: if INFO = i, the algorithm failed to converge; i */ - /* off-diagonal elements of an intermediate tridiagonal */ - /* form did not converge to zero. */ - - int lapack_lite_status; - - TRY(PyArg_ParseTuple(args,"cciOiOOiOiOii", - &jobz,&uplo,&n,&a,&lda,&w,&work,&lwork,&rwork, - &lrwork,&iwork,&liwork,&info)); - - TRY(check_object(a,NPY_CDOUBLE,"a","NPY_CDOUBLE","zheevd")); - TRY(check_object(w,NPY_DOUBLE,"w","NPY_DOUBLE","zheevd")); - TRY(check_object(work,NPY_CDOUBLE,"work","NPY_CDOUBLE","zheevd")); - TRY(check_object(w,NPY_DOUBLE,"rwork","NPY_DOUBLE","zheevd")); - TRY(check_object(iwork,NPY_INT,"iwork","NPY_INT","zheevd")); - - lapack_lite_status = - FNAME(zheevd)(&jobz,&uplo,&n,ZDATA(a),&lda,DDATA(w),ZDATA(work), - &lwork,DDATA(rwork),&lrwork,IDATA(iwork),&liwork,&info); - if (PyErr_Occurred()) { - return NULL; - } - - return Py_BuildValue("{s:i,s:c,s:c,s:i,s:i,s:i,s:i,s:i,s:i}","zheevd_", - lapack_lite_status,"jobz",jobz,"uplo",uplo,"n",n, - "lda",lda,"lwork",lwork,"lrwork",lrwork, - "liwork",liwork,"info",info); -} - -static PyObject * lapack_lite_dgelsd(PyObject *NPY_UNUSED(self), PyObject *args) { int lapack_lite_status; @@ -402,152 +135,6 @@ lapack_lite_dgelsd(PyObject *NPY_UNUSED(self), PyObject *args) } static PyObject * -lapack_lite_dgesv(PyObject *NPY_UNUSED(self), PyObject *args) -{ - int lapack_lite_status; - int n; - int nrhs; - PyObject *a; - int lda; - PyObject *ipiv; - PyObject *b; - int ldb; - int info; - TRY(PyArg_ParseTuple(args,"iiOiOOii",&n,&nrhs,&a,&lda,&ipiv,&b,&ldb,&info)); - - TRY(check_object(a,NPY_DOUBLE,"a","NPY_DOUBLE","dgesv")); - TRY(check_object(ipiv,NPY_INT,"ipiv","NPY_INT","dgesv")); - TRY(check_object(b,NPY_DOUBLE,"b","NPY_DOUBLE","dgesv")); - - lapack_lite_status = - FNAME(dgesv)(&n,&nrhs,DDATA(a),&lda,IDATA(ipiv),DDATA(b),&ldb,&info); - if (PyErr_Occurred()) { - return NULL; - } - - return Py_BuildValue("{s:i,s:i,s:i,s:i,s:i,s:i}","dgesv_", - lapack_lite_status,"n",n,"nrhs",nrhs,"lda",lda, - "ldb",ldb,"info",info); -} - -static PyObject * -lapack_lite_dgesdd(PyObject *NPY_UNUSED(self), PyObject *args) -{ - int lapack_lite_status; - char jobz; - int m; - int n; - PyObject *a; - int lda; - PyObject *s; - PyObject *u; - int ldu; - PyObject *vt; - int ldvt; - PyObject *work; - int lwork; - PyObject *iwork; - int info; - TRY(PyArg_ParseTuple(args,"ciiOiOOiOiOiOi", - &jobz,&m,&n,&a,&lda,&s,&u,&ldu,&vt,&ldvt, - &work,&lwork,&iwork,&info)); - - TRY(check_object(a,NPY_DOUBLE,"a","NPY_DOUBLE","dgesdd")); - TRY(check_object(s,NPY_DOUBLE,"s","NPY_DOUBLE","dgesdd")); - TRY(check_object(u,NPY_DOUBLE,"u","NPY_DOUBLE","dgesdd")); - TRY(check_object(vt,NPY_DOUBLE,"vt","NPY_DOUBLE","dgesdd")); - TRY(check_object(work,NPY_DOUBLE,"work","NPY_DOUBLE","dgesdd")); - TRY(check_object(iwork,NPY_INT,"iwork","NPY_INT","dgesdd")); - - lapack_lite_status = - FNAME(dgesdd)(&jobz,&m,&n,DDATA(a),&lda,DDATA(s),DDATA(u),&ldu, - DDATA(vt),&ldvt,DDATA(work),&lwork,IDATA(iwork), - &info); - if (PyErr_Occurred()) { - return NULL; - } - - if (info == 0 && lwork == -1) { - /* We need to check the result because - sometimes the "optimal" value is actually - too small. - Change it to the maximum of the minimum and the optimal. - */ - long work0 = (long) *DDATA(work); - int mn = PyArray_MIN(m,n); - int mx = PyArray_MAX(m,n); - - switch(jobz){ - case 'N': - work0 = PyArray_MAX(work0,3*mn + PyArray_MAX(mx,6*mn)+500); - break; - case 'O': - work0 = PyArray_MAX(work0,3*mn*mn + - PyArray_MAX(mx,5*mn*mn+4*mn+500)); - break; - case 'S': - case 'A': - work0 = PyArray_MAX(work0,3*mn*mn + - PyArray_MAX(mx,4*mn*(mn+1))+500); - break; - } - *DDATA(work) = (double) work0; - } - return Py_BuildValue("{s:i,s:c,s:i,s:i,s:i,s:i,s:i,s:i,s:i}","dgesdd_", - lapack_lite_status,"jobz",jobz,"m",m,"n",n, - "lda",lda,"ldu",ldu,"ldvt",ldvt,"lwork",lwork, - "info",info); -} - -static PyObject * -lapack_lite_dgetrf(PyObject *NPY_UNUSED(self), PyObject *args) -{ - int lapack_lite_status; - int m; - int n; - PyObject *a; - int lda; - PyObject *ipiv; - int info; - TRY(PyArg_ParseTuple(args,"iiOiOi",&m,&n,&a,&lda,&ipiv,&info)); - - TRY(check_object(a,NPY_DOUBLE,"a","NPY_DOUBLE","dgetrf")); - TRY(check_object(ipiv,NPY_INT,"ipiv","NPY_INT","dgetrf")); - - lapack_lite_status = - FNAME(dgetrf)(&m,&n,DDATA(a),&lda,IDATA(ipiv),&info); - if (PyErr_Occurred()) { - return NULL; - } - - return Py_BuildValue("{s:i,s:i,s:i,s:i,s:i}","dgetrf_", lapack_lite_status, - "m",m,"n",n,"lda",lda,"info",info); -} - -static PyObject * -lapack_lite_dpotrf(PyObject *NPY_UNUSED(self), PyObject *args) -{ - int lapack_lite_status; - int n; - PyObject *a; - int lda; - char uplo; - int info; - - TRY(PyArg_ParseTuple(args,"ciOii",&uplo,&n,&a,&lda,&info)); - TRY(check_object(a,NPY_DOUBLE,"a","NPY_DOUBLE","dpotrf")); - - lapack_lite_status = - FNAME(dpotrf)(&uplo,&n,DDATA(a),&lda,&info); - if (PyErr_Occurred()) { - return NULL; - } - - return Py_BuildValue("{s:i,s:i,s:i,s:i}","dpotrf_", lapack_lite_status, - "n",n,"lda",lda,"info",info); -} - -static PyObject * lapack_lite_dgeqrf(PyObject *NPY_UNUSED(self), PyObject *args) { int lapack_lite_status; @@ -602,49 +189,6 @@ lapack_lite_dorgqr(PyObject *NPY_UNUSED(self), PyObject *args) static PyObject * -lapack_lite_zgeev(PyObject *NPY_UNUSED(self), PyObject *args) -{ - int lapack_lite_status; - char jobvl; - char jobvr; - int n; - PyObject *a; - int lda; - PyObject *w; - PyObject *vl; - int ldvl; - PyObject *vr; - int ldvr; - PyObject *work; - int lwork; - PyObject *rwork; - int info; - TRY(PyArg_ParseTuple(args,"cciOiOOiOiOiOi", - &jobvl,&jobvr,&n,&a,&lda,&w,&vl,&ldvl, - &vr,&ldvr,&work,&lwork,&rwork,&info)); - - TRY(check_object(a,NPY_CDOUBLE,"a","NPY_CDOUBLE","zgeev")); - TRY(check_object(w,NPY_CDOUBLE,"w","NPY_CDOUBLE","zgeev")); - TRY(check_object(vl,NPY_CDOUBLE,"vl","NPY_CDOUBLE","zgeev")); - TRY(check_object(vr,NPY_CDOUBLE,"vr","NPY_CDOUBLE","zgeev")); - TRY(check_object(work,NPY_CDOUBLE,"work","NPY_CDOUBLE","zgeev")); - TRY(check_object(rwork,NPY_DOUBLE,"rwork","NPY_DOUBLE","zgeev")); - - lapack_lite_status = - FNAME(zgeev)(&jobvl,&jobvr,&n,ZDATA(a),&lda,ZDATA(w),ZDATA(vl), - &ldvl,ZDATA(vr),&ldvr,ZDATA(work),&lwork, - DDATA(rwork),&info); - if (PyErr_Occurred()) { - return NULL; - } - - return Py_BuildValue("{s:i,s:c,s:c,s:i,s:i,s:i,s:i,s:i,s:i}","zgeev_", - lapack_lite_status,"jobvl",jobvl,"jobvr",jobvr, - "n",n,"lda",lda,"ldvl",ldvl,"ldvr",ldvr, - "lwork",lwork,"info",info); -} - -static PyObject * lapack_lite_zgelsd(PyObject *NPY_UNUSED(self), PyObject *args) { int lapack_lite_status; @@ -687,127 +231,6 @@ lapack_lite_zgelsd(PyObject *NPY_UNUSED(self), PyObject *args) } static PyObject * -lapack_lite_zgesv(PyObject *NPY_UNUSED(self), PyObject *args) -{ - int lapack_lite_status; - int n; - int nrhs; - PyObject *a; - int lda; - PyObject *ipiv; - PyObject *b; - int ldb; - int info; - TRY(PyArg_ParseTuple(args,"iiOiOOii",&n,&nrhs,&a,&lda,&ipiv,&b,&ldb,&info)); - - TRY(check_object(a,NPY_CDOUBLE,"a","NPY_CDOUBLE","zgesv")); - TRY(check_object(ipiv,NPY_INT,"ipiv","NPY_INT","zgesv")); - TRY(check_object(b,NPY_CDOUBLE,"b","NPY_CDOUBLE","zgesv")); - - lapack_lite_status = - FNAME(zgesv)(&n,&nrhs,ZDATA(a),&lda,IDATA(ipiv),ZDATA(b),&ldb,&info); - if (PyErr_Occurred()) { - return NULL; - } - - return Py_BuildValue("{s:i,s:i,s:i,s:i,s:i,s:i}","zgesv_", - lapack_lite_status,"n",n,"nrhs",nrhs,"lda",lda, - "ldb",ldb,"info",info); -} - -static PyObject * -lapack_lite_zgesdd(PyObject *NPY_UNUSED(self), PyObject *args) -{ - int lapack_lite_status; - char jobz; - int m; - int n; - PyObject *a; - int lda; - PyObject *s; - PyObject *u; - int ldu; - PyObject *vt; - int ldvt; - PyObject *work; - int lwork; - PyObject *rwork; - PyObject *iwork; - int info; - TRY(PyArg_ParseTuple(args,"ciiOiOOiOiOiOOi", - &jobz,&m,&n,&a,&lda,&s,&u,&ldu, - &vt,&ldvt,&work,&lwork,&rwork,&iwork,&info)); - - TRY(check_object(a,NPY_CDOUBLE,"a","NPY_CDOUBLE","zgesdd")); - TRY(check_object(s,NPY_DOUBLE,"s","NPY_DOUBLE","zgesdd")); - TRY(check_object(u,NPY_CDOUBLE,"u","NPY_CDOUBLE","zgesdd")); - TRY(check_object(vt,NPY_CDOUBLE,"vt","NPY_CDOUBLE","zgesdd")); - TRY(check_object(work,NPY_CDOUBLE,"work","NPY_CDOUBLE","zgesdd")); - TRY(check_object(rwork,NPY_DOUBLE,"rwork","NPY_DOUBLE","zgesdd")); - TRY(check_object(iwork,NPY_INT,"iwork","NPY_INT","zgesdd")); - - lapack_lite_status = - FNAME(zgesdd)(&jobz,&m,&n,ZDATA(a),&lda,DDATA(s),ZDATA(u),&ldu, - ZDATA(vt),&ldvt,ZDATA(work),&lwork,DDATA(rwork), - IDATA(iwork),&info); - if (PyErr_Occurred()) { - return NULL; - } - - return Py_BuildValue("{s:i,s:c,s:i,s:i,s:i,s:i,s:i,s:i,s:i}","zgesdd_", - lapack_lite_status,"jobz",jobz,"m",m,"n",n, - "lda",lda,"ldu",ldu,"ldvt",ldvt,"lwork",lwork, - "info",info); -} - -static PyObject * -lapack_lite_zgetrf(PyObject *NPY_UNUSED(self), PyObject *args) -{ - int lapack_lite_status; - int m; - int n; - PyObject *a; - int lda; - PyObject *ipiv; - int info; - TRY(PyArg_ParseTuple(args,"iiOiOi",&m,&n,&a,&lda,&ipiv,&info)); - - TRY(check_object(a,NPY_CDOUBLE,"a","NPY_CDOUBLE","zgetrf")); - TRY(check_object(ipiv,NPY_INT,"ipiv","NPY_INT","zgetrf")); - - lapack_lite_status = - FNAME(zgetrf)(&m,&n,ZDATA(a),&lda,IDATA(ipiv),&info); - if (PyErr_Occurred()) { - return NULL; - } - - return Py_BuildValue("{s:i,s:i,s:i,s:i,s:i}","zgetrf_", - lapack_lite_status,"m",m,"n",n,"lda",lda,"info",info); -} - -static PyObject * -lapack_lite_zpotrf(PyObject *NPY_UNUSED(self), PyObject *args) -{ - int lapack_lite_status; - int n; - PyObject *a; - int lda; - char uplo; - int info; - - TRY(PyArg_ParseTuple(args,"ciOii",&uplo,&n,&a,&lda,&info)); - TRY(check_object(a,NPY_CDOUBLE,"a","NPY_CDOUBLE","zpotrf")); - lapack_lite_status = - FNAME(zpotrf)(&uplo,&n,ZDATA(a),&lda,&info); - if (PyErr_Occurred()) { - return NULL; - } - - return Py_BuildValue("{s:i,s:i,s:i,s:i}","zpotrf_", - lapack_lite_status,"n",n,"lda",lda,"info",info); -} - -static PyObject * lapack_lite_zgeqrf(PyObject *NPY_UNUSED(self), PyObject *args) { int lapack_lite_status; @@ -882,22 +305,10 @@ lapack_lite_xerbla(PyObject *NPY_UNUSED(self), PyObject *args) #define STR(x) #x #define lameth(name) {STR(name), lapack_lite_##name, METH_VARARGS, NULL} static struct PyMethodDef lapack_lite_module_methods[] = { - lameth(zheevd), - lameth(dsyevd), - lameth(dgeev), lameth(dgelsd), - lameth(dgesv), - lameth(dgesdd), - lameth(dgetrf), - lameth(dpotrf), lameth(dgeqrf), lameth(dorgqr), - lameth(zgeev), lameth(zgelsd), - lameth(zgesv), - lameth(zgesdd), - lameth(zgetrf), - lameth(zpotrf), lameth(zgeqrf), lameth(zungqr), lameth(xerbla), |