LAPACK  3.8.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 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 )
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.8.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 2017
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( c2.EQ.'GE' ) THEN
275  IF( c3.EQ.'TRF' ) THEN
276  IF( sname ) THEN
277  nb = 64
278  ELSE
279  nb = 64
280  END IF
281  ELSE IF( c3.EQ.'QRF' .OR. c3.EQ.'RQF' .OR. c3.EQ.'LQF' .OR.
282  $ c3.EQ.'QLF' ) THEN
283  IF( sname ) THEN
284  nb = 32
285  ELSE
286  nb = 32
287  END IF
288  ELSE IF( c3.EQ.'QR ') THEN
289  IF( n3 .EQ. 1) THEN
290  IF( sname ) THEN
291 * M*N
292  IF ((n1*n2.LE.131072).OR.(n1.LE.8192)) THEN
293  nb = n1
294  ELSE
295  nb = 32768/n2
296  END IF
297  ELSE
298  IF ((n1*n2.LE.131072).OR.(n1.LE.8192)) THEN
299  nb = n1
300  ELSE
301  nb = 32768/n2
302  END IF
303  END IF
304  ELSE
305  IF( sname ) THEN
306  nb = 1
307  ELSE
308  nb = 1
309  END IF
310  END IF
311  ELSE IF( c3.EQ.'LQ ') THEN
312  IF( n3 .EQ. 2) THEN
313  IF( sname ) THEN
314 * M*N
315  IF ((n1*n2.LE.131072).OR.(n1.LE.8192)) THEN
316  nb = n1
317  ELSE
318  nb = 32768/n2
319  END IF
320  ELSE
321  IF ((n1*n2.LE.131072).OR.(n1.LE.8192)) THEN
322  nb = n1
323  ELSE
324  nb = 32768/n2
325  END IF
326  END IF
327  ELSE
328  IF( sname ) THEN
329  nb = 1
330  ELSE
331  nb = 1
332  END IF
333  END IF
334  ELSE IF( c3.EQ.'HRD' ) THEN
335  IF( sname ) THEN
336  nb = 32
337  ELSE
338  nb = 32
339  END IF
340  ELSE IF( c3.EQ.'BRD' ) THEN
341  IF( sname ) THEN
342  nb = 32
343  ELSE
344  nb = 32
345  END IF
346  ELSE IF( c3.EQ.'TRI' ) THEN
347  IF( sname ) THEN
348  nb = 64
349  ELSE
350  nb = 64
351  END IF
352  END IF
353  ELSE IF( c2.EQ.'PO' ) THEN
354  IF( c3.EQ.'TRF' ) THEN
355  IF( sname ) THEN
356  nb = 64
357  ELSE
358  nb = 64
359  END IF
360  END IF
361  ELSE IF( c2.EQ.'SY' ) THEN
362  IF( c3.EQ.'TRF' ) THEN
363  IF( sname ) THEN
364  IF( twostage ) THEN
365  nb = 192
366  ELSE
367  nb = 64
368  END IF
369  ELSE
370  IF( twostage ) THEN
371  nb = 192
372  ELSE
373  nb = 64
374  END IF
375  END IF
376  ELSE IF( sname .AND. c3.EQ.'TRD' ) THEN
377  nb = 32
378  ELSE IF( sname .AND. c3.EQ.'GST' ) THEN
379  nb = 64
380  END IF
381  ELSE IF( cname .AND. c2.EQ.'HE' ) THEN
382  IF( c3.EQ.'TRF' ) THEN
383  IF( twostage ) THEN
384  nb = 192
385  ELSE
386  nb = 64
387  END IF
388  ELSE IF( c3.EQ.'TRD' ) THEN
389  nb = 32
390  ELSE IF( c3.EQ.'GST' ) THEN
391  nb = 64
392  END IF
393  ELSE IF( sname .AND. c2.EQ.'OR' ) THEN
394  IF( c3( 1: 1 ).EQ.'G' ) THEN
395  IF( c4.EQ.'QR' .OR. c4.EQ.'RQ' .OR. c4.EQ.'LQ' .OR. c4.EQ.
396  $ 'QL' .OR. c4.EQ.'HR' .OR. c4.EQ.'TR' .OR. c4.EQ.'BR' )
397  $ THEN
398  nb = 32
399  END IF
400  ELSE IF( c3( 1: 1 ).EQ.'M' ) 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  END IF
407  ELSE IF( cname .AND. c2.EQ.'UN' ) THEN
408  IF( c3( 1: 1 ).EQ.'G' ) THEN
409  IF( c4.EQ.'QR' .OR. c4.EQ.'RQ' .OR. c4.EQ.'LQ' .OR. c4.EQ.
410  $ 'QL' .OR. c4.EQ.'HR' .OR. c4.EQ.'TR' .OR. c4.EQ.'BR' )
411  $ THEN
412  nb = 32
413  END IF
414  ELSE IF( c3( 1: 1 ).EQ.'M' ) 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  END IF
421  ELSE IF( c2.EQ.'GB' ) THEN
422  IF( c3.EQ.'TRF' ) THEN
423  IF( sname ) THEN
424  IF( n4.LE.64 ) THEN
425  nb = 1
426  ELSE
427  nb = 32
428  END IF
429  ELSE
430  IF( n4.LE.64 ) THEN
431  nb = 1
432  ELSE
433  nb = 32
434  END IF
435  END IF
436  END IF
437  ELSE IF( c2.EQ.'PB' ) THEN
438  IF( c3.EQ.'TRF' ) THEN
439  IF( sname ) THEN
440  IF( n2.LE.64 ) THEN
441  nb = 1
442  ELSE
443  nb = 32
444  END IF
445  ELSE
446  IF( n2.LE.64 ) THEN
447  nb = 1
448  ELSE
449  nb = 32
450  END IF
451  END IF
452  END IF
453  ELSE IF( c2.EQ.'TR' ) THEN
454  IF( c3.EQ.'TRI' ) THEN
455  IF( sname ) THEN
456  nb = 64
457  ELSE
458  nb = 64
459  END IF
460  ELSE IF ( c3.EQ.'EVC' ) THEN
461  IF( sname ) THEN
462  nb = 64
463  ELSE
464  nb = 64
465  END IF
466  END IF
467  ELSE IF( c2.EQ.'LA' ) THEN
468  IF( c3.EQ.'UUM' ) THEN
469  IF( sname ) THEN
470  nb = 64
471  ELSE
472  nb = 64
473  END IF
474  END IF
475  ELSE IF( sname .AND. c2.EQ.'ST' ) THEN
476  IF( c3.EQ.'EBZ' ) THEN
477  nb = 1
478  END IF
479  ELSE IF( c2.EQ.'GG' ) THEN
480  nb = 32
481  IF( c3.EQ.'HD3' ) THEN
482  IF( sname ) THEN
483  nb = 32
484  ELSE
485  nb = 32
486  END IF
487  END IF
488  END IF
489  ilaenv = nb
490  RETURN
491 *
492  60 CONTINUE
493 *
494 * ISPEC = 2: minimum block size
495 *
496  nbmin = 2
497  IF( c2.EQ.'GE' ) THEN
498  IF( c3.EQ.'QRF' .OR. c3.EQ.'RQF' .OR. c3.EQ.'LQF' .OR. c3.EQ.
499  $ 'QLF' ) THEN
500  IF( sname ) THEN
501  nbmin = 2
502  ELSE
503  nbmin = 2
504  END IF
505  ELSE IF( c3.EQ.'HRD' ) THEN
506  IF( sname ) THEN
507  nbmin = 2
508  ELSE
509  nbmin = 2
510  END IF
511  ELSE IF( c3.EQ.'BRD' ) THEN
512  IF( sname ) THEN
513  nbmin = 2
514  ELSE
515  nbmin = 2
516  END IF
517  ELSE IF( c3.EQ.'TRI' ) THEN
518  IF( sname ) THEN
519  nbmin = 2
520  ELSE
521  nbmin = 2
522  END IF
523  END IF
524  ELSE IF( c2.EQ.'SY' ) THEN
525  IF( c3.EQ.'TRF' ) THEN
526  IF( sname ) THEN
527  nbmin = 8
528  ELSE
529  nbmin = 8
530  END IF
531  ELSE IF( sname .AND. c3.EQ.'TRD' ) THEN
532  nbmin = 2
533  END IF
534  ELSE IF( cname .AND. c2.EQ.'HE' ) THEN
535  IF( c3.EQ.'TRD' ) THEN
536  nbmin = 2
537  END IF
538  ELSE IF( sname .AND. c2.EQ.'OR' ) THEN
539  IF( c3( 1: 1 ).EQ.'G' ) THEN
540  IF( c4.EQ.'QR' .OR. c4.EQ.'RQ' .OR. c4.EQ.'LQ' .OR. c4.EQ.
541  $ 'QL' .OR. c4.EQ.'HR' .OR. c4.EQ.'TR' .OR. c4.EQ.'BR' )
542  $ THEN
543  nbmin = 2
544  END IF
545  ELSE IF( c3( 1: 1 ).EQ.'M' ) 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  END IF
552  ELSE IF( cname .AND. c2.EQ.'UN' ) THEN
553  IF( c3( 1: 1 ).EQ.'G' ) THEN
554  IF( c4.EQ.'QR' .OR. c4.EQ.'RQ' .OR. c4.EQ.'LQ' .OR. c4.EQ.
555  $ 'QL' .OR. c4.EQ.'HR' .OR. c4.EQ.'TR' .OR. c4.EQ.'BR' )
556  $ THEN
557  nbmin = 2
558  END IF
559  ELSE IF( c3( 1: 1 ).EQ.'M' ) 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  END IF
566  ELSE IF( c2.EQ.'GG' ) THEN
567  nbmin = 2
568  IF( c3.EQ.'HD3' ) THEN
569  nbmin = 2
570  END IF
571  END IF
572  ilaenv = nbmin
573  RETURN
574 *
575  70 CONTINUE
576 *
577 * ISPEC = 3: crossover point
578 *
579  nx = 0
580  IF( c2.EQ.'GE' ) THEN
581  IF( c3.EQ.'QRF' .OR. c3.EQ.'RQF' .OR. c3.EQ.'LQF' .OR. c3.EQ.
582  $ 'QLF' ) THEN
583  IF( sname ) THEN
584  nx = 128
585  ELSE
586  nx = 128
587  END IF
588  ELSE IF( c3.EQ.'HRD' ) THEN
589  IF( sname ) THEN
590  nx = 128
591  ELSE
592  nx = 128
593  END IF
594  ELSE IF( c3.EQ.'BRD' ) THEN
595  IF( sname ) THEN
596  nx = 128
597  ELSE
598  nx = 128
599  END IF
600  END IF
601  ELSE IF( c2.EQ.'SY' ) THEN
602  IF( sname .AND. c3.EQ.'TRD' ) THEN
603  nx = 32
604  END IF
605  ELSE IF( cname .AND. c2.EQ.'HE' ) THEN
606  IF( c3.EQ.'TRD' ) THEN
607  nx = 32
608  END IF
609  ELSE IF( sname .AND. c2.EQ.'OR' ) THEN
610  IF( c3( 1: 1 ).EQ.'G' ) THEN
611  IF( c4.EQ.'QR' .OR. c4.EQ.'RQ' .OR. c4.EQ.'LQ' .OR. c4.EQ.
612  $ 'QL' .OR. c4.EQ.'HR' .OR. c4.EQ.'TR' .OR. c4.EQ.'BR' )
613  $ THEN
614  nx = 128
615  END IF
616  END IF
617  ELSE IF( cname .AND. c2.EQ.'UN' ) THEN
618  IF( c3( 1: 1 ).EQ.'G' ) THEN
619  IF( c4.EQ.'QR' .OR. c4.EQ.'RQ' .OR. c4.EQ.'LQ' .OR. c4.EQ.
620  $ 'QL' .OR. c4.EQ.'HR' .OR. c4.EQ.'TR' .OR. c4.EQ.'BR' )
621  $ THEN
622  nx = 128
623  END IF
624  END IF
625  ELSE IF( c2.EQ.'GG' ) THEN
626  nx = 128
627  IF( c3.EQ.'HD3' ) THEN
628  nx = 128
629  END IF
630  END IF
631  ilaenv = nx
632  RETURN
633 *
634  80 CONTINUE
635 *
636 * ISPEC = 4: number of shifts (used by xHSEQR)
637 *
638  ilaenv = 6
639  RETURN
640 *
641  90 CONTINUE
642 *
643 * ISPEC = 5: minimum column dimension (not used)
644 *
645  ilaenv = 2
646  RETURN
647 *
648  100 CONTINUE
649 *
650 * ISPEC = 6: crossover point for SVD (used by xGELSS and xGESVD)
651 *
652  ilaenv = int( REAL( MIN( N1, N2 ) )*1.6e0 )
653  RETURN
654 *
655  110 CONTINUE
656 *
657 * ISPEC = 7: number of processors (not used)
658 *
659  ilaenv = 1
660  RETURN
661 *
662  120 CONTINUE
663 *
664 * ISPEC = 8: crossover point for multishift (used by xHSEQR)
665 *
666  ilaenv = 50
667  RETURN
668 *
669  130 CONTINUE
670 *
671 * ISPEC = 9: maximum size of the subproblems at the bottom of the
672 * computation tree in the divide-and-conquer algorithm
673 * (used by xGELSD and xGESDD)
674 *
675  ilaenv = 25
676  RETURN
677 *
678  140 CONTINUE
679 *
680 * ISPEC = 10: ieee NaN arithmetic can be trusted not to trap
681 *
682 * ILAENV = 0
683  ilaenv = 1
684  IF( ilaenv.EQ.1 ) THEN
685  ilaenv = ieeeck( 1, 0.0, 1.0 )
686  END IF
687  RETURN
688 *
689  150 CONTINUE
690 *
691 * ISPEC = 11: infinity arithmetic can be trusted not to trap
692 *
693 * ILAENV = 0
694  ilaenv = 1
695  IF( ilaenv.EQ.1 ) THEN
696  ilaenv = ieeeck( 0, 0.0, 1.0 )
697  END IF
698  RETURN
699 *
700  160 CONTINUE
701 *
702 * 12 <= ISPEC <= 16: xHSEQR or related subroutines.
703 *
704  ilaenv = iparmq( ispec, name, opts, n1, n2, n3, n4 )
705  RETURN
706 *
707 * End of ILAENV
708 *
integer function ieeeck(ISPEC, ZERO, ONE)
Definition: tstiee.f:626
integer function ilaenv(ISPEC, NAME, OPTS, N1, N2, N3, N4)
ILAENV
Definition: tstiee.f:83
integer function iparmq(ISPEC, NAME, OPTS, N, ILO, IHI, LWORK)
IPARMQ
Definition: iparmq.f:224
Here is the call graph for this function: