138 if (plasma == NULL) {
153 MT = (M%NB==0) ? (M/NB) : (M/NB+1);
154 NT = (N%NB==0) ? (N/NB) : (N/NB+1);
162 plasma_error(
"PLASMA_zgesvd",
"illegal value of jobvt");
173 if (LDA <
max(1, M)) {
186 ( descT->
m != MT*IB ) || (descT->
n != NT*NB) ) {
191 if (
min(M, N) == 0) {
196 plasma_error(
"PLASMA_zgesvd",
"computing the singular vectors is not supported in this version");
200 plasma_error(
"PLASMA_zgesvd",
"computing the singular vectors is not supported in this version");
207 plasma_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, N,
plasma_desc_mat_free(&(descA)) );
209 plasma_zooplap2tile( descU, U, NB, NB, LDU, M, 0, 0, M, M,
plasma_desc_mat_free(&(descA));
plasma_desc_mat_free(&(descU)));
212 plasma_zooplap2tile( descVT, VT, NB, NB, LDVT, N, 0, 0, N, N,
plasma_desc_mat_free(&(descA));
plasma_desc_mat_free(&(descU));
plasma_desc_mat_free(&(descVT)));
254 status = sequence->
status;
342 if (plasma == NULL) {
349 status = sequence->
status;
390 int minMN =
min(descA.
m, descA.
n);
400 plasma_error(
"PLASMA_zgesvd_Tile_Async",
"illegal value of jobu");
404 plasma_error(
"PLASMA_zgesvd_Tile_Async",
"illegal value of jobvt");
407 if (plasma == NULL) {
411 if (sequence == NULL) {
415 if (request == NULL) {
427 plasma_error(
"PLASMA_zgesvd_Tile_Async",
"invalid first descriptor");
431 plasma_error(
"PLASMA_zgesvd_Tile_Async",
"invalid second descriptor");
435 plasma_error(
"PLASMA_zgesvd_Tile_Async",
"invalid third descriptor");
439 plasma_error(
"PLASMA_zgesvd_Tile_Async",
"invalid fourth descriptor");
443 if (descA.
nb != descA.
mb) {
444 plasma_error(
"PLASMA_zgesvd_Tile_Async",
"only square tiles supported");
448 plasma_error(
"PLASMA_zgesvd_Tile_Async",
"only square tiles supported");
452 plasma_error(
"PLASMA_zgesvd_Tile_Async",
"computing the singular vectors is not supported in this version");
577 if (descA.
m >= descA.
n)
580 minMN, NCVT, NRU, NCC,
582 NULL, 1, NULL, 1, NULL, 1 );
586 minMN, NCVT, NRU, NCC,
588 NULL, 1, NULL, 1, NULL, 1 );