LAPACK  3.9.0
LAPACK: Linear Algebra PACKage

◆ ilaenv()

integer function ilaenv ( integer  ISPEC,
character*( * )  NAME,
character*( * )  OPTS,
integer  N1,
integer  N2,
integer  N3,
integer  N4 
)

ILAENV

Download ILAENV + dependencies [TGZ] [ZIP] [TXT]

Purpose:
 ILAENV is called from the LAPACK routines to choose problem-dependent
 parameters for the local environment.  See ISPEC for a description of
 the parameters.

 ILAENV returns an INTEGER
 if ILAENV >= 0: ILAENV returns the value of the parameter specified by ISPEC
 if ILAENV < 0:  if ILAENV = -k, the k-th argument had an illegal value.

 This version provides a set of parameters which should give good,
 but not optimal, performance on many of the currently available
 computers.  Users are encouraged to modify this subroutine to set
 the tuning parameters for their particular machine using the option
 and problem size information in the arguments.

 This routine will not function correctly if it is converted to all
 lower case.  Converting it to all upper case is allowed.
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 (DEPRECATED)
          = 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 method
               for nonsymmetric eigenvalue problems (DEPRECATED)
          = 9: maximum size of the subproblems at the bottom of the
               computation tree in the divide-and-conquer algorithm
               (used by xGELSD and xGESDD)
          =10: ieee NaN arithmetic can be trusted not to trap
          =11: infinity arithmetic can be trusted not to trap
          12 <= ISPEC <= 16:
               xHSEQR or related subroutines,
               see IPARMQ for detailed explanation
[in]NAME
          NAME is CHARACTER*(*)
          The name of the calling subroutine, in either upper case or
          lower case.
[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.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Date
November 2019
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 )
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.
Date
November 2017
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 164 of file ilaenv.f.

