LAPACK  3.10.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 infinity and NaN arithmetic can be trusted not to trap
          =11: infinity arithmetic can be trusted not to trap
          12 <= ISPEC <= 17:
               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.
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.
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 161 of file ilaenv.f.

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