SUBROUTINECLAUU2F(UPLO,N,A,LDA,INFO)**--LAPACKauxiliaryroutine(version3.1)--*Univ.ofTennessee,Univ.ofCaliforniaBerkeleyandNAGLtd..*November2006**..ScalarArguments..CHARACTERUPLOINTEGERINFO,LDA,N*..*..ArrayArguments..COMPLEXA(LDA,*)*..**Purpose*=======**CLAUU2computestheproductU*U' or L'*L,wherethetriangular*factorUorLisstoredintheupperorlowertriangularpartof*thearrayA.**IfUPLO='U'or'u'thentheuppertriangleoftheresultisstored,*overwritingthefactorUinA.*IfUPLO='L'or'l'thenthelowertriangleoftheresultisstored,*overwritingthefactorLinA.**Thisistheunblockedformofthealgorithm,callingLevel2BLAS.**Arguments*=========**UPLO(input)CHARACTER*1*SpecifieswhetherthetriangularfactorstoredinthearrayA*isupperorlowertriangular:*='U':Uppertriangular*='L':Lowertriangular**N(input)INTEGER*TheorderofthetriangularfactorUorL.N>=0.**A(input/output)COMPLEXarray,dimension(LDA,N)*Onentry,thetriangularfactorUorL.*Onexit,ifUPLO='U',theuppertriangleofAis*overwrittenwiththeuppertriangleoftheproductU*U';* if UPLO = 'L', the lower triangle of A is overwritten with* the lower triangle of the product L'*L.**LDA(input)INTEGER*TheleadingdimensionofthearrayA.LDA>=max(1,N).**INFO(output)INTEGER*=0:successfulexit*<0:ifINFO=-k,thek-thargumenthadanillegalvalue**=====================================================================**..Parameters..COMPLEXONEPARAMETER(ONE=(1.0E+0,0.0E+0))*..*..LocalScalars..LOGICALUPPERINTEGERIREALAII*..*..ExternalFunctions..LOGICALLSAMECOMPLEXCDOTCEXTERNALLSAME,CDOTC*..*..ExternalSubroutines..EXTERNALCGEMV,CLACGV,CSSCAL,XERBLA*..*..IntrinsicFunctions..INTRINSICCMPLX,MAX,REAL*..*..ExecutableStatements..**Testtheinputparameters.*INFO=0UPPER=LSAME(UPLO,'U')IF(.NOT.UPPER.AND..NOT.LSAME(UPLO,'L'))THENINFO=-1ELSEIF(N.LT.0)THENINFO=-2ELSEIF(LDA.LT.MAX(1,N))THENINFO=-4ENDIFIF(INFO.NE.0)THENCALLXERBLA('CLAUU2',-INFO)RETURNENDIF**Quickreturnifpossible*IF(N.EQ.0)$RETURN*IF(UPPER)THEN**ComputetheproductU*U'.*DO 10 I = 1, NAII = A( I, I )IF( I.LT.N ) THENA( I, I ) = AII*AII + REAL( CDOTC( N-I, A( I, I+1 ), LDA,$ A( I, I+1 ), LDA ) )CALL CLACGV( N-I, A( I, I+1 ), LDA )CALL CGEMV( 'Notranspose', I-1, N-I, ONE, A( 1, I+1 ),$ LDA, A( I, I+1 ), LDA, CMPLX( AII ),$ A( 1, I ), 1 )CALL CLACGV( N-I, A( I, I+1 ), LDA )ELSECALL CSSCAL( I, AII, A( 1, I ), 1 )END IF10 CONTINUE*ELSE** Compute the product L'*L.*DO20I=1,NAII=A(I,I)IF(I.LT.N)THENA(I,I)=AII*AII+REAL(CDOTC(N-I,A(I+1,I),1,$A(I+1,I),1))CALLCLACGV(I-1,A(I,1),LDA)CALLCGEMV('Conjugate transpose',N-I,I-1,ONE,$A(I+1,1),LDA,A(I+1,I),1,$CMPLX(AII),A(I,1),LDA)CALLCLACGV(I-1,A(I,1),LDA)ELSECALLCSSCAL(I,AII,A(I,1),LDA)ENDIF20CONTINUEENDIF*RETURN**EndofCLAUU2*END
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。