164 *
165 * -- LAPACK auxiliary routine (version 3.9.0) --
166 * -- LAPACK is a software package provided by Univ. of Tennessee, --
167 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
168 * November 2019
169 *
170 * .. Scalar Arguments ..
171  CHARACTER*( * ) NAME, OPTS
172  INTEGER ISPEC, N1, N2, N3, N4
173 * ..
174 *
175 * =====================================================================
176 *
177 * .. Local Scalars ..
178  INTEGER I, IC, IZ, NB, NBMIN, NX
179  LOGICAL CNAME, SNAME, TWOSTAGE
180  CHARACTER C1*1, C2*2, C4*2, C3*3, SUBNAM*16
181 * ..
182 * .. Intrinsic Functions ..
183  INTRINSIC char, ichar, int, min, real
184 * ..
185 * .. External Functions ..
186  INTEGER IEEECK, IPARMQ, IPARAM2STAGE
187  EXTERNAL ieeeck, iparmq, iparam2stage
188 * ..
189 * .. Executable Statements ..
190 *
191  GO TO ( 10, 10, 10, 80, 90, 100, 110, 120,
192  $ 130, 140, 150, 160, 160, 160, 160, 160)ispec
193 *
194 * Invalid value for ISPEC
195 *
196  ilaenv = -1
197  RETURN
198 *
199  10 CONTINUE
200 *
201 * Convert NAME to upper case if the first character is lower case.
202 *
203  ilaenv = 1
204  subnam = name
205  ic = ichar( subnam( 1: 1 ) )
206  iz = ichar( 'Z' )
207  IF( iz.EQ.90 .OR. iz.EQ.122 ) THEN
208 *
209 * ASCII character set
210 *
211  IF( ic.GE.97 .AND. ic.LE.122 ) THEN
212  subnam( 1: 1 ) = char( ic-32 )
213  DO 20 i = 2, 6
214  ic = ichar( subnam( i: i ) )
215  IF( ic.GE.97 .AND. ic.LE.122 )
216  $ subnam( i: i ) = char( ic-32 )
217  20 CONTINUE
218  END IF
219 *
220  ELSE IF( iz.EQ.233 .OR. iz.EQ.169 ) THEN
221 *
222 * EBCDIC character set
223 *
224  IF( ( ic.GE.129 .AND. ic.LE.137 ) .OR.
225  $ ( ic.GE.145 .AND. ic.LE.153 ) .OR.
226  $ ( ic.GE.162 .AND. ic.LE.169 ) ) THEN
227  subnam( 1: 1 ) = char( ic+64 )
228  DO 30 i = 2, 6
229  ic = ichar( subnam( i: i ) )
230  IF( ( ic.GE.129 .AND. ic.LE.137 ) .OR.
231  $ ( ic.GE.145 .AND. ic.LE.153 ) .OR.
232  $ ( ic.GE.162 .AND. ic.LE.169 ) )subnam( i:
233  $ i ) = char( ic+64 )
234  30 CONTINUE
235  END IF
236 *
237  ELSE IF( iz.EQ.218 .OR. iz.EQ.250 ) THEN
238 *
239 * Prime machines: ASCII+128
240 *
241  IF( ic.GE.225 .AND. ic.LE.250 ) THEN
242  subnam( 1: 1 ) = char( ic-32 )
243  DO 40 i = 2, 6
244  ic = ichar( subnam( i: i ) )
245  IF( ic.GE.225 .AND. ic.LE.250 )
246  $ subnam( i: i ) = char( ic-32 )
247  40 CONTINUE
248  END IF
249  END IF
250 *
251  c1 = subnam( 1: 1 )
252  sname = c1.EQ.'S' .OR. c1.EQ.'D'
253  cname = c1.EQ.'C' .OR. c1.EQ.'Z'
254  IF( .NOT.( cname .OR. sname ) )
255  $ RETURN
256  c2 = subnam( 2: 3 )
257  c3 = subnam( 4: 6 )
258  c4 = c3( 2: 3 )
259  twostage = len( subnam ).GE.11
260  $ .AND. subnam( 11: 11 ).EQ.'2'
261 *
262  GO TO ( 50, 60, 70 )ispec
263 *
264  50 CONTINUE
265 *
266 * ISPEC = 1: block size
267 *
268 * In these examples, separate code is provided for setting NB for
269 * real and complex. We assume that NB will take the same value in
270 * single or double precision.
271 *
272  nb = 1
273 *
274  IF( subnam(2:6).EQ.'LAORH' ) THEN
275 *
276 * This is for *LAORHR_GETRFNP routine
277 *
278  IF( sname ) THEN
279  nb = 32
280  ELSE
281  nb = 32
282  END IF
283  ELSE IF( c2.EQ.'GE' ) THEN
284  IF( c3.EQ.'TRF' ) THEN
285  IF( sname ) THEN
286  nb = 64
287  ELSE
288  nb = 64
289  END IF
290  ELSE IF( c3.EQ.'QRF' .OR. c3.EQ.'RQF' .OR. c3.EQ.'LQF' .OR.
291  $ c3.EQ.'QLF' ) THEN
292  IF( sname ) THEN
293  nb = 32
294  ELSE
295  nb = 32
296  END IF
297  ELSE IF( c3.EQ.'QR ') THEN
298  IF( n3 .EQ. 1) THEN
299  IF( sname ) THEN
300 * M*N
301  IF ((n1*n2.LE.131072).OR.(n1.LE.8192)) THEN
302  nb = n1
303  ELSE
304  nb = 32768/n2
305  END IF
306  ELSE
307  IF ((n1*n2.LE.131072).OR.(n1.LE.8192)) THEN
308  nb = n1
309  ELSE
310  nb = 32768/n2
311  END IF
312  END IF
313  ELSE
314  IF( sname ) THEN
315  nb = 1
316  ELSE
317  nb = 1
318  END IF
319  END IF
320  ELSE IF( c3.EQ.'LQ ') THEN
321  IF( n3 .EQ. 2) THEN
322  IF( sname ) THEN
323 * M*N
324  IF ((n1*n2.LE.131072).OR.(n1.LE.8192)) THEN
325  nb = n1
326  ELSE
327  nb = 32768/n2
328  END IF
329  ELSE
330  IF ((n1*n2.LE.131072).OR.(n1.LE.8192)) THEN
331  nb = n1
332  ELSE
333  nb = 32768/n2
334  END IF
335  END IF
336  ELSE
337  IF( sname ) THEN
338  nb = 1
339  ELSE
340  nb = 1
341  END IF
342  END IF
343  ELSE IF( c3.EQ.'HRD' ) THEN
344  IF( sname ) THEN
345  nb = 32
346  ELSE
347  nb = 32
348  END IF
349  ELSE IF( c3.EQ.'BRD' ) THEN
350  IF( sname ) THEN
351  nb = 32
352  ELSE
353  nb = 32
354  END IF
355  ELSE IF( c3.EQ.'TRI' ) THEN
356  IF( sname ) THEN
357  nb = 64
358  ELSE
359  nb = 64
360  END IF
361  END IF
362  ELSE IF( c2.EQ.'PO' ) THEN
363  IF( c3.EQ.'TRF' ) THEN
364  IF( sname ) THEN
365  nb = 64
366  ELSE
367  nb = 64
368  END IF
369  END IF
370  ELSE IF( c2.EQ.'SY' ) THEN
371  IF( c3.EQ.'TRF' ) THEN
372  IF( sname ) THEN
373  IF( twostage ) THEN
374  nb = 192
375  ELSE
376  nb = 64
377  END IF
378  ELSE
379  IF( twostage ) THEN
380  nb = 192
381  ELSE
382  nb = 64
383  END IF
384  END IF
385  ELSE IF( sname .AND. c3.EQ.'TRD' ) THEN
386  nb = 32
387  ELSE IF( sname .AND. c3.EQ.'GST' ) THEN
388  nb = 64
389  END IF
390  ELSE IF( cname .AND. c2.EQ.'HE' ) THEN
391  IF( c3.EQ.'TRF' ) THEN
392  IF( twostage ) THEN
393  nb = 192
394  ELSE
395  nb = 64
396  END IF
397  ELSE IF( c3.EQ.'TRD' ) THEN
398  nb = 32
399  ELSE IF( c3.EQ.'GST' ) THEN
400  nb = 64
401  END IF
402  ELSE IF( sname .AND. c2.EQ.'OR' ) THEN
403  IF( c3( 1: 1 ).EQ.'G' ) THEN
404  IF( c4.EQ.'QR' .OR. c4.EQ.'RQ' .OR. c4.EQ.'LQ' .OR. c4.EQ.
405  $ 'QL' .OR. c4.EQ.'HR' .OR. c4.EQ.'TR' .OR. c4.EQ.'BR' )
406  $ THEN
407  nb = 32
408  END IF
409  ELSE IF( c3( 1: 1 ).EQ.'M' ) THEN
410  IF( c4.EQ.'QR' .OR. c4.EQ.'RQ' .OR. c4.EQ.'LQ' .OR. c4.EQ.
411  $ 'QL' .OR. c4.EQ.'HR' .OR. c4.EQ.'TR' .OR. c4.EQ.'BR' )
412  $ THEN
413  nb = 32
414  END IF
415  END IF
416  ELSE IF( cname .AND. c2.EQ.'UN' ) THEN
417  IF( c3( 1: 1 ).EQ.'G' ) THEN
418  IF( c4.EQ.'QR' .OR. c4.EQ.'RQ' .OR. c4.EQ.'LQ' .OR. c4.EQ.
419  $ 'QL' .OR. c4.EQ.'HR' .OR. c4.EQ.'TR' .OR. c4.EQ.'BR' )
420  $ THEN
421  nb = 32
422  END IF
423  ELSE IF( c3( 1: 1 ).EQ.'M' ) THEN
424  IF( c4.EQ.'QR' .OR. c4.EQ.'RQ' .OR. c4.EQ.'LQ' .OR. c4.EQ.
425  $ 'QL' .OR. c4.EQ.'HR' .OR. c4.EQ.'TR' .OR. c4.EQ.'BR' )
426  $ THEN
427  nb = 32
428  END IF
429  END IF
430  ELSE IF( c2.EQ.'GB' ) THEN
431  IF( c3.EQ.'TRF' ) THEN
432  IF( sname ) THEN
433  IF( n4.LE.64 ) THEN
434  nb = 1
435  ELSE
436  nb = 32
437  END IF
438  ELSE
439  IF( n4.LE.64 ) THEN
440  nb = 1
441  ELSE
442  nb = 32
443  END IF
444  END IF
445  END IF
446  ELSE IF( c2.EQ.'PB' ) THEN
447  IF( c3.EQ.'TRF' ) THEN
448  IF( sname ) THEN
449  IF( n2.LE.64 ) THEN
450  nb = 1
451  ELSE
452  nb = 32
453  END IF
454  ELSE
455  IF( n2.LE.64 ) THEN
456  nb = 1
457  ELSE
458  nb = 32
459  END IF
460  END IF
461  END IF
462  ELSE IF( c2.EQ.'TR' ) THEN
463  IF( c3.EQ.'TRI' ) THEN
464  IF( sname ) THEN
465  nb = 64
466  ELSE
467  nb = 64
468  END IF
469  ELSE IF ( c3.EQ.'EVC' ) THEN
470  IF( sname ) THEN
471  nb = 64
472  ELSE
473  nb = 64
474  END IF
475  END IF
476  ELSE IF( c2.EQ.'LA' ) THEN
477  IF( c3.EQ.'UUM' ) THEN
478  IF( sname ) THEN
479  nb = 64
480  ELSE
481  nb = 64
482  END IF
483  END IF
484  ELSE IF( sname .AND. c2.EQ.'ST' ) THEN
485  IF( c3.EQ.'EBZ' ) THEN
486  nb = 1
487  END IF
488  ELSE IF( c2.EQ.'GG' ) THEN
489  nb = 32
490  IF( c3.EQ.'HD3' ) THEN
491  IF( sname ) THEN
492  nb = 32
493  ELSE
494  nb = 32
495  END IF
496  END IF
497  END IF
498  ilaenv = nb
499  RETURN
500 *
501  60 CONTINUE
502 *
503 * ISPEC = 2: minimum block size
504 *
505  nbmin = 2
506  IF( c2.EQ.'GE' ) THEN
507  IF( c3.EQ.'QRF' .OR. c3.EQ.'RQF' .OR. c3.EQ.'LQF' .OR. c3.EQ.
508  $ 'QLF' ) THEN
509  IF( sname ) THEN
510  nbmin = 2
511  ELSE
512  nbmin = 2
513  END IF
514  ELSE IF( c3.EQ.'HRD' ) THEN
515  IF( sname ) THEN
516  nbmin = 2
517  ELSE
518  nbmin = 2
519  END IF
520  ELSE IF( c3.EQ.'BRD' ) THEN
521  IF( sname ) THEN
522  nbmin = 2
523  ELSE
524  nbmin = 2
525  END IF
526  ELSE IF( c3.EQ.'TRI' ) THEN
527  IF( sname ) THEN
528  nbmin = 2
529  ELSE
530  nbmin = 2
531  END IF
532  END IF
533  ELSE IF( c2.EQ.'SY' ) THEN
534  IF( c3.EQ.'TRF' ) THEN
535  IF( sname ) THEN
536  nbmin = 8
537  ELSE
538  nbmin = 8
539  END IF
540  ELSE IF( sname .AND. c3.EQ.'TRD' ) THEN
541  nbmin = 2
542  END IF
543  ELSE IF( cname .AND. c2.EQ.'HE' ) THEN
544  IF( c3.EQ.'TRD' ) THEN
545  nbmin = 2
546  END IF
547  ELSE IF( sname .AND. c2.EQ.'OR' ) THEN
548  IF( c3( 1: 1 ).EQ.'G' ) THEN
549  IF( c4.EQ.'QR' .OR. c4.EQ.'RQ' .OR. c4.EQ.'LQ' .OR. c4.EQ.
550  $ 'QL' .OR. c4.EQ.'HR' .OR. c4.EQ.'TR' .OR. c4.EQ.'BR' )
551  $ THEN
552  nbmin = 2
553  END IF
554  ELSE IF( c3( 1: 1 ).EQ.'M' ) THEN
555  IF( c4.EQ.'QR' .OR. c4.EQ.'RQ' .OR. c4.EQ.'LQ' .OR. c4.EQ.
556  $ 'QL' .OR. c4.EQ.'HR' .OR. c4.EQ.'TR' .OR. c4.EQ.'BR' )
557  $ THEN
558  nbmin = 2
559  END IF
560  END IF
561  ELSE IF( cname .AND. c2.EQ.'UN' ) THEN
562  IF( c3( 1: 1 ).EQ.'G' ) THEN
563  IF( c4.EQ.'QR' .OR. c4.EQ.'RQ' .OR. c4.EQ.'LQ' .OR. c4.EQ.
564  $ 'QL' .OR. c4.EQ.'HR' .OR. c4.EQ.'TR' .OR. c4.EQ.'BR' )
565  $ THEN
566  nbmin = 2
567  END IF
568  ELSE IF( c3( 1: 1 ).EQ.'M' ) THEN
569  IF( c4.EQ.'QR' .OR. c4.EQ.'RQ' .OR. c4.EQ.'LQ' .OR. c4.EQ.
570  $ 'QL' .OR. c4.EQ.'HR' .OR. c4.EQ.'TR' .OR. c4.EQ.'BR' )
571  $ THEN
572  nbmin = 2
573  END IF
574  END IF
575  ELSE IF( c2.EQ.'GG' ) THEN
576  nbmin = 2
577  IF( c3.EQ.'HD3' ) THEN
578  nbmin = 2
579  END IF
580  END IF
581  ilaenv = nbmin
582  RETURN
583 *
584  70 CONTINUE
585 *
586 * ISPEC = 3: crossover point
587 *
588  nx = 0
589  IF( c2.EQ.'GE' ) THEN
590  IF( c3.EQ.'QRF' .OR. c3.EQ.'RQF' .OR. c3.EQ.'LQF' .OR. c3.EQ.
591  $ 'QLF' ) THEN
592  IF( sname ) THEN
593  nx = 128
594  ELSE
595  nx = 128
596  END IF
597  ELSE IF( c3.EQ.'HRD' ) THEN
598  IF( sname ) THEN
599  nx = 128
600  ELSE
601  nx = 128
602  END IF
603  ELSE IF( c3.EQ.'BRD' ) THEN
604  IF( sname ) THEN
605  nx = 128
606  ELSE
607  nx = 128
608  END IF
609  END IF
610  ELSE IF( c2.EQ.'SY' ) THEN
611  IF( sname .AND. c3.EQ.'TRD' ) THEN
612  nx = 32
613  END IF
614  ELSE IF( cname .AND. c2.EQ.'HE' ) THEN
615  IF( c3.EQ.'TRD' ) THEN
616  nx = 32
617  END IF
618  ELSE IF( sname .AND. c2.EQ.'OR' ) THEN
619  IF( c3( 1: 1 ).EQ.'G' ) THEN
620  IF( c4.EQ.'QR' .OR. c4.EQ.'RQ' .OR. c4.EQ.'LQ' .OR. c4.EQ.
621  $ 'QL' .OR. c4.EQ.'HR' .OR. c4.EQ.'TR' .OR. c4.EQ.'BR' )
622  $ THEN
623  nx = 128
624  END IF
625  END IF
626  ELSE IF( cname .AND. c2.EQ.'UN' ) THEN
627  IF( c3( 1: 1 ).EQ.'G' ) THEN
628  IF( c4.EQ.'QR' .OR. c4.EQ.'RQ' .OR. c4.EQ.'LQ' .OR. c4.EQ.
629  $ 'QL' .OR. c4.EQ.'HR' .OR. c4.EQ.'TR' .OR. c4.EQ.'BR' )
630  $ THEN
631  nx = 128
632  END IF
633  END IF
634  ELSE IF( c2.EQ.'GG' ) THEN
635  nx = 128
636  IF( c3.EQ.'HD3' ) THEN
637  nx = 128
638  END IF
639  END IF
640  ilaenv = nx
641  RETURN
642 *
643  80 CONTINUE
644 *
645 * ISPEC = 4: number of shifts (used by xHSEQR)
646 *
647  ilaenv = 6
648  RETURN
649 *
650  90 CONTINUE
651 *
652 * ISPEC = 5: minimum column dimension (not used)
653 *
654  ilaenv = 2
655  RETURN
656 *
657  100 CONTINUE
658 *
659 * ISPEC = 6: crossover point for SVD (used by xGELSS and xGESVD)
660 *
661  ilaenv = int( real( min( n1, n2 ) )*1.6e0 )
662  RETURN
663 *
664  110 CONTINUE
665 *
666 * ISPEC = 7: number of processors (not used)
667 *
668  ilaenv = 1
669  RETURN
670 *
671  120 CONTINUE
672 *
673 * ISPEC = 8: crossover point for multishift (used by xHSEQR)
674 *
675  ilaenv = 50
676  RETURN
677 *
678  130 CONTINUE
679 *
680 * ISPEC = 9: maximum size of the subproblems at the bottom of the
681 * computation tree in the divide-and-conquer algorithm
682 * (used by xGELSD and xGESDD)
683 *
684  ilaenv = 25
685  RETURN
686 *
687  140 CONTINUE
688 *
689 * ISPEC = 10: ieee NaN arithmetic can be trusted not to trap
690 *
691 * ILAENV = 0
692  ilaenv = 1
693  IF( ilaenv.EQ.1 ) THEN
694  ilaenv = ieeeck( 1, 0.0, 1.0 )
695  END IF
696  RETURN
697 *
698  150 CONTINUE
699 *
700 * ISPEC = 11: infinity arithmetic can be trusted not to trap
701 *
702 * ILAENV = 0
703  ilaenv = 1
704  IF( ilaenv.EQ.1 ) THEN
705  ilaenv = ieeeck( 0, 0.0, 1.0 )
706  END IF
707  RETURN
708 *
709  160 CONTINUE
710 *
711 * 12 <= ISPEC <= 16: xHSEQR or related subroutines.
712 *
713  ilaenv = iparmq( ispec, name, opts, n1, n2, n3, n4 )
714  RETURN
715 *
716 * End of ILAENV
717 *
Here is the call graph for this function:
iparmq
integer function iparmq(ISPEC, NAME, OPTS, N, ILO, IHI, LWORK)
IPARMQ
Definition: iparmq.f:224
iparam2stage
integer function iparam2stage(ISPEC, NAME, OPTS, NI, NBI, IBI, NXI)
IPARAM2STAGE
Definition: iparam2stage.F:157
ilaenv
integer function ilaenv(ISPEC, NAME, OPTS, N1, N2, N3, N4)
ILAENV
Definition: tstiee.f:83
ieeeck
integer function ieeeck(ISPEC, ZERO, ONE)
Definition: tstiee.f:626