Simplify ?SYSWAPR and fix its documentation (Reference-LAPACK 217)tags/v0.3.22^2
| @@ -58,15 +58,13 @@ | |||
| *> \param[in,out] A | |||
| *> \verbatim | |||
| *> A is COMPLEX 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 CSYTRF. | |||
| *> | |||
| *> 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. | |||
| *> On entry, the N-by-N matrix A. On exit, the permuted matrix | |||
| *> where the rows I1 and I2 and columns I1 and I2 are interchanged. | |||
| *> If UPLO = 'U', the interchanges are applied to the upper | |||
| *> triangular part and the strictly lower triangular part of A is | |||
| *> not referenced; if UPLO = 'L', the interchanges are applied to | |||
| *> the lower triangular part and the part of A above the diagonal | |||
| *> is not referenced. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] LDA | |||
| @@ -116,7 +114,6 @@ | |||
| * .. | |||
| * .. Local Scalars .. | |||
| LOGICAL UPPER | |||
| INTEGER I | |||
| COMPLEX TMP | |||
| * | |||
| * .. External Functions .. | |||
| @@ -143,19 +140,12 @@ | |||
| A(I1,I1)=A(I2,I2) | |||
| A(I2,I2)=TMP | |||
| * | |||
| DO I=1,I2-I1-1 | |||
| TMP=A(I1,I1+I) | |||
| A(I1,I1+I)=A(I1+I,I2) | |||
| A(I1+I,I2)=TMP | |||
| END DO | |||
| CALL CSWAP( I2-I1-1, A(I1,I1+1), LDA, A(I1+1,I2), 1 ) | |||
| * | |||
| * third swap | |||
| * - swap row I1 and I2 from I2+1 to N | |||
| DO I=I2+1,N | |||
| TMP=A(I1,I) | |||
| A(I1,I)=A(I2,I) | |||
| A(I2,I)=TMP | |||
| END DO | |||
| IF ( I2.LT.N ) | |||
| $ CALL CSWAP( N-I2, A(I1,I2+1), LDA, A(I2,I2+1), LDA ) | |||
| * | |||
| ELSE | |||
| * | |||
| @@ -171,19 +161,12 @@ | |||
| A(I1,I1)=A(I2,I2) | |||
| A(I2,I2)=TMP | |||
| * | |||
| DO I=1,I2-I1-1 | |||
| TMP=A(I1+I,I1) | |||
| A(I1+I,I1)=A(I2,I1+I) | |||
| A(I2,I1+I)=TMP | |||
| END DO | |||
| CALL CSWAP( I2-I1-1, A(I1+1,I1), 1, A(I2,I1+1), LDA ) | |||
| * | |||
| * third swap | |||
| * - swap col I1 and I2 from I2+1 to N | |||
| DO I=I2+1,N | |||
| TMP=A(I,I1) | |||
| A(I,I1)=A(I,I2) | |||
| A(I,I2)=TMP | |||
| END DO | |||
| IF ( I2.LT.N ) | |||
| $ CALL CSWAP( N-I2, A(I2+1,I1), 1, A(I2+1,I2), 1 ) | |||
| * | |||
| ENDIF | |||
| END SUBROUTINE CSYSWAPR | |||
| @@ -57,16 +57,14 @@ | |||
| *> | |||
| *> \param[in,out] A | |||
| *> \verbatim | |||
| *> 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. | |||
| *> A is DOUBLE PRECISION array, dimension (LDA,*) | |||
| *> On entry, the N-by-N matrix A. On exit, the permuted matrix | |||
| *> where the rows I1 and I2 and columns I1 and I2 are interchanged. | |||
| *> If UPLO = 'U', the interchanges are applied to the upper | |||
| *> triangular part and the strictly lower triangular part of A is | |||
| *> not referenced; if UPLO = 'L', the interchanges are applied to | |||
| *> the lower triangular part and the part of A above the diagonal | |||
| *> is not referenced. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] LDA | |||
| @@ -109,14 +107,13 @@ | |||
| INTEGER I1, I2, LDA, N | |||
| * .. | |||
| * .. Array Arguments .. | |||
| DOUBLE PRECISION A( LDA, N ) | |||
| DOUBLE PRECISION A( LDA, * ) | |||
| * | |||
| * ===================================================================== | |||
| * | |||
| * .. | |||
| * .. Local Scalars .. | |||
| LOGICAL UPPER | |||
| INTEGER I | |||
| DOUBLE PRECISION TMP | |||
| * | |||
| * .. External Functions .. | |||
| @@ -143,19 +140,12 @@ | |||
| A(I1,I1)=A(I2,I2) | |||
| A(I2,I2)=TMP | |||
| * | |||
| DO I=1,I2-I1-1 | |||
| TMP=A(I1,I1+I) | |||
| A(I1,I1+I)=A(I1+I,I2) | |||
| A(I1+I,I2)=TMP | |||
| END DO | |||
| CALL DSWAP( I2-I1-1, A(I1,I1+1), LDA, A(I1+1,I2), 1 ) | |||
| * | |||
| * third swap | |||
| * - swap row I1 and I2 from I2+1 to N | |||
| DO I=I2+1,N | |||
| TMP=A(I1,I) | |||
| A(I1,I)=A(I2,I) | |||
| A(I2,I)=TMP | |||
| END DO | |||
| IF ( I2.LT.N ) | |||
| $ CALL DSWAP( N-I2, A(I1,I2+1), LDA, A(I2,I2+1), LDA ) | |||
| * | |||
| ELSE | |||
| * | |||
| @@ -171,19 +161,12 @@ | |||
| A(I1,I1)=A(I2,I2) | |||
| A(I2,I2)=TMP | |||
| * | |||
| DO I=1,I2-I1-1 | |||
| TMP=A(I1+I,I1) | |||
| A(I1+I,I1)=A(I2,I1+I) | |||
| A(I2,I1+I)=TMP | |||
| END DO | |||
| CALL DSWAP( I2-I1-1, A(I1+1,I1), 1, A(I2,I1+1), LDA ) | |||
| * | |||
| * third swap | |||
| * - swap col I1 and I2 from I2+1 to N | |||
| DO I=I2+1,N | |||
| TMP=A(I,I1) | |||
| A(I,I1)=A(I,I2) | |||
| A(I,I2)=TMP | |||
| END DO | |||
| IF ( I2.LT.N ) | |||
| $ CALL DSWAP( N-I2, A(I2+1,I1), 1, A(I2+1,I2), 1 ) | |||
| * | |||
| ENDIF | |||
| END SUBROUTINE DSYSWAPR | |||
| @@ -57,16 +57,14 @@ | |||
| *> | |||
| *> \param[in,out] A | |||
| *> \verbatim | |||
| *> A is REAL 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 SSYTRF. | |||
| *> | |||
| *> 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. | |||
| *> A is REAL array, dimension (LDA,*) | |||
| *> On entry, the N-by-N matrix A. On exit, the permuted matrix | |||
| *> where the rows I1 and I2 and columns I1 and I2 are interchanged. | |||
| *> If UPLO = 'U', the interchanges are applied to the upper | |||
| *> triangular part and the strictly lower triangular part of A is | |||
| *> not referenced; if UPLO = 'L', the interchanges are applied to | |||
| *> the lower triangular part and the part of A above the diagonal | |||
| *> is not referenced. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] LDA | |||
| @@ -109,14 +107,13 @@ | |||
| INTEGER I1, I2, LDA, N | |||
| * .. | |||
| * .. Array Arguments .. | |||
| REAL A( LDA, N ) | |||
| REAL A( LDA, * ) | |||
| * | |||
| * ===================================================================== | |||
| * | |||
| * .. | |||
| * .. Local Scalars .. | |||
| LOGICAL UPPER | |||
| INTEGER I | |||
| REAL TMP | |||
| * | |||
| * .. External Functions .. | |||
| @@ -143,19 +140,12 @@ | |||
| A(I1,I1)=A(I2,I2) | |||
| A(I2,I2)=TMP | |||
| * | |||
| DO I=1,I2-I1-1 | |||
| TMP=A(I1,I1+I) | |||
| A(I1,I1+I)=A(I1+I,I2) | |||
| A(I1+I,I2)=TMP | |||
| END DO | |||
| CALL SSWAP( I2-I1-1, A(I1,I1+1), LDA, A(I1+1,I2), 1 ) | |||
| * | |||
| * third swap | |||
| * - swap row I1 and I2 from I2+1 to N | |||
| DO I=I2+1,N | |||
| TMP=A(I1,I) | |||
| A(I1,I)=A(I2,I) | |||
| A(I2,I)=TMP | |||
| END DO | |||
| IF ( I2.LT.N ) | |||
| $ CALL SSWAP( N-I2, A(I1,I2+1), LDA, A(I2,I2+1), LDA ) | |||
| * | |||
| ELSE | |||
| * | |||
| @@ -171,19 +161,12 @@ | |||
| A(I1,I1)=A(I2,I2) | |||
| A(I2,I2)=TMP | |||
| * | |||
| DO I=1,I2-I1-1 | |||
| TMP=A(I1+I,I1) | |||
| A(I1+I,I1)=A(I2,I1+I) | |||
| A(I2,I1+I)=TMP | |||
| END DO | |||
| CALL SSWAP( I2-I1-1, A(I1+1,I1), 1, A(I2,I1+1), LDA ) | |||
| * | |||
| * third swap | |||
| * - swap col I1 and I2 from I2+1 to N | |||
| DO I=I2+1,N | |||
| TMP=A(I,I1) | |||
| A(I,I1)=A(I,I2) | |||
| A(I,I2)=TMP | |||
| END DO | |||
| IF ( I2.LT.N ) | |||
| $ CALL SSWAP( N-I2, A(I2+1,I1), 1, A(I2+1,I2), 1 ) | |||
| * | |||
| ENDIF | |||
| END SUBROUTINE SSYSWAPR | |||
| @@ -57,16 +57,14 @@ | |||
| *> | |||
| *> \param[in,out] A | |||
| *> \verbatim | |||
| *> A is COMPLEX*16 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 ZSYTRF. | |||
| *> | |||
| *> 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. | |||
| *> A is COMPLEX*16 array, dimension (LDA,*) | |||
| *> On entry, the N-by-N matrix A. On exit, the permuted matrix | |||
| *> where the rows I1 and I2 and columns I1 and I2 are interchanged. | |||
| *> If UPLO = 'U', the interchanges are applied to the upper | |||
| *> triangular part and the strictly lower triangular part of A is | |||
| *> not referenced; if UPLO = 'L', the interchanges are applied to | |||
| *> the lower triangular part and the part of A above the diagonal | |||
| *> is not referenced. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] LDA | |||
| @@ -109,14 +107,13 @@ | |||
| INTEGER I1, I2, LDA, N | |||
| * .. | |||
| * .. Array Arguments .. | |||
| COMPLEX*16 A( LDA, N ) | |||
| COMPLEX*16 A( LDA, * ) | |||
| * | |||
| * ===================================================================== | |||
| * | |||
| * .. | |||
| * .. Local Scalars .. | |||
| LOGICAL UPPER | |||
| INTEGER I | |||
| COMPLEX*16 TMP | |||
| * | |||
| * .. External Functions .. | |||
| @@ -143,19 +140,12 @@ | |||
| A(I1,I1)=A(I2,I2) | |||
| A(I2,I2)=TMP | |||
| * | |||
| DO I=1,I2-I1-1 | |||
| TMP=A(I1,I1+I) | |||
| A(I1,I1+I)=A(I1+I,I2) | |||
| A(I1+I,I2)=TMP | |||
| END DO | |||
| CALL ZSWAP( I2-I1-1, A(I1,I1+1), LDA, A(I1+1,I2), 1 ) | |||
| * | |||
| * third swap | |||
| * - swap row I1 and I2 from I2+1 to N | |||
| DO I=I2+1,N | |||
| TMP=A(I1,I) | |||
| A(I1,I)=A(I2,I) | |||
| A(I2,I)=TMP | |||
| END DO | |||
| IF ( I2.LT.N ) | |||
| $ CALL ZSWAP( N-I2, A(I1,I2+1), LDA, A(I2,I2+1), LDA ) | |||
| * | |||
| ELSE | |||
| * | |||
| @@ -171,19 +161,12 @@ | |||
| A(I1,I1)=A(I2,I2) | |||
| A(I2,I2)=TMP | |||
| * | |||
| DO I=1,I2-I1-1 | |||
| TMP=A(I1+I,I1) | |||
| A(I1+I,I1)=A(I2,I1+I) | |||
| A(I2,I1+I)=TMP | |||
| END DO | |||
| CALL ZSWAP( I2-I1-1, A(I1+1,I1), 1, A(I2,I1+1), LDA ) | |||
| * | |||
| * third swap | |||
| * - swap col I1 and I2 from I2+1 to N | |||
| DO I=I2+1,N | |||
| TMP=A(I,I1) | |||
| A(I,I1)=A(I,I2) | |||
| A(I,I2)=TMP | |||
| END DO | |||
| IF ( I2.LT.N ) | |||
| $ CALL ZSWAP( N-I2, A(I2+1,I1), 1, A(I2+1,I2), 1 ) | |||
| * | |||
| ENDIF | |||
| END SUBROUTINE ZSYSWAPR | |||