LAPACK 3.12.0
LAPACK: Linear Algebra PACKage
Loading...
Searching...
No Matches

◆ ilaenv()

integer function ilaenv ( integer  ispec,
character*( * )  name,
character*( * )  opts,
integer  n1,
integer  n2,
integer  n3,
integer  n4 
)

ILAENV

Purpose:
 ILAENV returns problem-dependent parameters for the local
 environment.  See ISPEC for a description of the parameters.

 In this version, the problem-dependent parameters are contained in
 the integer array IPARMS in the common block CLAENV and the value
 with index ISPEC is copied to ILAENV.  This version of ILAENV is
 to be used in conjunction with XLAENV in TESTING and TIMING.
Parameters
[in]ISPEC
          ISPEC is INTEGER
          Specifies the parameter to be returned as the value of
          ILAENV.
          = 1: the optimal blocksize; if this value is 1, an unblocked
               algorithm will give the best performance.
          = 2: the minimum block size for which the block routine
               should be used; if the usable block size is less than
               this value, an unblocked routine should be used.
          = 3: the crossover point (in a block routine, for N less
               than this value, an unblocked routine should be used)
          = 4: the number of shifts, used in the nonsymmetric
               eigenvalue routines
          = 5: the minimum column dimension for blocking to be used;
               rectangular blocks must have dimension at least k by m,
               where k is given by ILAENV(2,...) and m by ILAENV(5,...)
          = 6: the crossover point for the SVD (when reducing an m by n
               matrix to bidiagonal form, if max(m,n)/min(m,n) exceeds
               this value, a QR factorization is used first to reduce
               the matrix to a triangular form.)
          = 7: the number of processors
          = 8: the crossover point for the multishift QR and QZ methods
               for nonsymmetric eigenvalue problems.
          = 9: maximum size of the subproblems at the bottom of the
               computation tree in the divide-and-conquer algorithm
          =10: ieee NaN arithmetic can be trusted not to trap
          =11: infinity arithmetic can be trusted not to trap
          12 <= ISPEC <= 16:
               xHSEQR or one of its subroutines,
               see IPARMQ for detailed explanation

          Other specifications (up to 100) can be added later.
[in]NAME
          NAME is CHARACTER*(*)
          The name of the calling subroutine.
[in]OPTS
          OPTS is CHARACTER*(*)
          The character options to the subroutine NAME, concatenated
          into a single character string.  For example, UPLO = 'U',
          TRANS = 'T', and DIAG = 'N' for a triangular routine would
          be specified as OPTS = 'UTN'.
[in]N1
          N1 is INTEGER
[in]N2
          N2 is INTEGER
[in]N3
          N3 is INTEGER
[in]N4
          N4 is INTEGER

          Problem dimensions for the subroutine NAME; these may not all
          be required.
Returns
ILAENV
          ILAENV is INTEGER
          >= 0: the value of the parameter specified by ISPEC
          < 0:  if ILAENV = -k, the k-th argument had an illegal value.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Further Details:
  The following conventions have been used when calling ILAENV from the
  LAPACK routines:
  1)  OPTS is a concatenation of all of the character options to
      subroutine NAME, in the same order that they appear in the
      argument list for NAME, even if they are not used in determining
      the value of the parameter specified by ISPEC.
  2)  The problem dimensions N1, N2, N3, N4 are specified in the order
      that they appear in the argument list for NAME.  N1 is used
      first, N2 second, and so on, and unused problem dimensions are
      passed a value of -1.
  3)  The parameter value returned by ILAENV is checked for validity in
      the calling subroutine.  For example, ILAENV is used to retrieve
      the optimal blocksize for STRTRI as follows:

      NB = ILAENV( 1, 'STRTRI', UPLO // DIAG, N, -1, -1, -1 )
      IF( NB.LE.1 ) NB = MAX( 1, N )

Definition at line 151 of file ilaenv.f.

153*
154* -- LAPACK test routine --
155* -- LAPACK is a software package provided by Univ. of Tennessee, --
156* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
157*
158* .. Scalar Arguments ..
159 CHARACTER*( * ) NAME, OPTS
160 INTEGER ISPEC, N1, N2, N3, N4
161* ..
162*
163* =====================================================================
164*
165* .. Intrinsic Functions ..
166 INTRINSIC int, min, real
167* ..
168* .. External Functions ..
169 INTEGER IEEECK, IPARAM2STAGE
170 EXTERNAL ieeeck, iparam2stage
171* ..
172* .. Arrays in Common ..
173 INTEGER IPARMS( 100 )
174* ..
175* .. Common blocks ..
176 COMMON / claenv / iparms
177* ..
178* .. Save statement ..
179 SAVE / claenv /
180* ..
181* .. Executable Statements ..
182*
183 IF( ispec.GE.1 .AND. ispec.LE.5 ) THEN
184*
185* Return a value from the common block.
186*
187 ilaenv = iparms( ispec )
188*
189 ELSE IF( ispec.EQ.6 ) THEN
190*
191* Compute SVD crossover point.
192*
193 ilaenv = int( real( min( n1, n2 ) )*1.6e0 )
194*
195 ELSE IF( ispec.GE.7 .AND. ispec.LE.9 ) THEN
196*
197* Return a value from the common block.
198*
199 ilaenv = iparms( ispec )
200*
201 ELSE IF( ispec.EQ.10 ) THEN
202*
203* IEEE NaN arithmetic can be trusted not to trap
204*
205C ILAENV = 0
206 ilaenv = 1
207 IF( ilaenv.EQ.1 ) THEN
208 ilaenv = ieeeck( 1, 0.0, 1.0 )
209 END IF
210*
211 ELSE IF( ispec.EQ.11 ) THEN
212*
213* Infinity arithmetic can be trusted not to trap
214*
215C ILAENV = 0
216 ilaenv = 1
217 IF( ilaenv.EQ.1 ) THEN
218 ilaenv = ieeeck( 0, 0.0, 1.0 )
219 END IF
220*
221 ELSE IF(( ispec.GE.12 ) .AND. (ispec.LE.16)) THEN
222*
223* 12 <= ISPEC <= 16: xHSEQR or one of its subroutines.
224*
225 ilaenv = iparms( ispec )
226* WRITE(*,*) 'ISPEC = ',ISPEC,' ILAENV =',ILAENV
227* ILAENV = IPARMQ( ISPEC, NAME, OPTS, N1, N2, N3, N4 )
228*
229 ELSE IF(( ispec.GE.17 ) .AND. (ispec.LE.21)) THEN
230*
231* 17 <= ISPEC <= 21: 2stage eigenvalues SVD routines.
232*
233 IF( ispec.EQ.17 ) THEN
234 ilaenv = iparms( 1 )
235 ELSE
236 ilaenv = iparam2stage( ispec, name, opts, n1, n2, n3, n4 )
237 ENDIF
238*
239 ELSE
240*
241* Invalid value for ISPEC
242*
243 ilaenv = -1
244 END IF
245*
246 RETURN
247*
248* End of ILAENV
249*
integer function ieeeck(ispec, zero, one)
IEEECK
Definition ieeeck.f:82
integer function ilaenv(ispec, name, opts, n1, n2, n3, n4)
ILAENV
Definition ilaenv.f:162
integer function iparam2stage(ispec, name, opts, ni, nbi, ibi, nxi)
IPARAM2STAGE
Here is the call graph for this function: