Go to the source code of this file.
|
subroutine | zlatb4 (PATH, IMAT, M, N, TYPE, KL, KU, ANORM, MODE, CNDNUM, DIST) |
| ZLATB4 More...
|
|
subroutine zlatb4 |
( |
character*3 |
PATH, |
|
|
integer |
IMAT, |
|
|
integer |
M, |
|
|
integer |
N, |
|
|
character |
TYPE, |
|
|
integer |
KL, |
|
|
integer |
KU, |
|
|
double precision |
ANORM, |
|
|
integer |
MODE, |
|
|
double precision |
CNDNUM, |
|
|
character |
DIST |
|
) |
| |
ZLATB4
- Purpose:
ZLATB4 sets parameters for the matrix generator based on the type of
matrix to be generated.
- Parameters
-
[in] | PATH | PATH is CHARACTER*3
The LAPACK path name. |
[in] | IMAT | IMAT is INTEGER
An integer key describing which matrix to generate for this
path. |
[in] | M | M is INTEGER
The number of rows in the matrix to be generated. |
[in] | N | N is INTEGER
The number of columns in the matrix to be generated. |
[out] | TYPE | TYPE is CHARACTER*1
The type of the matrix to be generated:
= 'S': symmetric matrix
= 'H': Hermitian matrix
= 'P': Hermitian positive (semi)definite matrix
= 'N': nonsymmetric matrix |
[out] | KL | KL is INTEGER
The lower band width of the matrix to be generated. |
[out] | KU | KU is INTEGER
The upper band width of the matrix to be generated. |
[out] | ANORM | ANORM is DOUBLE PRECISION
The desired norm of the matrix to be generated. The diagonal
matrix of singular values or eigenvalues is scaled by this
value. |
[out] | MODE | MODE is INTEGER
A key indicating how to choose the vector of eigenvalues. |
[out] | CNDNUM | CNDNUM is DOUBLE PRECISION
The desired condition number. |
[out] | DIST | DIST is CHARACTER*1
The type of distribution to be used by the random number
generator. |
- Author
- Univ. of Tennessee
-
Univ. of California Berkeley
-
Univ. of Colorado Denver
-
NAG Ltd.
- Date
- November 2013
Definition at line 123 of file zlatb4.f.
132 INTEGER imat, kl, ku, m, mode, n
133 DOUBLE PRECISION anorm, cndnum
139 DOUBLE PRECISION shrink, tenth
140 parameter( shrink = 0.25d0, tenth = 0.1d+0 )
142 parameter( one = 1.0d+0 )
144 parameter( two = 2.0d+0 )
150 DOUBLE PRECISION badc1, badc2, eps, large, small
158 INTRINSIC abs, max, sqrt
164 SAVE eps, small, large, badc1, badc2, first
167 DATA first / .true. /
175 eps =
dlamch(
'Precision' )
177 badc1 = sqrt( badc2 )
178 small =
dlamch(
'Safe minimum' )
184 CALL dlabad( small, large )
185 small = shrink*( small / eps )
199 IF(
lsamen( 2, c2,
'QR' ) .OR.
lsamen( 2, c2,
'LQ' ) .OR.
200 $
lsamen( 2, c2,
'QL' ) .OR.
lsamen( 2, c2,
'RQ' ) )
THEN
211 ELSE IF( imat.EQ.2 )
THEN
214 ELSE IF( imat.EQ.3 )
THEN
226 ELSE IF( imat.EQ.6 )
THEN
234 ELSE IF( imat.EQ.8 )
THEN
240 ELSE IF(
lsamen( 2, c2,
'GE' ) )
THEN
253 ELSE IF( imat.EQ.2 )
THEN
256 ELSE IF( imat.EQ.3 )
THEN
268 ELSE IF( imat.EQ.9 )
THEN
274 IF( imat.EQ.10 )
THEN
276 ELSE IF( imat.EQ.11 )
THEN
282 ELSE IF(
lsamen( 2, c2,
'GB' ) )
THEN
294 ELSE IF( imat.EQ.6 )
THEN
302 ELSE IF( imat.EQ.8 )
THEN
308 ELSE IF(
lsamen( 2, c2,
'GT' ) )
THEN
329 ELSE IF( imat.EQ.4 )
THEN
335 IF( imat.EQ.5 .OR. imat.EQ.11 )
THEN
337 ELSE IF( imat.EQ.6 .OR. imat.EQ.12 )
THEN
343 ELSE IF(
lsamen( 2, c2,
'PO' ) .OR.
lsamen( 2, c2,
'PP' ) .OR.
345 $
lsamen( 2, c2,
'SY' ) .OR.
lsamen( 2, c2,
'SP' ) )
THEN
367 ELSE IF( imat.EQ.7 )
THEN
375 ELSE IF( imat.EQ.9 )
THEN
381 ELSE IF(
lsamen( 2, c2,
'PB' ) )
THEN
393 ELSE IF( imat.EQ.6 )
THEN
401 ELSE IF( imat.EQ.8 )
THEN
407 ELSE IF(
lsamen( 2, c2,
'PT' ) )
THEN
424 ELSE IF( imat.EQ.4 )
THEN
430 IF( imat.EQ.5 .OR. imat.EQ.11 )
THEN
432 ELSE IF( imat.EQ.6 .OR. imat.EQ.12 )
THEN
438 ELSE IF(
lsamen( 2, c2,
'TR' ) .OR.
lsamen( 2, c2,
'TP' ) )
THEN
449 IF( mat.EQ.1 .OR. mat.EQ.7 )
THEN
452 ELSE IF( imat.LT.0 )
THEN
462 IF( mat.EQ.3 .OR. mat.EQ.9 )
THEN
464 ELSE IF( mat.EQ.4 .OR. mat.EQ.10 )
THEN
472 ELSE IF( mat.EQ.6 )
THEN
478 ELSE IF(
lsamen( 2, c2,
'TB' ) )
THEN
488 IF( imat.EQ.2 .OR. imat.EQ.8 )
THEN
490 ELSE IF( imat.EQ.3 .OR. imat.EQ.9 )
THEN
498 ELSE IF( imat.EQ.5 )
THEN
subroutine dlabad(SMALL, LARGE)
DLABAD
logical function lsamen(N, CA, CB)
LSAMEN
double precision function dlamch(CMACH)
DLAMCH