LAPACK  3.10.0
LAPACK: Linear Algebra PACKage

◆ slaswp()

subroutine slaswp ( integer  N,
real, dimension( lda, * )  A,
integer  LDA,
integer  K1,
integer  K2,
integer, dimension( * )  IPIV,
integer  INCX 
)

SLASWP performs a series of row interchanges on a general rectangular matrix.

Download SLASWP + dependencies [TGZ] [ZIP] [TXT]

Purpose:
 SLASWP performs a series of row interchanges on the matrix A.
 One row interchange is initiated for each of rows K1 through K2 of A.
Parameters
[in]N
          N is INTEGER
          The number of columns of the matrix A.
[in,out]A
          A is REAL array, dimension (LDA,N)
          On entry, the matrix of column dimension N to which the row
          interchanges will be applied.
          On exit, the permuted matrix.
[in]LDA
          LDA is INTEGER
          The leading dimension of the array A.
[in]K1
          K1 is INTEGER
          The first element of IPIV for which a row interchange will
          be done.
[in]K2
          K2 is INTEGER
          (K2-K1+1) is the number of elements of IPIV for which a row
          interchange will be done.
[in]IPIV
          IPIV is INTEGER array, dimension (K1+(K2-K1)*abs(INCX))
          The vector of pivot indices. Only the elements in positions
          K1 through K1+(K2-K1)*abs(INCX) of IPIV are accessed.
          IPIV(K1+(K-K1)*abs(INCX)) = L implies rows K and L are to be
          interchanged.
[in]INCX
          INCX is INTEGER
          The increment between successive values of IPIV. If INCX
          is negative, the pivots are applied in reverse order.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Further Details:
  Modified by
   R. C. Whaley, Computer Science Dept., Univ. of Tenn., Knoxville, USA

Definition at line 114 of file slaswp.f.

115 *
116 * -- LAPACK auxiliary routine --
117 * -- LAPACK is a software package provided by Univ. of Tennessee, --
118 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
119 *
120 * .. Scalar Arguments ..
121  INTEGER INCX, K1, K2, LDA, N
122 * ..
123 * .. Array Arguments ..
124  INTEGER IPIV( * )
125  REAL A( LDA, * )
126 * ..
127 *
128 * =====================================================================
129 *
130 * .. Local Scalars ..
131  INTEGER I, I1, I2, INC, IP, IX, IX0, J, K, N32
132  REAL TEMP
133 * ..
134 * .. Executable Statements ..
135 *
136 * Interchange row I with row IPIV(K1+(I-K1)*abs(INCX)) for each of rows
137 * K1 through K2.
138 *
139  IF( incx.GT.0 ) THEN
140  ix0 = k1
141  i1 = k1
142  i2 = k2
143  inc = 1
144  ELSE IF( incx.LT.0 ) THEN
145  ix0 = k1 + ( k1-k2 )*incx
146  i1 = k2
147  i2 = k1
148  inc = -1
149  ELSE
150  RETURN
151  END IF
152 *
153  n32 = ( n / 32 )*32
154  IF( n32.NE.0 ) THEN
155  DO 30 j = 1, n32, 32
156  ix = ix0
157  DO 20 i = i1, i2, inc
158  ip = ipiv( ix )
159  IF( ip.NE.i ) THEN
160  DO 10 k = j, j + 31
161  temp = a( i, k )
162  a( i, k ) = a( ip, k )
163  a( ip, k ) = temp
164  10 CONTINUE
165  END IF
166  ix = ix + incx
167  20 CONTINUE
168  30 CONTINUE
169  END IF
170  IF( n32.NE.n ) THEN
171  n32 = n32 + 1
172  ix = ix0
173  DO 50 i = i1, i2, inc
174  ip = ipiv( ix )
175  IF( ip.NE.i ) THEN
176  DO 40 k = n32, n
177  temp = a( i, k )
178  a( i, k ) = a( ip, k )
179  a( ip, k ) = temp
180  40 CONTINUE
181  END IF
182  ix = ix + incx
183  50 CONTINUE
184  END IF
185 *
186  RETURN
187 *
188 * End of SLASWP
189 *
Here is the caller graph for this function: