90 SUBROUTINE zqrt13( SCALE, M, N, A, LDA, NORMA, ISEED )
97 INTEGER LDA, M, N, SCALE
98 DOUBLE PRECISION NORMA
102 COMPLEX*16 A( LDA, * )
109 parameter( one = 1.0d0 )
113 DOUBLE PRECISION BIGNUM, SMLNUM
116 DOUBLE PRECISION DLAMCH, DZASUM, ZLANGE
117 EXTERNAL dlamch, dzasum, zlange
123 INTRINSIC dble, dcmplx, sign
126 DOUBLE PRECISION DUMMY( 1 )
130 IF( m.LE.0 .OR. n.LE.0 )
136 CALL zlarnv( 2, iseed, m, a( 1, j ) )
138 a( j, j ) = a( j, j ) + dcmplx( sign( dzasum( m, a( 1, j ),
139 $ 1 ), dble( a( j, j ) ) ) )
145 IF( scale.NE.1 )
THEN
146 norma = zlange(
'Max', m, n, a, lda, dummy )
147 smlnum = dlamch(
'Safe minimum' )
148 bignum = one / smlnum
149 CALL dlabad( smlnum, bignum )
150 smlnum = smlnum / dlamch(
'Epsilon' )
151 bignum = one / smlnum
153 IF( scale.EQ.2 )
THEN
157 CALL zlascl(
'General', 0, 0, norma, bignum, m, n, a, lda,
159 ELSE IF( scale.EQ.3 )
THEN
163 CALL zlascl(
'General', 0, 0, norma, smlnum, m, n, a, lda,
168 norma = zlange(
'One-norm', m, n, a, lda, dummy )
subroutine dlabad(SMALL, LARGE)
DLABAD
subroutine zqrt13(SCALE, M, N, A, LDA, NORMA, ISEED)
ZQRT13
subroutine zlascl(TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO)
ZLASCL multiplies a general rectangular matrix by a real scalar defined as cto/cfrom.
subroutine zlarnv(IDIST, ISEED, N, X)
ZLARNV returns a vector of random numbers from a uniform or normal distribution.