version 1.11, 2012/08/22 09:48:28
|
version 1.20, 2023/08/07 08:39:14
|
Line 2
|
Line 2
|
* |
* |
* =========== DOCUMENTATION =========== |
* =========== DOCUMENTATION =========== |
* |
* |
* Online html documentation available at |
* Online html documentation available at |
* http://www.netlib.org/lapack/explore-html/ |
* http://www.netlib.org/lapack/explore-html/ |
* |
* |
*> \htmlonly |
*> \htmlonly |
*> Download ILAENV + dependencies |
*> Download ILAENV + dependencies |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/ilaenv.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/ilaenv.f"> |
*> [TGZ]</a> |
*> [TGZ]</a> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/ilaenv.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/ilaenv.f"> |
*> [ZIP]</a> |
*> [ZIP]</a> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/ilaenv.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/ilaenv.f"> |
*> [TXT]</a> |
*> [TXT]</a> |
*> \endhtmlonly |
*> \endhtmlonly |
* |
* |
* Definition: |
* Definition: |
* =========== |
* =========== |
* |
* |
* INTEGER FUNCTION ILAENV( ISPEC, NAME, OPTS, N1, N2, N3, N4 ) |
* INTEGER FUNCTION ILAENV( ISPEC, NAME, OPTS, N1, N2, N3, N4 ) |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
* CHARACTER*( * ) NAME, OPTS |
* CHARACTER*( * ) NAME, OPTS |
* INTEGER ISPEC, N1, N2, N3, N4 |
* INTEGER ISPEC, N1, N2, N3, N4 |
* .. |
* .. |
* |
* |
* |
* |
*> \par Purpose: |
*> \par Purpose: |
* ============= |
* ============= |
Line 79
|
Line 79
|
*> = 9: maximum size of the subproblems at the bottom of the |
*> = 9: maximum size of the subproblems at the bottom of the |
*> computation tree in the divide-and-conquer algorithm |
*> computation tree in the divide-and-conquer algorithm |
*> (used by xGELSD and xGESDD) |
*> (used by xGELSD and xGESDD) |
*> =10: ieee NaN arithmetic can be trusted not to trap |
*> =10: ieee infinity and NaN arithmetic can be trusted not to trap |
*> =11: infinity arithmetic can be trusted not to trap |
*> =11: infinity arithmetic can be trusted not to trap |
*> 12 <= ISPEC <= 16: |
*> 12 <= ISPEC <= 17: |
*> xHSEQR or one of its subroutines, |
*> xHSEQR or related subroutines, |
*> see IPARMQ for detailed explanation |
*> see IPARMQ for detailed explanation |
*> \endverbatim |
*> \endverbatim |
*> |
*> |
Line 127
|
Line 127
|
* Authors: |
* Authors: |
* ======== |
* ======== |
* |
* |
*> \author Univ. of Tennessee |
*> \author Univ. of Tennessee |
*> \author Univ. of California Berkeley |
*> \author Univ. of California Berkeley |
*> \author Univ. of Colorado Denver |
*> \author Univ. of Colorado Denver |
*> \author NAG Ltd. |
*> \author NAG Ltd. |
* |
* |
*> \date November 2011 |
*> \ingroup OTHERauxiliary |
* |
|
*> \ingroup auxOTHERauxiliary |
|
* |
* |
*> \par Further Details: |
*> \par Further Details: |
* ===================== |
* ===================== |
Line 162
|
Line 160
|
* ===================================================================== |
* ===================================================================== |
INTEGER FUNCTION ILAENV( ISPEC, NAME, OPTS, N1, N2, N3, N4 ) |
INTEGER FUNCTION ILAENV( ISPEC, NAME, OPTS, N1, N2, N3, N4 ) |
* |
* |
* -- LAPACK auxiliary routine (version 3.4.0) -- |
* -- LAPACK auxiliary routine -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* November 2011 |
|
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
CHARACTER*( * ) NAME, OPTS |
CHARACTER*( * ) NAME, OPTS |
Line 176
|
Line 173
|
* |
* |
* .. Local Scalars .. |
* .. Local Scalars .. |
INTEGER I, IC, IZ, NB, NBMIN, NX |
INTEGER I, IC, IZ, NB, NBMIN, NX |
LOGICAL CNAME, SNAME |
LOGICAL CNAME, SNAME, TWOSTAGE |
CHARACTER C1*1, C2*2, C4*2, C3*3, SUBNAM*6 |
CHARACTER C1*1, C2*2, C4*2, C3*3, SUBNAM*16 |
* .. |
* .. |
* .. Intrinsic Functions .. |
* .. Intrinsic Functions .. |
INTRINSIC CHAR, ICHAR, INT, MIN, REAL |
INTRINSIC CHAR, ICHAR, INT, MIN, REAL |
* .. |
* .. |
* .. External Functions .. |
* .. External Functions .. |
INTEGER IEEECK, IPARMQ |
INTEGER IEEECK, IPARMQ, IPARAM2STAGE |
EXTERNAL IEEECK, IPARMQ |
EXTERNAL IEEECK, IPARMQ, IPARAM2STAGE |
* .. |
* .. |
* .. Executable Statements .. |
* .. Executable Statements .. |
* |
* |
GO TO ( 10, 10, 10, 80, 90, 100, 110, 120, |
GO TO ( 10, 10, 10, 80, 90, 100, 110, 120, |
$ 130, 140, 150, 160, 160, 160, 160, 160 )ISPEC |
$ 130, 140, 150, 160, 160, 160, 160, 160, 160)ISPEC |
* |
* |
* Invalid value for ISPEC |
* Invalid value for ISPEC |
* |
* |
Line 256
|
Line 253
|
C2 = SUBNAM( 2: 3 ) |
C2 = SUBNAM( 2: 3 ) |
C3 = SUBNAM( 4: 6 ) |
C3 = SUBNAM( 4: 6 ) |
C4 = C3( 2: 3 ) |
C4 = C3( 2: 3 ) |
|
TWOSTAGE = LEN( SUBNAM ).GE.11 |
|
$ .AND. SUBNAM( 11: 11 ).EQ.'2' |
* |
* |
GO TO ( 50, 60, 70 )ISPEC |
GO TO ( 50, 60, 70 )ISPEC |
* |
* |
Line 269
|
Line 268
|
* |
* |
NB = 1 |
NB = 1 |
* |
* |
IF( C2.EQ.'GE' ) THEN |
IF( SUBNAM(2:6).EQ.'LAORH' ) THEN |
|
* |
|
* This is for *LAORHR_GETRFNP routine |
|
* |
|
IF( SNAME ) THEN |
|
NB = 32 |
|
ELSE |
|
NB = 32 |
|
END IF |
|
ELSE IF( C2.EQ.'GE' ) THEN |
IF( C3.EQ.'TRF' ) THEN |
IF( C3.EQ.'TRF' ) THEN |
IF( SNAME ) THEN |
IF( SNAME ) THEN |
NB = 64 |
NB = 64 |
Line 283
|
Line 291
|
ELSE |
ELSE |
NB = 32 |
NB = 32 |
END IF |
END IF |
|
ELSE IF( C3.EQ.'QR ') THEN |
|
IF( N3 .EQ. 1) THEN |
|
IF( SNAME ) THEN |
|
* M*N |
|
IF ((N1*N2.LE.131072).OR.(N1.LE.8192)) THEN |
|
NB = N1 |
|
ELSE |
|
NB = 32768/N2 |
|
END IF |
|
ELSE |
|
IF ((N1*N2.LE.131072).OR.(N1.LE.8192)) THEN |
|
NB = N1 |
|
ELSE |
|
NB = 32768/N2 |
|
END IF |
|
END IF |
|
ELSE |
|
IF( SNAME ) THEN |
|
NB = 1 |
|
ELSE |
|
NB = 1 |
|
END IF |
|
END IF |
|
ELSE IF( C3.EQ.'LQ ') THEN |
|
IF( N3 .EQ. 2) THEN |
|
IF( SNAME ) THEN |
|
* M*N |
|
IF ((N1*N2.LE.131072).OR.(N1.LE.8192)) THEN |
|
NB = N1 |
|
ELSE |
|
NB = 32768/N2 |
|
END IF |
|
ELSE |
|
IF ((N1*N2.LE.131072).OR.(N1.LE.8192)) THEN |
|
NB = N1 |
|
ELSE |
|
NB = 32768/N2 |
|
END IF |
|
END IF |
|
ELSE |
|
IF( SNAME ) THEN |
|
NB = 1 |
|
ELSE |
|
NB = 1 |
|
END IF |
|
END IF |
ELSE IF( C3.EQ.'HRD' ) THEN |
ELSE IF( C3.EQ.'HRD' ) THEN |
IF( SNAME ) THEN |
IF( SNAME ) THEN |
NB = 32 |
NB = 32 |
Line 313
|
Line 367
|
ELSE IF( C2.EQ.'SY' ) THEN |
ELSE IF( C2.EQ.'SY' ) THEN |
IF( C3.EQ.'TRF' ) THEN |
IF( C3.EQ.'TRF' ) THEN |
IF( SNAME ) THEN |
IF( SNAME ) THEN |
NB = 64 |
IF( TWOSTAGE ) THEN |
|
NB = 192 |
|
ELSE |
|
NB = 64 |
|
END IF |
ELSE |
ELSE |
NB = 64 |
IF( TWOSTAGE ) THEN |
|
NB = 192 |
|
ELSE |
|
NB = 64 |
|
END IF |
END IF |
END IF |
ELSE IF( SNAME .AND. C3.EQ.'TRD' ) THEN |
ELSE IF( SNAME .AND. C3.EQ.'TRD' ) THEN |
NB = 32 |
NB = 32 |
Line 324
|
Line 386
|
END IF |
END IF |
ELSE IF( CNAME .AND. C2.EQ.'HE' ) THEN |
ELSE IF( CNAME .AND. C2.EQ.'HE' ) THEN |
IF( C3.EQ.'TRF' ) THEN |
IF( C3.EQ.'TRF' ) THEN |
NB = 64 |
IF( TWOSTAGE ) THEN |
|
NB = 192 |
|
ELSE |
|
NB = 64 |
|
END IF |
ELSE IF( C3.EQ.'TRD' ) THEN |
ELSE IF( C3.EQ.'TRD' ) THEN |
NB = 32 |
NB = 32 |
ELSE IF( C3.EQ.'GST' ) THEN |
ELSE IF( C3.EQ.'GST' ) THEN |
Line 397
|
Line 463
|
ELSE |
ELSE |
NB = 64 |
NB = 64 |
END IF |
END IF |
|
ELSE IF ( C3.EQ.'EVC' ) THEN |
|
IF( SNAME ) THEN |
|
NB = 64 |
|
ELSE |
|
NB = 64 |
|
END IF |
|
ELSE IF( C3.EQ.'SYL' ) THEN |
|
* The upper bound is to prevent overly aggressive scaling. |
|
IF( SNAME ) THEN |
|
NB = MIN( MAX( 48, INT( ( MIN( N1, N2 ) * 16 ) / 100) ), |
|
$ 240 ) |
|
ELSE |
|
NB = MIN( MAX( 24, INT( ( MIN( N1, N2 ) * 8 ) / 100) ), |
|
$ 80 ) |
|
END IF |
END IF |
END IF |
ELSE IF( C2.EQ.'LA' ) THEN |
ELSE IF( C2.EQ.'LA' ) THEN |
IF( C3.EQ.'UUM' ) THEN |
IF( C3.EQ.'UUM' ) THEN |
Line 405
|
Line 486
|
ELSE |
ELSE |
NB = 64 |
NB = 64 |
END IF |
END IF |
|
ELSE IF( C3.EQ.'TRS' ) THEN |
|
IF( SNAME ) THEN |
|
NB = 32 |
|
ELSE |
|
NB = 32 |
|
END IF |
END IF |
END IF |
ELSE IF( SNAME .AND. C2.EQ.'ST' ) THEN |
ELSE IF( SNAME .AND. C2.EQ.'ST' ) THEN |
IF( C3.EQ.'EBZ' ) THEN |
IF( C3.EQ.'EBZ' ) THEN |
NB = 1 |
NB = 1 |
END IF |
END IF |
|
ELSE IF( C2.EQ.'GG' ) THEN |
|
NB = 32 |
|
IF( C3.EQ.'HD3' ) THEN |
|
IF( SNAME ) THEN |
|
NB = 32 |
|
ELSE |
|
NB = 32 |
|
END IF |
|
END IF |
END IF |
END IF |
ILAENV = NB |
ILAENV = NB |
RETURN |
RETURN |
Line 488
|
Line 584
|
NBMIN = 2 |
NBMIN = 2 |
END IF |
END IF |
END IF |
END IF |
|
ELSE IF( C2.EQ.'GG' ) THEN |
|
NBMIN = 2 |
|
IF( C3.EQ.'HD3' ) THEN |
|
NBMIN = 2 |
|
END IF |
END IF |
END IF |
ILAENV = NBMIN |
ILAENV = NBMIN |
RETURN |
RETURN |
Line 542
|
Line 643
|
NX = 128 |
NX = 128 |
END IF |
END IF |
END IF |
END IF |
|
ELSE IF( C2.EQ.'GG' ) THEN |
|
NX = 128 |
|
IF( C3.EQ.'HD3' ) THEN |
|
NX = 128 |
|
END IF |
END IF |
END IF |
ILAENV = NX |
ILAENV = NX |
RETURN |
RETURN |
Line 592
|
Line 698
|
* |
* |
140 CONTINUE |
140 CONTINUE |
* |
* |
* ISPEC = 10: ieee NaN arithmetic can be trusted not to trap |
* ISPEC = 10: ieee and infinity NaN arithmetic can be trusted not to trap |
* |
* |
* ILAENV = 0 |
* ILAENV = 0 |
ILAENV = 1 |
ILAENV = 1 |
Line 603
|
Line 709
|
* |
* |
150 CONTINUE |
150 CONTINUE |
* |
* |
* ISPEC = 11: infinity arithmetic can be trusted not to trap |
* ISPEC = 11: ieee infinity arithmetic can be trusted not to trap |
* |
* |
* ILAENV = 0 |
* ILAENV = 0 |
ILAENV = 1 |
ILAENV = 1 |
Line 614
|
Line 720
|
* |
* |
160 CONTINUE |
160 CONTINUE |
* |
* |
* 12 <= ISPEC <= 16: xHSEQR or one of its subroutines. |
* 12 <= ISPEC <= 17: xHSEQR or related subroutines. |
* |
* |
ILAENV = IPARMQ( ISPEC, NAME, OPTS, N1, N2, N3, N4 ) |
ILAENV = IPARMQ( ISPEC, NAME, OPTS, N1, N2, N3, N4 ) |
RETURN |
RETURN |