Fix LAPACKE interfaces for ?GEDMD/?GEDMDQ

This commit is contained in:
Martin Kroeker 2023-07-09 18:04:39 +02:00 committed by GitHub
parent 70f2328a02
commit a0ae28d06c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 264 additions and 203 deletions

View File

@ -32,21 +32,25 @@
#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 zwork_query;
lapack_complex_float work_query;
lapack_int iwork_query;
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
/* 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 );

View File

@ -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;
}

View File

@ -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 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_int lzwork = -1;
lapack_complex_float* zwork = NULL;
lapack_complex_float* work = NULL;
lapack_int* iwork = NULL;
lapack_complex_float zwork_query;
lapack_complex_float work_query;
lapack_int iwork_query;
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 */
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 */
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 );
if( work == NULL ) {
info = LAPACK_WORK_MEMORY_ERROR;
goto exit_level_0;
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 );

View File

@ -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, lapack_complex_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;
}

View File

@ -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:

View File

@ -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;
}

View File

@ -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)

View File

@ -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;

View File

@ -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:

View File

@ -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;
}

View File

@ -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)

View File

@ -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;

View File

@ -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;
lapack_int iwork_query;
lapack_int 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 = 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 );

View File

@ -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;
}

View File

@ -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 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_int lzwork = -1;
lapack_complex_double* zwork = NULL;
lapack_complex_double* work = NULL;
lapack_int* iwork = NULL;
lapack_complex_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 );
@ -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 */
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 );
if( work == NULL ) {
info = LAPACK_WORK_MEMORY_ERROR;
goto exit_level_0;
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 );

View File

@ -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, lapack_complex_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;
}