1 SUBROUTINE dlatm1( MODE, COND, IRSIGN, IDIST, ISEED, D, N, INFO )
8 INTEGER IDIST, INFO, IRSIGN, MODE, N
13 DOUBLE PRECISION D( * )
93 parameter( one = 1.0d0 )
95 parameter( half = 0.5d0 )
99 DOUBLE PRECISION ALPHA, TEMP
102 DOUBLE PRECISION DLARAN
106 EXTERNAL dlarnv, xerbla
109 INTRINSIC abs, dble, exp, log
124 IF( mode.LT.-6 .OR. mode.GT.6 )
THEN
126 ELSE IF( ( mode.NE.-6 .AND. mode.NE.0 .AND. mode.NE.6 ) .AND.
127 $ ( irsign.NE.0 .AND. irsign.NE.1 ) )
THEN
129 ELSE IF( ( mode.NE.-6 .AND. mode.NE.0 .AND. mode.NE.6 ) .AND.
132 ELSE IF( ( mode.EQ.6 .OR. mode.EQ.-6 ) .AND.
133 $ ( idist.LT.1 .OR. idist.GT.3 ) )
THEN
135 ELSE IF( n.LT.0 )
THEN
140 CALL xerbla(
'DLATM1', -info )
147 GO TO ( 10, 30, 50, 70, 90, 110 )abs( mode )
172 alpha = cond**( -one / dble( n-1 ) )
174 d( i ) = alpha**( i-1 )
185 alpha = ( one-temp ) / dble( n-1 )
187 d( i ) = dble( n-i )*alpha + temp
195 alpha = log( one / cond )
197 d( i ) = exp( alpha*dlaran( iseed ) )
204 CALL dlarnv( idist, iseed, n, d )
211 IF( ( mode.NE.-6 .AND. mode.NE.0 .AND. mode.NE.6 ) .AND.
214 temp = dlaran( iseed )