40{
43
44 size_t lrwork;
46 double* rwork = NULL;
51 return -1;
52 }
53#ifndef LAPACK_DISABLE_NAN_CHECK
55
57 return -5;
58 }
59 }
60#endif
61
64 } else {
66 }
67
70 if( iwork == NULL ) {
72 goto exit_level_0;
73 }
75 if( rwork == NULL ) {
77 goto exit_level_1;
78 }
79
80 info =
LAPACKE_zgesdd_work( matrix_layout, jobz, m,
n, a, lda, s, u, ldu, vt,
81 ldvt, &work_query, lwork, rwork, iwork );
82 if( info != 0 ) {
83 goto exit_level_2;
84 }
86
89 if( work == NULL ) {
91 goto exit_level_2;
92 }
93
94 info =
LAPACKE_zgesdd_work( matrix_layout, jobz, m,
n, a, lda, s, u, ldu, vt,
95 ldvt, work, lwork, rwork, iwork );
96
98exit_level_2:
100exit_level_1:
102exit_level_0:
105 }
106 return info;
107}
#define lapack_complex_double
#define LAPACK_WORK_MEMORY_ERROR
int LAPACKE_get_nancheck(void)
lapack_int LAPACKE_zgesdd_work(int matrix_layout, char jobz, lapack_int m, lapack_int n, lapack_complex_double *a, lapack_int lda, double *s, lapack_complex_double *u, lapack_int ldu, lapack_complex_double *vt, lapack_int ldvt, lapack_complex_double *work, lapack_int lwork, double *rwork, lapack_int *iwork)
#define LAPACKE_malloc(size)
lapack_logical LAPACKE_lsame(char ca, char cb)
void LAPACKE_xerbla(const char *name, lapack_int info)
lapack_logical LAPACKE_zge_nancheck(int matrix_layout, lapack_int m, lapack_int n, const lapack_complex_double *a, lapack_int lda)