SCALAPACK 2.2.2
LAPACK: Linear Algebra PACKage
Loading...
Searching...
No Matches
zrshft.f
Go to the documentation of this file.
1 SUBROUTINE zrshft( M, N, OFFSET, A, LDA )
2*
3* -- PBLAS auxiliary routine (version 2.0) --
4* University of Tennessee, Knoxville, Oak Ridge National Laboratory,
5* and University of California, Berkeley.
6* April 1, 1998
7*
8* .. Scalar Arguments ..
9 INTEGER LDA, M, N, OFFSET
10* ..
11* .. Array Arguments ..
12 COMPLEX*16 A( LDA, * )
13* ..
14*
15* Purpose
16* =======
17*
18* ZRSHFT shifts rows of an m by n array A by OFFSET.
19*
20* Arguments
21* =========
22*
23* M (local input) INTEGER
24* On entry, M specifies the number of rows of A to be shifted.
25* M must be at least zero.
26*
27* N (local input) INTEGER
28* On entry, N specifies the number of columns of A. N must be
29* at least zero.
30*
31* OFFSET (local input) INTEGER
32* On entry, OFFSET specifies the offset by which the rows of
33* A should be shifted. OFFSET can be positive or negative (see
34* below for further details). When OFFSET is positive, the rows
35* are shifted to the bottom. When OFFSET is negative, the rows
36* of A are shifted to the top.
37*
38* A (local input/local output) COMPLEX*16 array
39* On entry, A is an array of dimension ( LDA, N ). On exit, A
40* contains the shifted array.
41*
42* LDA (local input) INTEGER
43* On entry, LDA specifies the leading dimension of the array A.
44* LDA must be at least max( 1, M+ABS(OFFSET) ).
45*
46* Further Details
47* ===============
48*
49* N N N N
50* --- --- --- ---
51* | 1 | | 1 | | 1 | | 7 |
52* | 2 | M = 3 | 2 | | 2 | M = 3 | 8 |
53* | 3 | | 3 | | 3 | | 9 |
54* | 4 | | 4 | | 4 | | 4 |
55* | 5 | becomes | 5 | | 5 | becomes | 5 |
56* | 6 | | 6 | | 6 | | 6 |
57* | 7 | | 1 | | 7 | | 7 |
58* | 8 | OFFSET = 6 | 2 | | 8 | OFFSET = -6 | 8 |
59* | 9 | | 3 | | 9 | | 9 |
60* --- --- --- ---
61* OFFSET >= 0 OFFSET <= 0
62*
63* -- Written on April 1, 1998 by
64* Antoine Petitet, University of Tennessee, Knoxville 37996, USA.
65*
66* =====================================================================
67*
68* .. Local Scalars ..
69 INTEGER I, J
70* ..
71* .. Executable Statements ..
72*
73 IF( ( offset.EQ.0 ).OR.( m.LE.0 ).OR.( n.LE.0 ) )
74 $ RETURN
75*
76 IF( offset.GT.0 ) THEN
77 DO 20 j = 1, n
78 DO 10 i = m, 1, -1
79 a( i+offset, j ) = a( i, j )
80 10 CONTINUE
81 20 CONTINUE
82 ELSE
83 DO 40 j = 1, n
84 DO 30 i = 1, m
85 a( i, j ) = a( i-offset, j )
86 30 CONTINUE
87 40 CONTINUE
88 END IF
89*
90 RETURN
91*
92* End of ZRSHFT
93*
94 END
subroutine zrshft(m, n, offset, a, lda)
Definition zrshft.f:2