40{
43
44 LAPACK_sgesdd( &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 float* a_t = NULL;
63 float* u_t = NULL;
64 float* 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_sgesdd( &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 = (float*)
97 if( u_t == NULL ) {
99 goto exit_level_1;
100 }
101 }
105 if( vt_t == NULL ) {
107 goto exit_level_2;
108 }
109 }
110
112
114 &ldvt_t, work, &lwork, iwork, &info );
115 if( info < 0 ) {
116 info = info - 1;
117 }
118
123 u, ldu );
124 }
128 ldvt );
129 }
130
134 }
135exit_level_2:
139 }
140exit_level_1:
142exit_level_0:
145 }
146 } else {
147 info = -1;
149 }
150 return info;
151}
#define LAPACK_sgesdd(...)
#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_sge_trans(int matrix_layout, lapack_int m, lapack_int n, const float *in, lapack_int ldin, float *out, lapack_int ldout)