version 1.2, 2010/04/21 13:45:33
|
version 1.9, 2011/07/22 07:38:17
|
Line 1
|
Line 1
|
SUBROUTINE ZLALSD( UPLO, SMLSIZ, N, NRHS, D, E, B, LDB, RCOND, |
SUBROUTINE ZLALSD( UPLO, SMLSIZ, N, NRHS, D, E, B, LDB, RCOND, |
$ RANK, WORK, RWORK, IWORK, INFO ) |
$ RANK, WORK, RWORK, IWORK, INFO ) |
* |
* |
* -- LAPACK routine (version 3.2) -- |
* -- LAPACK routine (version 3.3.1) -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* November 2006 |
* -- April 2011 -- |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
CHARACTER UPLO |
CHARACTER UPLO |
Line 89
|
Line 89
|
* (N * NRHS). |
* (N * NRHS). |
* |
* |
* RWORK (workspace) DOUBLE PRECISION array, dimension at least |
* RWORK (workspace) DOUBLE PRECISION array, dimension at least |
* (9*N + 2*N*SMLSIZ + 8*N*NLVL + 3*SMLSIZ*NRHS + (SMLSIZ+1)**2), |
* (9*N + 2*N*SMLSIZ + 8*N*NLVL + 3*SMLSIZ*NRHS + |
|
* MAX( (SMLSIZ+1)**2, N*(1+NRHS) + 2*NRHS ), |
* where |
* where |
* NLVL = MAX( 0, INT( LOG_2( MIN( M,N )/(SMLSIZ+1) ) ) + 1 ) |
* NLVL = MAX( 0, INT( LOG_2( MIN( M,N )/(SMLSIZ+1) ) ) + 1 ) |
* |
* |
Line 99
|
Line 100
|
* INFO (output) INTEGER |
* INFO (output) INTEGER |
* = 0: successful exit. |
* = 0: successful exit. |
* < 0: if INFO = -i, the i-th argument had an illegal value. |
* < 0: if INFO = -i, the i-th argument had an illegal value. |
* > 0: The algorithm failed to compute an singular value while |
* > 0: The algorithm failed to compute a singular value while |
* working on the submatrix lying in rows and columns |
* working on the submatrix lying in rows and columns |
* INFO/(N+1) through MOD(INFO,N+1). |
* INFO/(N+1) through MOD(INFO,N+1). |
* |
* |
Line 244
|
Line 245
|
END IF |
END IF |
* |
* |
* In the real version, B is passed to DLASDQ and multiplied |
* In the real version, B is passed to DLASDQ and multiplied |
* internally by Q'. Here B is complex and that product is |
* internally by Q**H. Here B is complex and that product is |
* computed below in two steps (real and imaginary parts). |
* computed below in two steps (real and imaginary parts). |
* |
* |
J = IRWB - 1 |
J = IRWB - 1 |
Line 289
|
Line 290
|
* |
* |
* Since B is complex, the following call to DGEMM is performed |
* Since B is complex, the following call to DGEMM is performed |
* in two steps (real and imaginary parts). That is for V * B |
* in two steps (real and imaginary parts). That is for V * B |
* (in the real version of the code V' is stored in WORK). |
* (in the real version of the code V**H is stored in WORK). |
* |
* |
* CALL DGEMM( 'T', 'N', N, NRHS, N, ONE, WORK, N, B, LDB, ZERO, |
* CALL DGEMM( 'T', 'N', N, NRHS, N, ONE, WORK, N, B, LDB, ZERO, |
* $ WORK( NWORK ), N ) |
* $ WORK( NWORK ), N ) |
Line 430
|
Line 431
|
END IF |
END IF |
* |
* |
* In the real version, B is passed to DLASDQ and multiplied |
* In the real version, B is passed to DLASDQ and multiplied |
* internally by Q'. Here B is complex and that product is |
* internally by Q**H. Here B is complex and that product is |
* computed below in two steps (real and imaginary parts). |
* computed below in two steps (real and imaginary parts). |
* |
* |
J = IRWB - 1 |
J = IRWB - 1 |