2323
 2324
 2325
 2326
 2327
 2328
 2329
 2330
 2331
 2332
 2333
 2334
 2335
 2336
 2337
 2338
 2339      COMPLEX            ZERO, ONE
 2340      parameter( zero = ( 0.0, 0.0 ), one = ( 1.0, 0.0 ) )
 2341      COMPLEX            ROGUE
 2342      parameter( rogue = ( -1.0e10, 1.0e10 ) )
 2343      REAL               RZERO
 2344      parameter( rzero = 0.0 )
 2345      REAL               RROGUE
 2346      parameter( rrogue = -1.0e10 )
 2347
 2348      COMPLEX            TRANSL
 2349      INTEGER            LDA, M, N, NMAX
 2350      LOGICAL            RESET
 2351      CHARACTER*1        DIAG, UPLO
 2352      CHARACTER*2        TYPE
 2353
 2354      COMPLEX            A( NMAX, * ), AA( * )
 2355
 2356      INTEGER            I, IBEG, IEND, J, JJ
 2357      LOGICAL            GEN, HER, LOWER, SYM, TRI, UNIT, UPPER
 2358
 2359      COMPLEX            CBEG
 2361
 2362      INTRINSIC          cmplx, conjg, real
 2363
 2364      gen = type.EQ.'ge'
 2365      her = type.EQ.'he'
 2366      sym = type.EQ.'sy'
 2367      tri = type.EQ.'tr'
 2368      upper = ( her.OR.sym.OR.tri ).AND.uplo.EQ.'U'
 2369      lower = ( her.OR.sym.OR.tri ).AND.uplo.EQ.'L'
 2370      unit = tri.AND.diag.EQ.'U'
 2371
 2372
 2373
 2374      DO 20 j = 1, n
 2375         DO 10 i = 1, m
 2376            IF( gen.OR.( upper.AND.i.LE.j ).OR.( lower.AND.i.GE.j ) )
 2377     $          THEN
 2378               a( i, j ) = 
cbeg( reset ) + transl
 
 2379               IF( i.NE.j )THEN
 2380
 2381                  IF( n.GT.3.AND.j.EQ.n/2 )
 2382     $               a( i, j ) = zero
 2383                  IF( her )THEN
 2384                     a( j, i ) = conjg( a( i, j ) )
 2385                  ELSE IF( sym )THEN
 2386                     a( j, i ) = a( i, j )
 2387                  ELSE IF( tri )THEN
 2388                     a( j, i ) = zero
 2389                  END IF
 2390               END IF
 2391            END IF
 2392   10    CONTINUE
 2393         IF( her )
 2394     $      a( j, j ) = cmplx( real( a( j, j ) ), rzero )
 2395         IF( tri )
 2396     $      a( j, j ) = a( j, j ) + one
 2397         IF( unit )
 2398     $      a( j, j ) = one
 2399   20 CONTINUE
 2400
 2401
 2402
 2403      IF( type.EQ.'ge' )THEN
 2404         DO 50 j = 1, n
 2405            DO 30 i = 1, m
 2406               aa( i + ( j - 1 )*lda ) = a( i, j )
 2407   30       CONTINUE
 2408            DO 40 i = m + 1, lda
 2409               aa( i + ( j - 1 )*lda ) = rogue
 2410   40       CONTINUE
 2411   50    CONTINUE
 2412      ELSE IF( type.EQ.'he'.OR.type.EQ.'sy'.OR.type.EQ.'tr' )THEN
 2413         DO 90 j = 1, n
 2414            IF( upper )THEN
 2415               ibeg = 1
 2416               IF( unit )THEN
 2417                  iend = j - 1
 2418               ELSE
 2419                  iend = j
 2420               END IF
 2421            ELSE
 2422               IF( unit )THEN
 2423                  ibeg = j + 1
 2424               ELSE
 2425                  ibeg = j
 2426               END IF
 2427               iend = n
 2428            END IF
 2429            DO 60 i = 1, ibeg - 1
 2430               aa( i + ( j - 1 )*lda ) = rogue
 2431   60       CONTINUE
 2432            DO 70 i = ibeg, iend
 2433               aa( i + ( j - 1 )*lda ) = a( i, j )
 2434   70       CONTINUE
 2435            DO 80 i = iend + 1, lda
 2436               aa( i + ( j - 1 )*lda ) = rogue
 2437   80       CONTINUE
 2438            IF( her )THEN
 2439               jj = j + ( j - 1 )*lda
 2440               aa( jj ) = cmplx( real( aa( jj ) ), rrogue )
 2441            END IF
 2442   90    CONTINUE
 2443      END IF
 2444      RETURN
 2445
 2446
 2447
complex function cbeg(reset)