SUBROUTINECSPR2F(UPLO,N,ALPHA,X,INCX,Y,INCY,AP)*..ScalarArguments..COMPLEX*8ALPHAINTEGERINCX,INCY,NCHARACTER*1UPLO*..ArrayArguments..COMPLEX*8AP(*),X(*),Y(*)*..**Purpose*=======**SSPR2performsthesymmetricrank2operation**A:=alpha*x*y' + alpha*y*x'+A,**wherealphaisascalar,xandyarenelementvectorsandAisan*nbynsymmetricmatrix,suppliedinpackedform.**Parameters*==========**UPLO-CHARACTER*1.*Onentry,UPLOspecifieswhethertheupperorlower*triangularpartofthematrixAissuppliedinthepacked*arrayAPasfollows:**UPLO='U'or'u'TheuppertriangularpartofAis*suppliedinAP.**UPLO='L'or'l'ThelowertriangularpartofAis*suppliedinAP.**Unchangedonexit.**N-INTEGER.*Onentry,NspecifiestheorderofthematrixA.*Nmustbeatleastzero.*Unchangedonexit.**ALPHA-COMPLEX*8.*Onentry,ALPHAspecifiesthescalaralpha.*Unchangedonexit.**X-COMPLEX*8arrayofdimensionatleast*(1+(n-1)*abs(INCX)).*Beforeentry,theincrementedarrayXmustcontainthen*elementvectorx.*Unchangedonexit.**INCX-INTEGER.*Onentry,INCXspecifiestheincrementfortheelementsof*X.INCXmustnotbezero.*Unchangedonexit.**Y-COMPLEX*8arrayofdimensionatleast*(1+(n-1)*abs(INCY)).*Beforeentry,theincrementedarrayYmustcontainthen*elementvectory.*Unchangedonexit.**INCY-INTEGER.*Onentry,INCYspecifiestheincrementfortheelementsof*Y.INCYmustnotbezero.*Unchangedonexit.**AP-COMPLEX*8arrayofDIMENSIONatleast*((n*(n+1))/2).*BeforeentrywithUPLO='U'or'u',thearrayAPmust*containtheuppertriangularpartofthesymmetricmatrix*packedsequentially,columnbycolumn,sothatAP(1)*containsa(1,1),AP(2)andAP(3)containa(1,2)*anda(2,2)respectively,andsoon.Onexit,thearray*APisoverwrittenbytheuppertriangularpartofthe*updatedmatrix.*BeforeentrywithUPLO='L'or'l',thearrayAPmust*containthelowertriangularpartofthesymmetricmatrix*packedsequentially,columnbycolumn,sothatAP(1)*containsa(1,1),AP(2)andAP(3)containa(2,1)*anda(3,1)respectively,andsoon.Onexit,thearray*APisoverwrittenbythelowertriangularpartofthe*updatedmatrix.***Level2Blasroutine.**--Writtenon22-October-1986.*JackDongarra,ArgonneNationalLab.*JeremyDuCroz,NagCentralOffice.*SvenHammarling,NagCentralOffice.*RichardHanson,SandiaNationalLabs.***..Parameters..COMPLEX*8ZEROPARAMETER(ZERO=0.0E+0)*..LocalScalars..COMPLEX*8TEMP1,TEMP2INTEGERI,INFO,IX,IY,J,JX,JY,K,KK,KX,KY*..ExternalFunctions..LOGICALLSAMEEXTERNALLSAME*..ExternalSubroutines..EXTERNALXERBLA*..*..ExecutableStatements..**Testtheinputparameters.*INFO=0IF(.NOT.LSAME(UPLO,'U').AND.$.NOT.LSAME(UPLO,'L'))THENINFO=1ELSEIF(N.LT.0)THENINFO=2ELSEIF(INCX.EQ.0)THENINFO=5ELSEIF(INCY.EQ.0)THENINFO=7ENDIFIF(INFO.NE.0)THENCALLXERBLA('SSPR2 ',INFO)RETURNENDIF**Quickreturnifpossible.*IF((N.EQ.0).OR.(ALPHA.EQ.ZERO))$RETURN**SetupthestartpointsinXandYiftheincrementsarenotboth*unity.*IF((INCX.NE.1).OR.(INCY.NE.1))THENIF(INCX.GT.0)THENKX=1ELSEKX=1-(N-1)*INCXENDIFIF(INCY.GT.0)THENKY=1ELSEKY=1-(N-1)*INCYENDIFJX=KXJY=KYENDIF**Starttheoperations.InthisversiontheelementsofthearrayAP*areaccessedsequentiallywithonepassthroughAP.*KK=1IF(LSAME(UPLO,'U'))THEN**FormAwhenuppertriangleisstoredinAP.*IF((INCX.EQ.1).AND.(INCY.EQ.1))THENDO20,J=1,NIF((X(J).NE.ZERO).OR.(Y(J).NE.ZERO))THENTEMP1=ALPHA*Y(J)TEMP2=ALPHA*X(J)K=KKDO10,I=1,JAP(K)=AP(K)+X(I)*TEMP1+Y(I)*TEMP2K=K+110CONTINUEENDIFKK=KK+J20CONTINUEELSEDO40,J=1,NIF((X(JX).NE.ZERO).OR.(Y(JY).NE.ZERO))THENTEMP1=ALPHA*Y(JY)TEMP2=ALPHA*X(JX)IX=KXIY=KYDO30,K=KK,KK+J-1AP(K)=AP(K)+X(IX)*TEMP1+Y(IY)*TEMP2IX=IX+INCXIY=IY+INCY30CONTINUEENDIFJX=JX+INCXJY=JY+INCYKK=KK+J40CONTINUEENDIFELSE**FormAwhenlowertriangleisstoredinAP.*IF((INCX.EQ.1).AND.(INCY.EQ.1))THENDO60,J=1,NIF((X(J).NE.ZERO).OR.(Y(J).NE.ZERO))THENTEMP1=ALPHA*Y(J)TEMP2=ALPHA*X(J)K=KKDO50,I=J,NAP(K)=AP(K)+X(I)*TEMP1+Y(I)*TEMP2K=K+150CONTINUEENDIFKK=KK+N-J+160CONTINUEELSEDO80,J=1,NIF((X(JX).NE.ZERO).OR.(Y(JY).NE.ZERO))THENTEMP1=ALPHA*Y(JY)TEMP2=ALPHA*X(JX)IX=JXIY=JYDO70,K=KK,KK+N-JAP(K)=AP(K)+X(IX)*TEMP1+Y(IY)*TEMP2IX=IX+INCXIY=IY+INCY70CONTINUEENDIFJX=JX+INCXJY=JY+INCYKK=KK+N-J+180CONTINUEENDIFENDIF*RETURN**EndofSSPR2.*END
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。