SUBROUTINESSYMVF(UPLO,N,ALPHA,A,LDA,X,INCX,$BETA,Y,INCY)*..ScalarArguments..REALALPHA,BETAINTEGERINCX,INCY,LDA,NCHARACTER*1UPLO*..ArrayArguments..REALA(LDA,*),X(*),Y(*)*..**Purpose*=======**SSYMVperformsthematrix-vectoroperation**y:=alpha*A*x+beta*y,**wherealphaandbetaarescalars,xandyarenelementvectorsand*Aisannbynsymmetricmatrix.**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.**A-REALarrayofDIMENSION(LDA,n).*BeforeentrywithUPLO='U'or'u',theleadingnbyn*uppertriangularpartofthearrayAmustcontaintheupper*triangularpartofthesymmetricmatrixandthestrictly*lowertriangularpartofAisnotreferenced.*BeforeentrywithUPLO='L'or'l',theleadingnbyn*lowertriangularpartofthearrayAmustcontainthelower*triangularpartofthesymmetricmatrixandthestrictly*uppertriangularpartofAisnotreferenced.*Unchangedonexit.**LDA-INTEGER.*Onentry,LDAspecifiesthefirstdimensionofAasdeclared*inthecalling(sub)program.LDAmustbeatleast*max(1,n).*Unchangedonexit.**X-REALarrayofdimensionatleast*(1+(n-1)*abs(INCX)).*Beforeentry,theincrementedarrayXmustcontainthen*elementvectorx.*Unchangedonexit.**INCX-INTEGER.*Onentry,INCXspecifiestheincrementfortheelementsof*X.INCXmustnotbezero.*Unchangedonexit.**BETA-REAL.*Onentry,BETAspecifiesthescalarbeta.WhenBETAis*suppliedaszerothenYneednotbesetoninput.*Unchangedonexit.**Y-REALarrayofdimensionatleast*(1+(n-1)*abs(INCY)).*Beforeentry,theincrementedarrayYmustcontainthen*elementvectory.Onexit,Yisoverwrittenbytheupdated*vectory.**INCY-INTEGER.*Onentry,INCYspecifiestheincrementfortheelementsof*Y.INCYmustnotbezero.*Unchangedonexit.***Level2Blasroutine.**--Writtenon22-October-1986.*JackDongarra,ArgonneNationalLab.*JeremyDuCroz,NagCentralOffice.*SvenHammarling,NagCentralOffice.*RichardHanson,SandiaNationalLabs.***..Parameters..REALONE,ZEROPARAMETER(ONE=1.0E+0,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(LDA.LT.MAX(1,N))THENINFO=5ELSEIF(INCX.EQ.0)THENINFO=7ELSEIF(INCY.EQ.0)THENINFO=10ENDIFIF(INFO.NE.0)THENCALLXERBLA('SSYMV ',INFO)RETURNENDIF**Quickreturnifpossible.*IF((N.EQ.0).OR.((ALPHA.EQ.ZERO).AND.(BETA.EQ.ONE)))$RETURN**SetupthestartpointsinXandY.*IF(INCX.GT.0)THENKX=1ELSEKX=1-(N-1)*INCXENDIFIF(INCY.GT.0)THENKY=1ELSEKY=1-(N-1)*INCYENDIF**Starttheoperations.InthisversiontheelementsofAare*accessedsequentiallywithonepassthroughthetriangularpart*ofA.**Firstformy:=beta*y.*IF(BETA.NE.ONE)THENIF(INCY.EQ.1)THENIF(BETA.EQ.ZERO)THENDO10,I=1,NY(I)=ZERO10CONTINUEELSEDO20,I=1,NY(I)=BETA*Y(I)20CONTINUEENDIFELSEIY=KYIF(BETA.EQ.ZERO)THENDO30,I=1,NY(IY)=ZEROIY=IY+INCY30CONTINUEELSEDO40,I=1,NY(IY)=BETA*Y(IY)IY=IY+INCY40CONTINUEENDIFENDIFENDIFIF(ALPHA.EQ.ZERO)$RETURNIF(LSAME(UPLO,'U'))THEN**FormywhenAisstoredinuppertriangle.*IF((INCX.EQ.1).AND.(INCY.EQ.1))THENDO60,J=1,NTEMP1=ALPHA*X(J)TEMP2=ZERODO50,I=1,J-1Y(I)=Y(I)+TEMP1*A(I,J)TEMP2=TEMP2+A(I,J)*X(I)50CONTINUEY(J)=Y(J)+TEMP1*A(J,J)+ALPHA*TEMP260CONTINUEELSEJX=KXJY=KYDO80,J=1,NTEMP1=ALPHA*X(JX)TEMP2=ZEROIX=KXIY=KYDO70,I=1,J-1Y(IY)=Y(IY)+TEMP1*A(I,J)TEMP2=TEMP2+A(I,J)*X(IX)IX=IX+INCXIY=IY+INCY70CONTINUEY(JY)=Y(JY)+TEMP1*A(J,J)+ALPHA*TEMP2JX=JX+INCXJY=JY+INCY80CONTINUEENDIFELSE**FormywhenAisstoredinlowertriangle.*IF((INCX.EQ.1).AND.(INCY.EQ.1))THENDO100,J=1,NTEMP1=ALPHA*X(J)TEMP2=ZEROY(J)=Y(J)+TEMP1*A(J,J)DO90,I=J+1,NY(I)=Y(I)+TEMP1*A(I,J)TEMP2=TEMP2+A(I,J)*X(I)90CONTINUEY(J)=Y(J)+ALPHA*TEMP2100CONTINUEELSEJX=KXJY=KYDO120,J=1,NTEMP1=ALPHA*X(JX)TEMP2=ZEROY(JY)=Y(JY)+TEMP1*A(J,J)IX=JXIY=JYDO110,I=J+1,NIX=IX+INCXIY=IY+INCYY(IY)=Y(IY)+TEMP1*A(I,J)TEMP2=TEMP2+A(I,J)*X(IX)110CONTINUEY(JY)=Y(JY)+ALPHA*TEMP2JX=JX+INCXJY=JY+INCY120CONTINUEENDIFENDIF*RETURN**EndofSSYMV.*END
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。