亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ssbgst.f

?? famous linear algebra library (LAPACK) ports to windows
?? F
?? 第 1 頁 / 共 4 頁
字號:
      SUBROUTINE SSBGST( VECT, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, X,
     $                   LDX, WORK, INFO )
*
*  -- LAPACK routine (version 3.1) --
*     Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
*     November 2006
*
*     .. Scalar Arguments ..
      CHARACTER          UPLO, VECT
      INTEGER            INFO, KA, KB, LDAB, LDBB, LDX, N
*     ..
*     .. Array Arguments ..
      REAL               AB( LDAB, * ), BB( LDBB, * ), WORK( * ),
     $                   X( LDX, * )
*     ..
*
*  Purpose
*  =======
*
*  SSBGST reduces a real symmetric-definite banded generalized
*  eigenproblem  A*x = lambda*B*x  to standard form  C*y = lambda*y,
*  such that C has the same bandwidth as A.
*
*  B must have been previously factorized as S**T*S by SPBSTF, using a
*  split Cholesky factorization. A is overwritten by C = X**T*A*X, where
*  X = S**(-1)*Q and Q is an orthogonal matrix chosen to preserve the
*  bandwidth of A.
*
*  Arguments
*  =========
*
*  VECT    (input) CHARACTER*1
*          = 'N':  do not form the transformation matrix X;
*          = 'V':  form X.
*
*  UPLO    (input) CHARACTER*1
*          = 'U':  Upper triangle of A is stored;
*          = 'L':  Lower triangle of A is stored.
*
*  N       (input) INTEGER
*          The order of the matrices A and B.  N >= 0.
*
*  KA      (input) INTEGER
*          The number of superdiagonals of the matrix A if UPLO = 'U',
*          or the number of subdiagonals if UPLO = 'L'.  KA >= 0.
*
*  KB      (input) INTEGER
*          The number of superdiagonals of the matrix B if UPLO = 'U',
*          or the number of subdiagonals if UPLO = 'L'.  KA >= KB >= 0.
*
*  AB      (input/output) REAL array, dimension (LDAB,N)
*          On entry, the upper or lower triangle of the symmetric band
*          matrix A, stored in the first ka+1 rows of the array.  The
*          j-th column of A is stored in the j-th column of the array AB
*          as follows:
*          if UPLO = 'U', AB(ka+1+i-j,j) = A(i,j) for max(1,j-ka)<=i<=j;
*          if UPLO = 'L', AB(1+i-j,j)    = A(i,j) for j<=i<=min(n,j+ka).
*
*          On exit, the transformed matrix X**T*A*X, stored in the same
*          format as A.
*
*  LDAB    (input) INTEGER
*          The leading dimension of the array AB.  LDAB >= KA+1.
*
*  BB      (input) REAL array, dimension (LDBB,N)
*          The banded factor S from the split Cholesky factorization of
*          B, as returned by SPBSTF, stored in the first KB+1 rows of
*          the array.
*
*  LDBB    (input) INTEGER
*          The leading dimension of the array BB.  LDBB >= KB+1.
*
*  X       (output) REAL array, dimension (LDX,N)
*          If VECT = 'V', the n-by-n matrix X.
*          If VECT = 'N', the array X is not referenced.
*
*  LDX     (input) INTEGER
*          The leading dimension of the array X.
*          LDX >= max(1,N) if VECT = 'V'; LDX >= 1 otherwise.
*
*  WORK    (workspace) REAL array, dimension (2*N)
*
*  INFO    (output) INTEGER
*          = 0:  successful exit
*          < 0:  if INFO = -i, the i-th argument had an illegal value.
*
*  =====================================================================
*
*     .. Parameters ..
      REAL               ZERO, ONE
      PARAMETER          ( ZERO = 0.0E+0, ONE = 1.0E+0 )
*     ..
*     .. Local Scalars ..
      LOGICAL            UPDATE, UPPER, WANTX
      INTEGER            I, I0, I1, I2, INCA, J, J1, J1T, J2, J2T, K,
     $                   KA1, KB1, KBT, L, M, NR, NRT, NX
      REAL               BII, RA, RA1, T
