40{
72 7) ) ) ) ) );
74 double* work = NULL;
78 return -1;
79 }
80#ifndef LAPACK_DISABLE_NAN_CHECK
82
84 return -10;
85 }
86 }
87#endif
88
90 if( iwork == NULL ) {
92 goto exit_level_0;
93 }
94 lwork =
MAX3( lwork, 7, 2*m+n );
95 {
99 if( !want_u && !want_v && !want_sce ) lwork =
MAX( lwork, 4*n+1 );
100 if( !want_u && !want_v && want_sce ) lwork =
MAX( lwork, n*n+4*n );
101 if( !want_u && want_v ) lwork =
MAX( lwork, 4*n+1 );
102 if( want_u && !want_v ) lwork =
MAX( lwork, 4*n+1 );
104 if( want_u &&
LAPACKE_lsame( jobv,
'j' ) ) lwork =
MAX3( lwork, 4*n+n*n, 2*n+n*n+6 );
105 }
107 if( work == NULL ) {
109 goto exit_level_1;
110 }
111
113 jobp, m, n, a, lda, sva, u, ldu, v, ldv, work,
114 lwork, iwork );
115
116 for( i=0; i<7; i++ ) {
117 stat[i] = work[i];
118 }
119 for( i=0; i<3; i++ ) {
120 istat[i] = iwork[i];
121 }
122
124exit_level_1:
126exit_level_0:
129 }
130 return info;
131}
#define LAPACK_WORK_MEMORY_ERROR
lapack_int LAPACKE_dgejsv_work(int matrix_layout, char joba, char jobu, char jobv, char jobr, char jobt, char jobp, lapack_int m, lapack_int n, double *a, lapack_int lda, double *sva, double *u, lapack_int ldu, double *v, lapack_int ldv, double *work, lapack_int lwork, lapack_int *iwork)
int LAPACKE_get_nancheck(void)
#define LAPACKE_malloc(size)
lapack_logical LAPACKE_lsame(char ca, char cb)
void LAPACKE_xerbla(const char *name, lapack_int info)
lapack_logical LAPACKE_dge_nancheck(int matrix_layout, lapack_int m, lapack_int n, const double *a, lapack_int lda)