|
33 | 33 | #include "lapacke_utils.h" |
34 | 34 |
|
35 | 35 | lapack_int LAPACKE_cgedmd_work( int matrix_layout, char jobs, char jobz, |
36 | | - char jobf, lapack_int whtsvd, lapack_int m, |
| 36 | + char jobr, char jobf, lapack_int whtsvd, lapack_int m, |
37 | 37 | lapack_int n, lapack_complex_float* x, lapack_int ldx, |
38 | | - lapack_complex_float* y, lapack_int ldy, lapack_int k, |
39 | | - lapack_complex_float* reig, lapack_complex_float* imeig, |
| 38 | + lapack_complex_float* y, lapack_int ldy, lapack_int nrnk, |
| 39 | + float* tol, lapack_int k, lapack_complex_float* eigs, |
40 | 40 | lapack_complex_float* z, lapack_int ldz, |
41 | | - lapack_complex_float* res, lapack_complex_float* b, |
| 41 | + float* res, lapack_complex_float* b, |
42 | 42 | lapack_int ldb, lapack_complex_float* w, |
43 | 43 | lapack_int ldw, lapack_complex_float* s, lapack_int lds, |
44 | | - lapack_complex_float* work, lapack_int lwork, |
| 44 | + lapack_complex_float* zwork, lapack_int lzwork, |
| 45 | + float* work, lapack_int lwork, |
45 | 46 | lapack_int* iwork, lapack_int liwork ) |
46 | 47 | { |
47 | 48 | lapack_int info = 0; |
48 | 49 | if( matrix_layout == LAPACK_COL_MAJOR ) { |
49 | 50 | /* Call LAPACK function and adjust info */ |
50 | | - LAPACK_cgedmd( &jobs, &jobz, &jobf, &whtsvd, &m, &n, x, &ldx, y, &ldy, |
51 | | - &k, reig, imeig, z, &ldz, res, b, &ldb, w, &ldw, s, &lds, |
52 | | - work, &lwork, iwork, &liwork, &info ); |
| 51 | + LAPACK_cgedmd( &jobs, &jobz, &jobr, &jobf, &whtsvd, &m, &n, x, &ldx, y, |
| 52 | + &ldy, &nrnk, tol, &k, eigs, z, &ldz, res, b, &ldb, w, &ldw, |
| 53 | + s, &lds, zwork, &lzwork, work, &lwork, iwork, &liwork, |
| 54 | + &info ); |
53 | 55 | if( info < 0 ) { |
54 | 56 | info = info - 1; |
55 | 57 | } |
@@ -99,9 +101,10 @@ lapack_int LAPACKE_cgedmd_work( int matrix_layout, char jobs, char jobz, |
99 | 101 | } |
100 | 102 | /* Query optimal working array(s) size if requested */ |
101 | 103 | if( lwork == -1 ) { |
102 | | - LAPACK_cgedmd( &jobs, &jobz, &jobf, &whtsvd, &m, &n, x, &ldx, y, &ldy, |
103 | | - &k, reig, imeig, z, &ldz, res, b, &ldb, w, &ldw, s, &lds, |
104 | | - work, &lwork, iwork, &liwork, &info ); |
| 104 | + LAPACK_cgedmd( &jobs, &jobz, &jobr, &jobf, &whtsvd, &m, &n, x, |
| 105 | + &ldx, y, &ldy, &nrnk, tol, &k, eigs, z, &ldz, res, b, |
| 106 | + &ldb, w, &ldw, s, &lds, zwork, &lzwork, |
| 107 | + work, &lwork, iwork, &liwork, &info ); |
105 | 108 | return (info < 0) ? (info - 1) : info; |
106 | 109 | } |
107 | 110 | /* Allocate memory for temporary array(s) */ |
@@ -143,9 +146,10 @@ lapack_int LAPACKE_cgedmd_work( int matrix_layout, char jobs, char jobz, |
143 | 146 | LAPACKE_cge_trans( matrix_layout, m, n, w, ldw, w_t, ldw_t ); |
144 | 147 | LAPACKE_cge_trans( matrix_layout, m, n, s, lds, s_t, lds_t ); |
145 | 148 | /* Call LAPACK function and adjust info */ |
146 | | - LAPACK_cgedmd( &jobs, &jobz, &jobf, &whtsvd, &m, &n, x_t, &ldx_t, y_t, |
147 | | - &ldy_t, &k, reig, imeig, z_t, &ldz_t, res, b_t, &ldb_t, |
148 | | - w_t, &ldw_t, s_t, &lds_t, work, &lwork, iwork, &liwork, &info ); |
| 149 | + LAPACK_cgedmd( &jobs, &jobz, &jobr, &jobf, &whtsvd, &m, &n, x_t, |
| 150 | + &ldx_t, y_t, &ldy_t, &nrnk, tol, &k, eigs, z_t, &ldz_t, |
| 151 | + res, b_t, &ldb_t, w_t, &ldw_t, s_t, &lds_t, zwork, |
| 152 | + &lzwork, work, &lwork, iwork, &liwork, &info ); |
149 | 153 | if( info < 0 ) { |
150 | 154 | info = info - 1; |
151 | 155 | } |
|
0 commit comments