| @@ -32,21 +32,25 @@ | |||||
| #include "lapacke_utils.h" | #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* 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 ldb, lapack_complex_float* w, | ||||
| lapack_int ldw, lapack_complex_float* s, lapack_int lds) | lapack_int ldw, lapack_complex_float* s, lapack_int lds) | ||||
| { | { | ||||
| lapack_int info = 0; | lapack_int info = 0; | ||||
| lapack_int lwork = -1; | lapack_int lwork = -1; | ||||
| lapack_int liwork = -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_int* iwork = NULL; | ||||
| lapack_complex_float zwork_query; | |||||
| lapack_complex_float work_query; | lapack_complex_float work_query; | ||||
| lapack_int iwork_query; | lapack_int iwork_query; | ||||
| if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) { | if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) { | ||||
| @@ -77,36 +81,44 @@ lapack_int LAPACKE_cgedmd( int matrix_layout, char jobs, char jobz, char jobf, | |||||
| } | } | ||||
| #endif | #endif | ||||
| /* Query optimal working array(s) size */ | /* 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 ) { | if( info != 0 ) { | ||||
| goto exit_level_0; | goto exit_level_0; | ||||
| } | } | ||||
| lzwork = LAPACK_C2INT( zwork_query ); | |||||
| lwork = LAPACK_C2INT( work_query ); | lwork = LAPACK_C2INT( work_query ); | ||||
| liwork = iwork_query; | liwork = iwork_query; | ||||
| /* Allocate memory for work arrays */ | /* 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; | info = LAPACK_WORK_MEMORY_ERROR; | ||||
| goto exit_level_0; | 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 ); | iwork = (lapack_int*)LAPACKE_malloc( sizeof(lapack_int) * liwork ); | ||||
| if( iwork == NULL ) { | if( iwork == NULL ) { | ||||
| info = LAPACK_WORK_MEMORY_ERROR; | info = LAPACK_WORK_MEMORY_ERROR; | ||||
| goto exit_level_1; | |||||
| goto exit_level_2; | |||||
| } | } | ||||
| /* Call middle-level interface */ | /* 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 */ | /* Release memory and exit */ | ||||
| LAPACKE_free( iwork ); | LAPACKE_free( iwork ); | ||||
| exit_level_1: | |||||
| exit_level_2: | |||||
| LAPACKE_free( work ); | LAPACKE_free( work ); | ||||
| exit_level_1: | |||||
| LAPACKE_free( zwork ); | |||||
| exit_level_0: | exit_level_0: | ||||
| if( info == LAPACK_WORK_MEMORY_ERROR ) { | if( info == LAPACK_WORK_MEMORY_ERROR ) { | ||||
| LAPACKE_xerbla( "LAPACKE_cgedmd", info ); | LAPACKE_xerbla( "LAPACKE_cgedmd", info ); | ||||
| @@ -33,23 +33,25 @@ | |||||
| #include "lapacke_utils.h" | #include "lapacke_utils.h" | ||||
| lapack_int LAPACKE_cgedmd_work( int matrix_layout, char jobs, char jobz, | 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_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* 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 ldb, lapack_complex_float* w, | ||||
| lapack_int ldw, lapack_complex_float* s, lapack_int lds, | 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* iwork, lapack_int liwork ) | ||||
| { | { | ||||
| lapack_int info = 0; | lapack_int info = 0; | ||||
| if( matrix_layout == LAPACK_COL_MAJOR ) { | if( matrix_layout == LAPACK_COL_MAJOR ) { | ||||
| /* Call LAPACK function and adjust info */ | /* 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 ) { | if( info < 0 ) { | ||||
| info = info - 1; | 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 */ | /* Query optimal working array(s) size if requested */ | ||||
| if( lwork == -1 ) { | 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; | return (info < 0) ? (info - 1) : info; | ||||
| } | } | ||||
| /* Allocate memory for temporary array(s) */ | /* 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, w, ldw, w_t, ldw_t ); | ||||
| LAPACKE_cge_trans( matrix_layout, m, n, s, lds, s_t, lds_t ); | LAPACKE_cge_trans( matrix_layout, m, n, s, lds, s_t, lds_t ); | ||||
| /* Call LAPACK function and adjust info */ | /* 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 ) { | if( info < 0 ) { | ||||
| info = info - 1; | info = info - 1; | ||||
| } | } | ||||
| @@ -37,19 +37,21 @@ 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 m, lapack_int n, lapack_complex_float* f, | ||||
| lapack_int ldf, lapack_complex_float* x, | lapack_int ldf, lapack_complex_float* x, | ||||
| lapack_int ldx, lapack_complex_float* y, | 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* 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 ldb, lapack_complex_float* v, | ||||
| lapack_int ldv, lapack_complex_float* s, lapack_int lds) | lapack_int ldv, lapack_complex_float* s, lapack_int lds) | ||||
| { | { | ||||
| lapack_int info = 0; | lapack_int info = 0; | ||||
| lapack_int lwork = -1; | lapack_int lwork = -1; | ||||
| lapack_int liwork = -1; | lapack_int liwork = -1; | ||||
| lapack_int lzwork = -1; | |||||
| lapack_complex_float* zwork = NULL; | |||||
| lapack_complex_float* work = NULL; | lapack_complex_float* work = NULL; | ||||
| lapack_int* iwork = NULL; | lapack_int* iwork = NULL; | ||||
| lapack_complex_float zwork_query; | |||||
| lapack_complex_float work_query; | lapack_complex_float work_query; | ||||
| lapack_int iwork_query; | lapack_int iwork_query; | ||||
| if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) { | if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) { | ||||
| @@ -85,36 +87,44 @@ lapack_int LAPACKE_cgedmdq( int matrix_layout, char jobs, char jobz, char jobr, | |||||
| /* Query optimal working array(s) size */ | /* Query optimal working array(s) size */ | ||||
| info = LAPACKE_cgedmdq_work( matrix_layout, jobs, jobz, jobr, jobq, jobt, | info = LAPACKE_cgedmdq_work( matrix_layout, jobs, jobz, jobr, jobq, jobt, | ||||
| jobf, whtsvd, m, n, f, ldf, x, ldx, y, ldy, | 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 ) { | if( info != 0 ) { | ||||
| goto exit_level_0; | goto exit_level_0; | ||||
| } | } | ||||
| lzwork = LAPACK_C2INT( zwork_query ); | |||||
| lwork = LAPACK_C2INT( work_query ); | lwork = LAPACK_C2INT( work_query ); | ||||
| liwork = iwork_query; | liwork = iwork_query; | ||||
| /* Allocate memory for work arrays */ | /* Allocate memory for work arrays */ | ||||
| zwork = (lapack_complex_float*)LAPACKE_malloc( sizeof(lapack_complex_float) * lzwork ); | |||||
| if( zwork == NULL ) { | |||||
| info = LAPACK_WORK_MEMORY_ERROR; | |||||
| goto exit_level_0; | |||||
| } | |||||
| work = (lapack_complex_float*)LAPACKE_malloc( sizeof(lapack_complex_float) * lwork ); | work = (lapack_complex_float*)LAPACKE_malloc( sizeof(lapack_complex_float) * lwork ); | ||||
| if( work == NULL ) { | if( work == NULL ) { | ||||
| info = LAPACK_WORK_MEMORY_ERROR; | info = LAPACK_WORK_MEMORY_ERROR; | ||||
| goto exit_level_0; | |||||
| goto exit_level_1; | |||||
| } | } | ||||
| iwork = (lapack_int*)LAPACKE_malloc( sizeof(lapack_int) * liwork ); | iwork = (lapack_int*)LAPACKE_malloc( sizeof(lapack_int) * liwork ); | ||||
| if( iwork == NULL ) { | if( iwork == NULL ) { | ||||
| info = LAPACK_WORK_MEMORY_ERROR; | info = LAPACK_WORK_MEMORY_ERROR; | ||||
| goto exit_level_1; | |||||
| goto exit_level_2; | |||||
| } | } | ||||
| /* Call middle-level interface */ | /* Call middle-level interface */ | ||||
| info = LAPACKE_cgedmdq_work( matrix_layout, jobs, jobz, jobr, jobq, jobt, | info = LAPACKE_cgedmdq_work( matrix_layout, jobs, jobz, jobr, jobq, jobt, | ||||
| jobf, whtsvd, m, n, f, ldf, x, ldx, y, ldy, | 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 */ | /* Release memory and exit */ | ||||
| LAPACKE_free( iwork ); | LAPACKE_free( iwork ); | ||||
| exit_level_1: | |||||
| exit_level_2: | |||||
| LAPACKE_free( work ); | LAPACKE_free( work ); | ||||
| exit_level_1: | |||||
| LAPACKE_free( zwork ); | |||||
| exit_level_0: | exit_level_0: | ||||
| if( info == LAPACK_WORK_MEMORY_ERROR ) { | if( info == LAPACK_WORK_MEMORY_ERROR ) { | ||||
| LAPACKE_xerbla( "LAPACKE_cgedmdq", info ); | 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* f, lapack_int ldf, | ||||
| lapack_complex_float* x, lapack_int ldx, | lapack_complex_float* x, lapack_int ldx, | ||||
| lapack_complex_float* y, lapack_int ldy, | 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_complex_float* z, | ||||
| lapack_int ldz, lapack_complex_float* res, | |||||
| lapack_int ldz, float* res, | |||||
| lapack_complex_float* b, | lapack_complex_float* b, | ||||
| lapack_int ldb, lapack_complex_float* v, | lapack_int ldb, lapack_complex_float* v, | ||||
| lapack_int ldv, lapack_complex_float* s, | lapack_int ldv, lapack_complex_float* s, | ||||
| lapack_int lds, lapack_complex_float* work, | |||||
| lapack_int lds, lapack_complex_float *zwork, | |||||
| lapack_int lzwork, lapack_complex_float* work, | |||||
| lapack_int lwork, lapack_int* iwork, | lapack_int lwork, lapack_int* iwork, | ||||
| lapack_int liwork ) | 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 ) { | if( matrix_layout == LAPACK_COL_MAJOR ) { | ||||
| /* Call LAPACK function and adjust info */ | /* Call LAPACK function and adjust info */ | ||||
| LAPACK_cgedmdq( &jobs, &jobz, &jobr, &jobq, &jobt, &jobf, &whtsvd, &m, | 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 ) { | if( info < 0 ) { | ||||
| info = info - 1; | info = info - 1; | ||||
| } | } | ||||
| @@ -112,11 +112,11 @@ lapack_int LAPACKE_cgedmdq_work( int matrix_layout, char jobs, char jobz, | |||||
| return info; | return info; | ||||
| } | } | ||||
| /* Query optimal working array(s) size if requested */ | /* 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, | 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; | return (info < 0) ? (info - 1) : info; | ||||
| } | } | ||||
| /* Allocate memory for temporary array(s) */ | /* 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 ); | LAPACKE_cge_trans( matrix_layout, m, n, s, lds, s_t, lds_t ); | ||||
| /* Call LAPACK function and adjust info */ | /* Call LAPACK function and adjust info */ | ||||
| LAPACK_cgedmdq( &jobs, &jobz, &jobr, &jobq, &jobt, &jobf, &whtsvd, &m, | 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 ) { | if( info < 0 ) { | ||||
| info = info - 1; | info = info - 1; | ||||
| } | } | ||||
| @@ -32,11 +32,13 @@ | |||||
| #include "lapacke_utils.h" | #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) | double* w, lapack_int ldw, double* s, lapack_int lds) | ||||
| { | { | ||||
| lapack_int info = 0; | lapack_int info = 0; | ||||
| @@ -74,10 +76,10 @@ lapack_int LAPACKE_dgedmd( int matrix_layout, char jobs, char jobz, char jobf, | |||||
| } | } | ||||
| #endif | #endif | ||||
| /* Query optimal working array(s) size */ | /* 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 ) { | if( info != 0 ) { | ||||
| goto exit_level_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; | goto exit_level_1; | ||||
| } | } | ||||
| /* Call middle-level interface */ | /* 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 */ | /* Release memory and exit */ | ||||
| LAPACKE_free( iwork ); | LAPACKE_free( iwork ); | ||||
| exit_level_1: | exit_level_1: | ||||
| @@ -33,22 +33,23 @@ | |||||
| #include "lapacke_utils.h" | #include "lapacke_utils.h" | ||||
| lapack_int LAPACKE_dgedmd_work( int matrix_layout, char jobs, char jobz, | 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; | lapack_int info = 0; | ||||
| if( matrix_layout == LAPACK_COL_MAJOR ) { | if( matrix_layout == LAPACK_COL_MAJOR ) { | ||||
| /* Call LAPACK function and adjust info */ | /* 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 ) { | if( info < 0 ) { | ||||
| info = info - 1; | 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 */ | /* Query optimal working array(s) size if requested */ | ||||
| if( lwork == -1 ) { | 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; | return (info < 0) ? (info - 1) : info; | ||||
| } | } | ||||
| /* Allocate memory for temporary array(s) */ | /* 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, w, ldw, w_t, ldw_t ); | ||||
| LAPACKE_dge_trans( matrix_layout, m, n, s, lds, s_t, lds_t ); | LAPACKE_dge_trans( matrix_layout, m, n, s, lds, s_t, lds_t ); | ||||
| /* Call LAPACK function and adjust info */ | /* 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 ) { | if( info < 0 ) { | ||||
| info = info - 1; | 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, | char jobq, char jobt, char jobf, lapack_int whtsvd, | ||||
| lapack_int m, lapack_int n, double* f, lapack_int ldf, | lapack_int m, lapack_int n, double* f, lapack_int ldf, | ||||
| double* x, lapack_int ldx, double* y, lapack_int ldy, | 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, | double* reig, double* imeig, double* z, | ||||
| lapack_int ldz, double* res, double* b, lapack_int ldb, | lapack_int ldz, double* res, double* b, lapack_int ldb, | ||||
| double* v, lapack_int ldv, double* s, lapack_int lds) | 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, | lapack_int whtsvd, lapack_int m, lapack_int n, | ||||
| double* f, lapack_int ldf, double* x, | double* f, lapack_int ldf, double* x, | ||||
| lapack_int ldx, double* y, lapack_int ldy, | 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, | double* reig, double* imeig, double* z, | ||||
| lapack_int ldz, double* res, double* b, | lapack_int ldz, double* res, double* b, | ||||
| lapack_int ldb, double* v, lapack_int ldv, | 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 ) { | if( matrix_layout == LAPACK_COL_MAJOR ) { | ||||
| /* Call LAPACK function and adjust info */ | /* Call LAPACK function and adjust info */ | ||||
| LAPACK_dgedmdq( &jobs, &jobz, &jobr, &jobq, &jobt, &jobf, &whtsvd, &m, | 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 ); | work, &lwork, iwork, &liwork, &info ); | ||||
| if( info < 0 ) { | if( info < 0 ) { | ||||
| info = info - 1; | 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 */ | /* Query optimal working array(s) size if requested */ | ||||
| if( lwork == -1 || liwork == -1 ) { | if( lwork == -1 || liwork == -1 ) { | ||||
| LAPACK_dgedmdq( &jobs, &jobz, &jobr, &jobq, &jobt, &jobf, &whtsvd, &m, | 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 ); | work, &lwork, iwork, &liwork, &info ); | ||||
| return (info < 0) ? (info - 1) : 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 ); | LAPACKE_dge_trans( matrix_layout, m, n, s, lds, s_t, lds_t ); | ||||
| /* Call LAPACK function and adjust info */ | /* Call LAPACK function and adjust info */ | ||||
| LAPACK_dgedmdq( &jobs, &jobz, &jobr, &jobq, &jobt, &jobf, &whtsvd, &m, | 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 ); | work, &lwork, iwork, &liwork, &info ); | ||||
| if( info < 0 ) { | if( info < 0 ) { | ||||
| info = info - 1; | info = info - 1; | ||||
| @@ -32,12 +32,14 @@ | |||||
| #include "lapacke_utils.h" | #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 info = 0; | ||||
| lapack_int lwork = -1; | lapack_int lwork = -1; | ||||
| @@ -74,10 +76,10 @@ lapack_int LAPACKE_sgedmd( int matrix_layout, char jobs, char jobz, char jobf, | |||||
| } | } | ||||
| #endif | #endif | ||||
| /* Query optimal working array(s) size */ | /* 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 ) { | if( info != 0 ) { | ||||
| goto exit_level_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; | goto exit_level_1; | ||||
| } | } | ||||
| /* Call middle-level interface */ | /* 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 */ | /* Release memory and exit */ | ||||
| LAPACKE_free( iwork ); | LAPACKE_free( iwork ); | ||||
| exit_level_1: | exit_level_1: | ||||
| @@ -33,22 +33,23 @@ | |||||
| #include "lapacke_utils.h" | #include "lapacke_utils.h" | ||||
| lapack_int LAPACKE_sgedmd_work( int matrix_layout, char jobs, char jobz, | 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; | lapack_int info = 0; | ||||
| if( matrix_layout == LAPACK_COL_MAJOR ) { | if( matrix_layout == LAPACK_COL_MAJOR ) { | ||||
| /* Call LAPACK function and adjust info */ | /* 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 ) { | if( info < 0 ) { | ||||
| info = info - 1; | 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 */ | /* Query optimal working array(s) size if requested */ | ||||
| if( lwork == -1 ) { | 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; | return (info < 0) ? (info - 1) : info; | ||||
| } | } | ||||
| /* Allocate memory for temporary array(s) */ | /* 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, w, ldw, w_t, ldw_t ); | ||||
| LAPACKE_sge_trans( matrix_layout, m, n, s, lds, s_t, lds_t ); | LAPACKE_sge_trans( matrix_layout, m, n, s, lds, s_t, lds_t ); | ||||
| /* Call LAPACK function and adjust info */ | /* 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 ) { | if( info < 0 ) { | ||||
| info = info - 1; | 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, | char jobq, char jobt, char jobf, lapack_int whtsvd, | ||||
| lapack_int m, lapack_int n, float* f, lapack_int ldf, | lapack_int m, lapack_int n, float* f, lapack_int ldf, | ||||
| float* x, lapack_int ldx, float* y, lapack_int ldy, | 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, | float* reig, float* imeig, float* z, | ||||
| lapack_int ldz, float* res, float* b, lapack_int ldb, | lapack_int ldz, float* res, float* b, lapack_int ldb, | ||||
| float* v, lapack_int ldv, float* s, lapack_int lds) | 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, | lapack_int whtsvd, lapack_int m, lapack_int n, | ||||
| float* f, lapack_int ldf, float* x, | float* f, lapack_int ldf, float* x, | ||||
| lapack_int ldx, float* y, lapack_int ldy, | 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, | float* reig, float* imeig, float* z, | ||||
| lapack_int ldz, float* res, float* b, | lapack_int ldz, float* res, float* b, | ||||
| lapack_int ldb, float* v, lapack_int ldv, | 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 ) { | if( matrix_layout == LAPACK_COL_MAJOR ) { | ||||
| /* Call LAPACK function and adjust info */ | /* Call LAPACK function and adjust info */ | ||||
| LAPACK_sgedmdq( &jobs, &jobz, &jobr, &jobq, &jobt, &jobf, &whtsvd, &m, | 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 ); | work, &lwork, iwork, &liwork, &info ); | ||||
| if( info < 0 ) { | if( info < 0 ) { | ||||
| info = info - 1; | 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 */ | /* Query optimal working array(s) size if requested */ | ||||
| if( lwork == -1 || liwork == -1 ) { | if( lwork == -1 || liwork == -1 ) { | ||||
| LAPACK_sgedmdq( &jobs, &jobz, &jobr, &jobq, &jobt, &jobf, &whtsvd, &m, | 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 ); | work, &lwork, iwork, &liwork, &info ); | ||||
| return (info < 0) ? (info - 1) : 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 ); | LAPACKE_sge_trans( matrix_layout, m, n, s, lds, s_t, lds_t ); | ||||
| /* Call LAPACK function and adjust info */ | /* Call LAPACK function and adjust info */ | ||||
| LAPACK_sgedmdq( &jobs, &jobz, &jobr, &jobq, &jobt, &jobf, &whtsvd, &m, | 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 ); | work, &lwork, iwork, &liwork, &info ); | ||||
| if( info < 0 ) { | if( info < 0 ) { | ||||
| info = info - 1; | info = info - 1; | ||||
| @@ -32,24 +32,28 @@ | |||||
| #include "lapacke_utils.h" | #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* b, lapack_int ldb, | ||||
| lapack_complex_double* zw, lapack_int lzw, | |||||
| lapack_complex_double* w, lapack_int ldw, | lapack_complex_double* w, lapack_int ldw, | ||||
| lapack_complex_double* s, lapack_int lds) | lapack_complex_double* s, lapack_int lds) | ||||
| { | { | ||||
| lapack_int info = 0; | lapack_int info = 0; | ||||
| lapack_int lwork = -1; | lapack_int lwork = -1; | ||||
| lapack_int liwork = -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_int* iwork = NULL; | ||||
| lapack_complex_double work_query; | lapack_complex_double work_query; | ||||
| lapack_int iwork_query; | lapack_int iwork_query; | ||||
| lapack_int zwork_query; | |||||
| if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) { | if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) { | ||||
| LAPACKE_xerbla( "LAPACKE_zgedmd", -1 ); | LAPACKE_xerbla( "LAPACKE_zgedmd", -1 ); | ||||
| return -1; | return -1; | ||||
| @@ -78,36 +82,44 @@ lapack_int LAPACKE_zgedmd( int matrix_layout, char jobs, char jobz, char jobf, | |||||
| } | } | ||||
| #endif | #endif | ||||
| /* Query optimal working array(s) size */ | /* 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 ) { | if( info != 0 ) { | ||||
| goto exit_level_0; | goto exit_level_0; | ||||
| } | } | ||||
| lwork = LAPACK_Z2INT( work_query ); | lwork = LAPACK_Z2INT( work_query ); | ||||
| liwork = iwork_query; | liwork = iwork_query; | ||||
| lzwork = zwork_query; | |||||
| /* Allocate memory for work arrays */ | /* 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; | info = LAPACK_WORK_MEMORY_ERROR; | ||||
| goto exit_level_0; | 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 ); | iwork = (lapack_int*)LAPACKE_malloc( sizeof(lapack_int) * liwork ); | ||||
| if( iwork == NULL ) { | if( iwork == NULL ) { | ||||
| info = LAPACK_WORK_MEMORY_ERROR; | info = LAPACK_WORK_MEMORY_ERROR; | ||||
| goto exit_level_1; | |||||
| goto exit_level_2; | |||||
| } | } | ||||
| /* Call middle-level interface */ | /* 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 */ | /* Release memory and exit */ | ||||
| LAPACKE_free( iwork ); | LAPACKE_free( iwork ); | ||||
| exit_level_1: | |||||
| exit_level_2: | |||||
| LAPACKE_free( work ); | LAPACKE_free( work ); | ||||
| exit_level_1: | |||||
| LAPACKE_free( zwork ); | |||||
| exit_level_0: | exit_level_0: | ||||
| if( info == LAPACK_WORK_MEMORY_ERROR ) { | if( info == LAPACK_WORK_MEMORY_ERROR ) { | ||||
| LAPACKE_xerbla( "LAPACKE_zgedmd", info ); | LAPACKE_xerbla( "LAPACKE_zgedmd", info ); | ||||
| @@ -33,25 +33,27 @@ | |||||
| #include "lapacke_utils.h" | #include "lapacke_utils.h" | ||||
| lapack_int LAPACKE_zgedmd_work( int matrix_layout, char jobs, char jobz, | 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 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* b, lapack_int ldb, | ||||
| lapack_complex_double* w, lapack_int ldw, | lapack_complex_double* w, lapack_int ldw, | ||||
| lapack_complex_double* s, lapack_int lds, | 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* iwork, lapack_int liwork ) | ||||
| { | { | ||||
| lapack_int info = 0; | lapack_int info = 0; | ||||
| if( matrix_layout == LAPACK_COL_MAJOR ) { | if( matrix_layout == LAPACK_COL_MAJOR ) { | ||||
| /* Call LAPACK function and adjust info */ | /* 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 ) { | if( info < 0 ) { | ||||
| info = info - 1; | 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 */ | /* Query optimal working array(s) size if requested */ | ||||
| if( lwork == -1 ) { | 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; | return (info < 0) ? (info - 1) : info; | ||||
| } | } | ||||
| /* Allocate memory for temporary array(s) */ | /* 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, w, ldw, w_t, ldw_t ); | ||||
| LAPACKE_zge_trans( matrix_layout, m, n, s, lds, s_t, lds_t ); | LAPACKE_zge_trans( matrix_layout, m, n, s, lds, s_t, lds_t ); | ||||
| /* Call LAPACK function and adjust info */ | /* 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 ) { | if( info < 0 ) { | ||||
| info = info - 1; | info = info - 1; | ||||
| } | } | ||||
| @@ -37,20 +37,22 @@ 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 m, lapack_int n, lapack_complex_double* f, | ||||
| lapack_int ldf, lapack_complex_double* x, | lapack_int ldf, lapack_complex_double* x, | ||||
| lapack_int ldx, lapack_complex_double* y, | 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* 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 ldb, lapack_complex_double* v, | ||||
| lapack_int ldv, lapack_complex_double* s, lapack_int lds) | lapack_int ldv, lapack_complex_double* s, lapack_int lds) | ||||
| { | { | ||||
| lapack_int info = 0; | lapack_int info = 0; | ||||
| lapack_int lwork = -1; | lapack_int lwork = -1; | ||||
| lapack_int liwork = -1; | lapack_int liwork = -1; | ||||
| lapack_int lzwork = -1; | |||||
| lapack_complex_double* zwork = NULL; | |||||
| lapack_complex_double* work = NULL; | lapack_complex_double* work = NULL; | ||||
| lapack_int* iwork = NULL; | lapack_int* iwork = NULL; | ||||
| lapack_complex_double work_query; | lapack_complex_double work_query; | ||||
| lapack_complex_double zwork_query; | |||||
| lapack_int iwork_query; | lapack_int iwork_query; | ||||
| if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) { | if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) { | ||||
| LAPACKE_xerbla( "LAPACKE_cgedmdq", -1 ); | LAPACKE_xerbla( "LAPACKE_cgedmdq", -1 ); | ||||
| @@ -85,36 +87,44 @@ lapack_int LAPACKE_zgedmdq( int matrix_layout, char jobs, char jobz, char jobr, | |||||
| /* Query optimal working array(s) size */ | /* Query optimal working array(s) size */ | ||||
| info = LAPACKE_zgedmdq_work( matrix_layout, jobs, jobz, jobr, jobq, jobt, | info = LAPACKE_zgedmdq_work( matrix_layout, jobs, jobz, jobr, jobq, jobt, | ||||
| jobf, whtsvd, m, n, f, ldf, x, ldx, y, ldy, | 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 ) { | if( info != 0 ) { | ||||
| goto exit_level_0; | goto exit_level_0; | ||||
| } | } | ||||
| lwork = LAPACK_Z2INT( work_query ); | lwork = LAPACK_Z2INT( work_query ); | ||||
| lzwork = LAPACK_Z2INT( zwork_query ); | |||||
| liwork = iwork_query; | liwork = iwork_query; | ||||
| /* Allocate memory for work arrays */ | /* Allocate memory for work arrays */ | ||||
| zwork = (lapack_complex_double*)LAPACKE_malloc( sizeof(lapack_complex_double) * lzwork ); | |||||
| if( zwork == NULL ) { | |||||
| info = LAPACK_WORK_MEMORY_ERROR; | |||||
| goto exit_level_0; | |||||
| } | |||||
| work = (lapack_complex_double*)LAPACKE_malloc( sizeof(lapack_complex_double) * lwork ); | work = (lapack_complex_double*)LAPACKE_malloc( sizeof(lapack_complex_double) * lwork ); | ||||
| if( work == NULL ) { | if( work == NULL ) { | ||||
| info = LAPACK_WORK_MEMORY_ERROR; | info = LAPACK_WORK_MEMORY_ERROR; | ||||
| goto exit_level_0; | |||||
| goto exit_level_1; | |||||
| } | } | ||||
| iwork = (lapack_int*)LAPACKE_malloc( sizeof(lapack_int) * liwork ); | iwork = (lapack_int*)LAPACKE_malloc( sizeof(lapack_int) * liwork ); | ||||
| if( iwork == NULL ) { | if( iwork == NULL ) { | ||||
| info = LAPACK_WORK_MEMORY_ERROR; | info = LAPACK_WORK_MEMORY_ERROR; | ||||
| goto exit_level_1; | |||||
| goto exit_level_2; | |||||
| } | } | ||||
| /* Call middle-level interface */ | /* Call middle-level interface */ | ||||
| info = LAPACKE_zgedmdq_work( matrix_layout, jobs, jobz, jobr, jobq, jobt, | info = LAPACKE_zgedmdq_work( matrix_layout, jobs, jobz, jobr, jobq, jobt, | ||||
| jobf, whtsvd, m, n, f, ldf, x, ldx, y, ldy, | 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 */ | /* Release memory and exit */ | ||||
| LAPACKE_free( iwork ); | LAPACKE_free( iwork ); | ||||
| exit_level_1: | |||||
| exit_level_2: | |||||
| LAPACKE_free( work ); | LAPACKE_free( work ); | ||||
| exit_level_1: | |||||
| LAPACKE_free( zwork ); | |||||
| exit_level_0: | exit_level_0: | ||||
| if( info == LAPACK_WORK_MEMORY_ERROR ) { | if( info == LAPACK_WORK_MEMORY_ERROR ) { | ||||
| LAPACKE_xerbla( "LAPACKE_zgedmdq", info ); | 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* f, lapack_int ldf, | ||||
| lapack_complex_double* x, lapack_int ldx, | lapack_complex_double* x, lapack_int ldx, | ||||
| lapack_complex_double* y, lapack_int ldy, | 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_complex_double* z, | ||||
| lapack_int ldz, lapack_complex_double* res, | |||||
| lapack_int ldz, double* res, | |||||
| lapack_complex_double* b, | lapack_complex_double* b, | ||||
| lapack_int ldb, lapack_complex_double* v, | lapack_int ldb, lapack_complex_double* v, | ||||
| lapack_int ldv, lapack_complex_double* s, | lapack_int ldv, lapack_complex_double* s, | ||||
| lapack_int lds, lapack_complex_double* work, | |||||
| lapack_int lds, lapack_complex_double* zwork, | |||||
| lapack_int lzwork, lapack_complex_double* work, | |||||
| lapack_int lwork, lapack_int* iwork, | lapack_int lwork, lapack_int* iwork, | ||||
| lapack_int liwork ) | 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 ) { | if( matrix_layout == LAPACK_COL_MAJOR ) { | ||||
| /* Call LAPACK function and adjust info */ | /* Call LAPACK function and adjust info */ | ||||
| LAPACK_zgedmdq( &jobs, &jobz, &jobr, &jobq, &jobt, &jobf, &whtsvd, &m, | 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 ) { | if( info < 0 ) { | ||||
| info = info - 1; | 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 */ | /* Query optimal working array(s) size if requested */ | ||||
| if( lwork == -1 || liwork == -1 ) { | if( lwork == -1 || liwork == -1 ) { | ||||
| LAPACK_zgedmdq( &jobs, &jobz, &jobr, &jobq, &jobt, &jobf, &whtsvd, &m, | 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; | return (info < 0) ? (info - 1) : info; | ||||
| } | } | ||||
| /* Allocate memory for temporary array(s) */ | /* 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 ); | LAPACKE_zge_trans( matrix_layout, m, n, s, lds, s_t, lds_t ); | ||||
| /* Call LAPACK function and adjust info */ | /* Call LAPACK function and adjust info */ | ||||
| LAPACK_zgedmdq( &jobs, &jobz, &jobr, &jobq, &jobt, &jobf, &whtsvd, &m, | 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 ) { | if( info < 0 ) { | ||||
| info = info - 1; | info = info - 1; | ||||
| } | } | ||||