SUBROUTINEDSPRF(UPLO,N,ALPHA,X,INCX,AP)*..ScalarArguments..DOUBLE PRECISIONALPHAINTEGERINCX,NCHARACTER*1UPLO*..ArrayArguments..DOUBLE PRECISIONAP(*),X(*)*..**Purpose*=======**DSPRperformsthesymmetricrank1operation**A:=alpha*x*x' + A,** where alpha is a real scalar, x is an n element vector and A is an* n by n symmetric matrix, supplied in packed form.** Parameters* ==========** UPLO - CHARACTER*1.* On entry, UPLO specifies whether the upper or lower* triangular part of the matrix A is supplied in the packed* array AP as follows:** UPLO = 'U' or 'u' The upper triangular part of A is* supplied in AP.** UPLO = 'L' or 'l' The lower triangular part of A is* supplied in AP.** Unchanged on exit.** N - INTEGER.* On entry, N specifies the order of the matrix A.* N must be at least zero.* Unchanged on exit.** ALPHA - DOUBLE PRECISION.* On entry, ALPHA specifies the scalar alpha.* Unchanged on exit.** X - DOUBLE PRECISION array of 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 - INTEGER.* On entry, INCX specifies the increment for the elements of* X. INCX must not be zero.* Unchanged on exit.** AP - DOUBLE PRECISION array of DIMENSION at least* ( ( n*( n + 1 ) )/2 ).* Before entry with UPLO = 'U' or 'u', the array AP must* contain the upper triangular part of the symmetric matrix* packed sequentially, column by column, so that AP( 1 )* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )* and a( 2, 2 ) respectively, and so on. On exit, the array* AP is overwritten by the upper triangular part of the* updated matrix.* Before entry with UPLO = 'L' or 'l', the array AP must* contain the lower triangular part of the symmetric matrix* packed sequentially, column by column, so that AP( 1 )* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )* and a( 3, 1 ) respectively, and so on. On exit, the array* AP is overwritten by the lower triangular part of the* updated matrix.*** Level 2 Blas routine.** -- Written on 22-October-1986.* Jack Dongarra, Argonne National Lab.* Jeremy Du Croz, Nag Central Office.* Sven Hammarling, Nag Central Office.* Richard Hanson, Sandia National Labs.*** .. Parameters ..DOUBLE PRECISION ZEROPARAMETER ( ZERO = 0.0D+0 )* .. Local Scalars ..DOUBLE PRECISION TEMPINTEGER I, INFO, IX, J, JX, K, KK, KX* .. External Functions ..LOGICAL LSAMEEXTERNAL LSAME* .. External Subroutines ..EXTERNAL XERBLA* ..* .. 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 = 5END IFIF( INFO.NE.0 )THENCALL XERBLA( 'DSPR', 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 the array AP* are accessed sequentially with one pass through AP.*KK = 1IF( LSAME( UPLO, 'U' ) )THEN** Form A when upper triangle is stored in AP.*IF( INCX.EQ.1 )THENDO 20, J = 1, NIF( X( J ).NE.ZERO )THENTEMP = ALPHA*X( J )K = KKDO 10, I = 1, JAP( K ) = AP( K ) + X( I )*TEMPK = K + 110 CONTINUEEND IFKK = KK + J20 CONTINUEELSEJX = KXDO 40, J = 1, NIF( X( JX ).NE.ZERO )THENTEMP = ALPHA*X( JX )IX = KXDO 30, K = KK, KK + J - 1AP( K ) = AP( K ) + X( IX )*TEMPIX = IX + INCX30 CONTINUEEND IFJX = JX + INCXKK = KK + J40 CONTINUEEND IFELSE** Form A when lower triangle is stored in AP.*IF( INCX.EQ.1 )THENDO 60, J = 1, NIF( X( J ).NE.ZERO )THENTEMP = ALPHA*X( J )K = KKDO 50, I = J, NAP( K ) = AP( K ) + X( I )*TEMPK = K + 150 CONTINUEEND IFKK = KK + N - J + 160 CONTINUEELSEJX = KXDO 80, J = 1, NIF( X( JX ).NE.ZERO )THENTEMP = ALPHA*X( JX )IX = JXDO 70, K = KK, KK + N - JAP( K ) = AP( K ) + X( IX )*TEMPIX = IX + INCX70 CONTINUEEND IFJX = JX + INCXKK = KK + N - J + 180 CONTINUEEND IFEND IF*RETURN** End of DSPR .*END
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。