* Fix prototypes for ?GEDMD/?GEDMDQ and their LAPACKE interfacestags/v0.3.24
| @@ -3323,68 +3323,107 @@ void LAPACK_zgesdd_base( | |||
| #define LAPACK_zgesdd(...) LAPACK_zgesdd_base(__VA_ARGS__) | |||
| #endif | |||
| #define LAPACK_cgedmd LAPACK_GLOBAL(cgedmd,CGEDMD) | |||
| void LAPACK_cgedmd( | |||
| char const* jobs, char const* jobz, char const* jobf, | |||
| #define LAPACK_cgedmd_base LAPACK_GLOBAL(cgedmd,CGEDMD) | |||
| void LAPACK_cgedmd_base( | |||
| char const* jobs, char const* jobz, char const* jobr, char const* jobf, | |||
| lapack_int const* whtsvd, lapack_int const* m, lapack_int const* n, | |||
| lapack_complex_float* x, lapack_int const* ldx, | |||
| lapack_complex_float* y, lapack_int const* ldy, lapack_int const* k, | |||
| lapack_complex_float* reig, lapack_complex_float* imeig, | |||
| lapack_complex_float* z, lapack_int const* ldz, lapack_complex_float* res, | |||
| lapack_complex_float* y, lapack_int const* ldy, lapack_int const* nrnk, | |||
| const float* tol, lapack_int* k, lapack_complex_float* eigs, | |||
| lapack_complex_float* z, lapack_int const* ldz, float* res, | |||
| lapack_complex_float* b, lapack_int const* ldb, | |||
| lapack_complex_float* w, lapack_int const* ldw, | |||
| lapack_complex_float* s, lapack_int const* lds, | |||
| lapack_complex_float* work, lapack_int const* lwork, | |||
| lapack_complex_float* zwork, lapack_int const* lzwork, | |||
| float* work, lapack_int const* lwork, | |||
| lapack_int* iwork, lapack_int const* liwork, | |||
| lapack_int* info ); | |||
| lapack_int* info | |||
| #ifdef LAPACK_FORTRAN_STRLEN_END | |||
| , size_t, size_t, size_t, size_t | |||
| #endif | |||
| ); | |||
| #ifdef LAPACK_FORTRAN_STRLEN_END | |||
| #define LAPACK_cgedmd(...) LAPACK_cgedmd_base(__VA_ARGS__, 1, 1, 1, 1) | |||
| #else | |||
| #define LAPACK_cgedmd(...) LAPACK_cgedmd_base(__VA_ARGS__) | |||
| #endif | |||
| #define LAPACK_dgedmd LAPACK_GLOBAL(dgedmd,DGEDMD) | |||
| void LAPACK_dgedmd( | |||
| char const* jobs, char const* jobz, char const* jobf, | |||
| #define LAPACK_dgedmd_base LAPACK_GLOBAL(dgedmd,DGEDMD) | |||
| void LAPACK_dgedmd_base( | |||
| char const* jobs, char const* jobz, char const* jobr, char const* jobf, | |||
| lapack_int const* whtsvd, lapack_int const* m, lapack_int const* n, | |||
| double* x, lapack_int const* ldx, | |||
| double* y, lapack_int const* ldy, lapack_int const* k, | |||
| double* reig, double* imeig, | |||
| double* y, lapack_int const* ldy, lapack_int const* nrnk, | |||
| const double* tol, lapack_int* k, double* reig, double* imeig, | |||
| double* z, lapack_int const* ldz, double* res, | |||
| double* b, lapack_int const* ldb, | |||
| double* w, lapack_int const* ldw, | |||
| double* s, lapack_int const* lds, | |||
| double* work, lapack_int const* lwork, | |||
| lapack_int* iwork, lapack_int const* liwork, | |||
| lapack_int* info ); | |||
| lapack_int* info | |||
| #ifdef LAPACK_FORTRAN_STRLEN_END | |||
| , size_t, size_t, size_t, size_t | |||
| #endif | |||
| ); | |||
| #ifdef LAPACK_FORTRAN_STRLEN_END | |||
| #define LAPACK_dgedmd(...) LAPACK_dgedmd_base(__VA_ARGS__, 1, 1, 1, 1) | |||
| #else | |||
| #define LAPACK_dgedmd(...) LAPACK_dgedmd_base(__VA_ARGS__) | |||
| #endif | |||
| #define LAPACK_sgedmd LAPACK_GLOBAL(sgedmd,SGEDMD) | |||
| void LAPACK_sgedmd( | |||
| char const* jobs, char const* jobz, char const* jobf, | |||
| #define LAPACK_sgedmd_base LAPACK_GLOBAL(sgedmd,SGEDMD) | |||
| void LAPACK_sgedmd_base( | |||
| char const* jobs, char const* jobz, char const* jobr, char const* jobf, | |||
| lapack_int const* whtsvd, lapack_int const* m, lapack_int const* n, | |||
| float* x, lapack_int const* ldx, | |||
| float* y, lapack_int const* ldy, lapack_int const* k, | |||
| float* reig, float* imeig, | |||
| float* y, lapack_int const* ldy, lapack_int const* nrnk, | |||
| const float* tol, lapack_int* k, float* reig, float *imeig, | |||
| float* z, lapack_int const* ldz, float* res, | |||
| float* b, lapack_int const* ldb, | |||
| float* w, lapack_int const* ldw, | |||
| float* s, lapack_int const* lds, | |||
| float* work, lapack_int const* lwork, | |||
| lapack_int* iwork, lapack_int const* liwork, | |||
| lapack_int* info ); | |||
| lapack_int* info | |||
| #ifdef LAPACK_FORTRAN_STRLEN_END | |||
| , size_t, size_t, size_t, size_t | |||
| #endif | |||
| ); | |||
| #ifdef LAPACK_FORTRAN_STRLEN_END | |||
| #define LAPACK_sgedmd(...) LAPACK_sgedmd_base(__VA_ARGS__, 1, 1, 1, 1) | |||
| #else | |||
| #define LAPACK_sgedmd(...) LAPACK_sgedmd_base(__VA_ARGS__) | |||
| #endif | |||
| #define LAPACK_zgedmd LAPACK_GLOBAL(zgedmd,ZGEDMD) | |||
| void LAPACK_zgedmd( | |||
| char const* jobs, char const* jobz, char const* jobf, | |||
| #define LAPACK_zgedmd_base LAPACK_GLOBAL(zgedmd,ZGEDMD) | |||
| void LAPACK_zgedmd_base( | |||
| char const* jobs, char const* jobz, char const* jobr, char const* jobf, | |||
| lapack_int const* whtsvd, lapack_int const* m, lapack_int const* n, | |||
| lapack_complex_double* x, lapack_int const* ldx, | |||
| lapack_complex_double* y, lapack_int const* ldy, lapack_int const* k, | |||
| lapack_complex_double* reig, lapack_complex_double* imeig, | |||
| lapack_complex_double* z, lapack_int const* ldz, lapack_complex_double* res, | |||
| lapack_complex_double* y, lapack_int const* ldy, lapack_int const* nrnk, | |||
| const double* tol, lapack_int *k, lapack_complex_double* eigs, | |||
| lapack_complex_double* z, lapack_int const* ldz, double* res, | |||
| lapack_complex_double* b, lapack_int const* ldb, | |||
| lapack_complex_double* w, lapack_int const* ldw, | |||
| lapack_complex_double* s, lapack_int const* lds, | |||
| lapack_complex_double* work, lapack_int const* lwork, | |||
| lapack_complex_double* zwork, lapack_int const* lzwork, | |||
| double* rwork, lapack_int const* lrwork, | |||
| lapack_int* iwork, lapack_int const* liwork, | |||
| lapack_int* info ); | |||
| lapack_int* info | |||
| #ifdef LAPACK_FORTRAN_STRLEN_END | |||
| , size_t, size_t, size_t, size_t | |||
| #endif | |||
| ); | |||
| #ifdef LAPACK_FORTRAN_STRLEN_END | |||
| #define LAPACK_zgedmd(...) LAPACK_zgedmd_base(__VA_ARGS__, 1, 1, 1, 1) | |||
| #else | |||
| #define LAPACK_zgedmd(...) LAPACK_zgedmd_base(__VA_ARGS__) | |||
| #endif | |||
| #define LAPACK_cgedmdq LAPACK_GLOBAL(cgedmdq,CGEDMDQ) | |||
| void LAPACK_cgedmdq( | |||
| #define LAPACK_cgedmdq_base LAPACK_GLOBAL(cgedmdq,CGEDMDQ) | |||
| void LAPACK_cgedmdq_base( | |||
| char const* jobs, char const* jobz, char const* jobr, char const* jobq, | |||
| char const* jobt, char const* jobf, lapack_int const* whtsvd, | |||
| lapack_int const* m, lapack_int const* n, | |||
| @@ -3392,35 +3431,54 @@ void LAPACK_cgedmdq( | |||
| lapack_complex_float* x, lapack_int const* ldx, | |||
| lapack_complex_float* y, lapack_int const* ldy, lapack_int const* nrnk, | |||
| float const* tol, lapack_int const* k, | |||
| lapack_complex_float* reig, lapack_complex_float* imeig, | |||
| lapack_complex_float* z, lapack_int const* ldz, lapack_complex_float* res, | |||
| lapack_complex_float* eigs, | |||
| lapack_complex_float* z, lapack_int const* ldz, float* res, | |||
| lapack_complex_float* b, lapack_int const* ldb, | |||
| lapack_complex_float* v, lapack_int const* ldv, | |||
| lapack_complex_float* s, lapack_int const* lds, | |||
| lapack_complex_float* work, lapack_int const* lwork, | |||
| lapack_complex_float* zwork, lapack_int const* lzwork, | |||
| float* work, lapack_int const* lwork, | |||
| lapack_int* iwork, lapack_int const* liwork, | |||
| lapack_int* info ); | |||
| lapack_int* info | |||
| #ifdef LAPACK_FORTRAN_STRLEN_END | |||
| , size_t, size_t, size_t, size_t, size_t, size_t | |||
| #endif | |||
| ); | |||
| #ifdef LAPACK_FORTRAN_STRLEN_END | |||
| #define LAPACK_cgedmdq(...) LAPACK_cgedmdq_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) | |||
| #else | |||
| #define LAPACK_cgedmdq(...) LAPACK_cgedmdq_base(__VA_ARGS__) | |||
| #endif | |||
| #define LAPACK_dgedmdq LAPACK_GLOBAL(dgedmdq,DGEDMDQ) | |||
| void LAPACK_dgedmdq( | |||
| #define LAPACK_dgedmdq_base LAPACK_GLOBAL(dgedmdq,DGEDMDQ) | |||
| void LAPACK_dgedmdq_base( | |||
| char const* jobs, char const* jobz, char const* jobr, char const* jobq, | |||
| char const* jobt, char const* jobf, lapack_int const* whtsvd, | |||
| lapack_int const* m, lapack_int const* n, | |||
| double* f, lapack_int const* ldf, | |||
| double* x, lapack_int const* ldx, | |||
| double* y, lapack_int const* ldy, lapack_int const* nrnk, | |||
| double const* tol, lapack_int const* k, | |||
| double* reig, double* imeig, | |||
| double const* tol, lapack_int* k, | |||
| double* reig, double *imeig, | |||
| double* z, lapack_int const* ldz, double* res, | |||
| double* b, lapack_int const* ldb, | |||
| double* v, lapack_int const* ldv, | |||
| double* s, lapack_int const* lds, | |||
| double* work, lapack_int const* lwork, | |||
| lapack_int* iwork, lapack_int const* liwork, | |||
| lapack_int* info ); | |||
| lapack_int* info | |||
| #ifdef LAPACK_FORTRAN_STRLEN_END | |||
| , size_t, size_t, size_t, size_t, size_t, size_t | |||
| #endif | |||
| ); | |||
| #ifdef LAPACK_FORTRAN_STRLEN_END | |||
| #define LAPACK_dgedmdq(...) LAPACK_dgedmdq_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) | |||
| #else | |||
| #define LAPACK_dgedmdq(...) LAPACK_dgedmdq_base(__VA_ARGS__) | |||
| #endif | |||
| #define LAPACK_sgedmdq LAPACK_GLOBAL(sgedmdq,SGEDMDQ) | |||
| void LAPACK_sgedmdq( | |||
| #define LAPACK_sgedmdq_base LAPACK_GLOBAL(sgedmdq,SGEDMDQ) | |||
| void LAPACK_sgedmdq_base( | |||
| char const* jobs, char const* jobz, char const* jobr, char const* jobq, | |||
| char const* jobt, char const* jobf, lapack_int const* whtsvd, | |||
| lapack_int const* m, lapack_int const* n, | |||
| @@ -3435,10 +3493,19 @@ void LAPACK_sgedmdq( | |||
| float* s, lapack_int const* lds, | |||
| float* work, lapack_int const* lwork, | |||
| lapack_int* iwork, lapack_int const* liwork, | |||
| lapack_int* info ); | |||
| lapack_int* info | |||
| #ifdef LAPACK_FORTRAN_STRLEN_END | |||
| , size_t, size_t, size_t, size_t, size_t, size_t | |||
| #endif | |||
| ); | |||
| #ifdef LAPACK_FORTRAN_STRLEN_END | |||
| #define LAPACK_sgedmdq(...) LAPACK_sgedmdq_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) | |||
| #else | |||
| #define LAPACK_sgedmdq(...) LAPACK_sgedmdq_base(__VA_ARGS__) | |||
| #endif | |||
| #define LAPACK_zgedmdq LAPACK_GLOBAL(zgedmdq,ZGEDMDQ) | |||
| void LAPACK_zgedmdq( | |||
| #define LAPACK_zgedmdq_base LAPACK_GLOBAL(zgedmdq,ZGEDMDQ) | |||
| void LAPACK_zgedmdq_base( | |||
| char const* jobs, char const* jobz, char const* jobr, char const* jobq, | |||
| char const* jobt, char const* jobf, lapack_int const* whtsvd, | |||
| lapack_int const* m, lapack_int const* n, | |||
| @@ -3446,14 +3513,25 @@ void LAPACK_zgedmdq( | |||
| lapack_complex_double* x, lapack_int const* ldx, | |||
| lapack_complex_double* y, lapack_int const* ldy, lapack_int const* nrnk, | |||
| double const* tol, lapack_int const* k, | |||
| lapack_complex_double* reig, lapack_complex_double* imeig, | |||
| lapack_complex_double* z, lapack_int const* ldz, lapack_complex_double* res, | |||
| lapack_complex_double* eigs, | |||
| lapack_complex_double* z, lapack_int const* ldz, double* res, | |||
| lapack_complex_double* b, lapack_int const* ldb, | |||
| lapack_complex_double* v, lapack_int const* ldv, | |||
| lapack_complex_double* s, lapack_int const* lds, | |||
| lapack_complex_double* work, lapack_int const* lwork, | |||
| lapack_complex_double* zwork, lapack_int const* lzwork, | |||
| double* work, lapack_int const* lwork, | |||
| lapack_int* iwork, lapack_int const* liwork, | |||
| lapack_int* info ); | |||
| lapack_int* info | |||
| #ifdef LAPACK_FORTRAN_STRLEN_END | |||
| , size_t, size_t, size_t, size_t, size_t, size_t | |||
| #endif | |||
| ); | |||
| #ifdef LAPACK_FORTRAN_STRLEN_END | |||
| #define LAPACK_zgedmdq(...) LAPACK_zgedmdq_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) | |||
| #else | |||
| #define LAPACK_zgedmdq(...) LAPACK_zgedmdq_base(__VA_ARGS__) | |||
| #endif | |||
| #define LAPACK_cgesv LAPACK_GLOBAL(cgesv,CGESV) | |||
| lapack_int LAPACK_cgesv( | |||
| @@ -21649,7 +21727,7 @@ void LAPACK_ztrevc_base( | |||
| #endif | |||
| ); | |||
| #ifdef LAPACK_FORTRAN_STRLEN_END | |||
| #define LAPACK_ztrevc(...) LAPACK_ztrevc_base(__VA_ARGS__, 1, 1) | |||
| #define LAPACK_ztrevc(...) LAPACK_ztrevc_base(__VA_ARGS__, (size_t)1, 1) | |||
| #else | |||
| #define LAPACK_ztrevc(...) LAPACK_ztrevc_base(__VA_ARGS__) | |||
| #endif | |||
| @@ -5713,55 +5713,59 @@ lapack_int LAPACKE_zgesdd_work( int matrix_layout, char jobz, lapack_int m, | |||
| double* rwork, lapack_int* iwork ); | |||
| lapack_int LAPACKE_sgedmd_work( int matrix_layout, char jobs, char jobz, | |||
| char jobf, lapack_int whtsvd, lapack_int m, | |||
| lapack_int n, float* x, lapack_int ldx, | |||
| float* y, lapack_int ldy, lapack_int k, | |||
| float* reig, float* imeig, float* z, | |||
| lapack_int ldz, float* res, float* b, | |||
| lapack_int ldb, float* w, lapack_int ldw, | |||
| float* s, lapack_int lds, float* work, | |||
| lapack_int lwork, lapack_int* iwork, | |||
| lapack_int liwork ); | |||
| char jobr, char jobf, lapack_int whtsvd, | |||
| lapack_int m, lapack_int n, float* x, | |||
| lapack_int ldx, float* y, lapack_int ldy, | |||
| lapack_int nrnk, float* tol, lapack_int k, | |||
| float* reig, float* imeig, | |||
| float* z, lapack_int ldz, float* res, | |||
| float* b, lapack_int ldb, float* w, | |||
| lapack_int ldw, float* s, lapack_int lds, | |||
| float* work, lapack_int lwork, | |||
| lapack_int* iwork, lapack_int liwork ); | |||
| lapack_int LAPACKE_dgedmd_work( int matrix_layout, char jobs, char jobz, | |||
| char jobf, lapack_int whtsvd, lapack_int m, | |||
| lapack_int n, double* x, lapack_int ldx, | |||
| double* y, lapack_int ldy, lapack_int k, | |||
| double* reig, double* imeig, double* z, | |||
| lapack_int ldz, double* res, double* b, | |||
| lapack_int ldb, double* w, lapack_int ldw, | |||
| double* s, lapack_int lds, double* work, | |||
| lapack_int lwork, lapack_int* iwork, | |||
| lapack_int liwork ); | |||
| char jobr, char jobf, lapack_int whtsvd, | |||
| lapack_int m, lapack_int n, double* x, | |||
| lapack_int ldx, double* y, lapack_int ldy, | |||
| lapack_int nrnk, double* tol, lapack_int k, | |||
| double* reig, double *imeig, | |||
| double* z, lapack_int ldz, double* res, | |||
| double* b, lapack_int ldb, double* w, | |||
| lapack_int ldw, double* s, lapack_int lds, | |||
| double* work, lapack_int lwork, | |||
| lapack_int* iwork, lapack_int liwork ); | |||
| lapack_int LAPACKE_cgedmd_work( int matrix_layout, char jobs, char jobz, | |||
| char jobf, lapack_int whtsvd, lapack_int m, | |||
| lapack_int n, lapack_complex_float* x, | |||
| lapack_int ldx, lapack_complex_float* y, | |||
| lapack_int ldy, lapack_int k, | |||
| lapack_complex_float* reig, | |||
| lapack_complex_float* imeig, | |||
| char jobr, char jobf, lapack_int whtsvd, | |||
| lapack_int m, lapack_int n, | |||
| lapack_complex_float* x, lapack_int ldx, | |||
| lapack_complex_float* y, lapack_int ldy, | |||
| lapack_int nrnk, float* tol, lapack_int k, | |||
| lapack_complex_float* eigs, | |||
| lapack_complex_float* z, lapack_int ldz, | |||
| lapack_complex_float* res, | |||
| float* res, | |||
| lapack_complex_float* b, lapack_int ldb, | |||
| lapack_complex_float* w, lapack_int ldw, | |||
| lapack_complex_float* s, lapack_int lds, | |||
| lapack_complex_float* work, lapack_int lwork, | |||
| lapack_complex_float* zwork, lapack_int lzwork, | |||
| float* work, lapack_int lwork, | |||
| lapack_int* iwork, lapack_int liwork ); | |||
| lapack_int LAPACKE_zgedmd_work( int matrix_layout, char jobs, char jobz, | |||
| char jobf, lapack_int whtsvd, lapack_int m, | |||
| lapack_int n, lapack_complex_double* x, | |||
| lapack_int ldx, lapack_complex_double* y, | |||
| lapack_int ldy, lapack_int k, | |||
| lapack_complex_double* reig, | |||
| lapack_complex_double* imeig, | |||
| char jobr, char jobf, lapack_int whtsvd, | |||
| lapack_int m, lapack_int n, | |||
| lapack_complex_double* x, lapack_int ldx, | |||
| lapack_complex_double* y, lapack_int ldy, | |||
| lapack_int nrnk, double* tol, lapack_int k, | |||
| lapack_complex_double* eigs, | |||
| lapack_complex_double* z, lapack_int ldz, | |||
| lapack_complex_double* res, | |||
| double* res, | |||
| lapack_complex_double* b, lapack_int ldb, | |||
| lapack_complex_double* w, lapack_int ldw, | |||
| lapack_complex_double* s, lapack_int lds, | |||
| lapack_complex_double* work, lapack_int lwork, | |||
| lapack_complex_double* zwork, lapack_int lzwork, | |||
| double* work, lapack_int lwork, | |||
| lapack_int* iwork, lapack_int liwork ); | |||
| lapack_int LAPACKE_sgedmdq_work( int matrix_layout, char jobs, char jobz, | |||
| @@ -5769,8 +5773,8 @@ lapack_int LAPACKE_sgedmdq_work( int matrix_layout, char jobs, char jobz, | |||
| lapack_int whtsvd, lapack_int m, lapack_int n, | |||
| float* f, lapack_int ldf, float* x, | |||
| lapack_int ldx, float* y, lapack_int ldy, | |||
| lapack_int nrnk, float tol, lapack_int k, | |||
| float* reig, float* imeig, float* z, | |||
| lapack_int nrnk, float* tol, lapack_int k, | |||
| float* reig, float *imeig, float* z, | |||
| lapack_int ldz, float* res, float* b, | |||
| lapack_int ldb, float* v, lapack_int ldv, | |||
| float* s, lapack_int lds, float* work, | |||
| @@ -5782,8 +5786,8 @@ lapack_int LAPACKE_dgedmdq_work( int matrix_layout, char jobs, char jobz, | |||
| lapack_int whtsvd, lapack_int m, lapack_int n, | |||
| double* f, lapack_int ldf, double* x, | |||
| lapack_int ldx, double* y, lapack_int ldy, | |||
| lapack_int nrnk, double tol, lapack_int k, | |||
| double* reig, double* imeig, double* z, | |||
| lapack_int nrnk, double* tol, lapack_int k, | |||
| double* reig, double* imeig, double* z, | |||
| lapack_int ldz, double* res, double* b, | |||
| lapack_int ldb, double* v, lapack_int ldv, | |||
| double* s, lapack_int lds, double* work, | |||
| @@ -5796,17 +5800,16 @@ lapack_int LAPACKE_cgedmdq_work( int matrix_layout, char jobs, char jobz, | |||
| lapack_complex_float* f, lapack_int ldf, | |||
| lapack_complex_float* x, lapack_int ldx, | |||
| lapack_complex_float* y, lapack_int ldy, | |||
| lapack_int nrnk, float tol, lapack_int k, | |||
| lapack_complex_float* reig, | |||
| lapack_complex_float* imeig, | |||
| lapack_int nrnk, float* tol, lapack_int k, | |||
| lapack_complex_float* eigs, | |||
| lapack_complex_float* z, lapack_int ldz, | |||
| lapack_complex_float* res, | |||
| float* res, | |||
| lapack_complex_float* b, lapack_int ldb, | |||
| lapack_complex_float* v, lapack_int ldv, | |||
| lapack_complex_float* s, lapack_int lds, | |||
| lapack_complex_float* work, lapack_int lwork, | |||
| lapack_int* iwork, | |||
| lapack_int liwork ); | |||
| lapack_complex_float* zwork, lapack_int lzwork, | |||
| float* work, lapack_int lwork, | |||
| lapack_int* iwork, lapack_int liwork); | |||
| lapack_int LAPACKE_zgedmdq_work( int matrix_layout, char jobs, char jobz, | |||
| char jobr, char jobq, char jobt, char jobf, | |||
| @@ -5814,17 +5817,16 @@ lapack_int LAPACKE_zgedmdq_work( int matrix_layout, char jobs, char jobz, | |||
| lapack_complex_double* f, lapack_int ldf, | |||
| lapack_complex_double* x, lapack_int ldx, | |||
| lapack_complex_double* y, lapack_int ldy, | |||
| lapack_int nrnk, double tol, lapack_int k, | |||
| lapack_complex_double* reig, | |||
| lapack_complex_double* imeig, | |||
| lapack_int nrnk, double* tol, lapack_int k, | |||
| lapack_complex_double* eigs, | |||
| lapack_complex_double* z, lapack_int ldz, | |||
| lapack_complex_double* res, | |||
| double* res, | |||
| lapack_complex_double* b, lapack_int ldb, | |||
| lapack_complex_double* v, lapack_int ldv, | |||
| lapack_complex_double* s, lapack_int lds, | |||
| lapack_complex_double* work, lapack_int lwork, | |||
| lapack_int* iwork, | |||
| lapack_int liwork ); | |||
| lapack_complex_double* zwork, lapack_int lzwork, | |||
| double* work, lapack_int lwork, | |||
| lapack_int* iwork, lapack_int liwork); | |||
| lapack_int LAPACKE_sgesv_work( int matrix_layout, lapack_int n, lapack_int nrhs, | |||
| float* a, lapack_int lda, lapack_int* ipiv, | |||
| @@ -32,22 +32,26 @@ | |||
| #include "lapacke_utils.h" | |||
| lapack_int LAPACKE_cgedmd( int matrix_layout, char jobs, char jobz, char jobf, | |||
| lapack_int whtsvd, lapack_int m, lapack_int n, | |||
| lapack_complex_float* x, lapack_int ldx, | |||
| lapack_complex_float* y, lapack_int ldy, lapack_int k, | |||
| lapack_complex_float* reig, lapack_complex_float* imeig, | |||
| lapack_int LAPACKE_cgedmd( int matrix_layout, char jobs, char jobz, char jobr, | |||
| char jobf, lapack_int whtsvd, lapack_int m, | |||
| lapack_int n, lapack_complex_float* x, | |||
| lapack_int ldx, lapack_complex_float* y, | |||
| lapack_int ldy, lapack_int nrnk, float* tol, | |||
| lapack_int k, lapack_complex_float* eigs, | |||
| lapack_complex_float* z, lapack_int ldz, | |||
| lapack_complex_float* res, lapack_complex_float* b, | |||
| float* res, lapack_complex_float* b, | |||
| lapack_int ldb, lapack_complex_float* w, | |||
| lapack_int ldw, lapack_complex_float* s, lapack_int lds) | |||
| { | |||
| lapack_int info = 0; | |||
| lapack_int lwork = -1; | |||
| lapack_int liwork = -1; | |||
| lapack_complex_float* work = NULL; | |||
| lapack_int lzwork = -1; | |||
| lapack_complex_float* zwork = NULL; | |||
| float* work = NULL; | |||
| lapack_int* iwork = NULL; | |||
| lapack_complex_float work_query; | |||
| lapack_complex_float zwork_query; | |||
| float work_query; | |||
| lapack_int iwork_query; | |||
| if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) { | |||
| LAPACKE_xerbla( "LAPACKE_cgedmd", -1 ); | |||
| @@ -77,36 +81,44 @@ lapack_int LAPACKE_cgedmd( int matrix_layout, char jobs, char jobz, char jobf, | |||
| } | |||
| #endif | |||
| /* Query optimal working array(s) size */ | |||
| info = LAPACKE_cgedmd_work( matrix_layout, jobs, jobz, jobf, whtsvd, m, n, | |||
| x, ldx, y, ldy, k, reig, imeig, z, ldz, res, | |||
| b, ldb, w, ldw, s, lds, &work_query, lwork, | |||
| &iwork_query, liwork ); | |||
| info = LAPACKE_cgedmd_work( matrix_layout, jobs, jobz, jobr, jobf, whtsvd, | |||
| m, n, x, ldx, y, ldy, nrnk, tol, k, eigs, z, ldz, | |||
| res, b, ldb, w, ldw, s, lds, &zwork_query, | |||
| lzwork, &work_query, lwork, &iwork_query, liwork ); | |||
| if( info != 0 ) { | |||
| goto exit_level_0; | |||
| } | |||
| lzwork = LAPACK_C2INT( zwork_query ); | |||
| lwork = LAPACK_C2INT( work_query ); | |||
| liwork = iwork_query; | |||
| /* Allocate memory for work arrays */ | |||
| work = (lapack_complex_float*)LAPACKE_malloc( sizeof(lapack_complex_float) * lwork ); | |||
| if( work == NULL ) { | |||
| zwork = (lapack_complex_float*)LAPACKE_malloc( sizeof(lapack_complex_float) * lzwork ); | |||
| if( zwork == NULL ) { | |||
| info = LAPACK_WORK_MEMORY_ERROR; | |||
| goto exit_level_0; | |||
| } | |||
| work = (float*)LAPACKE_malloc( sizeof(float) * lwork ); | |||
| if( work == NULL ) { | |||
| info = LAPACK_WORK_MEMORY_ERROR; | |||
| goto exit_level_1; | |||
| } | |||
| iwork = (lapack_int*)LAPACKE_malloc( sizeof(lapack_int) * liwork ); | |||
| if( iwork == NULL ) { | |||
| info = LAPACK_WORK_MEMORY_ERROR; | |||
| goto exit_level_1; | |||
| goto exit_level_2; | |||
| } | |||
| /* Call middle-level interface */ | |||
| info = LAPACKE_cgedmd_work( matrix_layout, jobs, jobz, jobf, whtsvd, m, n, | |||
| x, ldx, y, ldy, k, reig, imeig, z, ldz, res, | |||
| b, ldb, w, ldw, s, lds, work, lwork, iwork, | |||
| liwork ); | |||
| info = LAPACKE_cgedmd_work( matrix_layout, jobs, jobz, jobr, jobf, whtsvd, | |||
| m, n, x, ldx, y, ldy, nrnk, tol, k, eigs, z, ldz, | |||
| res, b, ldb, w, ldw, s, lds, zwork, lzwork, | |||
| work, lwork, iwork, liwork ); | |||
| /* Release memory and exit */ | |||
| LAPACKE_free( iwork ); | |||
| exit_level_1: | |||
| exit_level_2: | |||
| LAPACKE_free( work ); | |||
| exit_level_1: | |||
| LAPACKE_free( zwork ); | |||
| exit_level_0: | |||
| if( info == LAPACK_WORK_MEMORY_ERROR ) { | |||
| LAPACKE_xerbla( "LAPACKE_cgedmd", info ); | |||
| @@ -33,23 +33,25 @@ | |||
| #include "lapacke_utils.h" | |||
| lapack_int LAPACKE_cgedmd_work( int matrix_layout, char jobs, char jobz, | |||
| char jobf, lapack_int whtsvd, lapack_int m, | |||
| char jobr, char jobf, lapack_int whtsvd, lapack_int m, | |||
| lapack_int n, lapack_complex_float* x, lapack_int ldx, | |||
| lapack_complex_float* y, lapack_int ldy, lapack_int k, | |||
| lapack_complex_float* reig, lapack_complex_float* imeig, | |||
| lapack_complex_float* y, lapack_int ldy, lapack_int nrnk, | |||
| float* tol, lapack_int k, lapack_complex_float* eigs, | |||
| lapack_complex_float* z, lapack_int ldz, | |||
| lapack_complex_float* res, lapack_complex_float* b, | |||
| float* res, lapack_complex_float* b, | |||
| lapack_int ldb, lapack_complex_float* w, | |||
| lapack_int ldw, lapack_complex_float* s, lapack_int lds, | |||
| lapack_complex_float* work, lapack_int lwork, | |||
| lapack_complex_float* zwork, lapack_int lzwork, | |||
| float* work, lapack_int lwork, | |||
| lapack_int* iwork, lapack_int liwork ) | |||
| { | |||
| lapack_int info = 0; | |||
| if( matrix_layout == LAPACK_COL_MAJOR ) { | |||
| /* Call LAPACK function and adjust info */ | |||
| LAPACK_cgedmd( &jobs, &jobz, &jobf, &whtsvd, &m, &n, x, &ldx, y, &ldy, | |||
| &k, reig, imeig, z, &ldz, res, b, &ldb, w, &ldw, s, &lds, | |||
| work, &lwork, iwork, &liwork, &info ); | |||
| LAPACK_cgedmd( &jobs, &jobz, &jobr, &jobf, &whtsvd, &m, &n, x, &ldx, y, | |||
| &ldy, &nrnk, tol, &k, eigs, z, &ldz, res, b, &ldb, w, &ldw, | |||
| s, &lds, zwork, &lzwork, work, &lwork, iwork, &liwork, | |||
| &info ); | |||
| if( info < 0 ) { | |||
| info = info - 1; | |||
| } | |||
| @@ -99,9 +101,10 @@ lapack_int LAPACKE_cgedmd_work( int matrix_layout, char jobs, char jobz, | |||
| } | |||
| /* Query optimal working array(s) size if requested */ | |||
| if( lwork == -1 ) { | |||
| LAPACK_cgedmd( &jobs, &jobz, &jobf, &whtsvd, &m, &n, x, &ldx, y, &ldy, | |||
| &k, reig, imeig, z, &ldz, res, b, &ldb, w, &ldw, s, &lds, | |||
| work, &lwork, iwork, &liwork, &info ); | |||
| LAPACK_cgedmd( &jobs, &jobz, &jobr, &jobf, &whtsvd, &m, &n, x, | |||
| &ldx, y, &ldy, &nrnk, tol, &k, eigs, z, &ldz, res, b, | |||
| &ldb, w, &ldw, s, &lds, zwork, &lzwork, | |||
| work, &lwork, iwork, &liwork, &info ); | |||
| return (info < 0) ? (info - 1) : info; | |||
| } | |||
| /* Allocate memory for temporary array(s) */ | |||
| @@ -143,9 +146,10 @@ lapack_int LAPACKE_cgedmd_work( int matrix_layout, char jobs, char jobz, | |||
| LAPACKE_cge_trans( matrix_layout, m, n, w, ldw, w_t, ldw_t ); | |||
| LAPACKE_cge_trans( matrix_layout, m, n, s, lds, s_t, lds_t ); | |||
| /* Call LAPACK function and adjust info */ | |||
| LAPACK_cgedmd( &jobs, &jobz, &jobf, &whtsvd, &m, &n, x_t, &ldx_t, y_t, | |||
| &ldy_t, &k, reig, imeig, z_t, &ldz_t, res, b_t, &ldb_t, | |||
| w_t, &ldw_t, s_t, &lds_t, work, &lwork, iwork, &liwork, &info ); | |||
| LAPACK_cgedmd( &jobs, &jobz, &jobr, &jobf, &whtsvd, &m, &n, x_t, | |||
| &ldx_t, y_t, &ldy_t, &nrnk, tol, &k, eigs, z_t, &ldz_t, | |||
| res, b_t, &ldb_t, w_t, &ldw_t, s_t, &lds_t, zwork, | |||
| &lzwork, work, &lwork, iwork, &liwork, &info ); | |||
| if( info < 0 ) { | |||
| info = info - 1; | |||
| } | |||
| @@ -37,20 +37,22 @@ lapack_int LAPACKE_cgedmdq( int matrix_layout, char jobs, char jobz, char jobr, | |||
| lapack_int m, lapack_int n, lapack_complex_float* f, | |||
| lapack_int ldf, lapack_complex_float* x, | |||
| lapack_int ldx, lapack_complex_float* y, | |||
| lapack_int ldy, lapack_int nrnk, float tol, | |||
| lapack_int k, lapack_complex_float* reig, | |||
| lapack_complex_float* imeig, | |||
| lapack_int ldy, lapack_int nrnk, float* tol, | |||
| lapack_int k, lapack_complex_float* eigs, | |||
| lapack_complex_float* z, lapack_int ldz, | |||
| lapack_complex_float* res, lapack_complex_float* b, | |||
| float* res, lapack_complex_float* b, | |||
| lapack_int ldb, lapack_complex_float* v, | |||
| lapack_int ldv, lapack_complex_float* s, lapack_int lds) | |||
| { | |||
| lapack_int info = 0; | |||
| lapack_int lwork = -1; | |||
| lapack_int liwork = -1; | |||
| lapack_complex_float* work = NULL; | |||
| lapack_int lzwork = -1; | |||
| lapack_complex_float* zwork = NULL; | |||
| float* work = NULL; | |||
| lapack_int* iwork = NULL; | |||
| lapack_complex_float work_query; | |||
| lapack_complex_float zwork_query; | |||
| float work_query; | |||
| lapack_int iwork_query; | |||
| if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) { | |||
| LAPACKE_xerbla( "LAPACKE_cgedmdq", -1 ); | |||
| @@ -85,36 +87,44 @@ lapack_int LAPACKE_cgedmdq( int matrix_layout, char jobs, char jobz, char jobr, | |||
| /* Query optimal working array(s) size */ | |||
| info = LAPACKE_cgedmdq_work( matrix_layout, jobs, jobz, jobr, jobq, jobt, | |||
| jobf, whtsvd, m, n, f, ldf, x, ldx, y, ldy, | |||
| nrnk, tol, k, reig, imeig, z, ldz, res, | |||
| b, ldb, v, ldv, s, lds, &work_query, lwork, | |||
| &iwork_query, liwork ); | |||
| nrnk, tol, k, eigs, z, ldz, res, | |||
| b, ldb, v, ldv, s, lds, &zwork_query, lzwork, | |||
| &work_query, lwork, &iwork_query, liwork ); | |||
| if( info != 0 ) { | |||
| goto exit_level_0; | |||
| } | |||
| lzwork = LAPACK_C2INT( zwork_query ); | |||
| lwork = LAPACK_C2INT( work_query ); | |||
| liwork = iwork_query; | |||
| /* Allocate memory for work arrays */ | |||
| work = (lapack_complex_float*)LAPACKE_malloc( sizeof(lapack_complex_float) * lwork ); | |||
| if( work == NULL ) { | |||
| zwork = (lapack_complex_float*)LAPACKE_malloc( sizeof(lapack_complex_float) * lzwork ); | |||
| if( zwork == NULL ) { | |||
| info = LAPACK_WORK_MEMORY_ERROR; | |||
| goto exit_level_0; | |||
| } | |||
| work = (float*)LAPACKE_malloc( sizeof(lapack_complex_float) * lwork ); | |||
| if( work == NULL ) { | |||
| info = LAPACK_WORK_MEMORY_ERROR; | |||
| goto exit_level_1; | |||
| } | |||
| iwork = (lapack_int*)LAPACKE_malloc( sizeof(lapack_int) * liwork ); | |||
| if( iwork == NULL ) { | |||
| info = LAPACK_WORK_MEMORY_ERROR; | |||
| goto exit_level_1; | |||
| goto exit_level_2; | |||
| } | |||
| /* Call middle-level interface */ | |||
| info = LAPACKE_cgedmdq_work( matrix_layout, jobs, jobz, jobr, jobq, jobt, | |||
| jobf, whtsvd, m, n, f, ldf, x, ldx, y, ldy, | |||
| nrnk, tol, k, reig, imeig, z, ldz, res, | |||
| b, ldb, v, ldv, s, lds, work, lwork, iwork, | |||
| liwork ); | |||
| nrnk, tol, k, eigs, z, ldz, res, | |||
| b, ldb, v, ldv, s, lds, zwork, lzwork, | |||
| work, lwork, iwork, liwork ); | |||
| /* Release memory and exit */ | |||
| LAPACKE_free( iwork ); | |||
| exit_level_1: | |||
| exit_level_2: | |||
| LAPACKE_free( work ); | |||
| exit_level_1: | |||
| LAPACKE_free( zwork ); | |||
| exit_level_0: | |||
| if( info == LAPACK_WORK_MEMORY_ERROR ) { | |||
| LAPACKE_xerbla( "LAPACKE_cgedmdq", info ); | |||
| @@ -38,15 +38,15 @@ lapack_int LAPACKE_cgedmdq_work( int matrix_layout, char jobs, char jobz, | |||
| lapack_complex_float* f, lapack_int ldf, | |||
| lapack_complex_float* x, lapack_int ldx, | |||
| lapack_complex_float* y, lapack_int ldy, | |||
| lapack_int nrnk, float tol, lapack_int k, | |||
| lapack_complex_float* reig, | |||
| lapack_complex_float* imeig, | |||
| lapack_int nrnk, float* tol, lapack_int k, | |||
| lapack_complex_float* eigs, | |||
| lapack_complex_float* z, | |||
| lapack_int ldz, lapack_complex_float* res, | |||
| lapack_int ldz, float* res, | |||
| lapack_complex_float* b, | |||
| lapack_int ldb, lapack_complex_float* v, | |||
| lapack_int ldv, lapack_complex_float* s, | |||
| lapack_int lds, lapack_complex_float* work, | |||
| lapack_int lds, lapack_complex_float *zwork, | |||
| lapack_int lzwork, float* work, | |||
| lapack_int lwork, lapack_int* iwork, | |||
| lapack_int liwork ) | |||
| { | |||
| @@ -54,9 +54,9 @@ lapack_int LAPACKE_cgedmdq_work( int matrix_layout, char jobs, char jobz, | |||
| if( matrix_layout == LAPACK_COL_MAJOR ) { | |||
| /* Call LAPACK function and adjust info */ | |||
| LAPACK_cgedmdq( &jobs, &jobz, &jobr, &jobq, &jobt, &jobf, &whtsvd, &m, | |||
| &n, f, &ldf, x, &ldx, y, &ldy, &nrnk, &tol, &k, reig, | |||
| imeig, z, &ldz, res, b, &ldb, v, &ldv, s, &lds, | |||
| work, &lwork, iwork, &liwork, &info ); | |||
| &n, f, &ldf, x, &ldx, y, &ldy, &nrnk, tol, &k, eigs, | |||
| z, &ldz, res, b, &ldb, v, &ldv, s, &lds, | |||
| zwork, &lzwork, work, &lwork, iwork, &liwork, &info ); | |||
| if( info < 0 ) { | |||
| info = info - 1; | |||
| } | |||
| @@ -112,11 +112,11 @@ lapack_int LAPACKE_cgedmdq_work( int matrix_layout, char jobs, char jobz, | |||
| return info; | |||
| } | |||
| /* Query optimal working array(s) size if requested */ | |||
| if( lwork == -1 || liwork == -1 ) { | |||
| if( lzwork == -1 || lwork == -1 || liwork == -1 ) { | |||
| LAPACK_cgedmdq( &jobs, &jobz, &jobr, &jobq, &jobt, &jobf, &whtsvd, &m, | |||
| &n, f, &ldf, x, &ldx, y, &ldy, &nrnk, &tol, &k, reig, | |||
| imeig, z, &ldz, res, b, &ldb, v, &ldv, s, &lds, | |||
| work, &lwork, iwork, &liwork, &info ); | |||
| &n, f, &ldf, x, &ldx, y, &ldy, &nrnk, tol, &k, eigs, | |||
| z, &ldz, res, b, &ldb, v, &ldv, s, &lds, | |||
| zwork, &lzwork, work, &lwork, iwork, &liwork, &info ); | |||
| return (info < 0) ? (info - 1) : info; | |||
| } | |||
| /* Allocate memory for temporary array(s) */ | |||
| @@ -165,9 +165,9 @@ lapack_int LAPACKE_cgedmdq_work( int matrix_layout, char jobs, char jobz, | |||
| LAPACKE_cge_trans( matrix_layout, m, n, s, lds, s_t, lds_t ); | |||
| /* Call LAPACK function and adjust info */ | |||
| LAPACK_cgedmdq( &jobs, &jobz, &jobr, &jobq, &jobt, &jobf, &whtsvd, &m, | |||
| &n, f, &ldf, x, &ldx, y, &ldy, &nrnk, &tol, &k, reig, | |||
| imeig, z, &ldz, res, b, &ldb, v, &ldv, s, &lds, | |||
| work, &lwork, iwork, &liwork, &info ); | |||
| &n, f, &ldf, x, &ldx, y, &ldy, &nrnk, tol, &k, eigs, | |||
| z, &ldz, res, b, &ldb, v, &ldv, s, &lds, | |||
| zwork, &lzwork, work, &lwork, iwork, &liwork, &info ); | |||
| if( info < 0 ) { | |||
| info = info - 1; | |||
| } | |||
| @@ -32,11 +32,13 @@ | |||
| #include "lapacke_utils.h" | |||
| lapack_int LAPACKE_dgedmd( int matrix_layout, char jobs, char jobz, char jobf, | |||
| lapack_int whtsvd, lapack_int m, lapack_int n, | |||
| double* x, lapack_int ldx, double* y, lapack_int ldy, | |||
| lapack_int k, double* reig, double* imeig, double* z, | |||
| lapack_int ldz, double* res, double* b, lapack_int ldb, | |||
| lapack_int LAPACKE_dgedmd( int matrix_layout, char jobs, char jobz, char jobr, | |||
| char jobf, lapack_int whtsvd, lapack_int m, | |||
| lapack_int n, double* x, lapack_int ldx, double* y, | |||
| lapack_int ldy, lapack_int nrnk, double* tol, | |||
| lapack_int k, double* reig, double* imeig, | |||
| double* z, lapack_int ldz, | |||
| double* res, double* b, lapack_int ldb, | |||
| double* w, lapack_int ldw, double* s, lapack_int lds) | |||
| { | |||
| lapack_int info = 0; | |||
| @@ -74,10 +76,10 @@ lapack_int LAPACKE_dgedmd( int matrix_layout, char jobs, char jobz, char jobf, | |||
| } | |||
| #endif | |||
| /* Query optimal working array(s) size */ | |||
| info = LAPACKE_dgedmd_work( matrix_layout, jobs, jobz, jobf, whtsvd, m, n, | |||
| x, ldx, y, ldy, k, reig, imeig, z, ldz, res, | |||
| b, ldb, w, ldw, s, lds, &work_query, lwork, | |||
| &iwork_query, liwork ); | |||
| info = LAPACKE_dgedmd_work( matrix_layout, jobs, jobz, jobr, jobf, whtsvd, | |||
| m, n, x, ldx, y, ldy, nrnk, tol, k, reig, imeig, z, ldz, | |||
| res, b, ldb, w, ldw, s, lds, &work_query, | |||
| lwork, &iwork_query, liwork ); | |||
| if( info != 0 ) { | |||
| goto exit_level_0; | |||
| @@ -96,10 +98,10 @@ lapack_int LAPACKE_dgedmd( int matrix_layout, char jobs, char jobz, char jobf, | |||
| goto exit_level_1; | |||
| } | |||
| /* Call middle-level interface */ | |||
| info = LAPACKE_dgedmd_work( matrix_layout, jobs, jobz, jobf, whtsvd, m, n, | |||
| x, ldx, y, ldy, k, reig, imeig, z, ldz, res, | |||
| b, ldb, w, ldw, s, lds, work, lwork, iwork, | |||
| liwork ); | |||
| info = LAPACKE_dgedmd_work( matrix_layout, jobs, jobz, jobr, jobf, whtsvd, | |||
| m, n, x, ldx, y, ldy, nrnk, tol, k, reig, imeig, z, ldz, | |||
| res, b, ldb, w, ldw, s, lds, work, lwork, | |||
| iwork, liwork ); | |||
| /* Release memory and exit */ | |||
| LAPACKE_free( iwork ); | |||
| exit_level_1: | |||
| @@ -33,22 +33,23 @@ | |||
| #include "lapacke_utils.h" | |||
| lapack_int LAPACKE_dgedmd_work( int matrix_layout, char jobs, char jobz, | |||
| char jobf, lapack_int whtsvd, lapack_int m, | |||
| lapack_int n, double* x, lapack_int ldx, | |||
| double* y, lapack_int ldy, lapack_int k, | |||
| double* reig, double* imeig, double* z, | |||
| lapack_int ldz, double* res, double* b, | |||
| lapack_int ldb, double* w, lapack_int ldw, | |||
| double* s, lapack_int lds, double* work, | |||
| lapack_int lwork, lapack_int* iwork, | |||
| lapack_int liwork ) | |||
| char jobr, char jobf, lapack_int whtsvd, | |||
| lapack_int m, lapack_int n, double* x, | |||
| lapack_int ldx, double* y, lapack_int ldy, | |||
| lapack_int nrnk, double* tol, lapack_int k, | |||
| double* reig, double* imeig, | |||
| double* z, lapack_int ldz, double* res, | |||
| double* b, lapack_int ldb, double* w, | |||
| lapack_int ldw, double* s, lapack_int lds, | |||
| double* work, lapack_int lwork, | |||
| lapack_int* iwork, lapack_int liwork ) | |||
| { | |||
| lapack_int info = 0; | |||
| if( matrix_layout == LAPACK_COL_MAJOR ) { | |||
| /* Call LAPACK function and adjust info */ | |||
| LAPACK_dgedmd( &jobs, &jobz, &jobf, &whtsvd, &m, &n, x, &ldx, y, &ldy, | |||
| &k, reig, imeig, z, &ldz, res, b, &ldb, w, &ldw, s, &lds, | |||
| work, &lwork, iwork, &liwork, &info ); | |||
| LAPACK_dgedmd( &jobs, &jobz, &jobr, &jobf, &whtsvd, &m, &n, x, &ldx, y, | |||
| &ldy, &nrnk, tol, &k, reig, imeig, z, &ldz, res, b, &ldb, w, &ldw, | |||
| s, &lds, work, &lwork, iwork, &liwork, &info ); | |||
| if( info < 0 ) { | |||
| info = info - 1; | |||
| } | |||
| @@ -98,9 +99,9 @@ lapack_int LAPACKE_dgedmd_work( int matrix_layout, char jobs, char jobz, | |||
| } | |||
| /* Query optimal working array(s) size if requested */ | |||
| if( lwork == -1 ) { | |||
| LAPACK_dgedmd( &jobs, &jobz, &jobf, &whtsvd, &m, &n, x, &ldx, y, &ldy, | |||
| &k, reig, imeig, z, &ldz, res, b, &ldb, w, &ldw, s, &lds, | |||
| work, &lwork, iwork, &liwork, &info ); | |||
| LAPACK_dgedmd( &jobs, &jobz, &jobr, &jobf, &whtsvd, &m, &n, x, &ldx, | |||
| y, &ldy, &nrnk, tol, &k, reig, imeig, z, &ldz, res, b, &ldb, w, | |||
| &ldw, s, &lds, work, &lwork, iwork, &liwork, &info ); | |||
| return (info < 0) ? (info - 1) : info; | |||
| } | |||
| /* Allocate memory for temporary array(s) */ | |||
| @@ -142,9 +143,10 @@ lapack_int LAPACKE_dgedmd_work( int matrix_layout, char jobs, char jobz, | |||
| LAPACKE_dge_trans( matrix_layout, m, n, w, ldw, w_t, ldw_t ); | |||
| LAPACKE_dge_trans( matrix_layout, m, n, s, lds, s_t, lds_t ); | |||
| /* Call LAPACK function and adjust info */ | |||
| LAPACK_dgedmd( &jobs, &jobz, &jobf, &whtsvd, &m, &n, x_t, &ldx_t, y_t, | |||
| &ldy_t, &k, reig, imeig, z_t, &ldz_t, res, b_t, &ldb_t, | |||
| w_t, &ldw_t, s_t, &lds_t, work, &lwork, iwork, &liwork, &info ); | |||
| LAPACK_dgedmd( &jobs, &jobz, &jobr, &jobf, &whtsvd, &m, &n, x_t, &ldx_t, | |||
| y_t, &ldy_t, &nrnk, tol, &k, reig, imeig, z_t, &ldz_t, res, b_t, | |||
| &ldb_t, w_t, &ldw_t, s_t, &lds_t, work, &lwork, | |||
| iwork, &liwork, &info ); | |||
| if( info < 0 ) { | |||
| info = info - 1; | |||
| } | |||
| @@ -36,7 +36,7 @@ lapack_int LAPACKE_dgedmdq( int matrix_layout, char jobs, char jobz, char jobr, | |||
| char jobq, char jobt, char jobf, lapack_int whtsvd, | |||
| lapack_int m, lapack_int n, double* f, lapack_int ldf, | |||
| double* x, lapack_int ldx, double* y, lapack_int ldy, | |||
| lapack_int nrnk, double tol, lapack_int k, | |||
| lapack_int nrnk, double* tol, lapack_int k, | |||
| double* reig, double* imeig, double* z, | |||
| lapack_int ldz, double* res, double* b, lapack_int ldb, | |||
| double* v, lapack_int ldv, double* s, lapack_int lds) | |||
| @@ -37,7 +37,7 @@ lapack_int LAPACKE_dgedmdq_work( int matrix_layout, char jobs, char jobz, | |||
| lapack_int whtsvd, lapack_int m, lapack_int n, | |||
| double* f, lapack_int ldf, double* x, | |||
| lapack_int ldx, double* y, lapack_int ldy, | |||
| lapack_int nrnk, double tol, lapack_int k, | |||
| lapack_int nrnk, double* tol, lapack_int k, | |||
| double* reig, double* imeig, double* z, | |||
| lapack_int ldz, double* res, double* b, | |||
| lapack_int ldb, double* v, lapack_int ldv, | |||
| @@ -49,8 +49,8 @@ lapack_int LAPACKE_dgedmdq_work( int matrix_layout, char jobs, char jobz, | |||
| if( matrix_layout == LAPACK_COL_MAJOR ) { | |||
| /* Call LAPACK function and adjust info */ | |||
| LAPACK_dgedmdq( &jobs, &jobz, &jobr, &jobq, &jobt, &jobf, &whtsvd, &m, | |||
| &n, f, &ldf, x, &ldx, y, &ldy, &nrnk, &tol, &k, reig, | |||
| imeig, z, &ldz, res, b, &ldb, v, &ldv, s, &lds, | |||
| &n, f, &ldf, x, &ldx, y, &ldy, &nrnk, tol, &k, reig, imeig, | |||
| z, &ldz, res, b, &ldb, v, &ldv, s, &lds, | |||
| work, &lwork, iwork, &liwork, &info ); | |||
| if( info < 0 ) { | |||
| info = info - 1; | |||
| @@ -109,8 +109,8 @@ lapack_int LAPACKE_dgedmdq_work( int matrix_layout, char jobs, char jobz, | |||
| /* Query optimal working array(s) size if requested */ | |||
| if( lwork == -1 || liwork == -1 ) { | |||
| LAPACK_dgedmdq( &jobs, &jobz, &jobr, &jobq, &jobt, &jobf, &whtsvd, &m, | |||
| &n, f, &ldf, x, &ldx, y, &ldy, &nrnk, &tol, &k, reig, | |||
| imeig, z, &ldz, res, b, &ldb, v, &ldv, s, &lds, | |||
| &n, f, &ldf, x, &ldx, y, &ldy, &nrnk, tol, &k, reig, imeig, | |||
| z, &ldz, res, b, &ldb, v, &ldv, s, &lds, | |||
| work, &lwork, iwork, &liwork, &info ); | |||
| return (info < 0) ? (info - 1) : info; | |||
| } | |||
| @@ -160,8 +160,8 @@ lapack_int LAPACKE_dgedmdq_work( int matrix_layout, char jobs, char jobz, | |||
| LAPACKE_dge_trans( matrix_layout, m, n, s, lds, s_t, lds_t ); | |||
| /* Call LAPACK function and adjust info */ | |||
| LAPACK_dgedmdq( &jobs, &jobz, &jobr, &jobq, &jobt, &jobf, &whtsvd, &m, | |||
| &n, f, &ldf, x, &ldx, y, &ldy, &nrnk, &tol, &k, reig, | |||
| imeig, z, &ldz, res, b, &ldb, v, &ldv, s, &lds, | |||
| &n, f, &ldf, x, &ldx, y, &ldy, &nrnk, tol, &k, reig, imeig, | |||
| z, &ldz, res, b, &ldb, v, &ldv, s, &lds, | |||
| work, &lwork, iwork, &liwork, &info ); | |||
| if( info < 0 ) { | |||
| info = info - 1; | |||
| @@ -32,12 +32,14 @@ | |||
| #include "lapacke_utils.h" | |||
| lapack_int LAPACKE_sgedmd( int matrix_layout, char jobs, char jobz, char jobf, | |||
| lapack_int whtsvd, lapack_int m, lapack_int n, | |||
| float* x, lapack_int ldx, float* y, lapack_int ldy, | |||
| lapack_int k, float* reig, float* imeig, float* z, | |||
| lapack_int ldz, float* res, float* b, lapack_int ldb, | |||
| float* w, lapack_int ldw, float* s, lapack_int lds) | |||
| lapack_int LAPACKE_sgedmd( int matrix_layout, char jobs, char jobz, char jobr, | |||
| char jobf, lapack_int whtsvd, lapack_int m, | |||
| lapack_int n, float* x, lapack_int ldx, float* y, | |||
| lapack_int ldy, lapack_int nrnk, float* tol, | |||
| lapack_int k, float* reig, float* imeig, | |||
| float* z, lapack_int ldz, float* res, | |||
| float* b, lapack_int ldb, float* w, lapack_int ldw, | |||
| float* s, lapack_int lds) | |||
| { | |||
| lapack_int info = 0; | |||
| lapack_int lwork = -1; | |||
| @@ -74,10 +76,10 @@ lapack_int LAPACKE_sgedmd( int matrix_layout, char jobs, char jobz, char jobf, | |||
| } | |||
| #endif | |||
| /* Query optimal working array(s) size */ | |||
| info = LAPACKE_sgedmd_work( matrix_layout, jobs, jobz, jobf, whtsvd, m, n, | |||
| x, ldx, y, ldy, k, reig, imeig, z, ldz, res, | |||
| b, ldb, w, ldw, s, lds, &work_query, lwork, | |||
| &iwork_query, liwork ); | |||
| info = LAPACKE_sgedmd_work( matrix_layout, jobs, jobz, jobr, jobf, whtsvd, | |||
| m, n, x, ldx, y, ldy, nrnk, tol, k, reig, imeig, z, ldz, | |||
| res, b, ldb, w, ldw, s, lds, &work_query, | |||
| lwork, &iwork_query, liwork ); | |||
| if( info != 0 ) { | |||
| goto exit_level_0; | |||
| @@ -96,10 +98,10 @@ lapack_int LAPACKE_sgedmd( int matrix_layout, char jobs, char jobz, char jobf, | |||
| goto exit_level_1; | |||
| } | |||
| /* Call middle-level interface */ | |||
| info = LAPACKE_sgedmd_work( matrix_layout, jobs, jobz, jobf, whtsvd, m, n, | |||
| x, ldx, y, ldy, k, reig, imeig, z, ldz, res, | |||
| b, ldb, w, ldw, s, lds, work, lwork, iwork, | |||
| liwork ); | |||
| info = LAPACKE_sgedmd_work( matrix_layout, jobs, jobz, jobr, jobf, whtsvd, | |||
| m, n, x, ldx, y, ldy, nrnk, tol, k, reig, imeig, z, ldz, | |||
| res, b, ldb, w, ldw, s, lds, work, lwork, | |||
| iwork, liwork ); | |||
| /* Release memory and exit */ | |||
| LAPACKE_free( iwork ); | |||
| exit_level_1: | |||
| @@ -33,22 +33,23 @@ | |||
| #include "lapacke_utils.h" | |||
| lapack_int LAPACKE_sgedmd_work( int matrix_layout, char jobs, char jobz, | |||
| char jobf, lapack_int whtsvd, lapack_int m, | |||
| lapack_int n, float* x, lapack_int ldx, | |||
| float* y, lapack_int ldy, lapack_int k, | |||
| float* reig, float* imeig, float* z, | |||
| lapack_int ldz, float* res, float* b, | |||
| lapack_int ldb, float* w, lapack_int ldw, | |||
| float* s, lapack_int lds, float* work, | |||
| lapack_int lwork, lapack_int* iwork, | |||
| lapack_int liwork ) | |||
| char jobr, char jobf, lapack_int whtsvd, | |||
| lapack_int m, lapack_int n, float* x, | |||
| lapack_int ldx, float* y, lapack_int ldy, | |||
| lapack_int nrnk, float* tol, lapack_int k, | |||
| float* reig, float* imeig, | |||
| float* z, lapack_int ldz, float* res, | |||
| float* b, lapack_int ldb, float* w, | |||
| lapack_int ldw, float* s, lapack_int lds, | |||
| float* work, lapack_int lwork, | |||
| lapack_int* iwork, lapack_int liwork ) | |||
| { | |||
| lapack_int info = 0; | |||
| if( matrix_layout == LAPACK_COL_MAJOR ) { | |||
| /* Call LAPACK function and adjust info */ | |||
| LAPACK_sgedmd( &jobs, &jobz, &jobf, &whtsvd, &m, &n, x, &ldx, y, &ldy, | |||
| &k, reig, imeig, z, &ldz, res, b, &ldb, w, &ldw, s, &lds, | |||
| work, &lwork, iwork, &liwork, &info ); | |||
| LAPACK_sgedmd( &jobs, &jobz, &jobr, &jobf, &whtsvd, &m, &n, x, &ldx, y, | |||
| &ldy, &nrnk, tol, &k, reig, imeig, z, &ldz, res, b, &ldb, w, &ldw, | |||
| s, &lds, work, &lwork, iwork, &liwork, &info ); | |||
| if( info < 0 ) { | |||
| info = info - 1; | |||
| } | |||
| @@ -98,9 +99,10 @@ lapack_int LAPACKE_sgedmd_work( int matrix_layout, char jobs, char jobz, | |||
| } | |||
| /* Query optimal working array(s) size if requested */ | |||
| if( lwork == -1 ) { | |||
| LAPACK_sgedmd( &jobs, &jobz, &jobf, &whtsvd, &m, &n, x, &ldx, y, &ldy, | |||
| &k, reig, imeig, z, &ldz, res, b, &ldb, w, &ldw, s, &lds, | |||
| work, &lwork, iwork, &liwork, &info ); | |||
| LAPACK_sgedmd( &jobs, &jobz, &jobr, &jobf, &whtsvd, &m, &n, x, | |||
| &ldx, y, &ldy, &nrnk, tol, &k, reig, imeig, z, &ldz, res, b, | |||
| &ldb, w, &ldw, s, &lds, work, &lwork, iwork, | |||
| &liwork, &info ); | |||
| return (info < 0) ? (info - 1) : info; | |||
| } | |||
| /* Allocate memory for temporary array(s) */ | |||
| @@ -142,9 +144,10 @@ lapack_int LAPACKE_sgedmd_work( int matrix_layout, char jobs, char jobz, | |||
| LAPACKE_sge_trans( matrix_layout, m, n, w, ldw, w_t, ldw_t ); | |||
| LAPACKE_sge_trans( matrix_layout, m, n, s, lds, s_t, lds_t ); | |||
| /* Call LAPACK function and adjust info */ | |||
| LAPACK_sgedmd( &jobs, &jobz, &jobf, &whtsvd, &m, &n, x_t, &ldx_t, y_t, | |||
| &ldy_t, &k, reig, imeig, z_t, &ldz_t, res, b_t, &ldb_t, | |||
| w_t, &ldw_t, s_t, &lds_t, work, &lwork, iwork, &liwork, &info ); | |||
| LAPACK_sgedmd( &jobs, &jobz, &jobr, &jobf, &whtsvd, &m, &n, x_t, | |||
| &ldx_t, y_t, &ldy_t, &nrnk, tol, &k, reig, imeig, z_t, &ldz_t, | |||
| res, b_t, &ldb_t, w_t, &ldw_t, s_t, &lds_t, work, | |||
| &lwork, iwork, &liwork, &info ); | |||
| if( info < 0 ) { | |||
| info = info - 1; | |||
| } | |||
| @@ -36,7 +36,7 @@ lapack_int LAPACKE_sgedmdq( int matrix_layout, char jobs, char jobz, char jobr, | |||
| char jobq, char jobt, char jobf, lapack_int whtsvd, | |||
| lapack_int m, lapack_int n, float* f, lapack_int ldf, | |||
| float* x, lapack_int ldx, float* y, lapack_int ldy, | |||
| lapack_int nrnk, float tol, lapack_int k, | |||
| lapack_int nrnk, float* tol, lapack_int k, | |||
| float* reig, float* imeig, float* z, | |||
| lapack_int ldz, float* res, float* b, lapack_int ldb, | |||
| float* v, lapack_int ldv, float* s, lapack_int lds) | |||
| @@ -37,7 +37,7 @@ lapack_int LAPACKE_sgedmdq_work( int matrix_layout, char jobs, char jobz, | |||
| lapack_int whtsvd, lapack_int m, lapack_int n, | |||
| float* f, lapack_int ldf, float* x, | |||
| lapack_int ldx, float* y, lapack_int ldy, | |||
| lapack_int nrnk, float tol, lapack_int k, | |||
| lapack_int nrnk, float* tol, lapack_int k, | |||
| float* reig, float* imeig, float* z, | |||
| lapack_int ldz, float* res, float* b, | |||
| lapack_int ldb, float* v, lapack_int ldv, | |||
| @@ -49,8 +49,8 @@ lapack_int LAPACKE_sgedmdq_work( int matrix_layout, char jobs, char jobz, | |||
| if( matrix_layout == LAPACK_COL_MAJOR ) { | |||
| /* Call LAPACK function and adjust info */ | |||
| LAPACK_sgedmdq( &jobs, &jobz, &jobr, &jobq, &jobt, &jobf, &whtsvd, &m, | |||
| &n, f, &ldf, x, &ldx, y, &ldy, &nrnk, &tol, &k, reig, | |||
| imeig, z, &ldz, res, b, &ldb, v, &ldv, s, &lds, | |||
| &n, f, &ldf, x, &ldx, y, &ldy, &nrnk, tol, &k, reig, imeig, | |||
| z, &ldz, res, b, &ldb, v, &ldv, s, &lds, | |||
| work, &lwork, iwork, &liwork, &info ); | |||
| if( info < 0 ) { | |||
| info = info - 1; | |||
| @@ -109,8 +109,8 @@ lapack_int LAPACKE_sgedmdq_work( int matrix_layout, char jobs, char jobz, | |||
| /* Query optimal working array(s) size if requested */ | |||
| if( lwork == -1 || liwork == -1 ) { | |||
| LAPACK_sgedmdq( &jobs, &jobz, &jobr, &jobq, &jobt, &jobf, &whtsvd, &m, | |||
| &n, f, &ldf, x, &ldx, y, &ldy, &nrnk, &tol, &k, reig, | |||
| imeig, z, &ldz, res, b, &ldb, v, &ldv, s, &lds, | |||
| &n, f, &ldf, x, &ldx, y, &ldy, &nrnk, tol, &k, reig, imeig, | |||
| z, &ldz, res, b, &ldb, v, &ldv, s, &lds, | |||
| work, &lwork, iwork, &liwork, &info ); | |||
| return (info < 0) ? (info - 1) : info; | |||
| } | |||
| @@ -160,8 +160,8 @@ lapack_int LAPACKE_sgedmdq_work( int matrix_layout, char jobs, char jobz, | |||
| LAPACKE_sge_trans( matrix_layout, m, n, s, lds, s_t, lds_t ); | |||
| /* Call LAPACK function and adjust info */ | |||
| LAPACK_sgedmdq( &jobs, &jobz, &jobr, &jobq, &jobt, &jobf, &whtsvd, &m, | |||
| &n, f, &ldf, x, &ldx, y, &ldy, &nrnk, &tol, &k, reig, | |||
| imeig, z, &ldz, res, b, &ldb, v, &ldv, s, &lds, | |||
| &n, f, &ldf, x, &ldx, y, &ldy, &nrnk, tol, &k, reig, imeig, | |||
| z, &ldz, res, b, &ldb, v, &ldv, s, &lds, | |||
| work, &lwork, iwork, &liwork, &info ); | |||
| if( info < 0 ) { | |||
| info = info - 1; | |||
| @@ -32,24 +32,28 @@ | |||
| #include "lapacke_utils.h" | |||
| lapack_int LAPACKE_zgedmd( int matrix_layout, char jobs, char jobz, char jobf, | |||
| lapack_int whtsvd, lapack_int m, lapack_int n, | |||
| lapack_complex_double* x, lapack_int ldx, | |||
| lapack_complex_double* y, lapack_int ldy, | |||
| lapack_int k, lapack_complex_double* reig, | |||
| lapack_complex_double* imeig, lapack_complex_double* z, | |||
| lapack_int ldz, lapack_complex_double* res, | |||
| lapack_int LAPACKE_zgedmd( int matrix_layout, char jobs, char jobz, char jobr, | |||
| char jobf, lapack_int whtsvd, lapack_int m, | |||
| lapack_int n, lapack_complex_double* x, | |||
| lapack_int ldx, lapack_complex_double* y, | |||
| lapack_int ldy, lapack_int nrnk, double *tol, lapack_int k, | |||
| lapack_complex_double* eigs, lapack_complex_double* z, | |||
| lapack_int ldz, double* res, | |||
| lapack_complex_double* b, lapack_int ldb, | |||
| lapack_complex_double* zw, lapack_int lzw, | |||
| lapack_complex_double* w, lapack_int ldw, | |||
| lapack_complex_double* s, lapack_int lds) | |||
| { | |||
| lapack_int info = 0; | |||
| lapack_int lwork = -1; | |||
| lapack_int liwork = -1; | |||
| lapack_complex_double* work = NULL; | |||
| lapack_int lzwork = -1; | |||
| lapack_complex_double* zwork = NULL; | |||
| double* work = NULL; | |||
| lapack_int* iwork = NULL; | |||
| lapack_complex_double work_query; | |||
| double work_query; | |||
| lapack_int iwork_query; | |||
| lapack_complex_double zwork_query; | |||
| if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) { | |||
| LAPACKE_xerbla( "LAPACKE_zgedmd", -1 ); | |||
| return -1; | |||
| @@ -78,36 +82,44 @@ lapack_int LAPACKE_zgedmd( int matrix_layout, char jobs, char jobz, char jobf, | |||
| } | |||
| #endif | |||
| /* Query optimal working array(s) size */ | |||
| info = LAPACKE_zgedmd_work( matrix_layout, jobs, jobz, jobf, whtsvd, m, n, | |||
| x, ldx, y, ldy, k, reig, imeig, z, ldz, res, | |||
| b, ldb, w, ldw, s, lds, &work_query, lwork, | |||
| &iwork_query, liwork ); | |||
| info = LAPACKE_zgedmd_work( matrix_layout, jobs, jobz, jobr, jobf, whtsvd, | |||
| m, n, x, ldx, y, ldy, nrnk, tol, k, eigs, z, ldz, | |||
| res, b, ldb, w, ldw, s, lds, &zwork_query, lzwork, | |||
| &work_query, lwork, &iwork_query, liwork ); | |||
| if( info != 0 ) { | |||
| goto exit_level_0; | |||
| } | |||
| lwork = LAPACK_Z2INT( work_query ); | |||
| liwork = iwork_query; | |||
| lzwork = LAPACK_Z2INT( zwork_query ); | |||
| /* Allocate memory for work arrays */ | |||
| work = (lapack_complex_double*)LAPACKE_malloc( sizeof(lapack_complex_double) * lwork ); | |||
| if( work == NULL ) { | |||
| zwork = (lapack_complex_double*)LAPACKE_malloc( sizeof(lapack_complex_double) * lzwork ); | |||
| if( zwork == NULL ) { | |||
| info = LAPACK_WORK_MEMORY_ERROR; | |||
| goto exit_level_0; | |||
| } | |||
| work = (double*)LAPACKE_malloc( sizeof(double) * lwork ); | |||
| if( work == NULL ) { | |||
| info = LAPACK_WORK_MEMORY_ERROR; | |||
| goto exit_level_1; | |||
| } | |||
| iwork = (lapack_int*)LAPACKE_malloc( sizeof(lapack_int) * liwork ); | |||
| if( iwork == NULL ) { | |||
| info = LAPACK_WORK_MEMORY_ERROR; | |||
| goto exit_level_1; | |||
| goto exit_level_2; | |||
| } | |||
| /* Call middle-level interface */ | |||
| info = LAPACKE_zgedmd_work( matrix_layout, jobs, jobz, jobf, whtsvd, m, n, | |||
| x, ldx, y, ldy, k, reig, imeig, z, ldz, res, | |||
| b, ldb, w, ldw, s, lds, work, lwork, iwork, | |||
| liwork ); | |||
| info = LAPACKE_zgedmd_work( matrix_layout, jobs, jobz, jobr, jobf, whtsvd, | |||
| m, n, x, ldx, y, ldy, nrnk, tol, k, eigs, z, ldz, | |||
| res, b, ldb, w, ldw, s, lds, zwork, lzwork, | |||
| work, lwork, iwork, liwork ); | |||
| /* Release memory and exit */ | |||
| LAPACKE_free( iwork ); | |||
| exit_level_1: | |||
| exit_level_2: | |||
| LAPACKE_free( work ); | |||
| exit_level_1: | |||
| LAPACKE_free( zwork ); | |||
| exit_level_0: | |||
| if( info == LAPACK_WORK_MEMORY_ERROR ) { | |||
| LAPACKE_xerbla( "LAPACKE_zgedmd", info ); | |||
| @@ -33,25 +33,27 @@ | |||
| #include "lapacke_utils.h" | |||
| lapack_int LAPACKE_zgedmd_work( int matrix_layout, char jobs, char jobz, | |||
| char jobf, lapack_int whtsvd, lapack_int m, | |||
| lapack_int n, lapack_complex_double* x, | |||
| char jobr, char jobf, lapack_int whtsvd, | |||
| lapack_int m, lapack_int n, | |||
| lapack_complex_double* x, | |||
| lapack_int ldx, lapack_complex_double* y, | |||
| lapack_int ldy, lapack_int k, | |||
| lapack_complex_double* reig, | |||
| lapack_complex_double* imeig, lapack_complex_double* z, | |||
| lapack_int ldz, lapack_complex_double* res, | |||
| lapack_int ldy, lapack_int nrnk, double *tol, lapack_int k, | |||
| lapack_complex_double* eigs, lapack_complex_double* z, | |||
| lapack_int ldz, double* res, | |||
| lapack_complex_double* b, lapack_int ldb, | |||
| lapack_complex_double* w, lapack_int ldw, | |||
| lapack_complex_double* s, lapack_int lds, | |||
| lapack_complex_double* work, lapack_int lwork, | |||
| lapack_complex_double* zwork, lapack_int lzwork, | |||
| double* work, lapack_int lwork, | |||
| lapack_int* iwork, lapack_int liwork ) | |||
| { | |||
| lapack_int info = 0; | |||
| if( matrix_layout == LAPACK_COL_MAJOR ) { | |||
| /* Call LAPACK function and adjust info */ | |||
| LAPACK_zgedmd( &jobs, &jobz, &jobf, &whtsvd, &m, &n, x, &ldx, y, &ldy, | |||
| &k, reig, imeig, z, &ldz, res, b, &ldb, w, &ldw, s, &lds, | |||
| work, &lwork, iwork, &liwork, &info ); | |||
| LAPACK_zgedmd( &jobs, &jobz, &jobr, &jobf, &whtsvd, &m, &n, x, &ldx, | |||
| y, &ldy, &nrnk, tol, &k, eigs, z, &ldz, res, b, &ldb, w, | |||
| &ldw, s, &lds, zwork, &lzwork, work, &lwork, iwork, | |||
| &liwork, &info ); | |||
| if( info < 0 ) { | |||
| info = info - 1; | |||
| } | |||
| @@ -101,9 +103,10 @@ lapack_int LAPACKE_zgedmd_work( int matrix_layout, char jobs, char jobz, | |||
| } | |||
| /* Query optimal working array(s) size if requested */ | |||
| if( lwork == -1 ) { | |||
| LAPACK_zgedmd( &jobs, &jobz, &jobf, &whtsvd, &m, &n, x, &ldx, y, &ldy, | |||
| &k, reig, imeig, z, &ldz, res, b, &ldb, w, &ldw, s, &lds, | |||
| work, &lwork, iwork, &liwork, &info ); | |||
| LAPACK_zgedmd( &jobs, &jobz, &jobr, &jobf, &whtsvd, &m, &n, x, | |||
| &ldx, y, &ldy, &nrnk, tol, &k, eigs, z, &ldz, res, b, | |||
| &ldb, w, &ldw, s, &lds, zwork, &lzwork, work, | |||
| &lwork, iwork, &liwork, &info ); | |||
| return (info < 0) ? (info - 1) : info; | |||
| } | |||
| /* Allocate memory for temporary array(s) */ | |||
| @@ -145,9 +148,10 @@ lapack_int LAPACKE_zgedmd_work( int matrix_layout, char jobs, char jobz, | |||
| LAPACKE_zge_trans( matrix_layout, m, n, w, ldw, w_t, ldw_t ); | |||
| LAPACKE_zge_trans( matrix_layout, m, n, s, lds, s_t, lds_t ); | |||
| /* Call LAPACK function and adjust info */ | |||
| LAPACK_zgedmd( &jobs, &jobz, &jobf, &whtsvd, &m, &n, x_t, &ldx_t, y_t, | |||
| &ldy_t, &k, reig, imeig, z_t, &ldz_t, res, b_t, &ldb_t, | |||
| w_t, &ldw_t, s_t, &lds_t, work, &lwork, iwork, &liwork, &info ); | |||
| LAPACK_zgedmd( &jobs, &jobz, &jobr, &jobf, &whtsvd, &m, &n, x_t, | |||
| &ldx_t, y_t, &ldy_t, &nrnk, tol, &k, eigs, z_t, &ldz_t, | |||
| res, b_t, &ldb_t, w_t, &ldw_t, s_t, &lds_t, zwork, | |||
| &lzwork, work, &lwork, iwork, &liwork, &info ); | |||
| if( info < 0 ) { | |||
| info = info - 1; | |||
| } | |||
| @@ -37,23 +37,25 @@ lapack_int LAPACKE_zgedmdq( int matrix_layout, char jobs, char jobz, char jobr, | |||
| lapack_int m, lapack_int n, lapack_complex_double* f, | |||
| lapack_int ldf, lapack_complex_double* x, | |||
| lapack_int ldx, lapack_complex_double* y, | |||
| lapack_int ldy, lapack_int nrnk, double tol, | |||
| lapack_int k, lapack_complex_double* reig, | |||
| lapack_complex_double* imeig, | |||
| lapack_int ldy, lapack_int nrnk, double* tol, | |||
| lapack_int k, lapack_complex_double* eigs, | |||
| lapack_complex_double* z, lapack_int ldz, | |||
| lapack_complex_double* res, lapack_complex_double* b, | |||
| double* res, lapack_complex_double* b, | |||
| lapack_int ldb, lapack_complex_double* v, | |||
| lapack_int ldv, lapack_complex_double* s, lapack_int lds) | |||
| { | |||
| lapack_int info = 0; | |||
| lapack_int lwork = -1; | |||
| lapack_int liwork = -1; | |||
| lapack_complex_double* work = NULL; | |||
| lapack_int lzwork = -1; | |||
| lapack_complex_double* zwork = NULL; | |||
| double* work = NULL; | |||
| lapack_int* iwork = NULL; | |||
| lapack_complex_double work_query; | |||
| double work_query; | |||
| lapack_complex_double zwork_query; | |||
| lapack_int iwork_query; | |||
| if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) { | |||
| LAPACKE_xerbla( "LAPACKE_cgedmdq", -1 ); | |||
| LAPACKE_xerbla( "LAPACKE_zgedmdq", -1 ); | |||
| return -1; | |||
| } | |||
| #ifndef LAPACK_DISABLE_NAN_CHECK | |||
| @@ -85,36 +87,44 @@ lapack_int LAPACKE_zgedmdq( int matrix_layout, char jobs, char jobz, char jobr, | |||
| /* Query optimal working array(s) size */ | |||
| info = LAPACKE_zgedmdq_work( matrix_layout, jobs, jobz, jobr, jobq, jobt, | |||
| jobf, whtsvd, m, n, f, ldf, x, ldx, y, ldy, | |||
| nrnk, tol, k, reig, imeig, z, ldz, res, | |||
| b, ldb, v, ldv, s, lds, &work_query, lwork, | |||
| &iwork_query, liwork ); | |||
| nrnk, tol, k, eigs, z, ldz, res, | |||
| b, ldb, v, ldv, s, lds, &zwork_query, lzwork, | |||
| &work_query, lwork, &iwork_query, liwork ); | |||
| if( info != 0 ) { | |||
| goto exit_level_0; | |||
| } | |||
| lwork = LAPACK_Z2INT( work_query ); | |||
| lzwork = LAPACK_Z2INT( zwork_query ); | |||
| liwork = iwork_query; | |||
| /* Allocate memory for work arrays */ | |||
| work = (lapack_complex_double*)LAPACKE_malloc( sizeof(lapack_complex_double) * lwork ); | |||
| if( work == NULL ) { | |||
| zwork = (lapack_complex_double*)LAPACKE_malloc( sizeof(lapack_complex_double) * lzwork ); | |||
| if( zwork == NULL ) { | |||
| info = LAPACK_WORK_MEMORY_ERROR; | |||
| goto exit_level_0; | |||
| } | |||
| work = (double*)LAPACKE_malloc( sizeof(lapack_complex_double) * lwork ); | |||
| if( work == NULL ) { | |||
| info = LAPACK_WORK_MEMORY_ERROR; | |||
| goto exit_level_1; | |||
| } | |||
| iwork = (lapack_int*)LAPACKE_malloc( sizeof(lapack_int) * liwork ); | |||
| if( iwork == NULL ) { | |||
| info = LAPACK_WORK_MEMORY_ERROR; | |||
| goto exit_level_1; | |||
| goto exit_level_2; | |||
| } | |||
| /* Call middle-level interface */ | |||
| info = LAPACKE_zgedmdq_work( matrix_layout, jobs, jobz, jobr, jobq, jobt, | |||
| jobf, whtsvd, m, n, f, ldf, x, ldx, y, ldy, | |||
| nrnk, tol, k, reig, imeig, z, ldz, res, | |||
| b, ldb, v, ldv, s, lds, work, lwork, iwork, | |||
| liwork ); | |||
| nrnk, tol, k, eigs, z, ldz, res, | |||
| b, ldb, v, ldv, s, lds, zwork, lzwork, | |||
| work, lwork, iwork, liwork ); | |||
| /* Release memory and exit */ | |||
| LAPACKE_free( iwork ); | |||
| exit_level_1: | |||
| exit_level_2: | |||
| LAPACKE_free( work ); | |||
| exit_level_1: | |||
| LAPACKE_free( zwork ); | |||
| exit_level_0: | |||
| if( info == LAPACK_WORK_MEMORY_ERROR ) { | |||
| LAPACKE_xerbla( "LAPACKE_zgedmdq", info ); | |||
| @@ -38,15 +38,15 @@ lapack_int LAPACKE_zgedmdq_work( int matrix_layout, char jobs, char jobz, | |||
| lapack_complex_double* f, lapack_int ldf, | |||
| lapack_complex_double* x, lapack_int ldx, | |||
| lapack_complex_double* y, lapack_int ldy, | |||
| lapack_int nrnk, double tol, lapack_int k, | |||
| lapack_complex_double* reig, | |||
| lapack_complex_double* imeig, | |||
| lapack_int nrnk, double* tol, lapack_int k, | |||
| lapack_complex_double* eigs, | |||
| lapack_complex_double* z, | |||
| lapack_int ldz, lapack_complex_double* res, | |||
| lapack_int ldz, double* res, | |||
| lapack_complex_double* b, | |||
| lapack_int ldb, lapack_complex_double* v, | |||
| lapack_int ldv, lapack_complex_double* s, | |||
| lapack_int lds, lapack_complex_double* work, | |||
| lapack_int lds, lapack_complex_double* zwork, | |||
| lapack_int lzwork, double* work, | |||
| lapack_int lwork, lapack_int* iwork, | |||
| lapack_int liwork ) | |||
| { | |||
| @@ -54,9 +54,9 @@ lapack_int LAPACKE_zgedmdq_work( int matrix_layout, char jobs, char jobz, | |||
| if( matrix_layout == LAPACK_COL_MAJOR ) { | |||
| /* Call LAPACK function and adjust info */ | |||
| LAPACK_zgedmdq( &jobs, &jobz, &jobr, &jobq, &jobt, &jobf, &whtsvd, &m, | |||
| &n, f, &ldf, x, &ldx, y, &ldy, &nrnk, &tol, &k, reig, | |||
| imeig, z, &ldz, res, b, &ldb, v, &ldv, s, &lds, | |||
| work, &lwork, iwork, &liwork, &info ); | |||
| &n, f, &ldf, x, &ldx, y, &ldy, &nrnk, tol, &k, eigs, | |||
| z, &ldz, res, b, &ldb, v, &ldv, s, &lds, | |||
| zwork, &lzwork, work, &lwork, iwork, &liwork, &info ); | |||
| if( info < 0 ) { | |||
| info = info - 1; | |||
| } | |||
| @@ -114,9 +114,9 @@ lapack_int LAPACKE_zgedmdq_work( int matrix_layout, char jobs, char jobz, | |||
| /* Query optimal working array(s) size if requested */ | |||
| if( lwork == -1 || liwork == -1 ) { | |||
| LAPACK_zgedmdq( &jobs, &jobz, &jobr, &jobq, &jobt, &jobf, &whtsvd, &m, | |||
| &n, f, &ldf, x, &ldx, y, &ldy, &nrnk, &tol, &k, reig, | |||
| imeig, z, &ldz, res, b, &ldb, v, &ldv, s, &lds, | |||
| work, &lwork, iwork, &liwork, &info ); | |||
| &n, f, &ldf, x, &ldx, y, &ldy, &nrnk, tol, &k, eigs, | |||
| z, &ldz, res, b, &ldb, v, &ldv, s, &lds, | |||
| zwork, &lzwork, work, &lwork, iwork, &liwork, &info ); | |||
| return (info < 0) ? (info - 1) : info; | |||
| } | |||
| /* Allocate memory for temporary array(s) */ | |||
| @@ -165,9 +165,9 @@ lapack_int LAPACKE_zgedmdq_work( int matrix_layout, char jobs, char jobz, | |||
| LAPACKE_zge_trans( matrix_layout, m, n, s, lds, s_t, lds_t ); | |||
| /* Call LAPACK function and adjust info */ | |||
| LAPACK_zgedmdq( &jobs, &jobz, &jobr, &jobq, &jobt, &jobf, &whtsvd, &m, | |||
| &n, f, &ldf, x, &ldx, y, &ldy, &nrnk, &tol, &k, reig, | |||
| imeig, z, &ldz, res, b, &ldb, v, &ldv, s, &lds, | |||
| work, &lwork, iwork, &liwork, &info ); | |||
| &n, f, &ldf, x, &ldx, y, &ldy, &nrnk, tol, &k, eigs, | |||
| z, &ldz, res, b, &ldb, v, &ldv, s, &lds, | |||
| zwork, &lzwork, work, &lwork, iwork, &liwork, &info ); | |||
| if( info < 0 ) { | |||
| info = info - 1; | |||
| } | |||