2 $ ISEED, WIN, MAXSIZE, VECSIZE, VALSIZE )
14 INTEGER IL, IU, MAXSIZE, , VALSIZE, VECSIZE
15 DOUBLE PRECISION VL, VU
19 INTEGER DESCA( * ), ISEED( 4 )
20 DOUBLE PRECISION WIN( * )
104 parameter( ctxt_ = 2, mb_ = 5 )
105 DOUBLE PRECISION TWENTY
106 parameter( twenty = 20.0d0 )
110 INTEGER ILMIN, IUMAX,
111 $ mq0, mycol, myil, myiu, myrow, nb, neig, nn,
113 DOUBLE PRECISION ANORM, EPS, SAFMIN
117 INTEGER ICEIL, NUMROC
118 DOUBLE PRECISION DLARAN, PDLAMCH
119 EXTERNAL lsame, iceil, numroc, dlaran, pdlamch
125 INTRINSIC abs, dble, int,
max
131 eps = pdlamch( desca( ctxt_ ),
'Precision' )
132 safmin = pdlamch( desca( ctxt_ ),
'Safe Minimum' )
135 np0 = numroc( nn, nb, 0, 0, nprow )
137 valsize = 3 + 5*n +
max( 12*nn, nb*( np0+1 ) )
142 $ anorm =
max( abs( win( 1 ) ), abs( win( n ) ), anorm )
143 IF( lsame( range,
'I' ) )
THEN
145 $ il = int( dlaran( iseed )*dble( n ) ) + 1
147 $ iu = int( dlaran( iseed )*dble( n-il ) ) + il
150 ELSE IF( lsame( range,
'V' ) )
THEN
152 myil = int( dlaran( iseed )*dble( n ) ) + 1
153 myiu = int( dlaran( iseed )*dble
154 vl = win( myil ) - twenty
155 vu = win( myiu ) + twenty*eps*abs( win( myiu ) )
156 vu =
max( vu, vl+eps*twenty*abs( vl )+safmin )
161 IF( lsame( range, 'v
' ) ) THEN
165 ELSE IF( LSAME( RANGE, 'i
' ) ) THEN
168 ELSE IF( LSAME( RANGE, 'a
' ) ) THEN
173 NEIG = IUMAX - ILMIN + 1
175 MQ0 = NUMROC( MAX( NEIG, NB, 2 ), NB, 0, 0, NPCOL )
177 VECSIZE = 3 + 5*N + MAX( 18*NN, NP0*MQ0+2*NB*NB ) +
178 $ (2 + ICEIL( NEIG, NPROW*NPCOL ))*NN
180 VALSIZE = MAX(3, VALSIZE)
181 VECSIZE = MAX(3, VECSIZE)
subroutine pdlasizesyevr(wknown, range, n, desca, vl, vu, il, iu, iseed, win, maxsize, vecsize, valsize)