*     ..
*     .. External Functions ..
      LOGICAL            LSAME
      EXTERNAL           LSAME
*     ..
*     .. External Subroutines ..
      EXTERNAL           SGER, SLAR2V, SLARGV, SLARTG, SLARTV, SLASET,
     $                   SROT, SSCAL, XERBLA
*     ..
*     .. Intrinsic Functions ..
      INTRINSIC          MAX, MIN
*     ..
*     .. Executable Statements ..
*
*     Test the input parameters
*
      WANTX = LSAME( VECT, 'V' )
      UPPER = LSAME( UPLO, 'U' )
      KA1 = KA + 1
      KB1 = KB + 1
      INFO = 0
      IF( .NOT.WANTX .AND. .NOT.LSAME( VECT, 'N' ) ) THEN
         INFO = -1
      ELSE IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN
         INFO = -2
      ELSE IF( N.LT.0 ) THEN
         INFO = -3
      ELSE IF( KA.LT.0 ) THEN
         INFO = -4
      ELSE IF( KB.LT.0 .OR. KB.GT.KA ) THEN
         INFO = -5
      ELSE IF( LDAB.LT.KA+1 ) THEN
         INFO = -7
      ELSE IF( LDBB.LT.KB+1 ) THEN
         INFO = -9
      ELSE IF( LDX.LT.1 .OR. WANTX .AND. LDX.LT.MAX( 1, N ) ) THEN
         INFO = -11
      END IF
      IF( INFO.NE.0 ) THEN
         CALL XERBLA( 'SSBGST', -INFO )
         RETURN
      END IF
*
*     Quick return if possible
*
      IF( N.EQ.0 )
     $   RETURN
*
      INCA = LDAB*KA1
*
*     Initialize X to the unit matrix, if needed
*
      IF( WANTX )
     $   CALL SLASET( 'Full', N, N, ZERO, ONE, X, LDX )
*
*     Set M to the splitting point m. It must be the same value as is
*     used in SPBSTF. The chosen value allows the arrays WORK and RWORK
*     to be of dimension (N).
*
      M = ( N+KB ) / 2
*
*     The routine works in two phases, corresponding to the two halves
*     of the split Cholesky factorization of B as S**T*S where
*
*     S = ( U    )
*         ( M  L )
*
*     with U upper triangular of order m, and L lower triangular of
*     order n-m. S has the same bandwidth as B.
*
*     S is treated as a product of elementary matrices:
*
*     S = S(m)*S(m-1)*...*S(2)*S(1)*S(m+1)*S(m+2)*...*S(n-1)*S(n)
*
*     where S(i) is determined by the i-th row of S.
*
*     In phase 1, the index i takes the values n, n-1, ... , m+1;
*     in phase 2, it takes the values 1, 2, ... , m.
*
*     For each value of i, the current matrix A is updated by forming
*     inv(S(i))**T*A*inv(S(i)). This creates a triangular bulge outside
*     the band of A. The bulge is then pushed down toward the bottom of
*     A in phase 1, and up toward the top of A in phase 2, by applying
*     plane rotations.
*
*     There are kb*(kb+1)/2 elements in the bulge, but at most 2*kb-1
*     of them are linearly independent, so annihilating a bulge requires
*     only 2*kb-1 plane rotations. The rotations are divided into a 1st
*     set of kb-1 rotations, and a 2nd set of kb rotations.
*
*     Wherever possible, rotations are generated and applied in vector
*     operations of length NR between the indices J1 and J2 (sometimes
*     replaced by modified values NRT, J1T or J2T).
*
*     The cosines and sines of the rotations are stored in the array
*     WORK. The cosines of the 1st set of rotations are stored in
*     elements n+2:n+m-kb-1 and the sines of the 1st set in elements
*     2:m-kb-1; the cosines of the 2nd set are stored in elements
*     n+m-kb+1:2*n and the sines of the second set in elements m-kb+1:n.
*
*     The bulges are not formed explicitly; nonzero elements outside the
*     band are created only when they are required for generating new
*     rotations; they are stored in the array WORK, in positions where
*     they are later overwritten by the sines of the rotations which
*     annihilate them.
*
*     **************************** Phase 1 *****************************
*
*     The logical structure of this phase is:
*
*     UPDATE = .TRUE.
*     DO I = N, M + 1, -1
*        use S(i) to update A and create a new bulge
*        apply rotations to push all bulges KA positions downward
*     END DO
*     UPDATE = .FALSE.
*     DO I = M + KA + 1, N - 1
*        apply rotations to push all bulges KA positions downward
*     END DO
*
*     To avoid duplicating code, the two loops are merged.
*
      UPDATE = .TRUE.
      I = N + 1
   10 CONTINUE
      IF( UPDATE ) THEN
         I = I - 1
         KBT = MIN( KB, I-1 )
         I0 = I - 1
         I1 = MIN( N, I+KA )
         I2 = I - KBT + KA1
         IF( I.LT.M+1 ) THEN
            UPDATE = .FALSE.
            I = I + 1
            I0 = M
            IF( KA.EQ.0 )
     $         GO TO 480
            GO TO 10
         END IF
      ELSE
         I = I + KA
         IF( I.GT.N-1 )
     $      GO TO 480
      END IF
