2324 COMPLEX*16 zero, one
2325 parameter ( zero = ( 0.0d0, 0.0d0 ),
2326 $ one = ( 1.0d0, 0.0d0 ) )
2328 parameter ( rogue = ( -1.0d10, 1.0d10 ) )
2329 DOUBLE PRECISION rzero
2330 parameter ( rzero = 0.0d0 )
2331 DOUBLE PRECISION rrogue
2332 parameter ( rrogue = -1.0d10 )
2335 INTEGER lda, m, n, nmax
2337 CHARACTER*1 diag, uplo
2340 COMPLEX*16 a( nmax, * ), aa( * )
2342 INTEGER i, ibeg, iend, j, jj
2343 LOGICAL gen, her, lower, sym, tri, unit, upper
2348 INTRINSIC dcmplx, dconjg, dble
2354 upper = ( her.OR.sym.OR.tri ).AND.uplo.EQ.
'U'
2355 lower = ( her.OR.sym.OR.tri ).AND.uplo.EQ.
'L'
2356 unit = tri.AND.diag.EQ.
'U'
2362 IF( gen.OR.( upper.AND.i.LE.j ).OR.( lower.AND.i.GE.j ) )
2364 a( i, j ) =
zbeg( reset ) + transl
2367 IF( n.GT.3.AND.j.EQ.n/2 )
2370 a( j, i ) = dconjg( a( i, j ) )
2372 a( j, i ) = a( i, j )
2380 $ a( j, j ) = dcmplx( dble( a( j, j ) ), rzero )
2382 $ a( j, j ) = a( j, j ) + one
2389 IF( type.EQ.
'ge' )
THEN
2392 aa( i + ( j - 1 )*lda ) = a( i, j )
2394 DO 40 i = m + 1, lda
2395 aa( i + ( j - 1 )*lda ) = rogue
2398 ELSE IF( type.EQ.
'he'.OR.type.EQ.
'sy'.OR.type.EQ.
'tr' )
THEN
2415 DO 60 i = 1, ibeg - 1
2416 aa( i + ( j - 1 )*lda ) = rogue
2418 DO 70 i = ibeg, iend
2419 aa( i + ( j - 1 )*lda ) = a( i, j )
2421 DO 80 i = iend + 1, lda
2422 aa( i + ( j - 1 )*lda ) = rogue
2425 jj = j + ( j - 1 )*lda
2426 aa( jj ) = dcmplx( dble( aa( jj ) ), rrogue )
complex *16 function zbeg(RESET)