LAPACK  3.6.1
LAPACK: Linear Algebra PACKage
subroutine dsyswapr ( character  UPLO,
integer  N,
double precision, dimension( lda, n )  A,
integer  LDA,
integer  I1,
integer  I2 
)

DSYSWAPR applies an elementary permutation on the rows and columns of a symmetric matrix.

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

Purpose:
 DSYSWAPR applies an elementary permutation on the rows and the columns of
 a symmetric matrix.
Parameters
[in]UPLO
          UPLO is CHARACTER*1
          Specifies whether the details of the factorization are stored
          as an upper or lower triangular matrix.
          = 'U':  Upper triangular, form is A = U*D*U**T;
          = 'L':  Lower triangular, form is A = L*D*L**T.
[in]N
          N is INTEGER
          The order of the matrix A.  N >= 0.
[in,out]A
          A is DOUBLE PRECISION array, dimension (LDA,N)
          On entry, the NB diagonal matrix D and the multipliers
          used to obtain the factor U or L as computed by DSYTRF.

          On exit, if INFO = 0, the (symmetric) inverse of the original
          matrix.  If UPLO = 'U', the upper triangular part of the
          inverse is formed and the part of A below the diagonal is not
          referenced; if UPLO = 'L' the lower triangular part of the
          inverse is formed and the part of A above the diagonal is
          not referenced.
[in]LDA
          LDA is INTEGER
          The leading dimension of the array A.  LDA >= max(1,N).
[in]I1
          I1 is INTEGER
          Index of the first row to swap
[in]I2
          I2 is INTEGER
          Index of the second row to swap
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Date
September 2012

Definition at line 104 of file dsyswapr.f.

104 *
105 * -- LAPACK auxiliary routine (version 3.4.2) --
106 * -- LAPACK is a software package provided by Univ. of Tennessee, --
107 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
108 * September 2012
109 *
110 * .. Scalar Arguments ..
111  CHARACTER uplo
112  INTEGER i1, i2, lda, n
113 * ..
114 * .. Array Arguments ..
115  DOUBLE PRECISION a( lda, n )
116 *
117 * =====================================================================
118 *
119 * ..
120 * .. Local Scalars ..
121  LOGICAL upper
122  INTEGER i
123  DOUBLE PRECISION tmp
124 *
125 * .. External Functions ..
126  LOGICAL lsame
127  EXTERNAL lsame
128 * ..
129 * .. External Subroutines ..
130  EXTERNAL dswap
131 * ..
132 * .. Executable Statements ..
133 *
134  upper = lsame( uplo, 'U' )
135  IF (upper) THEN
136 *
137 * UPPER
138 * first swap
139 * - swap column I1 and I2 from I1 to I1-1
140  CALL dswap( i1-1, a(1,i1), 1, a(1,i2), 1 )
141 *
142 * second swap :
143 * - swap A(I1,I1) and A(I2,I2)
144 * - swap row I1 from I1+1 to I2-1 with col I2 from I1+1 to I2-1
145  tmp=a(i1,i1)
146  a(i1,i1)=a(i2,i2)
147  a(i2,i2)=tmp
148 *
149  DO i=1,i2-i1-1
150  tmp=a(i1,i1+i)
151  a(i1,i1+i)=a(i1+i,i2)
152  a(i1+i,i2)=tmp
153  END DO
154 *
155 * third swap
156 * - swap row I1 and I2 from I2+1 to N
157  DO i=i2+1,n
158  tmp=a(i1,i)
159  a(i1,i)=a(i2,i)
160  a(i2,i)=tmp
161  END DO
162 *
163  ELSE
164 *
165 * LOWER
166 * first swap
167 * - swap row I1 and I2 from I1 to I1-1
168  CALL dswap( i1-1, a(i1,1), lda, a(i2,1), lda )
169 *
170 * second swap :
171 * - swap A(I1,I1) and A(I2,I2)
172 * - swap col I1 from I1+1 to I2-1 with row I2 from I1+1 to I2-1
173  tmp=a(i1,i1)
174  a(i1,i1)=a(i2,i2)
175  a(i2,i2)=tmp
176 *
177  DO i=1,i2-i1-1
178  tmp=a(i1+i,i1)
179  a(i1+i,i1)=a(i2,i1+i)
180  a(i2,i1+i)=tmp
181  END DO
182 *
183 * third swap
184 * - swap col I1 and I2 from I2+1 to N
185  DO i=i2+1,n
186  tmp=a(i,i1)
187  a(i,i1)=a(i,i2)
188  a(i,i2)=tmp
189  END DO
190 *
191  ENDIF
subroutine dswap(N, DX, INCX, DY, INCY)
DSWAP
Definition: dswap.f:53
logical function lsame(CA, CB)
LSAME
Definition: lsame.f:55

Here is the call graph for this function:

Here is the caller graph for this function: