LAPACK 3.12.1
LAPACK: Linear Algebra PACKage
Loading...
Searching...
No Matches

◆ zmake()

subroutine zmake ( character*2 type,
character*1 uplo,
character*1 diag,
integer m,
integer n,
complex*16, dimension( nmax, * ) a,
integer nmax,
complex*16, dimension( * ) aa,
integer lda,
logical reset,
complex*16 transl )

Definition at line 2321 of file c_zblat3.f.

2323*
2324* Generates values for an M by N matrix A.
2325* Stores the values in the array AA in the data structure required
2326* by the routine, with unwanted elements set to rogue value.
2327*
2328* TYPE is 'ge', 'he', 'sy' or 'tr'.
2329*
2330* Auxiliary routine for test program for Level 3 Blas.
2331*
2332* -- Written on 8-February-1989.
2333* Jack Dongarra, Argonne National Laboratory.
2334* Iain Duff, AERE Harwell.
2335* Jeremy Du Croz, Numerical Algorithms Group Ltd.
2336* Sven Hammarling, Numerical Algorithms Group Ltd.
2337*
2338* .. Parameters ..
2339 COMPLEX*16 ZERO, ONE
2340 parameter( zero = ( 0.0d0, 0.0d0 ),
2341 $ one = ( 1.0d0, 0.0d0 ) )
2342 COMPLEX*16 ROGUE
2343 parameter( rogue = ( -1.0d10, 1.0d10 ) )
2344 DOUBLE PRECISION RZERO
2345 parameter( rzero = 0.0d0 )
2346 DOUBLE PRECISION RROGUE
2347 parameter( rrogue = -1.0d10 )
2348* .. Scalar Arguments ..
2349 COMPLEX*16 TRANSL
2350 INTEGER LDA, M, N, NMAX
2351 LOGICAL RESET
2352 CHARACTER*1 DIAG, UPLO
2353 CHARACTER*2 TYPE
2354* .. Array Arguments ..
2355 COMPLEX*16 A( NMAX, * ), AA( * )
2356* .. Local Scalars ..
2357 INTEGER I, IBEG, IEND, J, JJ
2358 LOGICAL GEN, HER, LOWER, SYM, TRI, UNIT, UPPER
2359* .. External Functions ..
2360 COMPLEX*16 ZBEG
2361 EXTERNAL zbeg
2362* .. Intrinsic Functions ..
2363 INTRINSIC dcmplx, dconjg, dble
2364* .. Executable Statements ..
2365 gen = type.EQ.'ge'
2366 her = type.EQ.'he'
2367 sym = type.EQ.'sy'
2368 tri = type.EQ.'tr'
2369 upper = ( her.OR.sym.OR.tri ).AND.uplo.EQ.'U'
2370 lower = ( her.OR.sym.OR.tri ).AND.uplo.EQ.'L'
2371 unit = tri.AND.diag.EQ.'U'
2372*
2373* Generate data in array A.
2374*
2375 DO 20 j = 1, n
2376 DO 10 i = 1, m
2377 IF( gen.OR.( upper.AND.i.LE.j ).OR.( lower.AND.i.GE.j ) )
2378 $ THEN
2379 a( i, j ) = zbeg( reset ) + transl
2380 IF( i.NE.j )THEN
2381* Set some elements to zero
2382 IF( n.GT.3.AND.j.EQ.n/2 )
2383 $ a( i, j ) = zero
2384 IF( her )THEN
2385 a( j, i ) = dconjg( a( i, j ) )
2386 ELSE IF( sym )THEN
2387 a( j, i ) = a( i, j )
2388 ELSE IF( tri )THEN
2389 a( j, i ) = zero
2390 END IF
2391 END IF
2392 END IF
2393 10 CONTINUE
2394 IF( her )
2395 $ a( j, j ) = dcmplx( dble( a( j, j ) ), rzero )
2396 IF( tri )
2397 $ a( j, j ) = a( j, j ) + one
2398 IF( unit )
2399 $ a( j, j ) = one
2400 20 CONTINUE
2401*
2402* Store elements in array AS in data structure required by routine.
2403*
2404 IF( type.EQ.'ge' )THEN
2405 DO 50 j = 1, n
2406 DO 30 i = 1, m
2407 aa( i + ( j - 1 )*lda ) = a( i, j )
2408 30 CONTINUE
2409 DO 40 i = m + 1, lda
2410 aa( i + ( j - 1 )*lda ) = rogue
2411 40 CONTINUE
2412 50 CONTINUE
2413 ELSE IF( type.EQ.'he'.OR.type.EQ.'sy'.OR.type.EQ.'tr' )THEN
2414 DO 90 j = 1, n
2415 IF( upper )THEN
2416 ibeg = 1
2417 IF( unit )THEN
2418 iend = j - 1
2419 ELSE
2420 iend = j
2421 END IF
2422 ELSE
2423 IF( unit )THEN
2424 ibeg = j + 1
2425 ELSE
2426 ibeg = j
2427 END IF
2428 iend = n
2429 END IF
2430 DO 60 i = 1, ibeg - 1
2431 aa( i + ( j - 1 )*lda ) = rogue
2432 60 CONTINUE
2433 DO 70 i = ibeg, iend
2434 aa( i + ( j - 1 )*lda ) = a( i, j )
2435 70 CONTINUE
2436 DO 80 i = iend + 1, lda
2437 aa( i + ( j - 1 )*lda ) = rogue
2438 80 CONTINUE
2439 IF( her )THEN
2440 jj = j + ( j - 1 )*lda
2441 aa( jj ) = dcmplx( dble( aa( jj ) ), rrogue )
2442 END IF
2443 90 CONTINUE
2444 END IF
2445 RETURN
2446*
2447* End of ZMAKE.
2448*
complex *16 function zbeg(reset)
Definition zblat2.f:3164