SUBROUTINECSYRF(UPLO,N,ALPHA,X,INCX,A,LDA)**--LAPACKauxiliaryroutine(version3.1)--*Univ.ofTennessee,Univ.ofCaliforniaBerkeleyandNAGLtd..*November2006**..ScalarArguments..CHARACTERUPLOINTEGERINCX,LDA,NCOMPLEXALPHA*..*..ArrayArguments..COMPLEXA(LDA,*),X(*)*..**Purpose*=======**CSYRperformsthesymmetricrank1operation**A:=alpha*x*(x' ) + A,** where alpha is a complex scalar, x is an n element vector and A is an* n by n symmetric matrix.** Arguments* ==========** UPLO (input) CHARACTER*1* On entry, UPLO specifies whether the upper or lower* triangular part of the array A is to be referenced as* follows:** UPLO = 'U' or 'u' Only the upper triangular part of A* is to be referenced.** UPLO = 'L' or 'l' Only the lower triangular part of A* is to be referenced.** Unchanged on exit.** N (input) INTEGER* On entry, N specifies the order of the matrix A.* N must be at least zero.* Unchanged on exit.** ALPHA (input) COMPLEX* On entry, ALPHA specifies the scalar alpha.* Unchanged on exit.** X (input) COMPLEX array, dimension at least* ( 1 + ( N - 1 )*abs( INCX ) ).* Before entry, the incremented array X must contain the N-* element vector x.* Unchanged on exit.** INCX (input) INTEGER* On entry, INCX specifies the increment for the elements of* X. INCX must not be zero.* Unchanged on exit.** A (input/output) COMPLEX array, dimension ( LDA, N )* Before entry, with UPLO = 'U' or 'u', the leading n by n* upper triangular part of the array A must contain the upper* triangular part of the symmetric matrix and the strictly* lower triangular part of A is not referenced. On exit, the* upper triangular part of the array A is overwritten by the* upper triangular part of the updated matrix.* Before entry, with UPLO = 'L' or 'l', the leading n by n* lower triangular part of the array A must contain the lower* triangular part of the symmetric matrix and the strictly* upper triangular part of A is not referenced. On exit, the* lower triangular part of the array A is overwritten by the* lower triangular part of the updated matrix.** LDA (input) INTEGER* On entry, LDA specifies the first dimension of A as declared* in the calling (sub) program. LDA must be at least* max( 1, N ).* Unchanged on exit.** =====================================================================** .. Parameters ..COMPLEX ZEROPARAMETER ( ZERO = ( 0.0E+0, 0.0E+0 ) )* ..* .. Local Scalars ..INTEGER I, INFO, IX, J, JX, KXCOMPLEX TEMP* ..* .. External Functions ..LOGICAL LSAMEEXTERNAL LSAME* ..* .. External Subroutines ..EXTERNAL XERBLA* ..* .. Intrinsic Functions ..INTRINSIC MAX* ..* .. Executable Statements ..** Test the input parameters.*INFO = 0IF( .NOT.LSAME( UPLO, 'U' ) .AND. .NOT.LSAME( UPLO, 'L' ) ) THENINFO = 1ELSE IF( N.LT.0 ) THENINFO = 2ELSE IF( INCX.EQ.0 ) THENINFO = 5ELSE IF( LDA.LT.MAX( 1, N ) ) THENINFO = 7END IFIF( INFO.NE.0 ) THENCALL XERBLA( 'CSYR', INFO )RETURNEND IF** Quick return if possible.*IF( ( N.EQ.0 ) .OR. ( ALPHA.EQ.ZERO ) )$ RETURN** Set the start point in X if the increment is not unity.*IF( INCX.LE.0 ) THENKX = 1 - ( N-1 )*INCXELSE IF( INCX.NE.1 ) THENKX = 1END IF** Start the operations. In this version the elements of A are* accessed sequentially with one pass through the triangular part* of A.*IF( LSAME( UPLO, 'U' ) ) THEN** Form A when A is stored in upper triangle.*IF( INCX.EQ.1 ) THENDO 20 J = 1, NIF( X( J ).NE.ZERO ) THENTEMP = ALPHA*X( J )DO 10 I = 1, JA( I, J ) = A( I, J ) + X( I )*TEMP10 CONTINUEEND IF20 CONTINUEELSEJX = KXDO 40 J = 1, NIF( X( JX ).NE.ZERO ) THENTEMP = ALPHA*X( JX )IX = KXDO 30 I = 1, JA( I, J ) = A( I, J ) + X( IX )*TEMPIX = IX + INCX30 CONTINUEEND IFJX = JX + INCX40 CONTINUEEND IFELSE** Form A when A is stored in lower triangle.*IF( INCX.EQ.1 ) THENDO 60 J = 1, NIF( X( J ).NE.ZERO ) THENTEMP = ALPHA*X( J )DO 50 I = J, NA( I, J ) = A( I, J ) + X( I )*TEMP50 CONTINUEEND IF60 CONTINUEELSEJX = KXDO 80 J = 1, NIF( X( JX ).NE.ZERO ) THENTEMP = ALPHA*X( JX )IX = JXDO 70 I = J, NA( I, J ) = A( I, J ) + X( IX )*TEMPIX = IX + INCX70 CONTINUEEND IFJX = JX + INCX80 CONTINUEEND IFEND IF*RETURN** End of CSYR*END
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。