40{
43
44 LAPACK_dgesdd( &jobz, &m, &
n, a, &lda, s, u, &ldu, vt, &ldvt, work,
45 &lwork, iwork, &info );
46 if( info < 0 ) {
47 info = info - 1;
48 }
62 double* a_t = NULL;
63 double* u_t = NULL;
64 double* vt_t = NULL;
65
67 info = -6;
69 return info;
70 }
71 if( ldu < ncols_u ) {
72 info = -9;
74 return info;
75 }
77 info = -11;
79 return info;
80 }
81
82 if( lwork == -1 ) {
83 LAPACK_dgesdd( &jobz, &m, &
n, a, &lda_t, s, u, &ldu_t, vt, &ldvt_t,
84 work, &lwork, iwork, &info );
85 return (info < 0) ? (info - 1) : info;
86 }
87
89 if( a_t == NULL ) {
91 goto exit_level_0;
92 }
95 u_t = (double*)
97 if( u_t == NULL ) {
99 goto exit_level_1;
100 }
101 }
104 vt_t = (double*)
106 if( vt_t == NULL ) {
108 goto exit_level_2;
109 }
110 }
111
113
115 &ldvt_t, work, &lwork, iwork, &info );
116 if( info < 0 ) {
117 info = info - 1;
118 }
119
124 u, ldu );
125 }
129 ldvt );
130 }
131
135 }
136exit_level_2:
140 }
141exit_level_1:
143exit_level_0:
146 }
147 } else {
148 info = -1;
150 }
151 return info;
152}
#define LAPACK_dgesdd(...)
#define LAPACKE_malloc(size)
#define LAPACK_TRANSPOSE_MEMORY_ERROR
lapack_logical LAPACKE_lsame(char ca, char cb)
void LAPACKE_xerbla(const char *name, lapack_int info)
void LAPACKE_dge_trans(int matrix_layout, lapack_int m, lapack_int n, const double *in, lapack_int ldin, double *out, lapack_int ldout)