SUBROUTINEDSBMVF(UPLO,N,K,ALPHA,A,LDA,X,INCX,$BETA,Y,INCY)*..ScalarArguments..DOUBLE PRECISIONALPHA,BETAINTEGERINCX,INCY,K,LDA,NCHARACTER*1UPLO*..ArrayArguments..DOUBLE PRECISIONA(LDA,*),X(*),Y(*)*..**Purpose*=======**DSBMVperformsthematrix-vectoroperation**y:=alpha*A*x+beta*y,**wherealphaandbetaarescalars,xandyarenelementvectorsand*Aisannbynsymmetricbandmatrix,withksuper-diagonals.**Parameters*==========**UPLO-CHARACTER*1.*Onentry,UPLOspecifieswhethertheupperorlower*triangularpartofthebandmatrixAisbeingsuppliedas*follows:**UPLO='U'or'u'TheuppertriangularpartofAis*beingsupplied.**UPLO='L'or'l'ThelowertriangularpartofAis*beingsupplied.**Unchangedonexit.**N-INTEGER.*Onentry,NspecifiestheorderofthematrixA.*Nmustbeatleastzero.*Unchangedonexit.**K-INTEGER.*Onentry,Kspecifiesthenumberofsuper-diagonalsofthe*matrixA.Kmustsatisfy0.le.K.*Unchangedonexit.**ALPHA-DOUBLE PRECISION.*Onentry,ALPHAspecifiesthescalaralpha.*Unchangedonexit.**A-DOUBLE PRECISIONarrayofDIMENSION(LDA,n).*BeforeentrywithUPLO='U'or'u',theleading(k+1)*bynpartofthearrayAmustcontaintheuppertriangular*bandpartofthesymmetricmatrix,suppliedcolumnby*column,withtheleadingdiagonalofthematrixinrow*(k+1)ofthearray,thefirstsuper-diagonalstartingat*position2inrowk,andsoon.Thetopleftkbyktriangle*ofthearrayAisnotreferenced.*Thefollowingprogramsegmentwilltransfertheupper*triangularpartofasymmetricbandmatrixfromconventional*fullmatrixstoragetobandstorage:**DO20,J=1,N*M=K+1-J*DO10,I=MAX(1,J-K),J*A(M+I,J)=matrix(I,J)*10CONTINUE*20CONTINUE**BeforeentrywithUPLO='L'or'l',theleading(k+1)*bynpartofthearrayAmustcontainthelowertriangular*bandpartofthesymmetricmatrix,suppliedcolumnby*column,withtheleadingdiagonalofthematrixinrow1of*thearray,thefirstsub-diagonalstartingatposition1in*row2,andsoon.Thebottomrightkbyktriangleofthe*arrayAisnotreferenced.*Thefollowingprogramsegmentwilltransferthelower*triangularpartofasymmetricbandmatrixfromconventional*fullmatrixstoragetobandstorage:**DO20,J=1,N*M=1-J*DO10,I=J,MIN(N,J+K)*A(M+I,J)=matrix(I,J)*10CONTINUE*20CONTINUE**Unchangedonexit.**LDA-INTEGER.*Onentry,LDAspecifiesthefirstdimensionofAasdeclared*inthecalling(sub)program.LDAmustbeatleast*(k+1).*Unchangedonexit.**X-DOUBLE PRECISIONarrayofDIMENSIONatleast*(1+(n-1)*abs(INCX)).*Beforeentry,theincrementedarrayXmustcontainthe*vectorx.*Unchangedonexit.**INCX-INTEGER.*Onentry,INCXspecifiestheincrementfortheelementsof*X.INCXmustnotbezero.*Unchangedonexit.**BETA-DOUBLE PRECISION.*Onentry,BETAspecifiesthescalarbeta.*Unchangedonexit.**Y-DOUBLE PRECISIONarrayofDIMENSIONatleast*(1+(n-1)*abs(INCY)).*Beforeentry,theincrementedarrayYmustcontainthe*vectory.Onexit,Yisoverwrittenbytheupdatedvectory.**INCY-INTEGER.*Onentry,INCYspecifiestheincrementfortheelementsof*Y.INCYmustnotbezero.*Unchangedonexit.***Level2Blasroutine.**--Writtenon22-October-1986.*JackDongarra,ArgonneNationalLab.*JeremyDuCroz,NagCentralOffice.*SvenHammarling,NagCentralOffice.*RichardHanson,SandiaNationalLabs.***..Parameters..DOUBLE PRECISIONONE,ZEROPARAMETER(ONE=1.0D+0,ZERO=0.0D+0)*..LocalScalars..DOUBLE PRECISIONTEMP1,TEMP2INTEGERI,INFO,IX,IY,J,JX,JY,KPLUS1,KX,KY,L*..ExternalFunctions..LOGICALLSAMEEXTERNALLSAME*..ExternalSubroutines..EXTERNALXERBLA*..IntrinsicFunctions..INTRINSICMAX,MIN*..*..ExecutableStatements..**Testtheinputparameters.*INFO=0IF(.NOT.LSAME(UPLO,'U').AND.$.NOT.LSAME(UPLO,'L'))THENINFO=1ELSEIF(N.LT.0)THENINFO=2ELSEIF(K.LT.0)THENINFO=3ELSEIF(LDA.LT.(K+1))THENINFO=6ELSEIF(INCX.EQ.0)THENINFO=8ELSEIF(INCY.EQ.0)THENINFO=11ENDIFIF(INFO.NE.0)THENCALLXERBLA('DSBMV ',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.InthisversiontheelementsofthearrayA*areaccessedsequentiallywithonepassthroughA.**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**FormywhenuppertriangleofAisstored.*KPLUS1=K+1IF((INCX.EQ.1).AND.(INCY.EQ.1))THENDO60,J=1,NTEMP1=ALPHA*X(J)TEMP2=ZEROL=KPLUS1-JDO50,I=MAX(1,J-K),J-1Y(I)=Y(I)+TEMP1*A(L+I,J)TEMP2=TEMP2+A(L+I,J)*X(I)50CONTINUEY(J)=Y(J)+TEMP1*A(KPLUS1,J)+ALPHA*TEMP260CONTINUEELSEJX=KXJY=KYDO80,J=1,NTEMP1=ALPHA*X(JX)TEMP2=ZEROIX=KXIY=KYL=KPLUS1-JDO70,I=MAX(1,J-K),J-1Y(IY)=Y(IY)+TEMP1*A(L+I,J)TEMP2=TEMP2+A(L+I,J)*X(IX)IX=IX+INCXIY=IY+INCY70CONTINUEY(JY)=Y(JY)+TEMP1*A(KPLUS1,J)+ALPHA*TEMP2JX=JX+INCXJY=JY+INCYIF(J.GT.K)THENKX=KX+INCXKY=KY+INCYENDIF80CONTINUEENDIFELSE**FormywhenlowertriangleofAisstored.*IF((INCX.EQ.1).AND.(INCY.EQ.1))THENDO100,J=1,NTEMP1=ALPHA*X(J)TEMP2=ZEROY(J)=Y(J)+TEMP1*A(1,J)L=1-JDO90,I=J+1,MIN(N,J+K)Y(I)=Y(I)+TEMP1*A(L+I,J)TEMP2=TEMP2+A(L+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(1,J)L=1-JIX=JXIY=JYDO110,I=J+1,MIN(N,J+K)IX=IX+INCXIY=IY+INCYY(IY)=Y(IY)+TEMP1*A(L+I,J)TEMP2=TEMP2+A(L+I,J)*X(IX)110CONTINUEY(JY)=Y(JY)+ALPHA*TEMP2JX=JX+INCXJY=JY+INCY120CONTINUEENDIFENDIF*RETURN**EndofDSBMV.*END
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。