ilaenv.f.html

来自「famous linear algebra library (LAPACK) p」· HTML 代码 · 共 577 行 · 第 1/3 页

HTML
577
字号
   40       CONTINUE
         END IF
      END IF
<span class="comment">*</span><span class="comment">
</span>      C1 = SUBNAM( 1: 1 )
      SNAME = C1.EQ.<span class="string">'S'</span> .OR. C1.EQ.<span class="string">'D'</span>
      CNAME = C1.EQ.<span class="string">'C'</span> .OR. C1.EQ.<span class="string">'Z'</span>
      IF( .NOT.( CNAME .OR. SNAME ) )
     $   RETURN
      C2 = SUBNAM( 2: 3 )
      C3 = SUBNAM( 4: 6 )
      C4 = C3( 2: 3 )
<span class="comment">*</span><span class="comment">
</span>      GO TO ( 50, 60, 70 )ISPEC
<span class="comment">*</span><span class="comment">
</span>   50 CONTINUE
<span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment">     ISPEC = 1:  block size
</span><span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment">     In these examples, separate code is provided for setting NB for
</span><span class="comment">*</span><span class="comment">     real and complex.  We assume that NB will take the same value in
</span><span class="comment">*</span><span class="comment">     single or double precision.
</span><span class="comment">*</span><span class="comment">
</span>      NB = 1
<span class="comment">*</span><span class="comment">
</span>      IF( C2.EQ.<span class="string">'GE'</span> ) THEN
         IF( C3.EQ.<span class="string">'TRF'</span> ) THEN
            IF( SNAME ) THEN
               NB = 64
            ELSE
               NB = 64
            END IF
         ELSE IF( C3.EQ.<span class="string">'QRF'</span> .OR. C3.EQ.<span class="string">'RQF'</span> .OR. C3.EQ.<span class="string">'LQF'</span> .OR.
     $            C3.EQ.<span class="string">'QLF'</span> ) THEN
            IF( SNAME ) THEN
               NB = 32
            ELSE
               NB = 32
            END IF
         ELSE IF( C3.EQ.<span class="string">'HRD'</span> ) THEN
            IF( SNAME ) THEN
               NB = 32
            ELSE
               NB = 32
            END IF
         ELSE IF( C3.EQ.<span class="string">'BRD'</span> ) THEN
            IF( SNAME ) THEN
               NB = 32
            ELSE
               NB = 32
            END IF
         ELSE IF( C3.EQ.<span class="string">'TRI'</span> ) THEN
            IF( SNAME ) THEN
               NB = 64
            ELSE
               NB = 64
            END IF
         END IF
      ELSE IF( C2.EQ.<span class="string">'PO'</span> ) THEN
         IF( C3.EQ.<span class="string">'TRF'</span> ) THEN
            IF( SNAME ) THEN
               NB = 64
            ELSE
               NB = 64
            END IF
         END IF
      ELSE IF( C2.EQ.<span class="string">'SY'</span> ) THEN
         IF( C3.EQ.<span class="string">'TRF'</span> ) THEN
            IF( SNAME ) THEN
               NB = 64
            ELSE
               NB = 64
            END IF
         ELSE IF( SNAME .AND. C3.EQ.<span class="string">'TRD'</span> ) THEN
            NB = 32
         ELSE IF( SNAME .AND. C3.EQ.<span class="string">'GST'</span> ) THEN
            NB = 64
         END IF
      ELSE IF( CNAME .AND. C2.EQ.<span class="string">'HE'</span> ) THEN
         IF( C3.EQ.<span class="string">'TRF'</span> ) THEN
            NB = 64
         ELSE IF( C3.EQ.<span class="string">'TRD'</span> ) THEN
            NB = 32
         ELSE IF( C3.EQ.<span class="string">'GST'</span> ) THEN
            NB = 64
         END IF
      ELSE IF( SNAME .AND. C2.EQ.<span class="string">'OR'</span> ) THEN
         IF( C3( 1: 1 ).EQ.<span class="string">'G'</span> ) THEN
            IF( C4.EQ.<span class="string">'QR'</span> .OR. C4.EQ.<span class="string">'RQ'</span> .OR. C4.EQ.<span class="string">'LQ'</span> .OR. C4.EQ.
     $          <span class="string">'QL'</span> .OR. C4.EQ.<span class="string">'HR'</span> .OR. C4.EQ.<span class="string">'TR'</span> .OR. C4.EQ.<span class="string">'BR'</span> )
     $           THEN
               NB = 32
            END IF
         ELSE IF( C3( 1: 1 ).EQ.<span class="string">'M'</span> ) THEN
            IF( C4.EQ.<span class="string">'QR'</span> .OR. C4.EQ.<span class="string">'RQ'</span> .OR. C4.EQ.<span class="string">'LQ'</span> .OR. C4.EQ.
     $          <span class="string">'QL'</span> .OR. C4.EQ.<span class="string">'HR'</span> .OR. C4.EQ.<span class="string">'TR'</span> .OR. C4.EQ.<span class="string">'BR'</span> )
     $           THEN
               NB = 32
            END IF
         END IF
      ELSE IF( CNAME .AND. C2.EQ.<span class="string">'UN'</span> ) THEN
         IF( C3( 1: 1 ).EQ.<span class="string">'G'</span> ) THEN
            IF( C4.EQ.<span class="string">'QR'</span> .OR. C4.EQ.<span class="string">'RQ'</span> .OR. C4.EQ.<span class="string">'LQ'</span> .OR. C4.EQ.
     $          <span class="string">'QL'</span> .OR. C4.EQ.<span class="string">'HR'</span> .OR. C4.EQ.<span class="string">'TR'</span> .OR. C4.EQ.<span class="string">'BR'</span> )
     $           THEN
               NB = 32
            END IF
         ELSE IF( C3( 1: 1 ).EQ.<span class="string">'M'</span> ) THEN
            IF( C4.EQ.<span class="string">'QR'</span> .OR. C4.EQ.<span class="string">'RQ'</span> .OR. C4.EQ.<span class="string">'LQ'</span> .OR. C4.EQ.
     $          <span class="string">'QL'</span> .OR. C4.EQ.<span class="string">'HR'</span> .OR. C4.EQ.<span class="string">'TR'</span> .OR. C4.EQ.<span class="string">'BR'</span> )
     $           THEN
               NB = 32
            END IF
         END IF
      ELSE IF( C2.EQ.<span class="string">'GB'</span> ) THEN
         IF( C3.EQ.<span class="string">'TRF'</span> ) THEN
            IF( SNAME ) THEN
               IF( N4.LE.64 ) THEN
                  NB = 1
               ELSE
                  NB = 32
               END IF
            ELSE
               IF( N4.LE.64 ) THEN
                  NB = 1
               ELSE
                  NB = 32
               END IF
            END IF
         END IF
      ELSE IF( C2.EQ.<span class="string">'PB'</span> ) THEN
         IF( C3.EQ.<span class="string">'TRF'</span> ) THEN
            IF( SNAME ) THEN
               IF( N2.LE.64 ) THEN
                  NB = 1
               ELSE
                  NB = 32
               END IF
            ELSE
               IF( N2.LE.64 ) THEN
                  NB = 1
               ELSE
                  NB = 32
               END IF
            END IF
         END IF
      ELSE IF( C2.EQ.<span class="string">'TR'</span> ) THEN
         IF( C3.EQ.<span class="string">'TRI'</span> ) THEN
            IF( SNAME ) THEN
               NB = 64
            ELSE
               NB = 64
            END IF
         END IF
      ELSE IF( C2.EQ.<span class="string">'LA'</span> ) THEN
         IF( C3.EQ.<span class="string">'UUM'</span> ) THEN
            IF( SNAME ) THEN
               NB = 64
            ELSE
               NB = 64
            END IF
         END IF
      ELSE IF( SNAME .AND. C2.EQ.<span class="string">'ST'</span> ) THEN
         IF( C3.EQ.<span class="string">'EBZ'</span> ) THEN
            NB = 1
         END IF
      END IF
      <a name="ILAENV.342"></a><a href="hfy-index.html#ILAENV">ILAENV</a> = NB
      RETURN
<span class="comment">*</span><span class="comment">
</span>   60 CONTINUE
<span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment">     ISPEC = 2:  minimum block size
</span><span class="comment">*</span><span class="comment">
</span>      NBMIN = 2
      IF( C2.EQ.<span class="string">'GE'</span> ) THEN
         IF( C3.EQ.<span class="string">'QRF'</span> .OR. C3.EQ.<span class="string">'RQF'</span> .OR. C3.EQ.<span class="string">'LQF'</span> .OR. C3.EQ.
     $       <span class="string">'QLF'</span> ) THEN
            IF( SNAME ) THEN
               NBMIN = 2
            ELSE
               NBMIN = 2
            END IF
         ELSE IF( C3.EQ.<span class="string">'HRD'</span> ) THEN
            IF( SNAME ) THEN
               NBMIN = 2
            ELSE
               NBMIN = 2
            END IF
         ELSE IF( C3.EQ.<span class="string">'BRD'</span> ) THEN
            IF( SNAME ) THEN
               NBMIN = 2
            ELSE

⌨️ 快捷键说明

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