*
      IF( UPPER ) THEN
*
*        Transform A, working with the upper triangle
*
         IF( UPDATE ) THEN
*
*           Form  inv(S(i))**T * A * inv(S(i))
*
            BII = BB( KB1, I )
            DO 20 J = I, I1
               AB( I-J+KA1, J ) = AB( I-J+KA1, J ) / BII
   20       CONTINUE
            DO 30 J = MAX( 1, I-KA ), I
               AB( J-I+KA1, I ) = AB( J-I+KA1, I ) / BII
   30       CONTINUE
            DO 60 K = I - KBT, I - 1
               DO 40 J = I - KBT, K
                  AB( J-K+KA1, K ) = AB( J-K+KA1, K ) -
     $                               BB( J-I+KB1, I )*AB( K-I+KA1, I ) -
     $                               BB( K-I+KB1, I )*AB( J-I+KA1, I ) +
     $                               AB( KA1, I )*BB( J-I+KB1, I )*
     $                               BB( K-I+KB1, I )
   40          CONTINUE
               DO 50 J = MAX( 1, I-KA ), I - KBT - 1
                  AB( J-K+KA1, K ) = AB( J-K+KA1, K ) -
     $                               BB( K-I+KB1, I )*AB( J-I+KA1, I )
   50          CONTINUE
   60       CONTINUE
            DO 80 J = I, I1
               DO 70 K = MAX( J-KA, I-KBT ), I - 1
                  AB( K-J+KA1, J ) = AB( K-J+KA1, J ) -
     $                               BB( K-I+KB1, I )*AB( I-J+KA1, J )
   70          CONTINUE
   80       CONTINUE
*
            IF( WANTX ) THEN
*
*              post-multiply X by inv(S(i))
*
               CALL SSCAL( N-M, ONE / BII, X( M+1, I ), 1 )
               IF( KBT.GT.0 )
     $            CALL SGER( N-M, KBT, -ONE, X( M+1, I ), 1,
     $                       BB( KB1-KBT, I ), 1, X( M+1, I-KBT ), LDX )
            END IF
*
*           store a(i,i1) in RA1 for use in next loop over K
*
            RA1 = AB( I-I1+KA1, I1 )
         END IF
*
*        Generate and apply vectors of rotations to chase all the
*        existing bulges KA positions down toward the bottom of the
*        band
*
         DO 130 K = 1, KB - 1
            IF( UPDATE ) THEN
*
*              Determine the rotations which would annihilate the bulge
*              which has in theory just been created
*
               IF( I-K+KA.LT.N .AND. I-K.GT.1 ) THEN
*
*                 generate rotation to annihilate a(i,i-k+ka+1)
*
                  CALL SLARTG( AB( K+1, I-K+KA ), RA1,
     $                         WORK( N+I-K+KA-M ), WORK( I-K+KA-M ),
     $                         RA )
