SUBROUTINESSYR2F(UPLO,N,ALPHA,X,INCX,Y,INCY,A,LDA)*..ScalarArguments..REALALPHAINTEGERINCX,INCY,LDA,NCHARACTER*1UPLO*..ArrayArguments..REALA(LDA,*),X(*),Y(*)*..**Purpose*=======**SSYR2performsthesymmetricrank2operation**A:=alpha*x*y' + alpha*y*x'+A,**wherealphaisascalar,xandyarenelementvectorsandAisann*bynsymmetricmatrix.**Parameters*==========**UPLO-CHARACTER*1.*Onentry,UPLOspecifieswhethertheupperorlower*triangularpartofthearrayAistobereferencedas*follows:**UPLO='U'or'u'OnlytheuppertriangularpartofA*istobereferenced.**UPLO='L'or'l'OnlythelowertriangularpartofA*istobereferenced.**Unchangedonexit.**N-INTEGER.*Onentry,NspecifiestheorderofthematrixA.*Nmustbeatleastzero.*Unchangedonexit.**ALPHA-REAL.*Onentry,ALPHAspecifiesthescalaralpha.*Unchangedonexit.**X-REALarrayofdimensionatleast*(1+(n-1)*abs(INCX)).*Beforeentry,theincrementedarrayXmustcontainthen*elementvectorx.*Unchangedonexit.**INCX-INTEGER.*Onentry,INCXspecifiestheincrementfortheelementsof*X.INCXmustnotbezero.*Unchangedonexit.**Y-REALarrayofdimensionatleast*(1+(n-1)*abs(INCY)).*Beforeentry,theincrementedarrayYmustcontainthen*elementvectory.*Unchangedonexit.**INCY-INTEGER.*Onentry,INCYspecifiestheincrementfortheelementsof*Y.INCYmustnotbezero.*Unchangedonexit.**A-REALarrayofDIMENSION(LDA,n).*BeforeentrywithUPLO='U'or'u',theleadingnbyn*uppertriangularpartofthearrayAmustcontaintheupper*triangularpartofthesymmetricmatrixandthestrictly*lowertriangularpartofAisnotreferenced.Onexit,the*uppertriangularpartofthearrayAisoverwrittenbythe*uppertriangularpartoftheupdatedmatrix.*BeforeentrywithUPLO='L'or'l',theleadingnbyn*lowertriangularpartofthearrayAmustcontainthelower*triangularpartofthesymmetricmatrixandthestrictly*uppertriangularpartofAisnotreferenced.Onexit,the*lowertriangularpartofthearrayAisoverwrittenbythe*lowertriangularpartoftheupdatedmatrix.**LDA-INTEGER.*Onentry,LDAspecifiesthefirstdimensionofAasdeclared*inthecalling(sub)program.LDAmustbeatleast*max(1,n).*Unchangedonexit.***Level2Blasroutine.**--Writtenon22-October-1986.*JackDongarra,ArgonneNationalLab.*JeremyDuCroz,NagCentralOffice.*SvenHammarling,NagCentralOffice.*RichardHanson,SandiaNationalLabs.***..Parameters..REALZEROPARAMETER(ZERO=0.0E+0)*..LocalScalars..REALTEMP1,TEMP2INTEGERI,INFO,IX,IY,J,JX,JY,KX,KY*..ExternalFunctions..LOGICALLSAMEEXTERNALLSAME*..ExternalSubroutines..EXTERNALXERBLA*..IntrinsicFunctions..INTRINSICMAX*..*..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=7ELSEIF(LDA.LT.MAX(1,N))THENINFO=9ENDIFIF(INFO.NE.0)THENCALLXERBLA('SSYR2 ',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.InthisversiontheelementsofAare*accessedsequentiallywithonepassthroughthetriangularpart*ofA.*IF(LSAME(UPLO,'U'))THEN**FormAwhenAisstoredintheuppertriangle.*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)DO10,I=1,JA(I,J)=A(I,J)+X(I)*TEMP1+Y(I)*TEMP210CONTINUEENDIF20CONTINUEELSEDO40,J=1,NIF((X(JX).NE.ZERO).OR.(Y(JY).NE.ZERO))THENTEMP1=ALPHA*Y(JY)TEMP2=ALPHA*X(JX)IX=KXIY=KYDO30,I=1,JA(I,J)=A(I,J)+X(IX)*TEMP1$+Y(IY)*TEMP2IX=IX+INCXIY=IY+INCY30CONTINUEENDIFJX=JX+INCXJY=JY+INCY40CONTINUEENDIFELSE**FormAwhenAisstoredinthelowertriangle.*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)DO50,I=J,NA(I,J)=A(I,J)+X(I)*TEMP1+Y(I)*TEMP250CONTINUEENDIF60CONTINUEELSEDO80,J=1,NIF((X(JX).NE.ZERO).OR.(Y(JY).NE.ZERO))THENTEMP1=ALPHA*Y(JY)TEMP2=ALPHA*X(JX)IX=JXIY=JYDO70,I=J,NA(I,J)=A(I,J)+X(IX)*TEMP1$+Y(IY)*TEMP2IX=IX+INCXIY=IY+INCY70CONTINUEENDIFJX=JX+INCXJY=JY+INCY80CONTINUEENDIFENDIF*RETURN**EndofSSYR2.*END
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。