ilaenv.f

来自「基于Blas CLapck的.用过的人知道是干啥的」· F 代码 · 共 605 行 · 第 1/2 页

F
605
字号
               IF( SNAME ) THEN                  NB = 60               ELSE                  NB = 40               END IF            END IF         ELSE IF( SNAME .AND. C3.EQ.'GST' ) THEN            NB = NB         END IF      ELSE IF( CNAME .AND. C2.EQ.'HE' ) THEN         IF( C3.EQ.'TRF' ) THEN            NB = NB         ELSE IF( C3.EQ.'TRD' ) THEN            IF (NB .GT. 80) THEN               IF( SNAME ) THEN                  NB = 60               ELSE                  NB = 40               END IF            END IF         ELSE IF( C3.EQ.'GST' ) THEN            NB = NB         END IF      ELSE IF( SNAME .AND. C2.EQ.'OR' ) THEN         IF( C3( 1:1 ).EQ.'G' ) THEN            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR.     $          C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.     $          C4.EQ.'BR' ) THEN               IF (NB .GT. 80) NB = 60            END IF         ELSE IF( C3( 1:1 ).EQ.'M' ) THEN            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR.     $          C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.     $          C4.EQ.'BR' ) THEN               IF (NB .GT. 80) NB = 60            END IF         END IF      ELSE IF( CNAME .AND. C2.EQ.'UN' ) THEN         IF( C3( 1:1 ).EQ.'G' ) THEN            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR.     $          C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.     $          C4.EQ.'BR' ) THEN               IF (NB .GT. 80) NB = 40            END IF         ELSE IF( C3( 1:1 ).EQ.'M' ) THEN            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR.     $          C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.     $          C4.EQ.'BR' ) THEN               IF (NB .GT. 80) NB = 40            END IF         END IF      ELSE IF( C2.EQ.'GB' ) THEN         IF( C3.EQ.'TRF' ) THEN            IF( SNAME ) THEN               NB = NB            ELSE               NB = NB            END IF         END IF      ELSE IF( C2.EQ.'PB' ) THEN         IF( C3.EQ.'TRF' ) THEN            IF( SNAME ) THEN               IF( N2.LE.64 ) THEN                  NB = NB               ELSE                  NB = NB               END IF            ELSE               IF( N2.LE.64 ) THEN                  NB = NB               ELSE                  NB = NB               END IF            END IF         END IF      ELSE IF( C2.EQ.'TR' ) THEN         IF( C3.EQ.'TRI' ) THEN            IF( SNAME ) THEN               NB = NB            ELSE               NB = NB            END IF         END IF      ELSE IF( C2.EQ.'LA' ) THEN         IF( C3.EQ.'UUM' ) THEN            IF( SNAME ) THEN               NB = NB            ELSE               NB = NB            END IF         END IF      ELSE IF( SNAME .AND. C2.EQ.'ST' ) THEN         IF( C3.EQ.'EBZ' ) THEN            NB = 1         END IF      END IF*      ILAENV = NB      RETURN*  200 CONTINUE**     ISPEC = 2:  minimum block size*      NBMIN = 2      IF( C2.EQ.'GE' ) THEN         IF( C3.EQ.'QRF' .OR. C3.EQ.'RQF' .OR. C3.EQ.'LQF' .OR.     $       C3.EQ.'QLF' ) THEN            IF( SNAME ) THEN               NBMIN = 2            ELSE               NBMIN = 2            END IF         ELSE IF( C3.EQ.'HRD' ) THEN            IF( SNAME ) THEN               NBMIN = 2            ELSE               NBMIN = 2            END IF         ELSE IF( C3.EQ.'BRD' ) THEN            IF( SNAME ) THEN               NBMIN = 2            ELSE               NBMIN = 2            END IF         ELSE IF( C3.EQ.'TRI' ) THEN            IF( SNAME ) THEN               NBMIN = 2            ELSE               NBMIN = 2            END IF         END IF      ELSE IF( C2.EQ.'SY' ) THEN         IF( C3.EQ.'TRF' ) THEN            IF( SNAME ) THEN               NBMIN = 8            ELSE               NBMIN = 8            END IF         ELSE IF( SNAME .AND. C3.EQ.'TRD' ) THEN            NBMIN = 2         END IF      ELSE IF( CNAME .AND. C2.EQ.'HE' ) THEN         IF( C3.EQ.'TRD' ) THEN            NBMIN = 2         END IF      ELSE IF( SNAME .AND. C2.EQ.'OR' ) THEN         IF( C3( 1:1 ).EQ.'G' ) THEN            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR.     $          C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.     $          C4.EQ.'BR' ) THEN               NBMIN = 2            END IF         ELSE IF( C3( 1:1 ).EQ.'M' ) THEN            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR.     $          C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.     $          C4.EQ.'BR' ) THEN               NBMIN = 2            END IF         END IF      ELSE IF( CNAME .AND. C2.EQ.'UN' ) THEN         IF( C3( 1:1 ).EQ.'G' ) THEN            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR.     $          C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.     $          C4.EQ.'BR' ) THEN               NBMIN = 2            END IF         ELSE IF( C3( 1:1 ).EQ.'M' ) THEN            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR.     $          C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.     $          C4.EQ.'BR' ) THEN               NBMIN = 2            END IF         END IF      END IF      ILAENV = NBMIN      RETURN*  300 CONTINUE**     ISPEC = 3:  crossover point*      NX = 0      IF( C2.EQ.'GE' ) THEN         IF( C3.EQ.'QRF' .OR. C3.EQ.'RQF' .OR. C3.EQ.'LQF' .OR.     $       C3.EQ.'QLF' ) THEN            IF( SNAME ) THEN               NX = 128            ELSE               NX = 128            END IF         ELSE IF( C3.EQ.'HRD' ) THEN            IF( SNAME ) THEN               NX = 128            ELSE               NX = 128            END IF         ELSE IF( C3.EQ.'BRD' ) THEN            IF( SNAME ) THEN               NX = 128            ELSE               NX = 128            END IF         END IF      ELSE IF( C2.EQ.'SY' ) THEN         IF( SNAME .AND. C3.EQ.'TRD' ) THEN            NX = 32         END IF      ELSE IF( CNAME .AND. C2.EQ.'HE' ) THEN         IF( C3.EQ.'TRD' ) THEN            NX = 32         END IF      ELSE IF( SNAME .AND. C2.EQ.'OR' ) THEN         IF( C3( 1:1 ).EQ.'G' ) THEN            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR.     $          C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.     $          C4.EQ.'BR' ) THEN               NX = 128            END IF         END IF      ELSE IF( CNAME .AND. C2.EQ.'UN' ) THEN         IF( C3( 1:1 ).EQ.'G' ) THEN            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR.     $          C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.     $          C4.EQ.'BR' ) THEN               NX = 128            END IF         END IF      END IF      ILAENV = NX      RETURN*  400 CONTINUE**     ISPEC = 4:  number of shifts (used by xHSEQR)*      ILAENV = 6      RETURN*  500 CONTINUE**     ISPEC = 5:  minimum column dimension (not used)*      ILAENV = 2      RETURN*  600 CONTINUE**     ISPEC = 6:  crossover point for SVD (used by xGELSS and xGESVD)*      ILAENV = INT( REAL( MIN( N1, N2 ) )*1.6E0 )      RETURN*  700 CONTINUE**     ISPEC = 7:  number of processors (not used)*      ILAENV = 1      RETURN*  800 CONTINUE**     ISPEC = 8:  crossover point for multishift (used by xHSEQR)*      ILAENV = 50      RETURN*  900 CONTINUE**     ISPEC = 9:  maximum size of the subproblems at the bottom of the*                 computation tree in the divide-and-conquer algorithm*                 (used by xGELSD and xGESDD)*      ILAENV = 25      RETURN* 1000 CONTINUE**     ISPEC = 10: ieee NaN arithmetic can be trusted not to trap**     ILAENV = 0      ILAENV = 1      IF( ILAENV.EQ.1 ) THEN         ILAENV = IEEECK( 0, 0.0, 1.0 )      END IF      RETURN* 1100 CONTINUE**     ISPEC = 11: infinity arithmetic can be trusted not to trap**     ILAENV = 0      ILAENV = 1      IF( ILAENV.EQ.1 ) THEN         ILAENV = IEEECK( 1, 0.0, 1.0 )      END IF      RETURN**     End of ILAENV*      END

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?