*
*                 create nonzero element a(i-k,i-k+ka+1) outside the
*                 band and store it in WORK(i-k)
*
                  T = -BB( KB1-K, I )*RA1
                  WORK( I-K ) = WORK( N+I-K+KA-M )*T -
     $                          WORK( I-K+KA-M )*AB( 1, I-K+KA )
                  AB( 1, I-K+KA ) = WORK( I-K+KA-M )*T +
     $                              WORK( N+I-K+KA-M )*AB( 1, I-K+KA )
                  RA1 = RA
               END IF
            END IF
            J2 = I - K - 1 + MAX( 1, K-I0+2 )*KA1
            NR = ( N-J2+KA ) / KA1
            J1 = J2 + ( NR-1 )*KA1
            IF( UPDATE ) THEN
               J2T = MAX( J2, I+2*KA-K+1 )
            ELSE
               J2T = J2
            END IF
            NRT = ( N-J2T+KA ) / KA1
            DO 90 J = J2T, J1, KA1
*
*              create nonzero element a(j-ka,j+1) outside the band
*              and store it in WORK(j-m)
*
               WORK( J-M ) = WORK( J-M )*AB( 1, J+1 )
               AB( 1, J+1 ) = WORK( N+J-M )*AB( 1, J+1 )

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
婷婷综合在线观看| 久久九九久精品国产免费直播| 欧美日韩一级视频| 久久嫩草精品久久久久| 日本一区二区电影| 欧美精品在线观看一区二区| 97久久人人超碰| 国产成人亚洲综合a∨猫咪| 亚洲卡通动漫在线| 91精品在线观看入口| 国产精品日产欧美久久久久| 石原莉奈在线亚洲二区| 99热这里都是精品| 久久久久久久久久电影| 免费在线观看一区二区三区| 97精品视频在线观看自产线路二| 日韩你懂的在线播放| 亚洲电影你懂得| 91免费看片在线观看| 久久精品视频一区二区三区| 日本视频中文字幕一区二区三区| 99精品视频在线播放观看| 日韩欧美国产三级电影视频| 亚洲精品一区二区精华| 日韩精品一区二区三区四区视频| 一区二区成人在线观看| 欧美日精品一区视频| 国产精品美女www爽爽爽| 韩国三级在线一区| 制服丝袜在线91| 午夜精品国产更新| 欧美性淫爽ww久久久久无| 日韩一区欧美一区| 99久久婷婷国产精品综合| 国产欧美日韩三级| 国产成人高清视频| 欧美激情一区二区三区在线| 国产麻豆一精品一av一免费| 欧美精品一区二区高清在线观看 | 丝袜a∨在线一区二区三区不卡| 91美女片黄在线观看91美女| 亚洲欧美一区二区在线观看| 色综合婷婷久久| 亚洲美女淫视频| 在线视频国内一区二区| 亚洲亚洲人成综合网络| 欧美日韩国产美女| 免费高清视频精品| 久久综合色天天久久综合图片| 国精品**一区二区三区在线蜜桃| 欧美tickling网站挠脚心| 国产一区二区三区不卡在线观看| 久久久99久久精品欧美| aa级大片欧美| 一区二区久久久| 在线不卡欧美精品一区二区三区| 日韩电影免费一区| www成人在线观看| 成人av网址在线| 夜夜精品浪潮av一区二区三区| 欧美日韩亚洲综合在线| 免费不卡在线观看| 国产精品免费视频观看| 欧美性受xxxx| 久久不见久久见中文字幕免费| 日本一区二区三区在线不卡| 一本一道综合狠狠老| 日韩精品电影在线| 亚洲国产激情av| 欧美日韩精品三区| 国产成人av一区二区三区在线 | 国产人成一区二区三区影院| 成人精品鲁一区一区二区| 亚洲第一二三四区| 欧美国产精品专区| 正在播放亚洲一区| 成人av在线一区二区| 视频一区视频二区中文字幕| 国产日韩欧美电影| 777亚洲妇女| 成人av片在线观看| 美国av一区二区| 亚洲美女偷拍久久| 久久久久久久性| 欧美日韩国产在线观看| 成人综合婷婷国产精品久久免费| 亚洲不卡一区二区三区| 国产精品入口麻豆九色| 日韩片之四级片| 色呦呦国产精品| 国产精品亚洲综合一区在线观看| 亚洲国产精品精华液网站| 国产拍揄自揄精品视频麻豆| 欧美一区二区三区在线看| 一本色道综合亚洲| 国产成人啪午夜精品网站男同| 日韩电影一二三区| 亚洲黄网站在线观看| 久久久久久久久岛国免费| 中文字幕精品综合| 久久综合九色综合97婷婷| 欧美男男青年gay1069videost| 99久久99精品久久久久久 | 欧美精品久久99久久在免费线| 成人sese在线| 国产精品亚洲а∨天堂免在线| 日韩成人免费电影| 午夜精品123| 亚洲国产综合视频在线观看| 亚洲人成电影网站色mp4| 久久久91精品国产一区二区精品| 日韩精品最新网址| 日韩欧美在线123| 91精品国产91久久久久久一区二区| 91福利在线看| 91蜜桃视频在线| 色综合av在线| 色综合久久六月婷婷中文字幕| 成人爱爱电影网址| 99综合影院在线| av网站免费线看精品| 成人国产精品免费| 99久久国产综合精品色伊| gogogo免费视频观看亚洲一| av不卡一区二区三区| 91免费看视频| 欧美性做爰猛烈叫床潮| 欧美久久一区二区| 欧美一级片在线观看| 日韩欧美一级精品久久| 欧美电影免费观看高清完整版在线 | 国产精品美女一区二区三区| 国产亚洲va综合人人澡精品| 亚洲国产电影在线观看| 国产精品免费人成网站| 亚洲男人天堂av网| 亚洲一区二区三区国产| 日本伊人午夜精品| 精品一区二区三区日韩| 国产福利91精品一区二区三区| 国产成人精品一区二| 色综合天天性综合| 欧美高清hd18日本| 久久综合色婷婷| 亚洲三级在线播放| 亚洲3atv精品一区二区三区| 久久精品理论片| www.成人在线| 欧美日韩国产高清一区二区三区| 日韩一区二区三区视频在线观看 | 日韩不卡一区二区三区| 国产原创一区二区| 一本色道久久综合亚洲aⅴ蜜桃| 欧美视频一区二区三区| 久久人人爽人人爽| 一区二区久久久久| 激情都市一区二区| 在线观看av一区| 久久综合九色欧美综合狠狠| 亚洲丝袜自拍清纯另类| 爽好多水快深点欧美视频| 国产传媒久久文化传媒| 欧美日韩夫妻久久| 中文字幕二三区不卡| 日韩激情视频网站| 99国产精品久久| 欧美精品一区二区在线观看| 亚洲男同性恋视频| 国产精一区二区三区| 欧美人与z0zoxxxx视频| 国产欧美日韩精品一区| 日韩在线卡一卡二| 91在线精品一区二区| 欧美精品一区二区蜜臀亚洲| 亚洲成人av福利| 91丝袜国产在线播放| 国产午夜精品一区二区| 日本亚洲三级在线| 色噜噜狠狠色综合中国| 欧美国产禁国产网站cc| 热久久国产精品| 欧美三区在线观看| 亚洲人成亚洲人成在线观看图片| 国产一区二区美女诱惑| 91精品免费在线观看| 亚洲一区av在线| fc2成人免费人成在线观看播放 | 精品奇米国产一区二区三区| 一区二区三区 在线观看视频| 成人一区二区三区视频| 日韩久久久久久| 喷水一区二区三区| 欧美日韩一区二区三区免费看| 亚洲色图.com| a亚洲天堂av| 国产精品日日摸夜夜摸av| 成人综合婷婷国产精品久久蜜臀 | 日本一区二区三区高清不卡| 极品少妇xxxx精品少妇| 日韩一区二区不卡|