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

◆ cmake()

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

Definition at line 2321 of file c_cblat3.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 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* .. Scalar Arguments ..
2348 COMPLEX TRANSL
2349 INTEGER LDA, M, N, NMAX
2350 LOGICAL RESET
2351 CHARACTER*1 DIAG, UPLO
2352 CHARACTER*2 TYPE
2353* .. Array Arguments ..
2354 COMPLEX A( NMAX, * ), AA( * )
2355* .. Local Scalars ..
2356 INTEGER I, IBEG, IEND, J, JJ
2357 LOGICAL GEN, HER, LOWER, SYM, TRI, UNIT, UPPER
2358* .. External Functions ..
2359 COMPLEX CBEG
2360 EXTERNAL cbeg
2361* .. Intrinsic Functions ..
2362 INTRINSIC cmplx, conjg, real
2363* .. Executable Statements ..
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* Generate data in array A.
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* Set some elements to zero
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* Store elements in array AS in data structure required by routine.
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* End of CMAKE.
2447*
complex function cbeg(reset)
Definition cblat2.f:3156